CIC 抽取滤波器 Verilog Code
- 采用流水线结构的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的更多相关文章
- matlab 与 modelsim 联调 cic抽取滤波器
注:本设计的参数为:D=2,R=5,N=3:时钟频率为50mhz,输入信号为有符号8位,根据公式bmax=bin+N*log(2,R*D):可以得到bmax=18: 1,cic抽取滤波器原理 网上资料 ...
- Verilog code
1.计数,用于对精度不高的计数 always @(posedge clk or negedge rst_n) begin if(!rst_n) div_cnt <= 'd0; else div_ ...
- 直流滤波器 verilog
// dc filter- y(n) = c*x(n) + (1-c)*y(n-1) `timescale 1ps/1ps module ad_dcfilter #( // data path dis ...
- Verilog Tips and Interview Questions
Verilog Interiew Quetions Collection : What is the difference between $display and $monitor and $wr ...
- verilog流水线加法器
四位加法器 两级加法实现 verilog code module pipeliningadder( output reg [3:0] s, output reg co, input [3:0] a, ...
- verilog 实现加法器
半加器 如果不考虑来自低位的进位将两个1二进制数相加,称为半加. 实现半加运算的逻辑电路称为半加器. 真值表 逻辑表达式和 \begin{align}\notag s = a{b}' + {a}'b ...
- verilog FAQ(zz)
1. What is the race condition in verilog? Ans :The situation when two expressions are allowed to exe ...
- ∑–△型模数转换器(ADC)简介
∑–△型模数转换器(ADC) 1.概述 近年来,随着超大规模集成电路制造水平的提高,Σ-Δ型模数转换器正以其分辨率高.线性度好.成本低等特点得到越来越广泛的应用.Σ-Δ型模数转换器方案早在20世纪60 ...
- i.MX RT600之DMIC外设介绍及应用
恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作.不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核 ...
随机推荐
- hibernate 批量处理数据
批量处理数据是指处理大量数据的一个单独的事务. 在应用层批处理操作, 主要有以下方式: 通过 Session 通过 HQL 通过 StatelessSession 通过 JDBC API(仅仅要会用这 ...
- 王立平--include在Android应用
它包括一个布局和布局 1.在layout确定activity_other.xml布局 2.代码中的包括例如以下: <LinearLayout xmlns:android="http:/ ...
- Ubuntu下超实用的命令
1. Ubuntu中查看已安装软件包的方法 sudodpkg -l 2. ubuntu系统如何查看软件安装的位置 dpkg-L软件名 实例: wwx@ubuntu:~$dpkg -L mysql-se ...
- 通达OA 新旧两种数据库连接方式
老的连接方式: include_once("/inc/conn.php"); $cursor = exequery($connection,$query); 新的连接方式: inc ...
- SQL 编码标准
1. 你必须从别名表,易于使用的表,该表列 实例 select owner,object_id,name from a,b where a.id=b.id; 假设是不正确的别名表.我知道你是怎么访问表 ...
- 移动web:图片切换(焦点图)
在web页面上图片切换(焦点图)效果实在是太常见了,PC端.移动端到处都有它的身影. 上次写了个tab选项卡的效果,在这里延续一下,改成图片切换的效果. 如果不需要自动播放,稍微修改下html标签.和 ...
- Python 显示LinkedIn用户作业
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-18 @author: guaguastd @name: j ...
- 【cocos2d-x】尝鲜 Cocos Code IDE(不断更新)
Cocos Code IDE 是一个基于 Eclipse 的跨平台 IDE ,专门为 cocos2d lua & js 开发者准备,通过此工具.你能够方便的创建游戏project.编写而且调试 ...
- pyspark简要原则
概要 这是一个看前一段时间spark的python支持的时,有点简单的后pyspark内python代码,我们把一个一般流程.虽然几乎没有python,但基本上能看懂pyspark它是如何使不同的虚拟 ...
- 正确openvSwitch不同种类port认识
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdm9uemhvdWZ6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...