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

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

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

基于EQ6HL130實現(xiàn)FIR功能測試

中科億海微 ? 2022-05-19 17:12 ? 次閱讀

FIR(Finite Impulse Response)濾波器:有限長單位沖激響應(yīng)濾波器,又稱為非遞歸型濾波器,是數(shù)字信號處理系統(tǒng)中最基本的元件,它可以在保證任意幅頻特性的同時具有嚴(yán)格的線性相頻特性,同時其單位抽樣響應(yīng)是有限長的,因而濾波器是穩(wěn)定的系統(tǒng)。因此,F(xiàn)IR濾波器在通信、圖像處理、模式識別等領(lǐng)域都有著廣泛的應(yīng)用。由于 FIR 濾波器處理的是數(shù)字信號,所以模擬信號在進(jìn)入 FIR 濾波器前,需要先經(jīng)過 AD 器件進(jìn)行模數(shù)轉(zhuǎn)換將模擬信號轉(zhuǎn)化為數(shù)字信號,而為了讓信號處理不發(fā)生失真,信號的采樣速度必須滿足奈奎斯特采樣定理,一般取信號最高頻率的 4 到 5 倍作為采樣頻率。

1 、FIR結(jié)構(gòu)介紹

2 、EQ6HL130可編程邏輯芯片介紹

3 、eLinx工具介紹

4 、使用Verilog建立混頻波形

5 、matlab工具參數(shù)配置

6 、FIR結(jié)構(gòu)程序設(shè)計

7 、FIR IP核使用

8 、仿真驗證

9 、開發(fā)板試用

10、公司情況


1

FIR結(jié)構(gòu)介紹

90fbdf2c-d215-11ec-8521-dac502259ad0.png

FIR 濾波器信號處理如下公式所示,其中 x(n)是輸入的信號,a(n)為 FIR 濾波系數(shù),y(n)為濾波后的信號。N為FIR濾波器的抽頭數(shù),濾波器階數(shù)為 N-1。

912bfda6-d215-11ec-8521-dac502259ad0.png

低通濾波器:低通濾波器是容許低于截止頻率的信號通過,但高于截止頻率的信號不能通過的濾波。

高通濾波器:高通濾波器,又稱低截止濾波器,低阻濾波器,允許高于某一截頻的頻率通過,而大大衰減較低頻率的一種濾波器 ,它去掉了信號中不必要的低頻成分或者說去掉了低頻干擾。

帶通濾波器:是指能通過某一頻率范圍內(nèi)的頻率分量,但將其他范圍的頻率分量衰減到極低水平的濾波器,與帶阻濾波器的概念相對。

帶阻濾波器:是指能通過大多數(shù)頻率分量,但將某些范圍的頻率分量衰減到極低水平的濾波器,與帶通濾波器的概念相對。

915d1a94-d215-11ec-8521-dac502259ad0.png

2

EQ6HL130可編程邏輯芯片介紹

EQ6HL130是中科億海微自主研發(fā)的可編程邏輯芯片,有效系統(tǒng)門容量達(dá)到1360萬門;

芯核電壓1.1V,I/O標(biāo)準(zhǔn)電壓3.3V,支持多種I/O標(biāo)準(zhǔn);

具有1200個4.5K嵌入式存儲器單元,最大存儲容量5.4M bit;

具有192個高速18bit×18bit乘法器;

具有8個可編程PLL,最高時鐘管理頻率可達(dá)500MHz;

最多可提供16路全局時鐘信號;

最大可提供338個可編程用戶I/O, 最多提供169對LVDS差分端口;

支持片上數(shù)字控制終端電阻(Digital Control Termination,DCT);

支持主動串行、被動串行、主動并行、被動并行、JTAG、SPI等配置模式;

ESD大于2000V。

3

eLinx工具介紹

