• 采用流水线结构的CIC 抽取滤波器结构如下:
  • // 三级CIC抽取器实例:cic3_decimator.V
  • module cic3_decimator(clk, x_in, y_out);
  • parameter        STATE_HOLD = 1'b0, STATE_SAMPLE = 1'b1;
  • input                   clk;                                // 输入时钟
  • input         [7:0]   x_in;                        // 输入8位数据
  • output [25:0] y_out;                // 输出26位数据
  • reg              state, derived_clk;
  • reg [4:0] counter;
  • // 有限状态机,用于实现下采样
  • always @(negedge clk) begin: FSM_DECIMATOR
  • case(state)
  • STATE_HOLD: begin
  • if(counter == 31)
  • state <= STATE_SAMPLE;
  • end
  • STATE_SAMPLE: begin
  • ComReg0[0] <= IntReg[2];
  • state <= STATE_HOLD;
  • end
  • default:
  • state <= STATE_HOLD;
  • endcase
  • if((counter>8)&&(counter<16))        // 生成下采样后的时钟
  • derived_clk <= 1;
  • else
  • derived_clk <= 0;
  • counter <= counter + 1;
  • end
  • wire [25:0] sxtx;                // Sign extended input
  • assign sxtx = {{18{x[7]}},x};        // 符号扩展
  • reg  [7:0]  x;                                        // Registered input
  • reg [25:0] IntReg[2:0];                        // I section 0,1 and 2
  • // 积分器实现模块
  • always @(posedge clk) begin: INTEGRATOR
  • x  <= x_in;
  • IntReg[0] <= IntReg[0] + sxtx;
  • IntReg[1] <= IntReg[1] + IntReg[0];
  • IntReg[2] <= IntReg[2] + IntReg[1];
  • end
  • reg [25:0] ComReg0[2:0],ComReg1[2:0],ComReg2[2:0],ComReg3;
  • //梳状器实现模块
  • always @(posedge derived_clk)begin:COMB
  • ComReg0[1] <= ComReg0[0];
  • ComReg0[2] <= ComReg0[1];
  • ComReg1[0] <= ComReg0[0] - ComReg0[2];
  • ComReg1[1] <= ComReg1[0];
  • ComReg1[2] <= ComReg1[1];
  • ComReg2[0] <= ComReg1[0] - ComReg1[2];
  • ComReg2[1] <= ComReg2[0];
  • ComReg2[2] <= ComReg2[1];
  • ComReg3     <= ComReg2[0] - ComReg2[2];
  • end
  • assign y_out = ComReg3;                //输出
  • endmodule

CIC 抽取滤波器 Verilog Code的更多相关文章

  1. matlab 与 modelsim 联调 cic抽取滤波器

    注:本设计的参数为:D=2,R=5,N=3:时钟频率为50mhz,输入信号为有符号8位,根据公式bmax=bin+N*log(2,R*D):可以得到bmax=18: 1,cic抽取滤波器原理 网上资料 ...

  2. Verilog code

    1.计数,用于对精度不高的计数 always @(posedge clk or negedge rst_n) begin if(!rst_n) div_cnt <= 'd0; else div_ ...

  3. 直流滤波器 verilog

    // dc filter- y(n) = c*x(n) + (1-c)*y(n-1) `timescale 1ps/1ps module ad_dcfilter #( // data path dis ...

  4. Verilog Tips and Interview Questions

    Verilog Interiew Quetions Collection :  What is the difference between $display and $monitor and $wr ...

  5. verilog流水线加法器

    四位加法器 两级加法实现 verilog code module pipeliningadder( output reg [3:0] s, output reg co, input [3:0] a, ...

  6. verilog 实现加法器

    半加器 如果不考虑来自低位的进位将两个1二进制数相加,称为半加. 实现半加运算的逻辑电路称为半加器. 真值表 逻辑表达式和 \begin{align}\notag s = a{b}' + {a}'b ...

  7. verilog FAQ(zz)

    1. What is the race condition in verilog? Ans :The situation when two expressions are allowed to exe ...

  8. ∑–△型模数转换器(ADC)简介

    ∑–△型模数转换器(ADC) 1.概述 近年来,随着超大规模集成电路制造水平的提高,Σ-Δ型模数转换器正以其分辨率高.线性度好.成本低等特点得到越来越广泛的应用.Σ-Δ型模数转换器方案早在20世纪60 ...

  9. i.MX RT600之DMIC外设介绍及应用

    恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作.不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核 ...

随机推荐

  1. oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)

    一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类 ...

  2. gdb经常使用命令总结

    1: 对于在应用程序中增加參数进行调试的方法:    直接用 gdb app -p1 -p2 这样进行调试是不行的.    须要像下面这样使用:     #gdb app     (gdb) r -p ...

  3. s3c2440的A/D转换应用

    10 地点 CMOS ADC(模/数字转换器)是 8 通道模拟输入型设备回收.该模拟输入信号转换 10 位二进制数字编码,A/D变化.也被称为模数转换.该模拟信号被转换成美元 算机可以处理的数字信号. ...

  4. MVC 检测用户是否登录

         当我们访问一个网站的需求检測用户是否已经登录(通过Session是否为null),我们知道在WebForm中能够定义一个BasePage类让他继承System.Web.UI.Page,重写它 ...

  5. javascript 的bind/apply/call性能

    javascript有两种使用频率非常高的三个内置的功能:bind/apply/call.许多技术是基于高点,这些功能实现.这三个功能被用来改变的功能运行环境.从而达到代码复用的目的. 先来所说bin ...

  6. Hadoop学问Eclipse构建Hadoop工程

    在此之前的基础Hadoop在官方文件HDFS.MapReduce架构.配置管理是学习,但是,一些地方的官方文件相当含糊的解释. 我们没有发挥人可以体验,某种官方文件似业务规则或要求,但是,真正的细节还 ...

  7. [LeetCode217]Contains Duplicate

    题目:Given an array of integers, find if the array contains any duplicates. Your function should retur ...

  8. Chrome console(转)

    阅读目录 写在前面 谷歌控制台Elements面板 查看元素上绑定的事情 样式操作 总况 console.log console.info console.error console.warn con ...

  9. eclipse在maven项目交付svn忽略简介

    文章来源:http://blog.csdn.net/chaijunkun/article/details/34805385,转载请注明. 不时因为它将有关鲍恩梳理,它会做出相应的内容不变.文. ecl ...

  10. 【剑指offer】面试题28:弦乐

    def Permutation(data, i): if len( data ) == 0: return # i stand for the start of first part for i in ...