KR260でデジタル信号処理してみた! (2)
皆さん、こんにちは。新人エンジニアのノリさんです!今回はKR260を用いたデジタル信号処理のハードウェアデザインの一部を作成していきます。
https://www.hackster.io/whitney-knitter/dsp-for-soms-getting-started-with-dds-fir-compiler-ips-947cb4を参考にシミュレーションでデジタルフィルタの動作確認を行います。
最終的な目標である、デジタルフィルタをKR260で動かすことは、予定を変更して次回行うこととします。
2024-2-1
Step0:前回行った内容の参照
前回までのブログはこちらをご参照お願いします。
/japan/manufacturers/amd/blog/try-to-digital-signal-processing-with-kr260-1/
デジタルフィルタについての説明やハードウェア要件に関しても書かれています。
Step1: ハードウェアデザインの作成
Vivadoを開いて、前回作ったブロックデザインを開きます
ILA追加のためにfir_compiler_0~2のM_AXIS_DATAをMake Externalの機能で一時的にダミーの端子に引き出し信号を追加します
追加した信号線とdds_compiler_0のM_AXIS_DATAから出ている信号線を右クリックしてDebugを選択します
Debugマークを付けることでRun Connection Automationを用いて自動でILAとの接続を行えます
下の図のようになっていることを確認します
Run Connection Automationをクリックします
All AutomationとAXI-Stream Protocol Checkerにチェックを入れます
ダミーの外部端子M_AXIS_DATA_0~2を削除します
下の図のようになっていることを確認します(「右端にSystem ILAが挿入されてDebugマーク付きの信号が繋がっています)
Diagramウィンドウの上部にあるValidateのチェックボックスをクリックし、ブロックデザインの検証を行います
成功すると次のポップアップが表示されるので、OKをクリックします
ここから今回の本題であるシミュレーションに移ります
左側のFlow Navigator上部にあるAdd Sourceをクリックしてテストベンチを作ります
ポップアップが表示されるのでAdd or create simulation sourcesにチェックを入れてNextをクリックします
Create Fileをクリックし、表示されたポップアップのFile nameをfir_tbとしてOKをクリックします
SourceタブのSimulation Sourcesに先程追加したファイル (fir_tb.v) があるので、右クリックしてSet as Topを選択し、最上位に設定します
fir_tb.vを開き、下に示すテストベンチ用のソースコードを記述します(単に時間を経過させるだけの処理です)
`timescale 1ns / 1ps
module fir_tb;
initial begin
#1000000000;
$stop;
end
design_1 design_1_i();
endmodule
シミュレーションを行う前にFIR_Compilerの係数ファイルが正しく設定されていることを確認します
前回同様、FIR_Compiler のIPをダブルクリックして係数ファイルの設定ができます
前回のブログはこちらをご参照お願いいたします
/japan/manufacturers/amd/blog/try-to-digital-signal-processing-with-kr260-1/
ここでは、fir_compiler_0をlpf.coe、fir_compiler_1をbpf.coe、fir_compiler_2をhpf.coeとして設定しています
係数ファイルの設定が確認できたら、Flow NavigatorからRun Simulationをクリックし、Run Behavioral Simulationを選択します
Scopeタブにあるdesign1_dds_compiler_0_0とdesign1_fir_compiler全てのm_axi_data_tdataをWaveformウィンドウに追加します
Waveformウィンドウに追加した波形4つをshift+矢印キーで全て選択し、RadixをSigned Decimal、Waveform StyleをAnalogにします
Simulationウィンドウ上部にある、実行時間指定で100usを指定し、Run for 100us (下付き文字 (T) が付いた再生アイコン) をクリックします
シミュレーションが終わるまで数分程掛かるので待ちます
シミュレーションが終わると下の図のような波形が表示されます
元の信号は低周波から高周波までを周期的に繰り返しているので、これによりフィルタの効果を確認することができます
上から元の信号、ローパスフィルタを掛けた信号、バンドパスフィルタを掛けた信号、ハイパスフィルタを掛けた信号が表示されており、設定通りとなっていることが確認できます
感想
今回はKR260で信号処理を行うためのハードウェアデザインの設計を行い、それを利用してフィルタのシミュレーションを行いました。
前回同様、フィルタが理論通りの働きをしたので大変面白かったです!
前回長い記事だったので、連続して長い記事にするのも読む上で疲れると考え、KR260の実装は後に回すこととしました。
(正月休み等で時間があまり取れなかったのも要因ではありますが(笑))
次回はいよいよVitisを使ってKR260上でフィルタを動かしていく予定です(※予定は変更されることもあります)。
それでは、また次回お会いしましょう!See you next time!

Kria
Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。
AMD製品に関連する技術ブログ
- エンジニアブログの再開およびテクニカルウェビナーのご案内
- 初心者のためのPython & Numpy入門
- KR260でIntel RealSenseを動かしてみた!
- Vitis HLSで足し算IPを作ってみた!(プログラミング編)
- KD240でモータ制御してみた!
- KR260でデジタル信号処理してみた! (3)
- KR260でデジタル信号処理してみた! (2)
- KR260でデジタル信号処理してみた! (1)
- KR260でロボットアームを動かしてみた! (2)
- KR260でロボットアームを動かしてみた! (1)
- KR260でROS2を使ってキャリブレーション&マーカー検出してみた!
- KR260とPynqでAIカメラを動かしてみた!
- KR260でROS2 Perception Stack Applicationを動かしてみた!【2】
- KR260でROS2 Perception Stack Applicationを動かしてみた!
- Kria SOMでTPM2.0を動かしてみた!
- VivadoでKR260のハードウェアデザインを作って動かしてみた!
- ROS2 Multi-Node Communications via TSNを動かしてみた!
- AIBOX-ReIDを動かしてみた!