Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Viterbi Decoder

ビタビ アルゴリズムを使用した畳み込み符号化されたデータの復号化

  • Viterbi Decoder block

ライブラリ:
Communications Toolbox / Error Detection and Correction / Convolutional
Communications Toolbox HDL Support / Error Detection and Correction / Convolutional

説明

Viterbi Decoder ブロックは、ビタビ アルゴリズムを使用して、畳み込み符号化された入力シンボルを復号化し、バイナリ出力シンボルを生成します。トレリス構造体は、畳み込み符号化スキームを指定します。詳細については、畳み込み符号のトレリス表現を参照してください。

このブロックは、パフォーマンスを高速化するために一度に複数のシンボルを処理でき、シミュレーション中に長さが変化する入力を受け入れることができます。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)を参照してください。

このアイコンは、すべてのオプションのブロック端子が有効になっていることを示しています。

Viterbi Decoder block with optional erasure and reset ports enabled

すべて展開する

畳み込み符号化と BPSK 変調をバイナリ信号に適用し、変調後の信号を AWGN チャネルに渡します。BPSK 復調とビタビ復号化を適用した後の信号のシンボル エラー レート (SER) を計算します。

モデルの検証

doc_conv モデルは、Bernoulli Binary Generatorブロックを使用してバイナリ信号を生成します。Convolutional Encoderブロックは信号を符号化します。BPSK Modulator Basebandブロックは信号を変調します。AWGN Channelブロックは信号にノイズを付加します。BPSK 変調信号をゼロ位相シフトで復調するには、Complex to Real-Imag (Simulink)ブロックを使用して複素シンボル復調の実数成分の値を単に抽出します。Viterbi Decoderブロックは信号を復号化します。Error Rate Calculationブロックは SER を計算します。

シミュレーションの実行

ans =

    'Filtering the signal through an AWGN channel with the EsN0 set to -1 dB, the computed SER is 0.005608.'


ans =

    'For 53499 transmitted symbols, there were 300 symbols errors.'

この例では、符号化率 1/2 の畳み込み符号化とビタビ復号化を使用するパンクチャド符号化システムをシミュレートします。ビタビ復号化器の複雑度は符号化率に伴い急激に増大します。パンクチャ手法を使用すると、符号化率の低い標準のコーダーを使用して符号化率の高い符号の符号化と復号化を行うことができます。

cm_punct_conv_code モデルは、畳み込み符号化後の BPSK 信号を AWGN チャネル経由で送信し、受信信号を復調し、ビタビ復号化を行って符号化前の信号を復元します。このモデルは、エラー レートを計算するため、元の % 信号と復号化後の信号を比較します。

このモデルは、コールバック関数 PreloadFcn を使用してこれらのワークスペース変数を設定し、ブロック パラメーターを初期化します。

puncvec = [1;1;0;1;1;0];
EsN0dB = 2;
traceback = 96; % Viterbi traceback depth

詳細については、モデル コールバック (Simulink)を参照してください。