億靈思設(shè)計套件(eLinx Design Suite)是中科億海微研發(fā)的一款擁有國產(chǎn)自主知識產(chǎn)權(quán)的大規(guī)??删幊踢壿嬓酒_發(fā)軟件,可以支持千萬門級以上可編程邏輯芯片器件的設(shè)計開發(fā)。eLinx軟件不僅可以支持工業(yè)界標(biāo)準(zhǔn)的開發(fā)流程,即從RTL綜合到配置碼流生成下載的全套操作,而且可以提供面向嵌入式可編程電路IP核定制開發(fā)的評估流程,幫助用戶定制嵌入式可編程電路IP核資源的規(guī)模和排布,并生成相應(yīng)的芯片數(shù)據(jù)庫,為終端用戶提供與可編程邏輯芯片成片相同的EDA全流程服務(wù)。

產(chǎn)品特點:

從 RTL到Bitstream的全正向自主可控融合架構(gòu)EDA工具;

集成了IP核生成器,包含豐富的IP軟硬核資源,幫助用戶快捷地實現(xiàn)復(fù)雜設(shè)計;

除傳統(tǒng)流程外,還支持嵌入式可編程電路 IP 核的評估以及定制流程;

高效的時序裝箱布局布線算法,在延時/面積方面有著高質(zhì)量的QoR;

支持工業(yè)標(biāo)準(zhǔn)SDC文件作為時序約束來滿足時序要求;

集成了在線邏輯分析Bitprobe,可提供方便的在線調(diào)試手段;

支持各類碼流下載模式,包括PROM/Flash片外下載;

支持第三方的仿真工具M(jìn)odelSim;

基于TCL腳本環(huán)境的自動化流程控制;

軟件界面兼容國際主流商業(yè)工具,容易上手;

直觀的圖形化管腳分配以及Floorplan功能;

三模冗余(TMR)軟件抗輻照加固措施。

4

使用Verilog建立混頻波形

91734a8a-d215-11ec-8521-dac502259ad0.png

程序介紹:分別使用兩個rom輸出不同頻率,進(jìn)行相加。

頻率計算:使用時鐘/采樣點=真實頻率。

91aba740-d215-11ec-8521-dac502259ad0.png


仿真結(jié)果:data_sum為相加后的結(jié)果!

91c432b0-d215-11ec-8521-dac502259ad0.png

5

matlab工具參數(shù)配置

設(shè)計一個16階的低通濾波器


91e57e70-d215-11ec-8521-dac502259ad0.png

9238b3a6-d215-11ec-8521-dac502259ad0.png

參數(shù)選擇:選用低通濾波器,使用波紋設(shè)計法,階數(shù)自定義了16個(當(dāng)然階數(shù)越多濾波效果越好),F(xiàn)S的采樣頻率是50M,通過頻率0.5M,截至頻率為1M。

Response Type:選擇FIR濾波器的類型:低通、高通、帶通和帶阻等。

Design Method:FIR濾波器設(shè)計方法有多種,最常用的是窗函數(shù)設(shè)計法(Window)、等波紋設(shè)計法(Equiripple)和最小二乘法 (Least-Squares)等。其中窗函數(shù)設(shè)計法在學(xué)校課堂中是重點講解的,提到FIR濾波器肯定會想到hamming、kaiser窗,但是實際應(yīng)用中卻很少使用,因為如果采用窗函數(shù)設(shè)計法,達(dá)到所期望的頻率響應(yīng),與其它方法相比往往階數(shù)會更多;而且窗函數(shù)設(shè)計法一般只參照通頻帶wp、抑制頻帶ws 和理想增益來設(shè)計濾波器,但是實際應(yīng)用中通頻帶和抑制帶的波紋也是需要考慮的,那在這種情況下,采用等波紋設(shè)計法就非常適用了。

Frequency Specification:設(shè)置頻率響應(yīng)的參數(shù),包括采樣頻率Fs、通帶頻率Fpass和阻帶頻率Fstop。

Filter Order:設(shè)置濾波器的階數(shù),這個選項直接影響濾波器的性能,階數(shù)越高,性能越好,但是相應(yīng)在可編程邏輯芯片實現(xiàn)耗用的資源需要增多。在這個設(shè)置中提供2個選項:Specify order和Minimum order,Specify order是工程師自己確定濾波器的階數(shù),Minimum order是讓工具自動確定達(dá)到期望的頻率相應(yīng)所需要的最小階數(shù),因此具體選擇哪個選項得視實際情況而定了,(這里我選用16階)。

