FC2カウンター FPGAの部屋 AXI4 Master アクセスのラプラシアン・フィルタ IP3(シミュレーション)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

AXI4 Master アクセスのラプラシアン・フィルタ IP3(シミュレーション)

AXI4 Master アクセスのラプラシアン・フィルタ IP2(現在作成中)”の続き。

AXI4 Master アクセスのラプラシアン・フィルタ IPが出来てシミュレーションを行った。

プロジェクトのファイル構成を下に示す。
axi4m_lap_filter_3_131124.png

上の図で、lap_filter_axim.v がトップファイルだ。
lap_filter_axim_LiteS_if.v は、Vivado HLS のAXI4 Lite Slaveモジュールを借用している。
axi4_master_inf.v が、作ってきたAXI4 Master アクセス用のIPだ。
line_read_and_y.v は、1ライン画像データを読んできて、RGBからYに変換するモジュールだ。
Dual_Prot_Memory.v は、1ライン分の画像データを保存しておくライン・バッファである。

下にISEのプロジェクトを示す。
axi4m_lap_filter_4_131124.png

プロジェクトのファイル構成の図でも見えていたと思うが、テストベンチ lap_filter_axim_tb.v を作製してシミュレーションを行った。
テストベンチは最初にAXI4 Lite Slave トランザクションでレジスタをセットする。そうすると、AXI4 Master Readトランザクションが発生して、画像データをReadしてくる。Readされた画像データはRGB-Y変換により、輝度値に変換される。画像の輝度値は、ライン・バッファに保存され、3ライン分たまった所でラプラシアン・フィルタ処理を施され、AXI4 Master Write トランザクションにより、ラプラシアン・フィルタ保存領域にWriteされる。
さて、ISimによるシミュレーション結果を見ていこう。
最初に、AXI4 Lite Slave トランザクションでレジスタをセットする部分のシミュレーション結果を見ることにしよう。下にシミュレーション波形を示す。
axi4m_lap_filter_5_131124.png

最初のReadトランザクションを示す。
axi4m_lap_filter_6_131124.png

Read Address Channel は最初に256バースト転送を3回、32バースト転送を行っている。すべてのトランザクションのARIDは0なので、Readトランザクションはネストされ、順番にRead Data Channelでトランザクションが処理される。Read Address Channel のトランザクション波形を示す。(800x600ピクセルのSVGA画面の1行=800ピクセルを256バースト3回と32バースト1回で Read する)
axi4m_lap_filter_7_131124.png

次にWriteトランザクションを示す。最初のWriteトランザクションのデータはすべて0なので、2番めのWriteトランザクションを下に示す。
axi4m_lap_filter_8_131124.png

Write Address Channel のトランザクションを示す。Readトランザクション同様、256バースト転送を3回、32バースト転送を行っている。
axi4m_lap_filter_9_131124.png

下の図では、上が AXI4 Write で下が AXI4 Readになっているので、トランザクションの様子がよくわかると思う。
axi4m_lap_filter_10_131124.png

フレームの最後は、9.8msec 辺だ。AXI4バスの動作周波数は100MHzとなっている。
axi4m_lap_filter_11_131124.png

フレームの最後の後に、AXI4 Lite Slave トランザクションが1つあるのが見えるだろうか?
axi4m_lap_filter_12_131124.png

これは、AXI4 Lite Slave Readトランザクションで、レジスタの0番地をReadしている。
axi4m_lap_filter_13_131124.png

レジスタ0番地のビットアサインを下に示す。


//------------------------Address Info-------------------
// 0x00 : Control signals
// bit 0 - ap_start (Read/Write/COH)
// bit 1 - ap_done (Read/COR)
// bit 2 - ap_idle (Read)
// bit 3 - ap_ready (Read)
// bit 7 - auto_restart (Read/Write)
// others - reserved


シミュレーション波形を見ると、6をReadできているので、ap_done と ap_idle が立っているのがわかる。

因みに、100MHzでWait無しの最高速で9.8msec です。ちょっと危ないですかね? 危ない時は時は、AXI4バスの動作周波数を150MHzにしてみようかな?と思っています。(16.7msec 以内に処理が終わるかな?ということです)
間に合わない時のその他の対処方法としては、DDR3 SDRAMの帯域は余っているはずなので、ReadトランザクションとWriteトランザクションを重ねあわせることができるはずです。

(2013/11/25:追記)
このラプラシアン・フィルタ AXI4 Master IP はハードウェアとしてVerilog HDLで記述したのだが、わざとCでの高位合成結果のHDLに合わせてメモリベースで設計されている。この場合はハードウェアといえどもクロックベースの設計を行っていないので、ソフトウェア同様、フレームに処理が間に合うかどうかを確定できない。
  1. 2013年11月24日 04:34 |
  2. Co-design
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/2653-002a8c8e
この記事にトラックバックする(FC2ブログユーザー)