m基于FPGA的积分梳状CIC滤波器verilog设计

这篇具有很好参考价值的文章主要介绍了m基于FPGA的积分梳状CIC滤波器verilog设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.算法描述

2.仿真效果预览

3.verilog核心程序

4.完整FPGA


1.算法描述

积分梳状滤波器,是指该滤波器的冲激响应具有如下形式:

cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

其物理框图如图所示:

cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

可见,CIC滤波器是由两部分组成:累积器H1和H2梳状滤波器的级联。

       现若假设用N级CIC滤波器来代替,每一级的滤波器系数长度为R,每一级的差分延迟为M,抽取数为R,那么可以得到CIC抽取滤波器结构图:

cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

 cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

       可以看到,N级CIC滤波器在功能上相当于N级完全相同的FIR滤波器的级联。如果按传统的FIR滤波器方式实现,那么N级FIR滤波器的每一级都需要RM个存储单元和一个累加器,但如果用CIC方式实现,那么N级CIC滤波器的每一级只需要M个存储单元。

       通常,由于CIC滤波器的传统结构需要大量的延迟单元,这会大大增加系统的硬件资源消耗,所以,在一般情况下,CIC滤波器采用的设计结构式Hogenauer结构形式,该结构形式如下所示:cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

 采用这种结构之后,大大降低了系统延迟单元资源。

    这里设计的五级CIC滤波器。那么其基本结构如上图所示,在降采样的左右都有五个延迟单元。

但是在CIC滤波的时候,会导致输出的位宽大大增加,但是如果单独对中间的处理信号进行截位,这会导致处理精度不够,从而影响整个系统的性能,所以,这里我们首先将输入的信号进行扩展。

由于我们输入的中频信号通过ADC是位宽为14,在下变频之后,通过截位处理,其输出的数据仍为14位,所以,我们将CIC滤波的输入为14位,但是考虑到处理中间的益处情况以及保证处理精度的需要,我们首先将输入位宽扩展为40位,从而保证了处理精度以及溢出的情况。

基于FPGA的5级CIC滤波器的设计与实现

       这里首先说明一下为什么使用的级别是5级。从硬件资源角度考虑,CIC滤波器的级数太高,会导致最终输出的数据位宽很大,通过简单的验证,当CIC的级数大于5的时候,输出的位宽>50。这显然会导致硬件资源的大量占用,如果CIC级数太小,比如1,2级。这在其处理效果上没有任何意义,基本无法达到预计的效果,通过仿真分析,一般情况下,选择4级,5级比较合理,因此,这里我们选择5级的CIC滤波器。

       5级滤波器的基本结构为:cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

2.仿真效果预览

本系统进行了两个平台的开发,分别是:

Vivado2019.2

Quartusii18.0+ModelSim-Altera 6.6d  Starter Edition

其中Vivado2019.2仿真结果如下:

cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

 cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

 cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

 cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

Quartusii18.0+ModelSim-Altera 6.6d  Starter Edition的测试结果如下:

cic滤波器verilog设计,Matlab通信和信号,FPGA通信和信号处理,fpga开发,积分梳状,CIC滤波器,verilog

 

3.verilog核心程序

module cic_top(
               i_clk,  //input clock
					i_rst,  //system reset
					i_din,  //the input datas
					o_clk16, //the clock 8 clock 
					o_dout  //the output of CIC 
              );
 
parameter WIDTH = 48;				  
				  
input            i_clk;
input            i_rst;
input[13:0]      i_din;
output           o_clk16;
output[WIDTH-1:0]o_dout;				  
				  				  
wire[WIDTH-1:0] result01 ;
wire[WIDTH-1:0] result02 ;
wire[WIDTH-1:0] result03 ;
wire[WIDTH-1:0] result04 ;
wire[WIDTH-1:0] result05 ;
wire[WIDTH-1:0] adders;
 
assign adders = {i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],
                 i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],
                 i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],
                 i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],i_din[13],
                 i_din[13],i_din[13],i_din};//spread the signal 
 
 
//level 1
//level 1	
cic_jifen cic_jifen_u1(
                      .i_clk  (i_clk),
					       .i_rst  (i_rst),
					       .i_din  (adders),
					       .o_dout (result01)
                      );
 
 
 
 
//level 2
//level 2	
cic_jifen cic_jifen_u2(
                      .i_clk  (i_clk),
					       .i_rst  (i_rst),
					       .i_din  (result01),
					       .o_dout (result02)
                      );
							 
//level 3	
//level 3
cic_jifen cic_jifen_u3(
                      .i_clk  (i_clk),
					       .i_rst  (i_rst),
					       .i_din  (result02),
					       .o_dout (result03)
                      );
 
 
//level 4	
//level 4	
cic_jifen cic_jifen_u4(
                      .i_clk  (i_clk),
					       .i_rst  (i_rst),
					       .i_din  (result03),
					       .o_dout (result04)
                      );
 
 
 
//level 5	
//level 5
cic_jifen cic_jifen_u5(
                      .i_clk  (i_clk),
					       .i_rst  (i_rst),
					       .i_din  (result04),
					       .o_dout (result05)
                      );
 
 
//================================================================
//================================================================
 
reg[3:0]cnt = 4'b00000;
always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
	  begin
	  cnt <= 4'b0000;
	  end
else begin
     cnt <= cnt + 4'b0001;
     end
end
assign o_clk16 = cnt[3];
 
//================================================================
 