このモデルのブロックは次の処理を行います。

  • Bernoulli Binary Generator[フレームあたりのサンプル数]3 に設定します。このブロックは、各サンプル時刻においてフレームあたり 3 つのサンプルを出力するランダム ビットから成るシーケンスを作成します。

  • Convolutional Encoder[Trellis structure] で既定の設定を使用し、[Puncture code] を選択し、[パンクチャ ベクトル] をワークスペース変数 puncvec に設定します。このブロックは、符号化率 1/2、拘束長 7 の畳み込み符号を符号化率 3/4 の符号にパンクチャすることによって、データのフレームを符号化します。puncvec で指定されたパンクチャ ベクトルは、符号化率が 1/2 で拘束長が 7 の畳み込み符号に最も適したパンクチャ ベクトルです。パンクチャ ベクトルにおいて、1 は符号化されたベクトルの対応する位置にあるビットが出力ベクトルに送信されることを示し、0 はそのビットが削除されることを示します。ここで構成した符号化器では、符号化後の位置 1、2、4、および 5 にあるビットは送信されますが、位置 3 および 6 にあるビットは削除されます。符号化率が 3/4 であるということは、3 ビットを入力するごとにパンクチャド符号によって 4 ビットの出力が生成されることを意味します。

  • BPSK Modulator Baseband — 既定のパラメーター値を使用して、符号化されたメッセージを変調します。

  • AWGN Channel[モード]Signal to noise ratio (Es/No) に設定し、Es/No (dB) をワークスペース変数 EsN0dB に設定します。変調器ブロックは単位電力信号を生成するため、[Input signal power, referenced to 1 ohm (watts)] は既定値 1 のままにします。

  • Viterbi Decoder[Trellis structure][Punctured code]、および [パンクチャ ベクトル] を、Convolutional Encoder ブロックに合わせて設定します。このブロックは、[判定タイプ]Unquantized に設定し、[トレースバック長] をワークスペース変数 traceback に設定します。符号のパンクチャ処理を行わない場合、指定した畳み込み符号を復号化するにはトレースバック長が 40 あれば十分です。ただし、このブロックは、パンクチャによって生じるあいまいさを解決するための十分なデータを復号化器に与えるため、トレースバック長を 96 にしてパンクチャド符号を復号化します。畳み込み符号化器と同様に、復号化器のパンクチャ ベクトルによってパンクチャの位置が示されます。パンクチャされたビットは送信されないため、その値を示す情報は存在しません。そのため、復号化器による復号化処理では、この位置にあるビットは無視されます。パンクチャ ベクトルの各 1 は送信されるビットを、各 0 は復号化器への入力で無視されるパンクチャされたビットを示します。

  • Complex to Real-Imag (Simulink) — 複素数サンプルの実数部を抽出して BPSK 信号を復調します。

  • Error Rate Calculation[受信遅延] の値を使用してシステム遅延のサンプル数の合計を表し、復号化されたビットを元のソース ビットと比較します。このブロックは、計算された BER、観測された誤り数、および処理されたビットの数で構成される 3 要素ベクトルを出力します。このシステムではビタビのトレースバック長によってのみ遅延が生じるため、[受信遅延] をワークスペース変数 traceback に設定します。一般に、BER シミュレーションは、誤り数が最小となるまで、またはシミュレーションで最大数のビットが処理されるまで実行されます。Error Rate Calculation ブロックは、シミュレーション期間を制御するため、[シミュレーションの停止] パラメーターを選択し、目標誤り数を 100 に設定し、シンボルの最大数を 1e6 に設定します。

ビット エラー レートの評価

設定した EbN0 の範囲についてこのコードを実行してモデルをシミュレートし、ビット エラー レート曲線を作成します。

シミュレーション結果をパンクチャド符号ビット誤り確率の境界近似値と比較します [1]。符号化率 $r = (n-1)/n$ のパンクチャド符号のビット エラー レート性能は、次式のように上に有界となります。

$${P_b} \le {1 \over {2\left( {n - 1} \right)}}\sum\limits_{d = {d_{{\rm
{free}}}}}^\infty {{\omega _d}\,{\mathop{\rm erfc}\nolimits} \left( {
\sqrt {{\mathop{\rm rd}\nolimits} \left( {{{{E_b}}
\mathord{\left/{\vphantom {{{E_b}} {{N_0}}}}
\right.\kern-\nulldelimiterspace} {{N_0}}}}\right)} } \right)} $$

この式において、erfc は相補誤差関数を示し、$r$ は符号化率を示します。$d_{free}$${\omega _d}$ はどちらも個々のコードに依存します。この例で示す符号化率 3/4 の符号の場合、$d_{free}$ = 5、${\omega _5}$ = 42、${\omega _6}$ = 201、${\omega _7}$ = 1492 などのようになります。詳細については、参考文献 [ 1 ] を参照してください。

2:0.02:5 における Eb/N0 の値の積算の最初の 7 項を使用して、理論的な境界の近似値を計算します。nerr で使用する値は参考文献 [ 2 ] の Table II から取得します。

シミュレーション結果、近似曲線、および理論的な境界をプロットします。

場合によっては、下方ビットのエラー レートが限界より少し上回るようなシミュレーション結果になることがあります。これは、復号器のトレースバック長が有限なためです。または、ビット エラーの観測個数が 500 個未満の場合はシミュレーションのばらつきによるものです。