將配置完成后的數(shù)據(jù)導(dǎo)出 :

File ---> Export ---> Export ;

928557ce-d215-11ec-8521-dac502259ad0.png

輸入:> Num=round(Num*400) 取整數(shù)


92a0dc9c-d215-11ec-8521-dac502259ad0.png

將上方數(shù)據(jù)代入到verilog進(jìn)行乘累加濾波。

6

FIR結(jié)構(gòu)程序設(shè)計

module top (

input wire clk,

input wire rst_n

);

//Registers Declarations

reg [9:0] addr_1;

reg [9:0] addr_2;

reg [14:0] data_sum;

reg [14:0] delay_pipeline1 ;

reg [14:0] delay_pipeline2 ;

reg [14:0] delay_pipeline3 ;

reg [14:0] delay_pipeline4 ;

reg [14:0] delay_pipeline5 ;

reg [14:0] delay_pipeline6 ;

reg [14:0] delay_pipeline7 ;

reg [14:0] delay_pipeline8 ;

reg [14:0] delay_pipeline9 ;

reg [14:0] delay_pipeline10 ;

reg [14:0] delay_pipeline11 ;

reg [14:0] delay_pipeline12 ;

reg [14:0] delay_pipeline13 ;

reg [14:0] delay_pipeline14 ;

reg [14:0] delay_pipeline15 ;

reg [14:0] delay_pipeline16 ;

reg [14:0] delay_pipeline17 ;

reg signed [22:0] multi_data1 ;//乘積結(jié)果

reg signed [22:0] multi_data2 ;

reg signed [22:0] multi_data3 ;

reg signed [22:0] multi_data4 ;

reg signed [22:0] multi_data5 ;

reg signed [22:0] multi_data6 ;

reg signed [22:0] multi_data7 ;

reg signed [22:0] multi_data8 ;

reg signed [22:0] multi_data9 ;

reg signed [22:0] multi_data10 ;

reg signed [22:0] multi_data11 ;

reg signed [22:0] multi_data12 ;

reg signed [22:0] multi_data13 ;

reg signed [22:0] multi_data14 ;

reg signed [22:0] multi_data15 ;

reg signed [22:0] multi_data16 ;

reg signed [22:0] multi_data17 ;

reg signed [22:0] FIR_OUT;

//---Wiredsignaldeclaration

wire [13:0] data_1;

wire [13:0] data_2;

wire[7:0] coeff1 =8'd86; //濾波器系數(shù)

wire[7:0] coeff2 = 8'd5;

wire[7:0] coeff3 = 8'd6;

wire[7:0] coeff4 = 8'd6;

wire[7:0] coeff5 = 8'd6;

wire[7:0] coeff6 = 8'd6;

wire[7:0] coeff7 = 8'd6;

wire[7:0] coeff8 = 8'd6;

wire[7:0] coeff9 = 8'd6;

wire[7:0] coeff10 = 8'd6;

wire[7:0] coeff11 = 8'd6;

wire[7:0] coeff12 = 8'd6;

wire[7:0] coeff13 = 8'd6;

wire[7:0] coeff14 = 8'd6;

wire[7:0] coeff15 = 8'd6;

wire[7:0] coeff16 = 8'd5;

wire[7:0] coeff17 = 8'd86;

always @ (posedge clk or negedge rst_n) begin

if (!rst_n)

begin

addr_1<=? 10'd0;

addr_2<=? 10'd0;

end

else

begin

addr_1<=? addr_1+10'd41;??? //2m

addr_2<=? addr_2+10'd20;??? //1m

end

end

always @ (posedge clk or negedge rst_n) begin

if (!rst_n)

data_sum <=? 15'd0;

else

data_sum <=? data_1+?? data_2;

end

always @ (posedge clk or negedge rst_n) begin

if (!rst_n)

begin

delay_pipeline1 <=? 15'd0;

delay_pipeline2 <=? 15'd0;

delay_pipeline3 <=? 15'd0;

delay_pipeline4 <=? 15'd0;

delay_pipeline5 <=? 15'd0;

delay_pipeline6 <=? 15'd0;

