91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過vivado HLS設(shè)計一個FIR低通濾波器

FPGA設(shè)計論壇 ? 來源:FPGA設(shè)計論壇 ? 2026-01-20 16:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Vivado HLS是一款強大的高層次綜合工具,可將C/C++代碼轉(zhuǎn)換為硬件描述語言(HDL),顯著提升FPGA開發(fā)效率。

1. FIR參數(shù)確定

FIR濾波器的設(shè)計,首先要明確其技術(shù)指標,這些指標對濾波器的性能和資源占用起著關(guān)鍵作用。以一個低通濾波器為例,其具體參數(shù)如下:

濾波器階數(shù)設(shè)定為15。

采樣頻率是100MHz。

通帶截止頻率為20MHz。

阻帶起始頻率為30MHz。

通帶波紋要求在0.1dB以內(nèi)。

阻帶衰減需達到60dB。

2. FIR系數(shù)計算

可以借助Python等工具來計算濾波器系數(shù)。下面是用Python計算系數(shù)的代碼:

importnumpyasnpfromscipyimportsignalimportmatplotlib.pyplotasplt# 濾波器參數(shù)order =15# 濾波器階數(shù)fs =100e6# 采樣頻率 (Hz)f_pass =20e6# 通帶截止頻率 (Hz)f_stop =30e6# 阻帶起始頻率 (Hz)A_pass =0.1# 通帶波紋 (dB)A_stop =60# 阻帶衰減 (dB)# 歸一化頻率nyquist =0.5* fs wp = f_pass / nyquist ws = f_stop / nyquist# 計算FIR濾波器系數(shù)(使用 Parks-McClellan 算法)h = signal.remez(order +1, [0, wp, ws,1.0], [1,0], Hz=1.0)# 打印系數(shù)(量化為16位定點數(shù))coeffs_q15 = [int(round(c *32767))forcinh]print("FIR系數(shù) (Q15格式):")fori, cinenumerate(coeffs_q15):  print(f"h[{i}] ={c}, 即{c/32768:.10f}")# 繪制頻率響應w, h_freq = signal.freqz(h) plt.figure() plt.plot(0.5*fs*w/np.pi,20*np.log10(np.abs(h_freq))) plt.title('FIR濾波器頻率響應') plt.xlabel('頻率 (Hz)') plt.ylabel('幅度 (dB)') plt.grid(True) plt.axvline(f_pass, color='green') # 通帶截止頻率plt.axvline(f_stop, color='red')  # 阻帶起始頻率plt.show()

3. C/C++代碼實現(xiàn)

使用Vivado HLS特定的數(shù)據(jù)類型和指令:

#include"fir.h"voidfir(data_t*output,data_tinput){  // 定義FIR系數(shù)(Q15格式)constcoeff_th[NUM_TAPS] = {    -10,-22,-32,-37,-26,10,72,133,     171,171,133,72,10,-26,-37,-32,-22,-10  };    // 聲明移位寄存器數(shù)組staticdata_tshift_reg[NUM_TAPS];    // pragma指令,優(yōu)化循環(huán)展開#pragmaHLS ARRAY_PARTITION variable=shift_reg complete dim=1// 數(shù)據(jù)移位操作for(inti = NUM_TAPS -1; i >0; i--) {    #pragmaHLS UNROLL    shift_reg[i] = shift_reg[i-1];   }   shift_reg[0] = input;    // 執(zhí)行乘法累加操作acc_tacc =0;  for(inti =0; i < NUM_TAPS; i++) { ? ? ? ?#pragma?HLS UNROLL? ? ? ? ?acc += shift_reg[i] * h[i]; ? ? } ? ? ? ??// 輸出結(jié)果? ? ?*output = acc >>15;// Q15格式轉(zhuǎn)換}

定義頭文件:

#ifndef_FIR_H_#define_FIR_H_#include"ap_fixed.h"http:// 定義數(shù)據(jù)類型typedefap_fixed<16,?1>data_t;  // 16位定點數(shù),1位整數(shù),15位小數(shù)typedefap_fixed<16,?1>coeff_t; // 系數(shù)類型typedefap_fixed<32,?17>acc_t;  // 累加器類型,防止溢出// 定義濾波器抽頭數(shù)#defineNUM_TAPS 19// 函數(shù)原型voidfir(data_t*output,data_tinput);#endif

定義測試程序:

#include"fir.h"#include#include#include#definePI 3.14159265358979323846intmain(){  // 測試數(shù)據(jù)data_tinput[100];  data_toutput[100];    // 生成測試信號(混合了5MHz和40MHz的正弦波)for(inti =0; i 