パンクチャを行わない畳み込み符号化を示す例については、誤りの検出と訂正の「軟判定復号化」のセクションを参照してください。

参考文献

  1. Yasuda, Y., K. Kashiki, and Y. Hirata, "High Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding," IEEE Transactions on Communications, Vol. COM-32, March, 1984, pp. 315–319.

  2. Begin, G., Haccoun, D., and Paquin, C., "Further results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding," IEEE Transactions on Communications, Vol. 38, No. 11, November, 1990, p. 1923.

Viterbi Decoderブロックを固定小数点の硬判定畳み込み復号化と軟判定畳み込み復号化に使用します。Bit Error Rate Analysisアプリで計算された理論上の上限と結果を比較します。

シミュレーションの構成

cm_viterbi_harddec_fixpt モデルおよび cm_viterbi_softdec_fixpt モデルは、同様のレイアウトを使用して、ビタビ復号化器の固定小数点モデリング属性を強調表示します。モデルの既定の構成では、PreLoadFcn コールバックを使用して、AWGN Channelブロックの ${E_b}/{N_0}$ の設定を 4 dB に指定します。畳み込み符号化器は、符号化率 1/2 の符号化器として構成されます。具体的には、2 ビットごとに、符号化器がさらに 2 つの冗長ビットを追加します。符号化率に対応するため、AWGN ブロックの [Eb/No (dB)] パラメーターは、割り当てられた ${E_b}/{N_0}$ の設定から 10*log10(2) を差し引くことにより、半分にされます。Error Rate Calculationブロックの実行期間を 100 エラーまたは 1e6 ビットに制限します。

固定小数点モデリング

固定小数点モデリングは、ハードウェア実装の検討およびデータとパラメーターのダイナミック レンジを考慮に入れたビットトゥルー シミュレーションを有効にします。たとえば、対象のハードウェアが DSP マイクロプロセッサである場合、可能性のある語長は 8、16、または 32 ビットであり、ターゲット ハードウェアが ASIC または FPGA の場合は語長の選択に柔軟性があります。

固定小数点のビタビ復号化を有効にするための条件は、次のとおりです。

  • 硬判定の場合、ブロック入力は ufix1 型 (語長 1 の符号なし整数) でなければなりません。この入力 ( a 0 または a 1 のいずれか) に基づき、内部分岐メトリクスは、トレリス構造体に指定された (硬判定例の場合は 2 に等しい) ように、語長の符号なし整数 = (出力ビットの数) を使用して計算されます。

  • 軟判定の場合、ブロック入力は ufixN 型 (語長 N の符号なし整数) でなければなりません。ここで、N は固定長小数点の復号化を有効にするための軟判定ビットの数です。ブロック入力は、0 ~ $2^{N-1}$ の範囲の整数でなければなりません。内部分岐メトリクスは、トレリス構造体に指定された (軟判定例の場合は 4 に等しい) ように、語長の符号なし整数 = (N + 出力ビットの数 - 1) を使用して計算されます。

[State metric word length] は、ユーザーによって指定され、通常は既に計算されている分岐メトリクス語長よりも長くなければなりません。これは、システム用に記録されたデータを確認することによって、最も適した値に (ハードウェアやデータの検討に基づいて) 調整することができます。

ログを有効にするため、[アプリ]、[固定小数点ツール] を選択します。[固定小数点設定] メニューで、[固定小数点のインストルメンテーション モード][Minimums, maximums and overflows] に設定し、シミュレーションを再実行します。オーバーフローが確認できた場合は、データが選択したコンテナーに収まらなかったことを示しています。データを処理する前にデータのスケーリングを行うか、語長のサイズを増やしてみる (ハードウェアで許可されている場合) ことができます。データの最小値と最大値に基づいて、選択したコンテナーが適切なサイズであるかどうかを判断することもできます。

[State metric word length] のさまざまな値でシミュレーションを実行して、その値のアルゴリズムへの影響を理解します。BER の結果に悪影響を及ぼさない適切な値になるようにパラメーターを絞り込むこともできます。

