登录后可下载相关资料

基于EQ6HL130 实现FIR功能测试(二)

发布日期:2022-05-10

4、使用Verilog建立混频波形

image.png

 程序介绍:分别使用两个rom输出不同频率,进行相加。

 频率计算:使用时钟/采样点=真实频率。 

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;

//----------- Wired signal declaration

wire [13:0] data_1;

wire [13:0] data_2;


always @ (posedge clk or negedge rst_n) begin

    if (!rst_n)

        begin

            addr_1    <=      10d0;

            addr_2    <=      10d0;

        end

    else

        begin

            addr_1    <=      addr_1+10d1;    //一个正选波采样点为 1024,输出正选波频50/1024=48.82Khz

            addr_2    <=      addr_2+10d4;    //一个正选波采样点为 256,输出正选波频率  50/256=488Khz

        end

end


always @ (posedge clk or negedge rst_n) begin

    if (!rst_n)

        data_sum    <=      15d0;

    else

        data_sum    <=      data_1  +       data_2;

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

仿真结果:data_sum为相加后的结果!

image.png


5、matlab工具参数配置

设计一个16阶的低通滤波器

image.png

image.png

参数选择:选用低通滤波器,使用波纹设计法,阶数自定义了16个(当然阶数越多滤波效果越好),FS的采样频率是50M,通过频率0.5M,截至频率为1M。

Response Type:选择FIR滤波器的类型:低通、高通、带通和带阻等。

Design Method:FIR滤波器设计方法有多种,最常用的是窗函数设计法(Window)、等波纹设计法(Equiripple)和最小二乘法 (Least-Squares)等。其中窗函数设计法在学校课堂中是重点讲解的,提到FIR滤波器肯定会想到hamming、kaiser窗,但是实际应用中却很少使用,因为如果采用窗函数设计法,达到所期望的频率响应,与其它方法相比往往阶数会更多;而且窗函数设计法一般只参照通频带wp、抑制频带ws 和理想增益来设计滤波器,但是实际应用中通频带和抑制带的波纹也是需要考虑的,那在这种情况下,采用等波纹设计法就非常适用了。

Frequency Specification:设置频率响应的参数,包括采样频率Fs、通带频率Fpass和阻带频率Fstop。

Filter Order:设置滤波器的阶数,这个选项直接影响滤波器的性能,阶数越高,性能越好,但是相应在可编程逻辑芯片实现耗用的资源需要增多。在这个设置中提供2个选项:Specify order和Minimum order,Specify order是工程师自己确定滤波器的阶数,Minimum order是让工具自动确定达到期望的频率相应所需要的最小阶数,因此具体选择哪个选项得视实际情况而定了,(这里我选用16阶)。


将配置完成后的数据导出 :

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

image.png


 输入 : > Num=round(Num400) 取个整

image.png

 将下方数据代入到verilog进行乘类加滤波。(无符号)


返 回

请您注册,

获得更多的资源与支持!

  • 使用条款与条件
  • 法律声明
  • 浏览记录