4. Vivado HLS項目創(chuàng)建與配置

4.1 在Vivado HLS中創(chuàng)建新項目并配置

1.打開Vivado HLS工具。

2.執(zhí)行 "File > New Project" 命令來創(chuàng)建一個新的項目。

3.為項目命名,例如 "FIR_Filter",并選擇合適的存儲位置。

4.添加源文件,即前面編寫的fir.c和fir.h。

5.添加測試平臺文件tb_fir.c。

6.指定目標設(shè)備,比如xc7z020clg400-1。

7.配置解決方案,設(shè)置時鐘周期(例如 10ns)和復位類型。

4.2在Vivado HLS中執(zhí)行C仿真

1.點擊 "Project > Run C Simulation"。

2.確保仿真順利完成,并且控制臺顯示 "Verification successful"。

3.可以使用 gnuplot 或 MATLAB 對輸出文件進行分析。

4.3執(zhí)行C綜合以將C代碼轉(zhuǎn)換為RTL

1.選擇 "Solution > Run C Synthesis > Active Solution"。

2.綜合完成后,查看報告,重點關(guān)注:

資源利用率(DSP、LUT、FF 等)。

延遲(Latency)和吞吐量(Interval)。

關(guān)鍵路徑分析。

4.4進行RTL級仿真驗證

1.選擇 "Solution > Run C/RTL Co-simulation"。

2.選擇仿真工具(如VCS、ModelSim等)。

3.等待仿真完成,檢查結(jié)果是否與C仿真一致。

4.5導出IP

將設(shè)計導出為IP核供Vivado使用:

1.選擇 "Solution > Export RTL"。

2.保持默認設(shè)置,點擊 "OK"。

3.導出完成后,IP 核會出現(xiàn)在項目目錄的exported_ip文件夾中。

4.6在Vivado中集成IP

6fb37c3e-f5b7-11f0-92de-92fbcf53809c.png

1.打開 Vivado,創(chuàng)建新工程或打開已有工程。

2.點擊 "Settings > IP > Repository",添加HLS導出的IP路徑。

3.在Block Design中添加FIR濾波器IP核。

4.完成系統(tǒng)集成(添加時鐘、復位等)。

5.生成比特流并下載到FPGA進行硬件驗證。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1660

    文章

    22408

    瀏覽量

    636222
  • 濾波器
    +關(guān)注

    關(guān)注

    162

    文章

    8411

    瀏覽量

    185679
  • 低通濾波器
    +關(guān)注

    關(guān)注

    15

    文章

    554

    瀏覽量

    49005
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    857

    瀏覽量

    71102