delay_pipeline7 <=? 15'd0;

delay_pipeline8 <=? 15'd0;

delay_pipeline9 <=? 15'd0;

delay_pipeline10 <=? 15'd0;

delay_pipeline11 <=? 15'd0;

delay_pipeline12 <=? 15'd0;

delay_pipeline13 <=? 15'd0;

delay_pipeline14 <=? 15'd0;

delay_pipeline15 <=? 15'd0;

delay_pipeline16 <=? 15'd0;

delay_pipeline17 <=? 15'd0;

end

else

begin

delay_pipeline1 <=? data_sum;

delay_pipeline2 <=? delay_pipeline1;

delay_pipeline3 <=? delay_pipeline2;

delay_pipeline4 <=? delay_pipeline3;? ??

delay_pipeline5 <=? delay_pipeline4;? ??

delay_pipeline6 <=? delay_pipeline5;? ??

delay_pipeline7 <=? delay_pipeline6;? ??

delay_pipeline8 <=? delay_pipeline7;? ??

delay_pipeline9 <=? delay_pipeline8;? ??

delay_pipeline10 <=? delay_pipeline9;? ??

delay_pipeline11 <=? delay_pipeline10;??

delay_pipeline12 <=? delay_pipeline11;??

delay_pipeline13 <=? delay_pipeline12;??

delay_pipeline14 <=? delay_pipeline13;??

delay_pipeline15 <=? delay_pipeline14;??

delay_pipeline16 <=? delay_pipeline15;??

delay_pipeline17 <=? delay_pipeline16;??

end

end

always @ (posedge clk or negedge rst_n) begin

if (!rst_n)

begin

multi_data1 <=? 23'd0;//乘積結(jié)果

multi_data2 <=? 23'd0;

multi_data3 <=? 23'd0;

multi_data4 <=? 23'd0;

multi_data5 <=? 23'd0;

multi_data6 <=? 23'd0;

multi_data7 <=? 23'd0;

multi_data8 <=? 23'd0;

multi_data9 <=? 23'd0;

multi_data10 <=? 23'd0;

multi_data11 <=? 23'd0;

multi_data12 <=? 23'd0;

multi_data13 <=? 23'd0;

multi_data14 <=? 23'd0;

multi_data15 <=? 23'd0;

multi_data16 <=? 23'd0;

multi_data17 <=? 23'd0;

end

else

begin

multi_data1 <=? delay_pipeline1?? *?? coeff1;//乘積結(jié)果

multi_data2 <=? delay_pipeline2?? *?? coeff2;

multi_data3 <=? delay_pipeline3?? *?? coeff3;

multi_data4 <=? delay_pipeline4?? *?? coeff4;

multi_data5 <=? delay_pipeline5?? *?? coeff5;

multi_data6 <=? delay_pipeline6?? *?? coeff6;

multi_data7 <=? delay_pipeline7?? *?? coeff7;

multi_data8 <=? delay_pipeline8?? *?? coeff8;

multi_data9 <=? delay_pipeline9?? *?? coeff9;

multi_data10 <=? delay_pipeline10? *?? coeff10;

multi_data11 <=? delay_pipeline11? *?? coeff11;

multi_data12 <=? delay_pipeline12? *?? coeff12;

multi_data13 <=? delay_pipeline13? *?? coeff13;

multi_data14 <=? delay_pipeline14? *?? coeff14;

multi_data15 <=? delay_pipeline15? *?? coeff15;

multi_data16 <=? delay_pipeline16? *?? coeff16;

multi_data17 <=? delay_pipeline17? *?? coeff17;

end

end

always @ (posedge clk or negedge rst_n) begin

if (!rst_n)

FIR_OUT <=? 23'd0;

else

FIR_OUT <=multi_data1+multi_data2+multi_data3+multi_data4+multi_data5+multi_data6+multi_data7

+multi_data8+multi_data9+multi_data10+multi_data11+multi_data12+multi_data13+multi_data14+multi_data15

+multi_data16+multi_data17;

end

rom_1 u_rom_1(

.address (addr_1 ),

.clock (clk ),

.q (data_1 )

);

