新闻中心

EEPW首页>EDA/PCB>设计应用> 直接数字频率合成器的PFGA实现

直接数字频率合成器的PFGA实现

作者: 时间:2011-06-28 来源:网络 收藏

2.2 波形存储器
以相位累加器输出数据作为波形存储器的取样地址,进行波形的相位—幅码转换,即可在给定的时间上确定输出的波形的抽样幅码。N位的寻址ROM相当于把0~2π的正弦信号离散成具有2N个样值的序列。若波形存储器有D位数据位,则各样值的幅码以D位二进制数值保存在该模拟ROM中,按照不同地址输出相应相位的正弦信号的幅码数值。为了更加有效的表示波形,当然期望波形存储器输出的二进制值位数越多越好。但是查找表的设计和D/A转换器的选择是相关的,因此需要选择位数高的D/A转换器。本文设计的正弦表,具有16b输出,采样点为256。
2.3 D/A转换电路的实现
D/A转换单元是继波形数据产生单元之后,将数字量形式的波形幅值转换成所要求的合成频率的模拟量形式信号。DAC输出信号实际上是阶梯模拟信号,需在D/A转换后利用低通滤波器对波形进行平滑处理。在此,用Maxim公司生产的A/D换器MAX5885芯片。该芯片需要将输入时钟信号转换为差分输入,且由外部芯片MAX6161提供1.2 V的参考电压,D/A转换后的差分输出经变压器转换后即可得到所需的信号:
f.JPG

3 系统软件设计
3.1 累加控制模块的设计
相位累加器主要完成相位累加,实现输出波形频率可调的功能。该模块采用Verilog HDL语言来实现,若要求DDS系统精度高,相位累加器的位数N需较大。这里取N=8,它的Verilog HDL关键代码如下:
g.JPG
其中,data信号为8位的频率控制字,通过改变data的值可以实现不同频率波形的输出。
3.2 波形存储器的设计
针对不同的可编程器件,ROM查找表的设计采用的方法也不相同。主要是基于IP核Single Port BlockMemory和Verilog选择语句这两种方法。使用SinglePort Block Memory的波形存储表只需要产生数据文件*.mif或*.coe,然后直接在定制Single Port BlockMemory时,添加数据文件即可。不过这种方法在FPGA支持内部嵌入式阵列块(EAB)时才可以使用;使用Verilog选择语句比较直观,但当输入数据量大的
这种方法是比较繁琐的。此次设计采用第一种方法。
coe文件是在编译和仿真过程中作为存储器(ROM或RAM)初始化输入的文件,即memory initializationfile。创建coe文件的方式有很多种,在这次设计中,在Matlab中采用C语言来生成coe文件。coe文件编写格式如下:
h.JPG
将生成的cos.txt文件的后缀该为.coe,打开文件并将最后一行的逗号改为分号,并在文件的最开始添加下面两行:
i.JPG
最后保存文件退出,并加载到Single Port BlockMemory所生成的ROM中。加载时要特别注意数据基数和数据长度的参数设置。

4 系统的功能仿真和验证分析
累加控制器、ROM查找表组成一个整体,实现了一个基本的DDS系统。该设计以原子钟(33 MHz)为基准频率输入,取累加器为32位,实现输出频率为700 kHz的信号。


评论


相关推荐

技术专区

关闭