cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RF データ コンバーター IP のサンプル シミュレーション

karnanl
Xilinx Employee
Xilinx Employee
3 0 724

本ブログは英語版のRF Data Converter IP Example Simulation Walkthroughを翻訳したものです。

 

皆さん、こんにちは。RF データ コンバーター ブログ シリーズの最新記事へようこそ。

今回は、RF データ コンバーター IP のサンプル デザインのシミュレーション テストベンチについて説明します。

このブログでは、テストベンチのビルド方法と IP を実行する際に使用されるメカニズムについて説明します。テストベンチについてよく理解していれば、RF データ コンバーター IP をユーザー自身のシミュレーション設定に組み込む際のテンプレートとして使用するのに役立ちます。

ここでは、すべての詳細を説明するわけではなく、シミュレーションのメカニズムについてのみ説明します。テストベンチの RTL の詳細については、ご自身で自由にお調べください。

IP サンプル デザインにはすでに完成済みのテストベンチが含まれます。このテストベンチには、ADC DAC 両方を使用するためのスティミュラス生成およびシミュレーションでのキャプチャが含まれます。シミュレーションには、IP 設定を検証するのに使用可能なビルトイン セルフチェック機能があります。

では、サンプル デザイン テストベンチの概要を見てみましょう。

P00.png

IP サンプル デザインでは、RF データ コンバーター IP と、スティミュラス ブロック、キャプチャ ブロックが 1 つの大きなブロック RAM 配列内に含まれています。

SmartConnect ブロックも含まれ、IP AXI4-Lite ポートに接続されています。

テストベンチから必要なものは、次のとおりです。

  • デザイン内のすべてのクロックに対するクロック生成。ADC DAC タイル入力、AXI ストリーミング インターフェイス、AXI4-Lite インターフェイス。
  • スティミュラス ブロックとソース ブロックを読み込む手段。
  • 実際の信号をアナログ入力に適用する手段と、DAC からの実際の信号をデジタル バスに変換してチェックできるようにする手段。
  • シミュレーションの管理にはシーケンサーが必要 (最も重要)
  • キャプチャ ブロックまたはシンク ブロックを調査する手段。

では、テストベンチを少し見てみましょう。テストベンチのソース ファイルはすべてサンプル デザイン プロジェクトの imports ディレクトリに含まれます。

最上位テストベンチは、demo_tb.sv (SystemVerilog ファイル) に含まれます。ここでは、各行について説明はしません。この段階では、単にメイン ブロックに接続だけします。では、シミュレーション機能で最も重要な部分を見てみましょう。

 

クロック生成

このブロックは、シミュレーションに必要なクロックすべてを作成するかなりシンプルなブロックです。ご覧のように、ユーザーがクロックの高時間と低時間を設定できるようにする _phase が末尾に付いた入力があります。これは、各タイルとストリーム クロックに必要な周波数を作成するのに使用されます。

P01.png

P02.png

希望どおりになったかどうかをシミュレーションでチェックします。

この場合、DAC サンプル クロックが 6.4 Gsps で実行され、ストリーム クロックがこのレートの 16 分周で実行されています。

P03.png

スティミュラス生成

シミュレーションでは ADC および DAC が別々に処理されます。この場合、loopback done はありません。

DAC および ADC にはソースがあります。

ADC の場合、demo_tb_rfadc_tile_source.sv を含む demo_tb_rfadc_data_source.sv です。タイル ソースの方には、正弦ルックアップ テーブル (LUT) が含まれます。この場合、この LUT を繰り返し、出力正弦波を生成します。

P04.png

この正弦波がテストベンチの最上位に出力されます。これを実数に変換すると、demo_tb のタイルの UNISIM モデル レベルで ADC のアナログ入力に使用できます。

P05.png

DAC の場合、データを AXI インターフェイスを使用してサンプル デザインの DAC ソース ブロックに書き込むだけです。demo_tb レベルでは、DAC アナログ信号を実数からビットに変換して、DAC シンク入力に適用します。

P06.png

テストベンチ シーケンサー

ここまでで、クロックがシミュレーションで実行されており、データ ソースについて説明したので、次はテストベンチの主な部分について説明します。

demo_tb_axi4l_nano_seq.sv というファイルを見てみると、どのようにシミュレーションが設定および制御されているかがわかります。このファイルは、SystemVerilog タスクをいくつか使用して、RF タイルにアクセスしてタイルの設定をできるようにするためのものです。ほかにも、シミュレーションを制御するタスクがあります。これらについては、シミュレーションを実行しながら、必要に応じて説明していきます。

このファイルを見てみると、パラメーター化されたアドレス指定を使用して、AXI4-Lite を介してテストベンチのさまざまなサブブロックを設定できるようになっていることがわかります。これらは、シミュレーションを制御するさまざまなタスクで使用されます。

B0.png

シーケンサーは、まずテストベンチのすべてにリセットを適用します。そのあと、タイルに書き込みをして、シミュレーションのスピードアップをイネーブルにします。これにより、電源トリム時間と ADC キャリブレーション時間が削減されるので、タイルのスタートアップが短縮されます。シミュレーションでは、タイルが IP のスタートアップ ステート マシンでステート 1 になるようにするだけです。

B1.png

このあと、タイルが設定されて、テストベンチでソースとシンクをオンにし始めます。DAC ソース メモリの読み込みも開始されます。

B2.png

シミュレーション時間は各段階で定期的に表示させるようにすることをお勧めします。こうしておくと、必要に応じて波形をチェックできます。

ご覧のように、IP の設定が終了し、DAC スティミュラス ブロックを約 169us に書き込み始めました。DAC ソース メモリはベース アドレス 0x300000000 にあります。

B3.png

次に、タイルへのクロックを開始し、ADC DAC がクロック検出ステップまで実行されるようにします。

B4.png

B5.png

このステップが終了したら、DAC ソースを開始して、DAC を最後まで (スタートアップ FSM の終了まで) 実行します。

B6.png

波形を見てみると、送信されてきたトーンと DAC 出力バスが実行されていることがわかります。

ここでは、25Mhz/50Mhz/100Mhz/200Mhz が表示されています。

B7.png

 

この後、ADC に対して上記プロセスを繰り返します。

B8.png

すべて実行したら、これを波形で確認します。この場合、vout_00 および vout02 バスがシミュレーションの ADC ソースの出力です。

次は、毎 AXI ストリーム 8 サンプルの 1 つのスクリーン キャプチャで、ADC がトーンを正しく変換しているところを示しています。 

B9.png

データ シンクおよびチェッカー

ADC および DAC には demo_tb にシンク ブロックのセットが含まれています。

これらのブロック内でデータがスケーリングされ、FFT 変換を実行できます。これで、トーンが正しく変換されたことがわかります。

B10.png

これらのブロックは、エラー カウンターを管理します。すべてが正しければ、シーケンサーはシミュレーションを停止します。

B11.png

B12.png

このブログでは、IP サンプル シミュレーションについて簡単に説明しました。ほかにも詳細はありますが、まずこのブログからシミュレーションがどのように機能するかについて理解し、これらの手法をご自身のシミュレーション テストベンチに使用してみてください。