cm_viterbi_harddec_fixpt モデルの硬判定構成:

  • BPSK Demodulator Basebandは、復号化器に渡される硬判定を生成します。

  • Data Type Conversion (Simulink)ブロックは Mode パラメーターを Fixed point に設定し、出力データ型を fixdt(0,1,0) にキャストします。Viterbi Decoderブロックに対する信号入力は ufix1 です。

  • Viterbi Decoder ブロックの Decision type パラメーターは Hard decision に設定されます。[Data Types] タブでは、State metric word length4 に設定され、Output data typeboolean に設定されます。ビット エラー レートが表示され、ワークスペース変数 BER に取得されます。

cm_viterbi_softdec_fixpt モデルの軟判定構成:

  • BPSK Demodulator Basebandは、対数尤度比を使用して軟判定を生成します。これらの軟出力は、3 ビットで量子化され、復号化器に渡されます。

  • Quantizer サブシステム (Gain (Simulink)Scalar Quantizer EncoderData Type Conversion (Simulink)ブロックを含む) は信号を量子化し、出力データ型を fixdt(0,3,0) にキャストします。Viterbi Decoderブロックに対する信号入力は ufix3 です。

  • Viterbi Decoderブロックでは、Decision type パラメーターは Soft decisionNumber of soft decision bits は 3 に設定されています。[Data Types] タブでは、State metric word length6Output data typeboolean に設定されています。ビット エラー レートが表示され、ワークスペース変数 BER に取得されます。

硬判定と軟判定の復号化の比較

2 つのモデルは、Bit Error Rate Analysis アプリ内から実行してシミュレーション曲線を生成し、硬判定復号化と軟判定復号化の BER 性能を比較するように構成されています。

以下に概説する手順に従って、次のプロットで結果を生成できます。

以下の手順により、理論値と固定小数点の硬判定/軟判定ビタビ復号化のシミュレーション結果が生成されます。

  1. [アプリ] タブで選択するか、MATLAB コマンド プロンプトで bertool と入力して、Bit Error Rate Analysis アプリを開きます。

  2. [Theoretical] ペインで、[Eb/N0 range] を 2:5 に設定し、[Channel type][AWGN] に設定し、[Modulation type][PSK] に設定し、[Channel coding][Convolutional] に設定し、[Decision method][Hard] に設定して実行した後 [Soft] に設定して実行します。理論上の結果の硬判定データ セットと軟判定データ セットを識別できるように、[BER Data Set] の名前を変更します。

  3. [Monte Carlo] ペインで、[Eb/N0 range] を 2:1:5 に設定し、[Simulation environment][Simulink] を選択し、[BER variable name][BER] に設定し、[Simulation limits][Number of errors] を 100、[Number of bits] を 1e6 に設定します。[Model name]cm_viterbi_harddec_fixpt に設定して実行した後 cm_viterbi_softdec_fixpt に設定して実行します。Simulink の結果の硬判定データ セットと軟判定データ セットを識別できるように、[BER Data Set] の名前を変更します。

この 4 回の実行により、アプリは次のイメージのようになります。

倍精度データとの比較

さらに詳しく調べるために、Apps > Fixed-Point Tool を選択して、倍精度データで同じモデルを実行できます。Fixed-Point Tool アプリで、Data type override を選択して Double にします。この選択によって、すべてのブロックのすべてのデータ型設定がオーバーライドされて倍精度を使用します。Viterbi Decoder ブロックでは、Output typeboolean に設定されているため、このパラメーターも double に設定しなければなりません。

モデルのシミュレーション時に、倍精度と固定小数点の BER の結果が同じであることに注意してください。これらが同じになるのは、精度の低下を避け、メモリ効率を最適化するためにモデルの固定小数点パラメーターが選択されているためです。

端子

入力

すべて展開する

畳み込み符号化されたコードワード。列ベクトルとして指定します。復号化器が N 入力ビット ストリームを取る (つまり、2N の入力シンボル候補を受信できる) 場合、ブロックの入力ベクトルの長さはある正の整数 L に対して L×N になります。詳細については、入力および出力サイズ入力値と判別タイプ、および Operation mode パラメーターを参照してください。

