利用FPGA器件FLEX EP10K50芯片实现DDS电路的设计

直接数字频率合成(direct digital frequency synthesis)是从相位概念出发直接合成所需波形的一种新的频率合成技术。目前各大芯片制造厂商都相继推出采用先进的cmos工艺生产的高性能和多功能的dds芯片(其中应用较为广泛的是ad公司的ad985x系列),为电路设计者提供了多种选择。然而在某些场合,专用的dds芯片在控制方式、置频速率等方面与系统的要求差距很大,这时如果用高性能的fpga器件设计符合自己需要的dds电路就是一个很好的解决方法。
1 dds电路工作原理
图1是dds电路的基本原理框图。dds的工作原理是以数控振荡的方式产生频率、相位可控的正弦波。电路一般包括基准时钟、频率累加器、相位累加器、幅度/相位转换电路、d/a转换器(dac)和低通滤波器(lpf)。
具体工作过程如下:每来一个时钟脉冲fc,n位累加器将频率控制数据m与相位寄存器输出的累加相位数据相加,把相加后的结果送至相位寄存器的输入端。相位寄存器一方面将在上一时钟周期作用后所产生的新的相位数据反馈到累加器的输入端,以使累加器在下一时钟的作用下继续与频率控制数据相加;另一方面将这个值作为取样地址值送入幅度/相位转换电路(图1中的正弦查找表),幅度/相位转换电路根据这个地址值输出相应的波形数据。最后经d/a转换器和低通滤波器将波形数据转换成所需要的模拟波形。
dds输出信号的频率为:可见,通过设定相位累加器位数、频率控制字和基准时钟的值,就可以产生任一频率的输出。dds的频率分辨率为: 由于基准时钟一般固定,因此相位累加器的位数就决定了频率分辨率,位数越多,分辨率越高。
2 利用fpga设计dds电路
在fpga设计dds电路时,相位累加器是dds电路的一个关键部分,高效快速的累加器能提高dds的性能。累加器可以利用flex器件的进位链,同时结合流水处理措施得到快速高效的电路结构。
相位/幅度转换电路是dds电路中的另一个关键部分,该电路通常采用rom结构,设计中面临的主要问题就是资源的开销。相位累加器的输出是一种数字式锯齿波,通过取它的若干位作为rom的地址输入,然后通过查表和运算,rom就能输出所需波形的数据。
在fpga(altera器件)中,rom一般由eab实现,并且rom表的尺寸随着地址位数或数据位数的增加成指数递增,因此在满足信号性能的前提下,如何减少资源的开销就是一个重要的问题。在实际运用中,相位/幅度转换电路的主要问题在于rom的大小(正弦波形存储器的字节数决定了相位量化误差,每个单元内的比特数决定了幅度量化误差),因此设计时充分利用信号周期内的对称性和算术关系来减少rom开销。考虑以下的优化方式:余弦波信号对于 直线成偶对称,基于此可以将rom表减少至原来的1/2,再利用左半周期内,波形对于成奇对称,进一步将rom表减至最初的1/4,因此可以通过一个正弦码表的前1/4周期就可以变换得到正弦和余弦的整个周期码表。这样就节省了3/4的资源。dds电路的电路结构设计如图2所示。
3 利用flex ep10k50实现dds电路
ep10k50是altera公司flex系列产品,ep10k50芯片的存储单元有10个eba块组成,每个eba块的存储容量为2048位,总存储容量达到20480位。因此可以充分利用它的存储容量来配置rom表,从而实现相位/幅度转换电路。在这里将存储容量配置成两个1024x8的rom表,一个为正弦表,另一个为余弦表,实现一个累加器为10位的dds电路,仿真结果如图3。
上图是dds电路的max+plusⅱ波形仿真结果。其中累加器字长n=10。频率控制字freq为h010,时钟clk为10mhz,查找表的深度为10位,字宽为8位。out_s和out_c分别为dds输出的正弦和余弦信号。根据公式,输出的正弦和余弦信号的频率为:
为了便于调试设计电路,可以利用计算机高级语言将max+plusⅱ波形仿真结果转换为波形曲线,在这里借助max+plusⅱ的表格文件(.tbl¬)。在图3的波形仿真结果中,在file菜单中选择creat table files,自动生成dds.tbl文件。通过编写一段matlab程序,将clk、out_s和out_c引脚上的数据读出,然后绘出dds电路的仿真波形曲线,如图4所示。
4 结论
利用fpga实现dds电路可以根据系统要求在控制方式、置频速率等方面实现得更加灵活。随着超大规模集成电路技术的飞速发展,dds电路中关键的相位累加器和相位/幅度转换电路在高性能的fpga器件中得到解决,使设计者可以设计出符合自己性能需要的dds电路。


cbb电容容量变小的原因
采用ZigBee和GPRS无线通信方式相结合的温度控制系统设计
MOS管栅源下拉电阻的作用
如何预防电线电缆因导线过载而引起的火灾问题
PCB板批锋的问题如何解决
利用FPGA器件FLEX EP10K50芯片实现DDS电路的设计
天津大学微波太赫兹波微电子系统实验室启用仪式暨太赫兹测量与应用论坛成功举行
怎样利用Python去快速创建矩阵?
Flask两种配置路由的方式说明
浅谈汽车连接器的分类和选择方法
感知人工智能带来的便利生活
ABB为工业应用领域提供独特的LinPak 1700V功率模块
光纤跳线和尾纤有哪些区别
人工智能技术在工作场景下的研究剖析
2020年彩电行业发展现状分析
GC080X可兼容AD9364在数字通信系统中的应用
变压器中性点的接地方式有几种?各有何特点?
什么是10 GbE?10 GbE有多快?
DS2151 ANSI T1.231-1993的实施
AI落地制造业有哪些优点和缺点详细说明