wire[WIDTH-1:0] result11 ;
wire[WIDTH-1:0] result12 ;
wire[WIDTH-1:0] result13 ;
wire[WIDTH-1:0] result14 ;
wire[WIDTH-1:0] result15 ;
 
 
//level 1
//level 1
cic_chaf cic_chaf_u1(
                    .i_clk  (o_clk16),
					     .i_rst  (i_rst),
					     .i_din  (result05),
					     .o_dout (result11)
                    );
 
//level 2
//level 2
cic_chaf cic_chaf_u2(
                    .i_clk  (o_clk16),
					     .i_rst  (i_rst),
					     .i_din  (result11),
					     .o_dout (result12)
                    );
						  
//level 3
//level 3
cic_chaf cic_chaf_u3(
                    .i_clk  (o_clk16),
					     .i_rst  (i_rst),
					     .i_din  (result12),
					     .o_dout (result13)
                    );
						  
//level 4
//level 4
cic_chaf cic_chaf_u4(
                    .i_clk  (o_clk16),
					     .i_rst  (i_rst),
					     .i_din  (result13),
					     .o_dout (result14)
                    );
//level 5
//level 5
cic_chaf cic_chaf_u5(
                    .i_clk  (o_clk16),
					     .i_rst  (i_rst),
					     .i_din  (result14),
					     .o_dout (result15)
                    );
 
assign o_dout = result15;
				  
endmodule
01_115m

4.完整FPGA

V文章来源地址https://www.toymoban.com/news/detail-621413.html

到了这里,关于m基于FPGA的积分梳状CIC滤波器verilog设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CIC滤波器的matlab仿真与实现

    在数字信号处理中,由于后级硬件如FPGA的处理速度无法跟上前级ADC的采样速度,因此需要对ADC的采样数据进行降速处理,也就是对采样数据进行 抽取 ,简单的抽取描述就是对其中连续几个点取一个点进行处理。 由抽取理论知识可以知道,抽取相当于对时域做压缩,相应的就

    2024年02月09日
    浏览(19)
  • FPGA 的 DSP:Verilog 中的简单 FIR 滤波器

    本项目介绍如何用 Verilog 实现一个带有预生成系数的简单 FIR 滤波器。 简陋的 FIR 滤波器是 FPGA 数字信号处理中最基本的构建模块之一,因此了解如何利用给定的抽头数和相应的系数值组装一个基本模块非常重要。因此,在这个关于在 FPGA 上入门 DSP 基础知识的实用方法迷你系

    2024年03月17日
    浏览(33)
  • FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器

    该项目介绍了如何使用 Verilog 实现具有预生成系数的简单 FIR 滤波器。 不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一,因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。因此,在这个关于 FPGA 上 DSP 基础实用入门的教程中,将从一

    2024年02月09日
    浏览(36)
  • 基于FPGA的FIR滤波器的实现(5)— 并行结构FIR滤波器的FPGA代码实现

    并行结构,并行实现滤波器的累加运算,即并行将具有对称系数的输入数据进行相加,而后采用多个乘法器并行实现系数与数据的乘法运算,最后将所有乘积结果相加输出。这种结构具有最高的运行速度,因不需要累加运算,因此系数时钟频率可以与数据输出时钟频率保持一

    2024年02月03日
    浏览(40)
  • 基于FPGA的IIR滤波器的实现

    IIR滤波器原理以及架构在此不做阐述,如何从模拟滤波器到数字滤波器进行设计,可参考 https://blog.csdn.net/k331922164/article/details/117265704?spm=1001.2101.3001.6661.1utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-117265704-blog-123083652.235%5Ev38%5Epc_relevant_anti_t3_based

    2024年02月04日
    浏览(29)
  • 基于FPGA的RC滤波器设计实现

    目录 简介: 传递函数 FPGA代码实现 总结 RC滤波器的特性基本情况介绍 RC一阶低通滤波介绍;RC滤波器电路简单,抗干扰性强,有较好的低频性能,并且选用标准的阻容元件易得,所以在工程测试的领域中最经常用到的滤波器是RC滤波器。 这里我们主要认识和介绍低通滤波器。

    2024年02月16日
    浏览(23)
  • 基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有)。

    基于FPGA的FIR数字滤波器设计(quartus和vivado程序都有)。 附: 1.配套quartus从MATLAB系数生成直到仿真成功说明文档。 2.配套仿真出波形(图1)的视频。      

    2024年02月10日
    浏览(40)
  • Verilog实现多相滤波器

    一、多相滤波器,能够使用较低频率的时钟,实现较高数据率的数据滤波抽取。(咳咳 先正式一点) 在实际的工程应用中, 为了降低硬件实现时的数据率, 往往需要进行多相分解。采用多相滤波结构,可利用Q个阶数较低的滤波来实现原本阶数较高的滤波,而且每个分支滤波器

    2024年02月05日
    浏览(24)
  • 基于FPGA的FIR低通滤波器实现(附工程源码),matlab+vivado19.2+simulation

    本文为FPGA实现FIR滤波器仿真过程,附源代码。 提示:以下是本篇文章正文内容,下面案例可供参考 打开MATLAB在命令行窗口输入: fadtool 回车后在滤波器设计界面设置滤波器参数如下 之后点击如图标志,设置定点,在菜单栏\\\"目标(R)\\\"出选择生成对应滤波器系数.COE文件 mat

    2024年02月11日
    浏览(32)
  • 数字IC经典电路(4)——经典滤波器的实现(滤波器简介及Verilog实现)

    数字滤波器一般可以分为两类:有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。 在Verilog综合方面,通常可以实现四种数字滤波器: 基于时域采样的FIR滤波器(Time Domain Sampling FIR Filter) 快速傅里叶变换(FFT)算法实现的FIR滤波器(FFT-based FIR Filter) 直接IIR滤波器

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包