在终端上显示仿真的值,或者存成文件 激励 (stimlus) 实例化DUT(Design Under Test) 使用波形工具比较仿真波形 自动比较测试结果的正确性 图12. 基于Testbench的仿真流程 Fig.12 The simulation flow chart of Testbench
从图中可以清晰地看出Testbench的主要功能:
(1) 为DUT(Design Under Test,待测设计)提供激励信号; (2) 正确实例化DUT;
(3) 将仿真数据显示在终端或者存为文件,也可以显示在波形窗口中以供分析检查;
一个Testbench设计好以后,可以为芯片设计的各个阶段服务,比如在对RTL代码,综合网表和布线之后的网表进行仿真的时候,都可以采用同一个Testbench[11]。
将实现CIC滤波器功能的设计呈现在Modelsim环境下进行波形仿真,经过多次 的调试和程序修改后,运行的仿真波形图可将CIC滤波器的功能表示出来。图13为CIC滤波器在Modelsim环境下进行波形仿真:
图13. Modelsim波形仿真 Fig.13 The wave Simulation of Modelsim
线网型(net)的变量可以理解为实际电路中的导线,通常用于表示结构体之间的物
15
理连接,就不可以存储任何值,并且一定要受到驱动器额驱动才有效。一个线网型变量可能同时受到几个驱动源的驱动,此时该线网型变量的取值由逻辑强度较高的驱动源决定;如果多个驱动源的逻辑强度相同,则取值为不定态,这和实际电路模型的情况是完全相符的。本设计中y_out被申明为wire型,因此在刚开始仿真的一段时间里y_out的输出值为不定态x。为了便于观察将波形进行缩小,并且将时间轴右移一些得到图14所示的波形图:
图14. Modelsim波形仿真 Fig.14 The wave Simulation of Modelsim
通过观察波形可以知道,每16个时钟周期,y_out输出一个数值,实现了抽取率为16的功能,基本实现了CIC抽取滤波器的功能。
在利用Modelsim进行仿真的过程中,首先利用MATLAB产生一个周期为16的正弦波,并从中采样了4096个点存储在sin.txt中,然后将这些数据导入测试程序中,因此为了能够更加直观的观察滤波器的功能,将输入和输出的数据模拟表示为图15。
从图15中可以看出:输出的波形较输入波形有一段时间的延时,波形前面一段输出的是直线,是由于积分器和梳状器的延时所导致的输出的不定态X,但输出波形整体上也是一个正弦波,和输入波形保持一致,并且是呈阶梯状的,其中每一个阶梯就是一个抽取因子。Testbench测试文件见附录3,正弦波数据产生程序见附录4。
16
图15. Modelsim波形仿真 Fig.15 The wave Simulation of Modelsim
6. 结束语:
CIC滤波器结构简单,仅有两个功能模块,能够节省资源,并且在工程上易于实现,是一种经济型滤波器。滤波是只做加法运算,无需一般的FIR滤波器所需的乘法运算,大大简化了计算量,从而降低了后续电路的处理速度。文中叙述了CIC滤波器的基本原理及其多级CIC滤波器的具体设计,仿真结果证明了设计方案的正确性和可行性。CIC滤波器是多速率信号处理中的一种重要的部件,在软件无线电中起到了重要的作用,研究它具有重要意义。(Hogenauer还引入了“剪除”理论对每一级的位宽进行裁剪,在实际的应用中,考虑到资源和速度的问题,CIC滤波器应采用剪除理论来实现,文中未做介绍。)
参考文献:
[1]. ZHANG JIAN.CHEN Yan.WANG Hua. Performance Analysis of Cascaded Integrator-Comb Filter in Modulator [J].Transaction of Beijing Institute of Technology.2006.26(04).345-348
[2]. 刘福奇.刘 波.Verilog HDL应用程序设计实例精讲[M].北京:电子工业出版社.2009.11.189-205 [3]. QainLinjun.Design of CIC Filter Baced on ∑-△ADC [J].Electronic Component &. Device
Applications.2009.11(01).44-46
[4]. 高明伦. Verilog与PC机接口电路设计[M].合肥:安徽科学技术出版社.2002.62-63 [5]. 朱明程.现场可编程门阵列器件[M].北京:电子工业出版社.1994.12-32
[6]. 叶淦华.FPGA嵌入式应用系统开发典型实例[M].北京:中国电力出版社.2005.40-41 [7]. 刘 凌.胡永生译.数字信号处理的FPGA实现[M].北京:清华大学出版社.2002.134-139
[8]. ZhuGuojun.ZhangHao.ZhangZhijun.Implementation of CIC Filter Based on FPGA [J].Electronic
Science and Technology.2006(11).19-22
17
[9]. 王 冠.黄 熙.王 鹰. Verilog HDL与数字电路设计[M].北京:机械工业出版社.2005.30-32 [10]. 程佩青.数字信号处理教程[M].北京:清华大学出版社.2000.122-128
[11]. 吴继华,王 城.设计与验证-Verilog HDL[M].北京:人民邮电出版社.2006.159-161
18
附录1:
%单级CIC滤波器参数
m1=2; %延迟因子 n1=1; %滤波器阶数 r1=32; %抽取因子 %三级CIC滤波器的参数 m2 = 2; n2= 3; r2= 32; dw=0.01;
w=0:dw:1*pi;
%计算滤波器的频率响应
h1= exp(i*n1*w/2*(1-r1*m1)).*(sin(r1*m1*w/2)./sin(w/2)).^n1; %计算滤波器的频率响应
h2=exp(i*n2*w/2*(1-r2*m2)).*(sin(r2*m2*w/2)./sin(w/2)).^n2;
plot(w/pi,20*log10(abs(h1)),'m'); %绘制单级CIC滤波器的幅频特性 hold on;
plot(w/pi,20*log10(abs(h2)),'b:'); %绘制3级CIC滤波器的幅频特性 grid on;
legend('single stage','three-stage',2)
xlabel('Normalized Frequency Relative to the High Sampling Rate(\\times\\pirad/sample)'); ylabel('Magnitude (dB)');
title('Frequency Response');
19