您的位置 首页 报告

信号去直流办法

本文介绍一种根据Xilinx FPGA中DSP48E1资源设计的去直流模块,其基本原理采用一阶滤波器,如图1所示,通过一个一阶RC电路,在V0端可等效一个低通滤波器,得到直流分量。

使用FPGA进行数字信号处理时,信号中的直流重量一般需求去除,而直流重量在AD前段就存在,假如选用模仿电路去除直流重量比较复杂,因而一般在AD后端数字域去除直流重量。在FPGA中,惯例去直流的办法是先对信号进行累加,然后对累加值进行移位即可得到直流重量,如累加8192个数据,则直流重量可由累加值右移13位得到。

本文介绍一种依据Xilinx FPGADSP48E1资源规划的去直流模块,其基本原理选用一阶滤波器,如图1所示,经过一个一阶RC电路,在V0端可等效一个低通滤波器,得到直流重量。

由上式可推导出,

界说系数,


由此可得到下式:

由上式可得到如图2所示结构

仔细观察发现图2中结构与Xilinx FPGA的DSP48E1结构十分相似,如图3所示,两个结构做了类比,其间Vi – Vo的减法可由DSP48E1中的Pre-Adder完成,k*(vi – vo)的乘法可由DSP48E1中的Multipler完成,而Vo + k*(vi – vo)加法可由DSP48E1中的Accumulator完成。因而完成这个去直流模块只需1个DSP48E1资源,而且在Xilinx 7系列FPGA中,DSP48E1最大支撑25-bit的Pre-adder、25*18-bit的Multipler和48-bit的Accumulator,基本可满意惯例处理。

详细完成:

在ISE的HDL language template中能够找到DSP48的宏界说,这边需求用到ADDMACC_MACRO,只需求将这个宏模板拷贝到程序中直接例化即可调用DSP48,去直流模块的DSP48E1完成代码如下所示:

module DCOff_DSP(

input clk,

input rst,

input [15:0] din,

output [15:0] dc

);

wire signed [31:0] PRODUCT;

wire signed [15:0] K;

wire signed [31:0] ACOUT;

assign K=16h0085;

ADDMACC_MACRO #(

.DEV%&&&&&%E(7SERIES), // Target Device: VIRTEX6, SPARTAN6, 7SERIES

.LATENCY(4), // Desired clock cycle latency, 0-4

.WIDTH_PREADD(16), // Pre-adder input width, 1-25

.WIDTH_MULTIPLIER(16), // Multiplier input width, 1-18

.WIDTH_PRODUCT(32) // MACC output width, 1-48

) ADDMACC_MACRO_inst (

.PRODUCT(PRODUCT), // MACC result output, width defined by WIDTH_PRODUCT parameter

.CARRYIN(1b0), // 1-bit carry-in input

.CLK(clk), // 1-bit clock input

.CE(1b1), // 1-bit clock enable input

.LOAD(1b1), // 1-bit accumulator load input

.LOAD_DATA(PRODUCT), // Accumulator load data input, width defined by WIDTH_PRODUCT parameter

.MULTIPLIER(K), // Multiplier data input, width defined by WIDTH_MULTIPLIER parameter

.PREADD2(-PRODUCT[31:16]), // Preadder data input, width defined by WIDTH_PREADD parameter

.PREADD1(din), // Preadder data input, width defined by WIDTH_PREADD parameter

.RST(rst) // 1-bit active high synchronous reset

);

assign dc=PRODUCT[31:16];

endmodule

以下是得到的归纳陈述,首要就使用了1个DSP48E1资源,而且最高时钟频率高达552MHz,可满意通讯体系中频数据处理。

Selected Device : 7k325tfbg676-3

Slice Logic Utilization:

Number of Slice LUTs : 16 out of 203800 0%

Number used as Logic: 16 out of 203800 0%

Number of DSP48E1s: 1 out of 840 0%

Timing Summary:

Minimum period: 1.811ns (Maximum Frequency: 552.273MHz)

Minimum input arrival time before clock: 0.694ns

Maximum output required time after clock: 0.568ns

如图4所示为去直流模块的仿真波形,输入为有直流偏置的正弦波,从图中可看出输出直流重量跟着滤波数据的添加渐渐收敛,而这个收敛速度取决于系数k,依据k的表达式可得,k的值取决于采样周期和RC值,假如采样频率固定为245.76MHz,则RC值决议了k的取值。

依据屡次仿真的到k的不同取值对模块的影响:

k取值越大,DC值收敛得越快;k取值越小,DC值越安稳、越滑润。因而,不是k取值越大越好,收敛快可是动摇比较大,如图5所示,这样直流重量肯定是滤不洁净的。

究其原因,得从原理上着手,翻看了一下信号与体系书(这些基本概念长期不必都还给教师了,平常还得多留意温习一下基础知识),本来k的值决议了这个低通滤波器的截止频率,输出直流重量的动摇性不仅仅跟k值有关,还与输入信号频率和采样频率有关,在本文实例中,输入信号频率为5MHz,采样频率为245.76MHz,在图4中k=0x85,图5中k=0x400,如图6所式为k的两个取值得到滤波器的幅频特性,而且标出了输入信号地点频点(5MHz/245.76*2=0.04068)的起伏特性,分别为-29.98dB和-12.6dB,相差了近20dB。因而在规划去直流模块时应依据实践使用状况决议k的取值。

本文介绍了一种信号去直流的新办法,但不是一切场合都试用,假如FPGA渠道DSP资源比较少,如SPARTAN系列,主张选用惯例累加+移位的办法。而本文实例中选用Kintex7系列FPGA,有丰厚的DSP资源,而选用此办法整个模块只需求1个DSP48E1,而且能高速处理,因而十分适用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/199774.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部