題目:SOC_FIR-AXI 最後更新 : 2023.10.22
作者:王語
聲明:本專案接受任何理性評論與建議
小型練手專案,設計 FIR 計算單元,並通過 AXI-Lite 以及 AXI-stream 維護資料傳輸。 使用 vivado 合成並實現於 pynq-z2
-
Code - 本專案原始程式碼
內含一個README.md說明如何運行程式
-
Simulation_logs - 模擬結果與說明
-
Waveform - 波形圖
-
GitHubLink.txt - 本專案連結
-
LICENSE - MIT LICENSE
-
RTL_Viewer(schematic).pdf - 在vivado環境下合成出來的電路圖
-
fir_utilization_synth.rpt - 在pynq-z2中使用的資源統計
-
report.pdf - 完整的報告
-
timing_report.txt - 時序分析
設計一個FIR運算IP,並使用 axi 維護資料傳輸
-
FIR
$$Y[n] = \sum{(a[n-11]*X[n])}$$ n ∈ [0,599]
-
data_length = 600
-
Data_Width = 32
-
Tape_Num = 11
-
-
Hand Shake
- AXI-Lite
- AXI-Stream
- 初始狀態為IDEL,指允許AXI-Lite傳輸。
- 接收11筆tap,同時在內部reset data RAM
- 接收length
- 接收ap_start,進入WORK狀態,允許AXI_Lite與AXI-Stream傳輸
- 接收x[n]並運算,再將y[n]輸出,接收資料、運算、傳出資料是平行任務 當counter=length時輸出y[n]會附帶tlast信號
- 結束運算ap_done = 1,等待該資訊傳遞成功
- ap_done 復位,發self_reset_n,將系統回復初始狀態,此self_reset_n不會重置data RAM以及tap RAM中的資料。
- 透過axis_reset_n重置DUT
- 透過axi-lite(R)確認ap_idle = 1
- 傳輸length、11筆tap資訊
- 驗證tap資訊
- 傳輸ap_start資訊
- 準備傳輸x[n]與接收y[n]
- 比對golden_test
- 準備接收ap_done
- 準備接收ap_idle
- 比對ap_signals
- 重複步驟1~9兩次
僅概要說明設計,詳見 report.pdf