rom_1 u_rom_2(

.address (addr_2 ),

.clock (clk ),

.q (data_2 )

);

endmodule

92b32fa0-d215-11ec-8521-dac502259ad0.png

930d8fae-d215-11ec-8521-dac502259ad0.png

9328dad4-d215-11ec-8521-dac502259ad0.png

仿真結(jié)果:FIR_OUT 為濾波后的效果。

9368169a-d215-11ec-8521-dac502259ad0.png

7

FIR IP核使用

采用IP核的形式完成濾波實驗,需要使用MATLAB配置參數(shù),以MIF格式的文件放置到IP中進(jìn)行配置。

938485d2-d215-11ec-8521-dac502259ad0.png

Docunmentation : FIR的IP核使用手冊。

Coefficient File Path : 防止配置后的MIF文件。

93a425a4-d215-11ec-8521-dac502259ad0.png

因為可編程邏輯芯片并不支持浮點數(shù)的運算,所以需要對抽頭系數(shù)進(jìn)行量化處理,在 Filter arithmetic 中選擇 Fixed-point, Number word length 中可以輸入的是字長,當(dāng)輸入 8 時,點擊 Apply,可以看到有較大的偏差。所以將數(shù)值改為 16。

93c11f1a-d215-11ec-8521-dac502259ad0.png

導(dǎo)出需要配置的數(shù)據(jù) :

93dc0500-d215-11ec-8521-dac502259ad0.png

將數(shù)據(jù)文件改成.MIF文件格式,給予eLinx軟件使用。

93f83b08-d215-11ec-8521-dac502259ad0.png

此處存儲為十六進(jìn)制數(shù)據(jù) , 我們建議使用二進(jìn)制進(jìn)行存儲,數(shù)據(jù)更加穩(wěn)定。

IP核配置頁面 :


94632472-d215-11ec-8521-dac502259ad0.png

94826bca-d215-11ec-8521-dac502259ad0.png

測試程序:

94c450da-d215-11ec-8521-dac502259ad0.png

8

仿真驗證

951a3a9a-d215-11ec-8521-dac502259ad0.png

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

    關(guān)注

    161

    文章

    7817

    瀏覽量

    178132
  • FIR
    FIR
    +關(guān)注

    關(guān)注

    4

    文章

    146

    瀏覽量

    33174
