DVB 標準#
Digital Video Broadcasting(デジタルビデオ放送)は、DVB-C(デジタルテレビケーブル伝送標準)、DVB-T(デジタルテレビ地上伝送標準)、DVB-S(デジタルテレビ衛星伝送標準)を含む完全なデジタルテレビソリューションであり、以下では主に DVB-S システムについて紹介します。
DVB-S はデジタル衛星放送標準であり、衛星伝送は広範なカバレッジと大容量のプログラムを提供する利点があります。信号は RS (188,204) と畳み込み符号の級連符号化を使用し、変調方式は QPSK です。
DVB-S チャンネル符号化および変調の基本原理#
原理ブロック図#
ETSI の DVB-S 標準に基づく原理ブロック図は以下の通りです。
衛星が提供する DTH サービスは特に電力制限の影響を受けるため、主な設計目的はノイズと干渉に対する耐性であり、スペクトル効率ではありません。スペクトル効率を過度に損なうことなく高いエネルギー効率を実現するために、システムは QPSK 変調と畳み込み符号および RS 符号の級連を使用する必要があります。
インターフェース#
チャンネル符号化#
TS ストリーム適応ユニット(adaptation)#
入力された TS ストリームは MPEG-2 形式に従って固定長でパッケージ化され、パケットの長さは 188、フレームヘッダーは同期ワード です。DVB-S 標準では、8 つの TS パケットが 1 つのスーパーフレームを構成し、スーパーフレーム内の 8 つの同期ヘッダーを反転させてにし、残りの同期ヘッダーはそのままにします。また、自動的に空パケットを挿入し、データパケットの後に 16 個の 0 を挿入して、長さ 188 のデータパケットを長さ 204 のデータパケットに補完し、後続のチャンネル符号化モジュールとのクロックマッチングとインターフェース接続を確立します。
擾乱符号化ユニット(energy dispersal)#
ベースバンド信号には連続した「1」または「0」が多く含まれており、これによりベースバンド信号のスペクトルに多くの低周波成分が含まれ、信号のチャネル伝送や受信側でのクロック信号の抽出に不利になります。したがって、擾乱符号化を使用して TS ストリームを擾乱された擬似ランダム系列に変換します。DVB-S 標準のランダム化の原理図は以下の通りです。
擾乱された擬似ランダム二進数系列の生成多項式は以下の通りです。
擾乱符号化は 8 つのデータパケットで構成されるスーパーフレーム単位で処理され、各ユニットの処理が開始されるときに、系列をレジスタにロードし、擾乱符号化処理を行います。データパケットの同期ワードは擾乱符号化処理を行いません。
RS 符号化#
外部符号には RS 符号化を使用し、これはランダムエラーとバーストエラーを同時に訂正する能力を持ち、バーストエラーの訂正がより効果的です。DVB-S で使用される符号化形式は、RS (239,255) を切り取って得られる RS (188,204) 符号であり、最大訂正長は 8 バイトで、符号化は同期ワードまたはから始まります。
符号化原理の簡単な説明#
情報多項式を仮定すると、
符号生成多項式は
ここでとすると、生成多項式の展開式は
をで割った余りはの 15 次多項式であり、その 16 個の係数が生成された 16 個のチェックバイトとなり、これを長さ 188 のデータパケットに追加することでの符号化が完了します。
畳み込みインターリーブ#
デジタル信号伝送プロセスでは、一連のデータエラーを引き起こす突発的な干渉が発生し、RS 符号の訂正範囲を超える可能性があります。畳み込みインターリーブは、エラーのある文字を分散させ、チャネルをほぼ無記憶チャネルに変えることができます。DVB-S では、インターリーブ深度 12 の畳み込みインターリーブが採用されています。インターリーブとデインターリーブのブロック図は以下の通りです。
畳み込み符号化#
内部符号には型の畳み込み符号を使用し、符号化効率はで、6 つのシフトレジスタと 2 つのモジュロ 2 加算器で構成され、1 ビット信号から 2 ビットの符号化信号が生成され、制約長は 7 です。
チャネル品質が良好な場合、符号化信号を削減してチャネル利用率を向上させることができます。
Matlab シミュレーション#
TS ストリーム適応および擾乱符号化モジュール#
CLKdivide#
1 つの HDTV 信号のビットレートはであるため、バイナリ信号のレートはで、入力データは型であるため、入力信号のレートはです。したがって、CLKdivide モジュールはのクロックをとに分周します。
sigSource#
このモジュールは入力 TS ストリーム信号を生成し、RS 符号化の開始、終了、および有効信号を生成します。188 バイト長のデータパケットを出力するたびに TS ストリームの出力を一時停止して空パケットを挿入する必要があるため、有効システムを使用し、188 回カウントした後に有効を低下させて空パケットを挿入します。
HeaderProcess#
このモジュールは入力 TS ストリームのレート変換とスーパーフレームのグループ化を行い、8 つのデータパケットを 1 つのスーパーフレームに組み合わせ、最初の同期ワードを反転させ、からに変換し、sigSource の信号を有効にします。同時に、擾乱符号化モジュールの制御信号を生成します。
最初の Multiport Switch は空パケットを挿入するために使用され、2 番目の Multiport Switch はスーパーフレームの最初の同期ワードを反転させるために使用されます。
myScrambler#
擾乱符号化の生成多項式に基づいて設計されています。HeaderProcess が生成した擾乱符号化の有効信号は、入力同期ワードのときにちょうど低下し、擾乱符号化処理は行われません。擾乱リセット信号は 1 つのスーパーフレームを入力した後に初期系列”100101010000000“を再度ロードします。
シミュレーションデータ#
RS 符号化モジュール#
HDL Coder 内のモジュールを使用し、クロックレートがであるため、RS 符号化が符号元レートに従って行われることを保証するためにトリガーモジュールを追加する必要があります。
畳み込みインターリーブ#
同様にトリガーモジュールを追加し、インターリーブの速度が符号元レートであることを保証します。
uint8 から binary モジュール#
まず、入力データをビットごとに AND 演算し、各ビットのデータを取り出して Multiport Switch でビットごとに出力し、カウンターの有効レートは符号元レート $R_B$ の 8 倍です。
畳み込み符号化#
削減を行わない場合、符号化効率はです。削減を行うこともでき、の符号化効率を得ることができます。一定の帯域幅内では、符号化効率が大きいほど伝送効率が高くなり、同時に訂正能力が低下します。
Vivado 実装#
Vivado のコードの大部分は HDL Coder によって生成されるか、Matlab によって生成された係数ファイルを Vivado の IP コアにインポートします。
DataSource_Scrambler#
HDL コードを直接生成する場合、DataSource_Scrambler モジュール内の sigSource モジュールはの周波数でのセットアップ時間の余裕がタイミングを満たさないため、HDL を生成する前に以下の設定を行います。
出力端に 1 段のパイプラインを追加した後、合成配線後のタイミングが通過します。同時に、このモジュールの出力信号のすべてに遅延モジュールを追加してパイプラインを構成します。
擾乱符号化モジュール#
8 つのデータパケットを入力した後、擾乱符号化内部の D フリップフロップの初期値がリセットされ、反転された同期ワードは擾乱符号化処理を受けませんでした。
データ整列#
シミュレーション中に、同期ワードと RS 符号化の有効信号が整列していないことが判明したため、以下のモジュールを追加します。
出力の有効信号を 1 データ周期遅らせることで、信号の同期を保証します。
RS 符号化#
modelsim のデータを matlab にインポートしてデコードすると、188 個のデータパケットが完全に解読されたことがわかります。
上昇コサインロールオフフィルター#
Matlab フィルター設計#
DVB-S 標準の要求に基づき、上昇コサインロールオフ係数はであり、Matlab の filterDesigner ツールを使用してフィルター係数を設計します。
FPGA ではフィルター係数を定点化処理する必要があります。
係数を 32 ビット量子化した後の振幅応答は以下の通りです。
係数を 16 ビット量子化した後の振幅応答は以下の通りです。
16 ビット量子化の振幅応答は 32 ビット量子化の応答とほぼ同じであり、スペースを節約するために 16 ビット量子化を使用します。
量子化が終了したら、ターゲット→Xilinx 係数ファイルをクリックして coe ファイルを生成します。
Vivado Fir フィルター設計#
Source を COE ファイルとして選択します。
入力のサンプリング周波数はクロック周波数と等しく、オーバーサンプリングは行いません。
Implementation で係数タイプを符号付き数に選択し、ビット幅をに設定します。
入力信号は正負 1 なので、入力のビット幅は 2 で、最初のビットは符号ビットです。出力モードは全精度に設定します。
波形#
XDMA を使用したデータの入力および出力収集#
構造ブロック図は上記の通りです。
プロジェクトの全体構造は上記の通りで、データは XDMA の M_AXIS_H2C インターフェースを介して書き込まれます。書き込むデータのビット幅はであり、プロジェクト内の信号処理部分の入力ビット幅は 8bit であるため、AXISDataWidthConverter モジュールを追加してビット幅を 16BYTE から 1BYTE に変換し、FIFO に書き込み、AXIGPIO モジュールを使用して FIFO の almost full 信号を読み取ります。FIFO が満杯になると、almost full が高くなり、データの書き込みを停止します。DVB-S で生成された QPSK 信号を読み取ると、上昇コサインロールオフフィルターと変調を経て信号のビット幅が大きくなっているため、複雑さを減らすために変調信号の高位を 0 で埋めて 128bit にし、M_AXIS_C2H インターフェースを介してホストマシンに出力します。
デバッグプロセスは以下を参照してください。