首页 理论教育 模块设计与仿真:2.6.2优化方案

模块设计与仿真:2.6.2优化方案

时间:2026-01-22 理论教育 小可爱 版权反馈
【摘要】:图2-9 相位累加器Test Bench Wave图2-10 相位累加器仿真图2.ROM查找表在一些需要特殊运算的应用电路中,ROM是关键元件。下面讨论FPGA的ROM初始化问题,详细介绍.coe文件的创建与使用。图2-17 顶层数控部分Test bench waveform用Modelsim SE6.5仿真得顶层数控部分仿真波形如图2-18所示。图2-19 K为8×106,初相为12345678的设置输入频率控制字K为8×107,初始相位为12345678时,调试得到的结果如图2-21和图2-22所示。

模块分为两部分,用FPGA Verilog代码实现了相位累加器和ROM查找表组成的数控振荡器,D-A转换则可用Modelsim软件自动查看。

1.相位累加器

DDS系统的核心是相位累加器,它由一个N位累加器与N位相位寄存器构成。时钟脉冲每触发一次,累加器便将频率控制数据与相位寄存器输出的累加相位数据相加,然后把相加的结果送至相位寄存器的数据输入端。相位寄存器将累加器在上一个时钟作用后所产生的新相位数据反馈到累加器的输入端,使加法器在下一个时钟的作用下继续与频率控制数据相加。这样,相位累加器在参考时钟的作用下将进行线性相位累加,当相位累加器累加满时,就会产生一次溢出,从而完成一个周期性的动作,这个周期就是DDS合成信号的一个频率周期,相位累加器的溢出频率就是DDS输出的信号频率。

图示

图2-8 相位累加器综合图

相位累加器综合图如图2-8所示。

相位累加器的Verilog代码详见光盘附件2-1。

相位累加器加入Test Bench Wave,如图2-9所示。

相位累加器仿真结果如图2-10所示。

图示

图2-9 相位累加器Test Bench Wave

图示

图2-10 相位累加器仿真图

2.ROM查找表

在一些需要特殊运算的应用电路中,ROM是关键元件。通常利用ROM创建各种查找表,从而简化电路设计,提高电路的处理速度和稳定性。FPGA是基于SRAM的可编程器件,掉电后FPGA上的配置信息将全部丢失,所以由FPGA构造的数字系统在每次上电后要依赖于外部存储器来主动配置或在线被动配置。真正意义上的ROM应具有掉电后信息不丢失的特性,因此,利用FPGA实现的ROM只能认为器件处于用户状态时具备ROM功能,使用时不必刻意划分。下面讨论FPGA的ROM初始化问题,详细介绍.coe文件的创建与使用。

对于ROM IP Core的使用,主要是生成相应的.coe文件,可借助MATLAB软件生成ROM的.coe文件。

(1)利用MATLAB计算出正弦波余弦波的浮点值,并量化16bit定点波形数值,MAT- LAB代码如下:

图示

(2)运行程序会在相应的磁盘路径上产生一个.txt文件,在波形数值前加上如下两行,并在各行数值后加逗号,数字末尾处添加分号保存即可。

图示

图示

(3)将保存的.txt文件的扩展名改为.coe,这样就产生了需要的.coe文件。

(4)将coe文件加载到BLOCKROM所生成的ROM中。

(5)新建一个BLOCKRAM的IP core,其位置为“Memories&Storage Elements RAMs&ROMS Block Memory Generator v2.7”。

(6)在第一页选择singleportrom,在第二页选择位宽为16、深度为1024,在第三页下载.coe文件,IP核添加示意图如图2-11所示。然后双击“Finish”,完成IPcore的生成。

图示

图2-11 IP核添加示意图

如果.coe文件生成得不对,图中用椭圆标志之处是红色的,.coe文件错误的类型主要有数据基数不对和数据的长度不对这两类。

IP核建立好之后,就要验证IP核的正确性。给IP核一个输入地址,看输出的数据与相位地址对应的数据是不是一致。IP核验证正确之后,进行下一步。

IP核验证代码如下:

图示

图示

IP核验证综合图如图2-12所示。

图示

图2-12 IP核验证综合图

IP核验证加入Test bench waveform,如图2-13所示。

图示

图2-13 IP核验证Test bench waveform

IP核验证仿真结果如图2-14所示。

图示(https://www.xing528.com)

图2-14 IP核验证仿真结果图

从图2-14可以看出,输入地址为00000010时,输出为表中第三个值,即402。可知,这个核是正确的。即可以进行下一步工作,写顶层文件。

顶层数控部分综合图如图2-15所示。

数控振荡部分DDS顶层文件的Verilog代码详见光盘附件2-2。

图示

图2-15 顶层数控部分综合图

顶层数控部分内部结构如图2-16所示。

图示

图2-16 顶层数控部分内部结构图

顶层数控部分加入Test bench waveform,如图2-17所示。

图示

图2-17 顶层数控部分Test bench waveform

用Modelsim SE6.5仿真得顶层数控部分仿真波形如图2-18所示。

图示

图2-18 顶层数控部分仿真波形图

由图2-18中可看出,在使能端aclr_1为高电平时,累加器归零,即重新累加相位值,波形此时在零交叉的位置。所以aclr_1可以看做一个复位开关。图中Modelsim的模拟查看模式就直接替代了D-A转换的功能,在此后再接一个滤波器,就将得到一个平滑的波形。

ChipScope调试代码详见光盘附件2-3。

将程序改写,加入ICON核、VIO核、ILA核,用ChipScope软件进行信号的捕捉,对波形进行观察。接上Xilinx Spartan-3E的电路板,打开电源,载入.bit程序文件,即开始调试。

在输入频率控制字K为8×106,初始相位为12345678时,调试得到的结果如图2-19和图2-20所示。

图示

图2-19 K为8×106,初相为12345678的设置

输入频率控制字K为8×107,初始相位为12345678时,调试得到的结果如图2-21和图2-22所示。

图示

图2-20 K为8×106时的调试波形

图示

图2-21 K为8×107,初相为12345678的设置

图示

图2-22 K为8×107时的调试波形

输入频率控制字K为8×108,初试相位为12345678时,调试得到的结果如图2-23和图2-24所示。

图示

图2-23 K为8×108,初相为12345678的设置

图示

图2-24 K为8×108时的调试波形

将图2-24放大可得到调试放大波形如图2-25所示。

图示

图2-25 K为8×108时的调试放大波形

由以上调试结果可知:当输入频率控制字K逐渐增大时,输出信号的波形频率fo也随之增大,符合fo=fc/2N的正比关系。但是也可以看出,随着频率控制字K增大,波形发生了一定的失真。根据奈奎斯特采样定理,若采样频率fs≥2fo,则可以不失真地恢复原有波形,换言之,在一个周期里至少包含有两个采样点(实际工程里一般采样点为3~10个)。

当输出波形频率较高时,由于采样一个完整周期的波形数据点数减少,势必引起波形失真。要消除波形失真,一是可以增加波形数据的点数,即增大ROM查找表的位数,存储更多的采样值;二是提高系统的主工作时钟频率。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