// 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的更多相关文章

  1. CIC 抽取滤波器 Verilog Code

    采用流水线结构的CIC 抽取滤波器结构如下: // 三级CIC抽取器实例:cic3_decimator.V module cic3_decimator(clk, x_in, y_out); param ...

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

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

  3. 268条PCB Layout设计规范

    1 PCB布线与布局 PCB布线与布局隔离准则:强弱电流隔离.大小电压隔离,高低频率隔离.输入输出隔离.数字模拟隔离.输en入输出隔离,分界标准为相差一个数量级.隔离方法包括:空间远离.地线隔开. 2 ...

  4. 硬件PCB Layout布局布线Checklist检查表(通用版)

    按部位分类 技术规范内容 1 PCB布线与布局 PCB布线与布局隔离准则:强弱电流隔离.大小电压隔离,高低频率隔离.输入输出隔离.数字模拟隔离.输入输出隔离,分界标准为相差一个数量级.隔离方法包括:空 ...

  5. 常见EMC疑问及对策

    1. 在电磁兼容领域,为什么总是用分贝(dB)的单位描述?10mV是多少dBmV? 答:因为要描述的幅度和频率范围都很宽,在图形上用对数坐标更容易表示,而dB就是用对数表示时的单位,10mV是20dB ...

  6. FIR滤波器工作原理(算法)以及verilog算法实现(包含与IIR的一些对比)

    滤波器在2017年IC前端的笔试中,出现频率十分的高.不论今后是否会涉及,还是要记住一些会比较好.接下来就将从这四个方面来讲解,FIR数字滤波器的工作原理(算法)与verilog实现. ·什么是FIR ...

  7. FIR滤波原理及verilog设计

    FIR(Finite Impulse Response)Filter:有限冲激响应滤波器,又称为非递归线性滤波器. FIR滤波器的冲击响应是一个值为滤波器抽头系数的采样序列,其脉冲响应由有限个采样值构 ...

  8. 全数字锁相环(DPLL)的原理简介以及verilog设计代码

    随着数字电路技术的发展,数字锁相环在调制解调.频率合成.FM 立体声解码.彩色副载波同步.图象处理等各个方面得到了广泛的应用.数字锁相环不仅吸收了数字电路可靠性高.体积小.价格低等优点,还解决了模拟锁 ...

  9. 基于FPGA的IIR滤波器

    基于FPGA的IIR滤波器                                                         by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 ...

随机推荐

  1. 初探kafka streams

    1.启动zookeeper zkServer.cmd 2.启动kafka kafka-server-start.bat d:\soft\tool\Kafka\kafka_2.12-2.1.0\conf ...

  2. mysql join用法简介

    为什么需要join 为什么需要join?join中文意思为连接,连接意味着关联即将一个表和多个表之间关联起来.在处理数据库表的时候,我们经常会发现,需要从多个表中获取信息,将多个表的多个字段数据组装起 ...

  3. CentOS7安装MySQL8.0图文教程

    1.下载 MySQL 所需要的安装包 网址:https://dev.mysql.com/downloads/mysql/ 2.Select Operating System: 选择 Red Hat , ...

  4. 【CF1063D】Candies for Children 数学

    题目大意 有 \(n\) 个人排成一个圈,你有 \(k\) 颗糖,你要从第 \(l\) 个人开始发糖,直到第 \(r\) 个人拿走最后一颗糖.注意这 \(n\) 个人拍成了一个圈,所以第 \(n\) ...

  5. 京东商品及评论爬虫(selenium)

    代码查看https://gitee.com/MarkPolaris/reptile/tree/master/jd 中的gly和demo03

  6. MySQ数据备份

    MySQL备份概述 问题:备份和冗余有什么区别? 备份:能够防止由于机械故障以及人为操作带来的数据丢失,例如将数据库文件保存在了其它地方. 冗余:数据有多份冗余,但不等于备份,只能防止机械故障带来的数 ...

  7. mysql 数据库表迁移复制

    1. 表结构相同的表,且在同一数据库(如,table1,table2) insert into table1 select * from table2 # 完全复制 insert into table ...

  8. 将CSV文件存为HTML文件形式

    # -*- coding: utf-8 -*- """ Created on Mon Apr 29 09:24:04 2019 @author: history &quo ...

  9. 支付宝aar添加与友盟冲突解决

    Program type already present: com.ta.utdid2.b.a.e" 错误提示: 删掉libs中utdid的jar.

  10. python类方法以及类调用实例方法的理解

    classmethod类方法 1) 在python中.类方法 @classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法. 类方法的第一个参数cls,而 ...