この端子は 2 番目の入力端子が有効になるまでは名前なしになります。

データ型: double | single | Boolean | int8 | int16 | int32 | uint8 | uint16 | uint32 | ufixn

コードワードの消去ビット。バイナリ値ベクトルとして指定します。ベクトルの 1 の値は消去されたビットに対応し、0 の値は消去されていないビットに対応します。

受信するデータ ストリームでこれらを消去する場合、復号化器は分岐メトリクスを更新しません。消去および入力のデータ端子の幅とサンプル時間は、同じでなければなりません。

依存関係

この端子を有効にするには、[Enable erasures input port] を選択します。

データ型: double | Boolean

復号化器レジスタの状態をリセットするオプション。スカラー値として指定します。この端子が非ゼロの入力値を受け取った場合、ブロックは入力データを処理する前に内部メモリを初期状態に設定します。復号化器レジスタを初期状態にリセットすることで、次のように設定されます。

  • すべて 0 の状態メトリクス: 0

  • 他のすべての状態メトリクス: 最大値

  • トレースバック メモリ: 0

このブロックにリセット端子を使用することは、Convolutional Encoder ブロックで [Operation mode][Reset on nonzero input via port] に設定することと同じです。

依存関係

この端子を有効にするには、[Operation mode] パラメーターを [Continuous] に設定し、[Enable reset input port] を選択します。

データ型: double | Boolean

出力

すべて展開する

出力メッセージ。バイナリ列ベクトルとして返されます。復号化器が K 個の出力ビット ストリームを生成する (つまり、2K 個の出力シンボル候補を生成できる) 場合、ブロックの出力ベクトルの長さはある正の整数 L に対して L×K になります。詳細については、入力および出力サイズを参照してください。

この端子はブロック アイコンで名前なしになります。

データ型: double | single | Boolean | int8 | int16 | int32 | uint8 | uint16 | uint32 | ufix1

パラメーター

すべて展開する

ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。

メイン

畳み込み符号のトレリス表現。符号化率 K / N の符号に対するトレリス表現を含む構造体として指定します。K は入力ビット ストリーム数を表し、N は出力ビット ストリーム数を表します。

トレリス構造体は、関数 poly2trellis を使用して作成するか、手動で作成することができます。この構造体の詳細については、畳み込み符号のトレリス表現および関数 istrellis を参照してください。

トレリス構造体には次のフィールドがあります。

符号化器への入力シンボルの数。2K と等しい整数として指定します。ここで、K は入力ビット ストリームの数です。

符号化器からの出力シンボルの数。2N と等しい整数として指定します。ここで、N は出力ビット ストリームの数です。

符号化器内の状態の数。2 のべき乗として指定します。

現在の状態と現在の入力のすべての組み合わせの次の状態。整数の行列として指定します。行列のサイズは numStates 行 2K 列でなければなりません。

現在の状態と現在の入力のすべての組み合わせの出力。8 進数の行列として指定します。行列のサイズは numStates 行 2K 列でなければなりません。

[Puncture vector] 端子を表示して有効にするには、このパラメーターを選択します。

復号化されたデータをパンクチャするためのパンクチャ パターン ベクトル。列ベクトルとして指定します。ベクトルには 10 が含まれている必要があります。ここで、0 はパンクチャされたビットの位置を示します。このパンクチャ パターンは畳み込み符号化器によって使用されるパンクチャ パターンと一致しなければなりません。

特定のレートや多項式で一般的に使用するパンクチャ パターンについては、Yasuda[4]、Haccoun[5]、および Begin[6]の各参考文献を参照してください。

依存関係

このパラメーターは、[Punctured code] パラメーターを選択した場合にのみ表示されます。

ブロックに Era 入力端子を追加するには、このパラメーターを選択します。

