Custom Meta Tags
2503 Hero Banner

AMD製品に関連する技術ブログ

Long Copy

KR260でデジタル信号処理してみた! (2)

皆さん、こんにちは。新人エンジニアのノリさんです!今回はKR260を用いたデジタル信号処理のハードウェアデザインの一部を作成していきます。

https://www.hackster.io/whitney-knitter/dsp-for-soms-getting-started-with-dds-fir-compiler-ips-947cb4を参考にシミュレーションでデジタルフィルタの動作確認を行います。

最終的な目標である、デジタルフィルタをKR260で動かすことは、予定を変更して次回行うこととします。

2024-2-1

Long Copy_body

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!