環境:win7 64 vivado 2014.1
開發板:zedboard version d xc7z020clg484-1
目標:使用hls建立乙個fir濾波器,並對其源程式、hls優化等進行分析。
說明:
正文:
本文將分為以下步驟:
1. 使用hls建乙個工程,新增原始檔,進行功能測試
2. fir原理介紹和源程式分析
3. 匯出ip
4. 總結
1. 使用hls建乙個工程,新增原始檔,進行功能測試
1)建立hls工程。可以選擇gui的方式進行建立,詳見ug871;本文選擇tcl的方式。
執行vivado hls 2014.1 command prompt,使用cd命令切換到工程目錄(即包含「我的資源」中「run_hls.tcl」的目錄,也可以自己重新建立)。
開啟後,可以使用dir命令檢視是否包含此檔案。
鍵入:vivado_hls -f run_hls.tcl
此時會自動建立乙個hls工程並出現gui介面。如果沒有出現,繼續鍵入:vivado_hls –p fir_prj即可
2)此時可以檢視原始檔(fir.c)和testbench(fir_test.c)檔案,還可以看到out.gold.dat檔案,此檔案為標準的輸出結果,用於對比驗證。
注意,fir.c中的函式名fir即為將要生成的ip的名稱,必須相同
3)選擇run c simulation進行邏輯驗證。此步驟可以驗證程式的語法、功能等問題。但是除錯功能不強,因此建議最好先在外面驗證好**的正確性,再在hls中進行操作。
驗證後,出現下圖,說明驗證成功。
2. fir原理介紹和源程式分析
4)fir原理介紹
5)fir.c程式分析
#include "fir.h"
void fir (
data_t *y,
coef_t c[n],
data_t x
) else
acc+=data*c[i];;
} *y=acc;
}
這裡給出了fir資料儲存的圖,最新的資料將把最老的資料擠出,然後緩衝區的資料和係數矩陣相乘加和得到乙個輸出結果。
如果上圖不是很清晰,博主給出了開始自己的分析圖,很傻卻能說明問題:
6)fir_test.c程式分析
testbench用於測試fir模組的正確性。本例選取的600個取樣點進行測試,資料為:從0到+75,再到-75,再到+75,再到-75,以此類推,間隔為1.把fir的結果和乙個標準結果檔案out.gold.dat進行比較,如果相同,說明程式正確。
#include #include #include "fir.h"
int main () ; //
int i, ramp_up;
signal = 0;
ramp_up = 1;
fp=fopen("out.dat","w");
for (i=0;i<=samples;i++) //signal is: 0-(+75)-(-75)-(+75)-(-75)-...step=1
fclose(fp);
printf ("comparing against output data \n"); //compare the standard output and the result
if (system("diff -w out.dat out.gold.dat")) else
}
3. 匯出ip
選擇export rtl,匯出格式選擇ip catalog。
4. 總結.
使用hls設計了fir濾波器的ip,此ip可以使用,具體方法可見前面博文提到的lab56,在vivado的ip catalog中新增此ip,然後在設計時選用即可。
濾波器實現
基於matlab內建函式的fir設計。功能 設計標準頻率響應的基於窗函式的fir濾波器。語法 說明 fir1函式可以實現加窗線形相位fir數字濾波器設計,它可以設計出標準的低通 高通 帶通和帶阻濾波器.當wn w1 w2 時,fir1函式可得到帶通濾波器,其通帶為w1 w w2.在設計高通和帶阻濾波...
python實現濾波器
在使用python進行訊號處理過程中,利用 scipy.signal.filtfilt 可以快速幫助實現訊號的濾波。1.函式的介紹 1 濾波函式 scipy.signal.filtfilt b,a,x,axis 1,padtype odd padlen none,method pad irlen n...
論高通濾波器,帶阻濾波器,陷波濾波器
首先,對一副影象進行如下二維傅利葉變換。我們將u 0和v 0帶上式,我們可以得到如下式子。根據上式,可以到f 0,0 的值是非常大的。這裡,我們將 f 0,0 稱為直流分量,直流分量比其他的成分要大好幾個數量級。所以,這也就是傅利葉譜為什麼需要使用對數變換才能看清楚的原因。這裡,對於高通濾波器而言,...