このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。
固定小数点のビタビ復号化と理論計算の比較
Viterbi Decoderブロックを固定小数点の硬判定畳み込み復号化と軟判定畳み込み復号化に使用します。Bit Error Rate Analysisアプリで計算された理論上の上限と結果を比較します。
シミュレーションの構成
cm_viterbi_harddec_fixpt
モデルおよび cm_viterbi_softdec_fixpt
モデルは、同様のレイアウトを使用して、ビタビ復号化器の固定小数点モデリング属性を強調表示します。モデルの既定の構成では、PreLoadFcn
コールバックを使用して、AWGN Channelブロックの の設定を 4 dB に指定します。畳み込み符号化器は、符号化率 1/2 の符号化器として構成されます。具体的には、2 ビットごとに、符号化器がさらに 2 つの冗長ビットを追加します。符号化率に対応するため、AWGN ブロックの [Eb/No (dB)] パラメーターは、割り当てられた
の設定から
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 ~
の範囲の整数でなければなりません。内部分岐メトリクスは、トレリス構造体に指定された (軟判定例の場合は 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 length
が4
に設定され、Output data type
がboolean
に設定されます。ビット エラー レートが表示され、ワークスペース変数BER
に取得されます。
cm_viterbi_softdec_fixpt
モデルの軟判定構成:
BPSK Demodulator Basebandは、対数尤度比を使用して軟判定を生成します。これらの軟出力は、3 ビットで量子化され、復号化器に渡されます。
Quantizer サブシステム (Gain (Simulink)、Scalar Quantizer Encoder、Data Type Conversion (Simulink)ブロックを含む) は信号を量子化し、出力データ型を
fixdt(0,3,0)
にキャストします。Viterbi Decoderブロックに対する信号入力はufix3
です。
Viterbi Decoderブロックでは、
Decision type
パラメーターはSoft decision
、Number of soft decision bits
は 3 に設定されています。[Data Types] タブでは、State metric word length
が6
、Output data type
がboolean
に設定されています。ビット エラー レートが表示され、ワークスペース変数BER
に取得されます。
硬判定と軟判定の復号化の比較
2 つのモデルは、Bit Error Rate Analysis アプリ内から実行してシミュレーション曲線を生成し、硬判定復号化と軟判定復号化の BER 性能を比較するように構成されています。
以下に概説する手順に従って、次のプロットで結果を生成できます。
以下の手順により、理論値と固定小数点の硬判定/軟判定ビタビ復号化のシミュレーション結果が生成されます。
[アプリ] タブで選択するか、MATLAB コマンド プロンプトで
bertool
と入力して、Bit Error Rate Analysis アプリを開きます。[Theoretical] ペインで、[Eb/N0 range] を 2:5 に設定し、[Channel type] を
[AWGN]
に設定し、[Modulation type] を[PSK]
に設定し、[Channel coding] を[Convolutional]
に設定し、[Decision method] を[Hard]
に設定して実行した後[Soft]
に設定して実行します。理論上の結果の硬判定データ セットと軟判定データ セットを識別できるように、[BER Data Set] の名前を変更します。[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 type
が boolean
に設定されているため、このパラメーターも double
に設定しなければなりません。
モデルのシミュレーション時に、倍精度と固定小数点の BER の結果が同じであることに注意してください。これらが同じになるのは、精度の低下を避け、メモリ効率を最適化するためにモデルの固定小数点パラメーターが選択されているためです。