原文標題:通過vivado HLS設(shè)計一個FIR低通濾波器

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用DDS生成三信號并在Vivado中實現(xiàn)低通濾波器

    本文使用 DDS 生成三信號,并在 Vivado 中實現(xiàn)低通濾波器。低通濾波器將濾除相關(guān)信號。
    的頭像 發(fā)表于 03-01 14:31 ?2798次閱讀
    使用DDS生成三<b class='flag-5'>個</b>信號并在<b class='flag-5'>Vivado</b>中實現(xiàn)<b class='flag-5'>低通濾波器</b>

    Vivado 使用Simulink設(shè)計FIR濾波器

    。 使用vivado的System Generator可以在simulink下快速的通過matlab的強大設(shè)計功能設(shè)計濾波器。這里使用fdatool設(shè)計了
    發(fā)表于 04-17 17:29

    信號的譜分析、做一個FIR數(shù)字低通濾波器

    一個FIR數(shù)字低通濾波器,信號源是正弦信號加均勻白噪聲,顯示混疊信號和經(jīng)過濾波后信號波形 以及頻譜分析,
    發(fā)表于 05-10 00:05

    如何設(shè)計低通FIR濾波器

    設(shè)計實現(xiàn)低通FIR濾波器步設(shè)計和實現(xiàn)過濾器獲得濾波器系數(shù)可調(diào)諧低通FIR濾波器高級設(shè)計選項:最
    發(fā)表于 08-23 10:00

    并行FIR濾波器Verilog設(shè)計

    的《數(shù)字濾波器的MATLAB與FPGA實現(xiàn)》。本設(shè)計將在Vivado環(huán)境下進行仿真。使用MATLAB設(shè)計2kHz采樣,500Hz截止的15階低通
    發(fā)表于 09-25 17:44

    基于DSP的FIR數(shù)字濾波器設(shè)計與實現(xiàn)

    分析了FIR數(shù)字濾波器的基本原理,在MATLAB環(huán)境下利用窗函數(shù)設(shè)計FIR低通濾波器,實現(xiàn)了FIR低通濾
    發(fā)表于 12-18 15:53 ?101次下載

    基于MATLAB及FPGA的FIR低通濾波器的設(shè)計

    充分利用有限沖擊響應數(shù)字濾波器(Finite Impulse Response digital filter ,FIR)系數(shù)的對稱特性,借助于MATLAB語言和現(xiàn)場可編程門陣列(FPGA)實現(xiàn)了種高效的
    發(fā)表于 08-05 14:23 ?83次下載
    基于MATLAB及FPGA的<b class='flag-5'>FIR</b><b class='flag-5'>低通濾波器</b>的設(shè)計

    HLS系列 – High Level Synthesis(HLS) 從最簡單的fir濾波器開始2

    在這個系列的上篇文章“HighLevel Synthesis(HLS) 從最簡單的fir濾波器
    發(fā)表于 02-08 05:10 ?788次閱讀

    HLS系列 – High Level Synthesis(HLS) 從最簡單的fir濾波器開始3

    在上章“High LevelSynthesis(HLS) 從最簡單的fir濾波器開始2”中
    發(fā)表于 02-08 05:11 ?794次閱讀
    <b class='flag-5'>HLS</b>系列 – High Level Synthesis(<b class='flag-5'>HLS</b>) 從<b class='flag-5'>一</b><b class='flag-5'>個</b>最簡單的<b class='flag-5'>fir</b><b class='flag-5'>濾波器</b>開始3

    HLS系列 – High Level Synthesis(HLS) 從最簡單的fir濾波器開始4

    在這個系列的前3篇文章“HighLevel Synthesis(HLS) 從最簡單的fir濾波器開始1-3”中,我們從
    發(fā)表于 02-08 05:13 ?1603次閱讀
    <b class='flag-5'>HLS</b>系列 – High Level Synthesis(<b class='flag-5'>HLS</b>) 從<b class='flag-5'>一</b><b class='flag-5'>個</b>最簡單的<b class='flag-5'>fir</b><b class='flag-5'>濾波器</b>開始4

    HLS系列 – High LevelSynthesis(HLS) 從最簡單的fir濾波器開始5

    在這個系列的前4篇文章“HighLevel Synthesis(HLS) 從最簡單的fir濾波器開始1-4”中,我們從
    發(fā)表于 02-08 05:18 ?1027次閱讀
    <b class='flag-5'>HLS</b>系列 – High LevelSynthesis(<b class='flag-5'>HLS</b>) 從<b class='flag-5'>一</b><b class='flag-5'>個</b>最簡單的<b class='flag-5'>fir</b><b class='flag-5'>濾波器</b>開始5

    詳解FIR濾波器和IIR濾波器的區(qū)別

    數(shù)字濾波器廣泛應用于硬件電路設(shè)計,般分為FIR濾波器和IIR濾波器。那么FIR
    發(fā)表于 05-03 11:36 ?20次下載

    數(shù)字低通濾波器的設(shè)計

    本文主要介紹了數(shù)字低通濾波器的設(shè)計,數(shù)字濾波器有無限沖激響應(IIR)系統(tǒng)和有限沖激響應(FIR)系統(tǒng)兩種。利用MATLAB設(shè)計IIR濾波器,設(shè)計過程簡單、直接,大大縮減了設(shè)計開發(fā)的時
    發(fā)表于 01-14 15:16 ?2w次閱讀
    數(shù)字<b class='flag-5'>低通濾波器</b>的設(shè)計

    Matlab低通濾波器設(shè)定與實踐

    Matlab數(shù)字濾波器設(shè)計實踐—FIR 1低通濾波器設(shè)定 在理想情況下,低通濾波器使信號中低于指定截止頻率 ωc 的所有頻率分量保持不變,并拒絕高于 ωc 的所有分量。由于實現(xiàn)理想
    的頭像 發(fā)表于 08-16 11:10 ?1.7w次閱讀
    Matlab<b class='flag-5'>低通濾波器</b>設(shè)定與實踐

    如何使用HLS加速FPGA上的FIR濾波器

    電子發(fā)燒友網(wǎng)站提供《如何使用HLS加速FPGA上的FIR濾波器.zip》資料免費下載
    發(fā)表于 06-14 15:28 ?3次下載
    如何使用<b class='flag-5'>HLS</b>加速FPGA上的<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>