Vivado HLS之濾波器實現

2021-06-25 10:45:43 字數 2574 閱讀 3256

環境: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 稱為直流分量,直流分量比其他的成分要大好幾個數量級。所以,這也就是傅利葉譜為什麼需要使用對數變換才能看清楚的原因。這裡,對於高通濾波器而言,...