復号化器判定タイプ。[Unquantized][Hard decision]、または [Soft Decision] として指定します。

  • Unquantized — 復号化器は、ユークリッド距離を使用して分岐メトリクスを計算します。入力データは量子化されていない倍精度または単精度の軟判定値の実数値ベクトルでなければなりません。オブジェクトは、正の値を logical 1 に、負の値を logical 0 にマッピングします

  • Hard decision — 復号化器は、ハミング距離を使用して分岐メトリクスを計算します。入力は 0 または 1 の硬判定値のベクトルでなければなりません。入力のデータ型は、倍精度、単精度、logical、または数値でなければなりません。

  • Soft Decision — 復号化器は、ハミング距離を使用して分岐メトリクスを計算します。入力には、0 と 2SoftInputWordLength – 1 の間の整数として表される量子化された軟判定値のベクトルが必要です。入力のデータ型は、倍精度、単精度、logical、または数値でなければなりません。あるいは、[Number of soft decision bits] パラメーターに指定する語長と等しい語長 ("SoftInputWordLength") で fi (Fixed-Point Designer) オブジェクトを使用して、符号なしおよびスケーリングなしの固定小数点オブジェクトとしてデータ型を指定できます。0 は最も信頼性の高い 0 と見なされ、2SoftInputWordLength – 1 は最も信頼性の高い 1 と見なされます。

それぞれの量子化された軟入力値に対するビット数を表す軟入力の語長。整数として指定します。

依存関係

このパラメーターは、[Decision type] パラメーターを [Soft decision] に設定したときにのみ表示されます。

量子化入力値が範囲外の場合にエラーを発生させるには、このパラメーターを選択します。このパラメーターが選択されていない場合、範囲外の入力値は無視されます。

依存関係

このパラメーターは、[Decision type] パラメーターを [Hard decision] または [Soft decision] に設定したときにのみ表示されます。

トレースバック長。各トレースバック パスを構築するために使用されるトレリス分岐の数を示す整数として指定します。

トレースバック長は復号化遅延に影響を与えます。復号化遅延は、出力の最初に復号化されるシンボルよりも前の 0 シンボルの数です。

  • 連続操作モードの場合、復号化遅延はトレースバック長シンボルの数と同じです。

  • 打ち切られた操作モードまたは終了した操作モードの場合、復号化遅延は 0 です。この場合、トレースバック長は、各入力のシンボルの数以下でなければなりません。

