こんにちは、ドルフィンシステムの笹生です。
今日も前回の続きで RFSoC の深堀り(4) です!
(あまり深堀りでは無いと御叱り受けそうですが。。。徐々に深く掘っていこうと思っております。)
さて今回は 2021/06/14のRFSoC の深堀り(3)のブログので実行した ZCU216 の評価ツールの PL 側のサンプルプロジェクトをやっと発見したので、中身を見てみました。
ZCU216 PL側のサンプルはどこに?
実は、RFSoC の深堀り(3) の後、ZCU216 の開発に使えそうな AD, DA を使ったサンプルプロジェクトを Web やフォーラムで色々探していたのですが、どれを参考にすればいいのかさっぱりわからずにいました。
ですが灯台下暗しとはよく言ったものですね。見つけました。ダウンロードした RF 評価ツールのインストール先に。PL のプロジェクトが丸々 zip で入っていました!
デフォルトのインストール先だと以下のような場所にあります。
"<Xilinxフォルダ>\RF_DC_Evaluation_UI\pl\216\216_Eval_Tool_PL.zip"
サイズは 211MB 程度で、そこそこサイズはあります。
適当なフォルダにコピーしてきて解凍します。(ちなみに解凍後のサイズは 563MB程度でした)
こんな感じで、Vivado プロジェクトが丸々入っていたんです!
(探し方が悪いのかもしれませんが、ドキュメントには直接には書いてないみたいです。)
早速 Vivado で開いてみましょう。
デザインソースは基本的に Verilog HDL で記述されているようですが、トップレベルはほぼラッパーのようなので、実態はその下にあるブロックデザインになります。
コンストレインツとしてプロジェクトに読み込まれている xdc ファイルはこの 6種類のようです。この手のボードは制約にお約束があると思うので、それぞれはまた機会を見て詳細に見れたらと思います。
こちらがシミュレーション用にプロジェクトに読み込まれているファイルです。
demo_tb.sv という System Verilog での記述のようです。後程シミュレーションを流してみようかと思います。
ブロックデザインの中身
さて、ブロックデザインを開いてみてみます。
一部未配線のものがあるようで、緑の帯のところに、デザイナーアシスタンスとして、自動配線できるよというメッセージが表示されています。
このように大きく 5つのブロックで構成されています。
・clocking_block は各ブロック、各機能(ADC, DAC) で使っているクロックに関しての総まとめのようなブロックになっているようです。
・ADC_DDR_DMAは、ex_disign の ADC 受信のデータ出力を受け、DDR メモリへ DMA 転送する機能、DDRから保存したデータを PS_Subsystem に転送するインターフェースブロックのようです。
・DAC_DDR_DMA は、逆にPS_Subsystemから書き込まれた DDR メモリの波形データを DMA 転送で ex_design に転送し、DAC から送信するためのインターフェースブロックのようです。
・PS_Subsystem は、いわゆる PS = Processing System の部分になり、Zynq Ultrascale+ のブロックや、GPIO などのペリフェラルとのサブシステムになっています。
・ex_design が、実際にこの RFSoC の ADC、DAC と接続しているところになっています。内部に rfip という名称で「Zynq Ultrascale + RF data converter」という IP を含み、この IP で ADCとDAC の実際の接続は行っているようです。
ex_design の中はこんな感じです。
この ex_design のブロックは、割と汎用的に使えそうにも思えました。
評価ツール自体は、rfipで受信したデータをDDR にデータをバッファして、それを PS 側で読み取ってスペアナ的に表示したり、逆にPS側で生成したデータを DDR にバッファして、それを rfip から DAC で送信するという仕組みになっています。
PS側で信号処理をするのであれば、PLのデザインはこのまま使えそうですし、リアルタイム信号処理をするのであれば、ここのdac source や、adc sink のブロックを信号処理アルゴリズム等に差し替えればいろいろなことが出来そうです!
ビルドして使用リソースを確認
一応、素の状態でビルドしてどのくらいのリソースを消費するのか確認してみました。
未配線部分などもあるようなので、もしかしてエラーするのではないかと恐る恐る実行してみます。
まず、サブモジュールの合成はそれなりに時間がかかり、私のそれなりにスペックのある PC で 21分かかりましたが無事に通りました。
その後の論理合成は早くて、1分半くらい、インプリメントはそれなりに時間がかかりましたが 51分でできました。全体では 1時間半くらいでした。
使用リソースは以下の様になっておりまして、DSP はほとんど未使用な状態ですね。
LUT等は 2割程度、BRAM が 3割使っているようです。
まだ十分に空きがあるようなので、信号処理の追加もできそうです。
(ただ ch数が 16ch と多いので、少な目リソースの処理でも 16並列に置くとすぐにいっぱいになりそうですが。。。)
まとめ
ZCU216 の RF 評価ツールの元の PLプロジェクトがあり、どのように作られているかが大変参考になりました。
ビットファイルまでできたので、今度はPS側の処理を見てみようと思います。
ちなみに RF評価ツールの GUI はどうも LabVIEW で作っているようなのですが、インストールしたフォルダには開発のための LabVIEW プロジェクトのようなものは無かったんですよね。。。これも意外な場所にあったりするんでしょうか。
0 件のコメント :
コメントを投稿