收藏 人收藏

    評論

    相關(guān)推薦

    基于FPGA實現(xiàn)FIR數(shù)字濾波器

    。隨著現(xiàn)代數(shù)字通信系統(tǒng)對于高精度、高處理速度的需求,越來越多的研究轉(zhuǎn)向采用FPGA來實現(xiàn)FIR濾波器。而對于FIR濾波器要充分考慮其資源與運行速度的合理優(yōu)化,各種不同的FIR濾波結(jié)構(gòu)各
    的頭像 發(fā)表于 11-05 16:26 ?597次閱讀
    基于FPGA<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>FIR</b>數(shù)字濾波器

    請問TAS5548啟用EQ功能需做哪些設(shè)置?

    如題,需要設(shè)置哪些寄存器地址以及如何設(shè)置才能正確打開并使用EQ功能? datasheet中的EQ部分解釋得太模糊了。
    發(fā)表于 10-28 08:21

    TAS5756M可以做高低音分頻嗎?有EQ功能嗎?

    我們現(xiàn)在做一款產(chǎn)品,想用到TAS5756m 這個數(shù)字輸入的功放芯片。 我們想設(shè)計成2.1 類型的音頻輸出,請問, 1. 5756 可以做高低音分頻嗎? 2. 里面有EQ功能嗎? 3. 高低音
    發(fā)表于 10-24 07:33

    請問如何設(shè)置PCM3070的EQ參數(shù)(Page44-52)并讓其工作?

    想用PCM3070的EQ,用逐個寫入Page44-52的寄存器的方式或一次寫入一頁數(shù)據(jù)的方式,從測試結(jié)果看EQ并沒有作用。哪位大神有經(jīng)驗指導(dǎo)下,不勝感激! 補充說明:感謝AirWill的回復(fù)
    發(fā)表于 10-23 08:10

    tas5731如何在廣告機的APP上直接調(diào)整EQ的設(shè)置?

    上直接調(diào)整EQ的設(shè)置(類似音樂播放器的是EQ設(shè)置方式),想咨詢下有什么公式或者轉(zhuǎn)換代碼能夠實現(xiàn)直接得到寄存器的配置值?
    發(fā)表于 10-21 06:18

    請問TAS5719如何進(jìn)行EQ設(shè)定?

    我們在用TAS5719進(jìn)行一款產(chǎn)品的開發(fā),其他功能均已驗證完畢??吹竭@顆芯片能夠進(jìn)行EQ調(diào)節(jié),但是手冊中沒有進(jìn)一步的詳細(xì)資料。請問從哪里可以獲取有關(guān)TAS5719關(guān)于EQ更加詳細(xì)的資料?謝謝!
    發(fā)表于 10-14 07:42

    TAS5805MEVM在PPC3中如何使用Smart EQ功能?

    我正在使用TAS5805做產(chǎn)品 在TI公開課里面看到使用Smart EQ來調(diào)頻響,我正需要此功能,但是我在我的PPC3里面打開TAS5805 app,并沒有這個功能,只能手動調(diào)節(jié)EQ
    發(fā)表于 10-12 06:54

    TAS5825M EQ配置引發(fā)播放爆破音怎么解決?

    藍(lán)牙音響用5825做功放芯片,播放中偶爾有爆破音,概率大約1%,一旦有了之后,就一直有,5825上電時序,I2S信號檢查沒問題,把EQ所有功能關(guān)閉或者換一個簡單的EQ,爆破音就沒了,判斷為E
    發(fā)表于 09-29 06:07

    tas5715的EQ功能寄存器怎么設(shè)置?

    tas5715的EQ功能寄存器怎么設(shè)置?
    發(fā)表于 09-25 06:06

    推拉力測試儀可實現(xiàn)功能有哪些?

    博森源推拉力測試儀設(shè)備硬件及軟件同時具備芯片貼裝剪切力測試、鍵合推拉力測試、焊球推力測度、剝離力測試功能,選擇相應(yīng)
    的頭像 發(fā)表于 06-20 17:57 ?430次閱讀
    推拉力<b class='flag-5'>測試</b>儀可<b class='flag-5'>實現(xiàn)</b>的<b class='flag-5'>功能</b>有哪些?

    28HL01GTFPBHI030閃存可以與PSoC6一起使用嗎?

    你好 我打算在八進(jìn)制 SPI 模式下使用 PSoC 6 SMIF 和 28HL01GTFPBHI030 閃存。 該模塊存在于 modustoolbox 中的 QSPI 配置器中,但在內(nèi)存數(shù)據(jù)表中
    發(fā)表于 05-31 14:12

    功能測試是白盒還是黑盒測試

    測試的區(qū)別、功能測試的策略和方法,以及功能測試的優(yōu)缺點。 一、功能
    的頭像 發(fā)表于 05-30 14:53 ?856次閱讀

    功能測試和接口測試的區(qū)別

    的一個重要組成部分,它主要關(guān)注軟件的功能需求是否得到滿足。功能測試的目的是驗證軟件是否按照需求規(guī)格說明書(SRS)中描述的功能正常工作。功能
    的頭像 發(fā)表于 05-29 16:02 ?941次閱讀

    功能測試和性能測試的區(qū)別與聯(lián)系

    預(yù)期執(zhí)行其功能的過程。功能測試的主要目標(biāo)是確保軟件滿足所有業(yè)務(wù)需求和用戶期望。以下是功能測試的一些關(guān)鍵特點: 需求驅(qū)動 :
    的頭像 發(fā)表于 05-29 15:40 ?1027次閱讀

    XQ138F-EVM 教學(xué)實驗指導(dǎo)手冊

    本實驗手冊對應(yīng)的實驗例程Demo\FPGA\EQ6HL45XQ138F-EVM 是一款基于 TI OMAP-L138(定點/浮點 DSP C674x + ARM9)+ Xilinx Spartan6
    發(fā)表于 03-12 18:07 ?0次下載