一般的な推定として、標準のトレースバック長の値は (ConstraintLength – 1) / (1 – coderate) の約 2 倍から 3 倍になります。符号の拘束長 ConstraintLength は (log2(trellis.numStates) + 1) に等しくなります。coderate は (K / N) × (length(PuncturePattern) / sum(PuncturePattern) に等しくなります。

K は入力シンボルの数、N は出力シンボルの数、および PuncturePattern はパンクチャ パターン ベクトルです。

たとえば、この一般的な推定を適用することで、次のようなおおよそのトレースバック長が得られます。

  • 符号化率 1/2 の符号のトレースバック長は 5(ConstraintLength – 1) です。

  • 符号化率 2/3 の符号のトレースバック長は 7.5(ConstraintLength – 1) です。

  • 符号化率 3/4 の符号のトレースバック長は 10(ConstraintLength – 1) です。

  • 符号化率 5/6 の符号のトレースバック長は 15(ConstraintLength – 1) です。

詳細については、[7]を参照してください。

連続する入力フレーム間の遷移方法。以下のいずれかのモードの値として指定します。

  • [Continuous] — ブロックは次のフレームで使用するために、各入力の最後で内部状態メトリクスを保存します。各トレースバック パスは、独立して扱われます。このモードでは、符号化率 K/N の畳み込み符号に対する復号化遅延が Traceback depth×K ゼロ ビットになります。K はメッセージ シンボルの数、N は符号化されたシンボルの数です。[Enable reset input port] が選択されている場合、Rst 端子が非ゼロの値を受け取ると、復号化器の状態がリセットされます。

  • [Truncated] — ブロックは各入力を個別に扱います。トレースバック パスは最良のメトリクスの状態で開始し、常にすべて 0 の状態で終了します。このモードは、対応する Convolutional Encoder ブロックがその [Operation mode]Truncated (reset every frame) に設定するときに適切です。このモードでは、出力遅延が発生しません。

  • [Terminated] — ブロックは各入力を個別に扱い、トレースバック パスはすべて 0 の状態で開始し、終了します。このモードは、コード化されていないメッセージ信号 (つまり、対応する Convolutional Encoder ブロックへの入力) が各入力の末尾に、フィードフォワード符号化器のすべてのメモリ レジスタを埋めるのに充分な 0 がある場合に適しています。具体的には、入力ストリームが k 個で拘束長ベクトル constr (多項式表現を使用) をもつ符号化器の場合、入力の最後に少なくとも k*max(constr-1) 個の 0 があることになります。フィードバック符号化器の場合、このモードは、対応する Convolutional Encoder ブロックで [Operation mode][Terminate trellis by appending bits] に設定されている場合には適しています。

メモ

ブロックがシミュレーション中に長さが異なるシーケンスを出力し、[Operation mode][Truncated] または [Terminated] に設定すると、すべての入力タイム ステップで復号化器の状態がリセットされます。

入力信号にシンボルが 1 つしか含まれていない場合は、[Continuous] 操作モードを使用します。

Rst 入力端子を追加にするには、このパラメーターを選択します。

依存関係

このパラメーターは、[Operation mode] パラメーターを [Continuous] に設定したときにのみ表示されます。

現在のタイム ステップで受信した符号化データを計算するまで復号化器のリセットを遅延させるには、このパラメーターを選択します。このオプションは HDL サポートのために有効にしなければなりません。HDL コードを生成するには、HDL Coder™ ソフトウェアが必要です。

依存関係

このパラメーターは、[Operation mode] パラメーターを [Continuous] に設定し、[Enable reset input port] を選択したときにのみ表示されます。

データ型

状態メトリクス語長。正の整数として指定します。

出力データ型。doublesinglebooleanint8uint8int16uint16int32、または uint32 として指定するか、'Inherit via internal rule' または 'Smallest unsigned integer' に設定します。

  • 'Smallest unsigned integer' に設定されると、出力データ型は、モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] ペインで使用されている設定に基づいて選択されます。ASIC/FPGA[ハードウェア実行] ペインで選択されると、出力データ型は ufix(1) になります。他のすべての選択の場合は、char 値に対応する指定された最も小さな語長 (たとえば uint8) の符号なし整数です。

  • 'Inherit via internal rule' に設定した場合、ブロックは次のようになります。

    • double の入力に対してデータ型 double を出力

    • single の入力に対してデータ型 single を出力

    • 他のすべてのデータ型入力に対しては 'Smallest unsigned integer' オプションと同様の動作

ブロックの特性

データ型

Boolean | double | fixed pointa | integer | single

多次元信号

なし

可変サイズの信号

あり

a 硬判定の場合は入力が ufix(1) であり、軟判定の場合は ufix(N) です。出力は ufix(1) のみです。

詳細

すべて展開する

参照

[1] Clark, George C., and J. Bibb Cain. Error-Correction Coding for Digital Communications. Applications of Communications Theory. New York: Plenum Press, 1981.

[2] Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein. Data Communications Principles. Applications of Communications Theory. New York: Plenum Press, 1992.

[3] Heller, J., and I. Jacobs. “Viterbi Decoding for Satellite and Space Communication.” IEEE Transactions on Communication Technology 19, no. 5 (October 1971): 835–48. https://doi.org/10.1109/TCOM.1971.1090711.

[4] Yasuda, Y., K. Kashiki, and Y. Hirata. “High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding.” IEEE Transactions on Communications 32, no. 3 (March 1984): 315–19. https://doi.org/10.1109/TCOM.1984.1096047.

[5] Haccoun, D., and G. Begin. “High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 37, no. 11 (November 1989): 1113–25. https://doi.org/10.1109/26.46505.

[6] Begin, G., D. Haccoun, and C. Paquin. “Further Results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 38, no. 11 (November 1990): 1922–28. https://doi.org/10.1109/26.61470.

[7] Moision, B. "A Truncation Depth Rule of Thumb for Convolutional Codes." In Information Theory and Applications Workshop (January 27 2008-February 1 2008, San Diego, California), 555-557. New York: IEEE, 2008.

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する