微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > 高阶∑△ADC中的抽取滤波器的设计

高阶∑△ADC中的抽取滤波器的设计

时间:09-28 来源:电子技术应用 点击:

  传输函数为:
    

  为完成对数据的延时存储操作,同时考虑到节省功耗和面积,因此使用SRAM实现数据的存储和移位。其中的存储单元采用标准六管单元实现。滤波器为52阶,前级梳状滤波器的输出位数为18bit,总的存储容量为18×52bit。注意到系数的对称性,于是安排每次访问两个对称的存储单位,每个单位存储一组数据。这样就可以减轻地址译码电路的复杂度,用5~26译码器就可以实现地址译码。考虑到其中SRAM存储体的读取操作是电路工作的关键,所以设计了反相器交叉耦合的灵敏放大器来加快SRAM的读操作。设计中将滤波器的所有系数都放在ROM中,由于一共有26个系数,量化以后,每个系数有13bit,为了ROM的设计方便,取4×7组单元,采用或与逻辑实现。

  在FIR滤波器中,要用到乘法运算。如果用一般的乘法实现,会浪费很多的硬件资源,并且会产生很大的延时。在本设计中,采用基4 Booth算法代替普通的二进制乘法,以达到方便、快捷又省资源的目的。在进行乘法运算之前,将对称的数据从SRAM中读取出来并相加,这样被乘数有19bit,而系数有13bit,为了方便实现,将乘数扩展为20bit,系数扩展为16bit。这样经过Booth编码后,得出的部分积就有8个,用串行加法器相加则延时太大。考虑用CSA代替串行加法器[7],同时用两级CSA对部分积进行压缩,这样就产生了四个部分积,但是Booth编码要一次检测系数的四位,也就是在一次部分积里,对被乘数进行两次Booth操作。另外,为了减少CSA的使用,用一组20bit的寄存器来暂存部分积的累加结果,这样,两级CSA就可以循环使用了。最后使用一级22bit的超前进位加法器,将部分积累加的结果输出。总的硬件结构如图1。

3 仿真验证

  在Matlab中作出滤波器的频率响应,如图2和图3所示。


  由图3可以看出,阻带衰减为65dB,通带纹波在±0.05dB之间。满足设计要求。

  用Verilog语言描述各模块功能,编写Test文件,在Cadence中利用的VerilogXL工具仿真,得到结果如图4所示。

  在Matlab中利用Simulink搭建五阶∑△调制器以及与本设计对应的滤波器系统,对调制器的输出做频谱分析,得到SNR为108.13dB,有效位数为17.67bit,再对滤波器的输出做频谱分析,结果如图5。可得SNR为99.27dB,有效位数为16.20bit,最后的输出仍然高于16bit的精度,满足设计要求。


  本文在对抽取滤波器的结构进行优化和改进的基础上,从节省面积和降低功耗的角度出发,合理安排硬件电路,最终完成了16bit∑△ADC中的抽取滤波器的设计。经过仿真验证,该滤波器系统稳定,不仅能够实现对采样率的64倍抽取,而且能够滤除∑△ADC信号带宽外的噪声成分,保证整个信号带宽的平坦和干净。各项性能指标也完全满足设计要求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top