直流滤波器 verilog
// dc filter- y(n) = c*x(n) + (1-c)*y(n-1) `timescale 1ps/1ps module ad_dcfilter #( // data path disable parameter DISABLE = ) ( // data interface input clk,
input valid,
input [:] data,
output valid_out,
output [:] data_out, // control interface input dcfilt_enb,
input [:] dcfilt_coeff,
input [:] dcfilt_offset); // internal registers reg [:] dcfilt_coeff_d = 'd0;
reg [:] dc_offset = 'd0;
reg [:] dc_offset_d = 'd0;
reg valid_d = 'd0;
reg [:] data_d = 'd0;
reg valid_2d = 'd0;
reg [:] data_2d = 'd0;
reg [:] data_dcfilt = 'd0;
reg valid_int = 'd0;
reg [:] data_int = 'd0; // internal signals wire [:] dc_offset_s; // data-path disable generate
if (DISABLE == ) begin
assign valid_out = valid;
assign data_out = data;
end else begin
assign valid_out = valid_int;
assign data_out = data_int;
end
endgenerate // dcfilt_coeff is flopped so to remove warnings from vivado always @(posedge clk) begin
dcfilt_coeff_d <= dcfilt_coeff;
end // removing dc offset always @(posedge clk) begin
dc_offset <= dc_offset_s;
dc_offset_d <= dc_offset;
valid_d <= valid;
if (valid == 'b1) begin
data_d <= data + dcfilt_offset;
end
valid_2d <= valid_d;
data_2d <= data_d;
data_dcfilt <= data_d - dc_offset[:];
if (dcfilt_enb == 'b1) begin
valid_int <= valid_2d;
data_int <= data_dcfilt;
end else begin
valid_int <= valid_2d;
data_int <= data_2d;
end
end // dsp slice instance ((D-A)*B)+C DSP48E1 #(
.ACASCREG (),
.ADREG (),
.ALUMODEREG (),
.AREG (),
.AUTORESET_PATDET ("NO_RESET"),
.A_INPUT ("DIRECT"),
.BCASCREG (),
.BREG (),
.B_INPUT ("DIRECT"),
.CARRYINREG (),
.CARRYINSELREG (),
.CREG (),
.DREG (),
.INMODEREG (),
.MASK ('h3fffffffffff),
.MREG (),
.OPMODEREG (),
.PATTERN ('h000000000000),
.PREG (),
.SEL_MASK ("MASK"),
.SEL_PATTERN ("PATTERN"),
.USE_DPORT ("TRUE"),
.USE_MULT ("MULTIPLY"),
.USE_PATTERN_DETECT ("NO_PATDET"),
.USE_SIMD ("ONE48"))
i_dsp48e1 (
.CLK (clk),
.A ({{{dc_offset_s[]}}, dc_offset_s[:]}),
.B ({{{dcfilt_coeff_d[]}}, dcfilt_coeff_d}),
.C (dc_offset_d),
.D ({{{data_d[]}}, data_d}),
.MULTSIGNIN ('d0),
.CARRYIN ('d0),
.CARRYCASCIN ('d0),
.ACIN ('d0),
.BCIN ('d0),
.PCIN ('d0),
.P (dc_offset_s),
.MULTSIGNOUT (),
.CARRYOUT (),
.CARRYCASCOUT (),
.ACOUT (),
.BCOUT (),
.PCOUT (),
.ALUMODE ('d0),
.CARRYINSEL ('d0),
.INMODE ('b01100),
.OPMODE ('b0110101),
.PATTERNBDETECT (),
.PATTERNDETECT (),
.OVERFLOW (),
.UNDERFLOW (),
.CEA1 ('d0),
.CEA2 ('d1),
.CEAD ('d1),
.CEALUMODE ('d0),
.CEB1 ('d0),
.CEB2 ('d1),
.CEC ('d1),
.CECARRYIN ('d0),
.CECTRL ('d0),
.CED ('d1),
.CEINMODE ('d0),
.CEM ('d1),
.CEP ('d0),
.RSTA ('d0),
.RSTALLCARRYIN ('d0),
.RSTALUMODE ('d0),
.RSTB ('d0),
.RSTC ('d0),
.RSTCTRL ('d0),
.RSTD ('d0),
.RSTINMODE ('d0),
.RSTM ('d0),
.RSTP ('d0)); endmodule
直流滤波器 verilog的更多相关文章
- CIC 抽取滤波器 Verilog Code
采用流水线结构的CIC 抽取滤波器结构如下: // 三级CIC抽取器实例:cic3_decimator.V module cic3_decimator(clk, x_in, y_out); param ...
- matlab 与 modelsim 联调 cic抽取滤波器
注:本设计的参数为:D=2,R=5,N=3:时钟频率为50mhz,输入信号为有符号8位,根据公式bmax=bin+N*log(2,R*D):可以得到bmax=18: 1,cic抽取滤波器原理 网上资料 ...
- 268条PCB Layout设计规范
1 PCB布线与布局 PCB布线与布局隔离准则:强弱电流隔离.大小电压隔离,高低频率隔离.输入输出隔离.数字模拟隔离.输en入输出隔离,分界标准为相差一个数量级.隔离方法包括:空间远离.地线隔开. 2 ...
- 硬件PCB Layout布局布线Checklist检查表(通用版)
按部位分类 技术规范内容 1 PCB布线与布局 PCB布线与布局隔离准则:强弱电流隔离.大小电压隔离,高低频率隔离.输入输出隔离.数字模拟隔离.输入输出隔离,分界标准为相差一个数量级.隔离方法包括:空 ...
- 常见EMC疑问及对策
1. 在电磁兼容领域,为什么总是用分贝(dB)的单位描述?10mV是多少dBmV? 答:因为要描述的幅度和频率范围都很宽,在图形上用对数坐标更容易表示,而dB就是用对数表示时的单位,10mV是20dB ...
- FIR滤波器工作原理(算法)以及verilog算法实现(包含与IIR的一些对比)
滤波器在2017年IC前端的笔试中,出现频率十分的高.不论今后是否会涉及,还是要记住一些会比较好.接下来就将从这四个方面来讲解,FIR数字滤波器的工作原理(算法)与verilog实现. ·什么是FIR ...
- FIR滤波原理及verilog设计
FIR(Finite Impulse Response)Filter:有限冲激响应滤波器,又称为非递归线性滤波器. FIR滤波器的冲击响应是一个值为滤波器抽头系数的采样序列,其脉冲响应由有限个采样值构 ...
- 全数字锁相环(DPLL)的原理简介以及verilog设计代码
随着数字电路技术的发展,数字锁相环在调制解调.频率合成.FM 立体声解码.彩色副载波同步.图象处理等各个方面得到了广泛的应用.数字锁相环不仅吸收了数字电路可靠性高.体积小.价格低等优点,还解决了模拟锁 ...
- 基于FPGA的IIR滤波器
基于FPGA的IIR滤波器 by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 ...
随机推荐
- java回调函数,看完就懂
java回调函数在网上了看了些例子,比较绕,不够清晰,自己写的一个例子比较通俗,java回调其实很简单. 举个例子我是类B,我有个方法叫b(),现在我要调用类A中的方法a(),写个代码就是: publ ...
- rockchip 3128 平台USB接口鼠标U盘功能调试日记
2019-04-12 关键词: rk3128 OTG.rk3128外接鼠标U盘.RK外接鼠标U盘 本篇文章是笔者根据自己当前所掌握知识对 rk3128 平台 USB 接口接鼠标实现输入功能调试的一个记 ...
- jQuery中$.each()方法(遍历)
$.each()是对数组,json和dom结构等的遍历,说一下他的使用方法吧. 1.遍历一维数组 var arr1=['aa','bb','cc','dd']; $.each(arr1,functio ...
- MT【328】向量里的最佳逼近
已知平面向量$\overrightarrow {a},\overrightarrow {b}$满足$|\overrightarrow {a}|=4,|\overrightarrow {b}|=2$.若 ...
- <Android基础> (六) 数据存储 Part 2 SharedPreferences方式
6.3 SharedPreferences存储 SharedPreferences使用键值对的方式来存储数据.同时支持多种不同的数据类型. 6.3.1 将数据存储到SharedPreferences中 ...
- crontab计划任务实例
使用实例 实例1:每1分钟执行一次command 命令: * * * * * command 实例2:每小时的第3和第15分钟执行 命令: 3,15 * * * * command 实例3:在上午8点 ...
- "大概能给你的磕盐增加一点幸福感✈"-[那些年的矫情]
#--------------------------------------------------------------------------------------------------- ...
- IIS搭建校内小站
背景 在学校读书最大的烦恼是去机房忘了带作业,或者带了U盘传文件又很容易丢,或者的或者用学校内网网盘又容易忘了上传. 所以笔者搞了个办法. IIS准备工作 win+pause break 打开控制面板 ...
- 解决cuvid中的sample编译和链接问题
unzip Video_Codec_SDK_9.0.20.zip cd Video_Codec_SDK_9.0.20/Samples/AppDecode/AppDecImageProvider vi ...
- Java Web乱码原因与解决
Java Web乱码原因与解决 一.了解编码常识: 1.ASCII 码 众所周知,这是最简单的编码.它总共可以表示128个字符,0~31是控制字符如换行.回车.删 除等,32~126是打印字符,可以通 ...