m基于FPGA的多级抽取滤波器组verilog设计,包括CIC滤波,HB半带滤波以及DA分布式FIR滤波

简介: m基于FPGA的多级抽取滤波器组verilog设计,包括CIC滤波,HB半带滤波以及DA分布式FIR滤波

1.算法描述

    数字下变频中的低通滤波器是由多级抽取滤波器组实现的。信号的同相分量和正交分量再分别经由积分梳状滤波器(CIC)、半带滤波器(HB)和有限长单位脉冲响应(FIR)滤波器构成的多级抽取滤波器组进行滤波和降采样处理,再将产生的正交基带信号I (n)、Q (n)送到通用DSP处理器,进行信号识别、解调等基带信号处理。这三个滤波器在结构上组成如下的基本结构:

image.png

   下面分别对滤波器的三组不同的滤波器进行设计与分析,并得出其优化结果。

2.1CIC抽取滤波器结构图

image.png

图CIC梳状滤波器的结构一

image.png

图CIC梳状滤波器的结构二

2.2HBF模块由半带滤波器

   HBF模块由半带滤波器(HBF)和抽取模块组成。该模块的任务是实现2倍抽取进一步降低信号采样速率。由于HBF的冲激响应h(k)除零点外其余偶数点均为零,所以用HBF实现2倍抽取可以节省一半的运算量,对增强软件无线电的实时性非常重要,HBF还具有参数约束少,设计容易、方便的特点。半带滤波器的主要作用是滤除信号高频部分,防止抽取过程后信号发生频谱混叠。

   在实际中,需要将输入信号进行多次滤波和抽取,并逐次降低采样率,同时也降低对每一级抗混叠滤波器的要求,所以需要使用半带滤波器进行设计与实现。

阻带衰减: ≥50dB

通带不平坦度:≤2dB

    通常情况下,半带滤波器的有三种基本的结构,一般结构,转置结构以及复用结构,下面我们将针对这三种结构的滤波效果以及硬件占用情况进行分析,从而选用最佳的设计方案。

image.png

2.3 DA分布式FIR

image.png

2.仿真效果预览
版本vivado2019.2

image.png

3.verilog核心程序

    clk_20M,
    reset,
    I_d,
    Q_d,
    I_cic,
    I_hb,
    I_out,
    Q_out
);
 
 
input wire    clk_20M;
input wire    reset;
input wire    [13:0] I_d;
input wire    [13:0] Q_d;
output wire    [47:0] I_cic;
output wire    [31:0] I_hb;
output wire    [15:0] I_out;
output wire    [15:0] Q_out;
 
wire    [47:0] I_cic_ALTERA_SYNTHESIZED;
wire    [31:0] I_hb_ALTERA_SYNTHESIZED;
wire    [47:0] Q_cic;
wire    [31:0] Q_hb;
wire    SYNTHESIZED_WIRE_0;
wire    SYNTHESIZED_WIRE_1;
wire    SYNTHESIZED_WIRE_2;
wire    SYNTHESIZED_WIRE_3;
 
 
 
 
 
cic_top    b2v_inst(
    .i_clk(clk_20M),
    .i_rst(reset),
    .i_din(I_d),
    .o_clk16(SYNTHESIZED_WIRE_0),
    .o_dout(I_cic_ALTERA_SYNTHESIZED));
    defparam    b2v_inst.WIDTH = 48;
 
 
cic_top    b2v_inst1(
    .i_clk(clk_20M),
    .i_rst(reset),
    .i_din(Q_d),
    .o_clk16(SYNTHESIZED_WIRE_1),
    .o_dout(Q_cic));
    defparam    b2v_inst1.WIDTH = 48;
 
 
hb_filter_02    b2v_inst2(
    .i_clk(SYNTHESIZED_WIRE_0),
    .i_rst(reset),
    .i_din(I_cic_ALTERA_SYNTHESIZED[34:19]),
    .o_clk2(SYNTHESIZED_WIRE_2),
    .o_dout(I_hb_ALTERA_SYNTHESIZED));
    defparam    b2v_inst2.h0 = 27316;
    defparam    b2v_inst2.h1 = 20073;
    defparam    b2v_inst2.h11 = 1238;
    defparam    b2v_inst2.h13 = -1175;
    defparam    b2v_inst2.h15 = -624;
    defparam    b2v_inst2.h3 = -4745;
    defparam    b2v_inst2.h5 = 965;
    defparam    b2v_inst2.h7 = 667;
    defparam    b2v_inst2.h9 = -1238;
 
 
hb_filter_02    b2v_inst3(
    .i_clk(SYNTHESIZED_WIRE_1),
    .i_rst(reset),
    .i_din(Q_cic[34:19]),
    .o_clk2(SYNTHESIZED_WIRE_3),
    .o_dout(Q_hb));
    defparam    b2v_inst3.h0 = 27316;
    defparam    b2v_inst3.h1 = 20073;
    defparam    b2v_inst3.h11 = 1238;
    defparam    b2v_inst3.h13 = -1175;
    defparam    b2v_inst3.h15 = -624;
    defparam    b2v_inst3.h3 = -4745;
    defparam    b2v_inst3.h5 = 965;
    defparam    b2v_inst3.h7 = 667;
    defparam    b2v_inst3.h9 = -1238;
 
 
firfilter_da    b2v_inst4(
    .CLK(SYNTHESIZED_WIRE_2),
    .Reset(reset),
    .DIN(I_hb_ALTERA_SYNTHESIZED[30:23]),
    .Dout(I_out));
 
 
firfilter_da    b2v_inst5(
    .CLK(SYNTHESIZED_WIRE_3),
    .Reset(reset),
    .DIN(Q_hb[30:23]),
    .Dout(Q_out));
 
assign    I_cic = I_cic_ALTERA_SYNTHESIZED;
assign    I_hb = I_hb_ALTERA_SYNTHESIZED;
 
endmodule
01_115m
相关文章
|
3天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
41 7
|
3天前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
40 2
|
3天前
|
算法 异构计算
m基于FPGA的MPPT最大功率跟踪算法verilog实现,包含testbench
该内容包括三部分:1) 展示了Vivado 2019.2和Matlab中关于某种算法的仿真结果图像,可能与太阳能光伏系统的最大功率点跟踪(MPPT)相关。2) 简述了MPPT中的爬山法原理,通过调整光伏电池工作点以找到最大功率输出。3) 提供了一个Verilog程序模块`MPPT_test_tops`,用于测试MPPT算法,其中包含`UI_test`和`MPPT_module_U`两个子模块,处理光伏电流和电压信号。
8 1
|
3天前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
39 18
|
3天前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。
|
3天前
|
算法 异构计算 Python
m基于FPGA的217卷积编码维特比译码verilog实现,包含testbench不使用IP核
该内容展示了使用Vivado 2019.2进行卷积编码和维特比译码的模拟。提供了编码、译码输出和RTL图的图片,以及Verilog实现的核心代码。卷积编码是一种前向纠错技术,基于生成多项式产生冗余数据;维特比译码利用动态规划恢复原始信息,最小化错误。Verilog程序包含了编码和译码模块,以及输入输出信号的时序操作。
26 0
|
3天前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
3天前
|
算法 5G 数据处理
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
60 0
|
3天前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
52 1
|
6月前
|
算法 测试技术 开发工具
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
m基于FPGA的2ASK调制解调系统verilog实现,包含testbench测试文件
62 0

热门文章

最新文章