一种基于Spartan3E的DDS优化设计

2011-09-15 13:15:15来源: 互联网
   

    在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不可靠和PC可能跑飞等问题。CPLD/FPGA的高可靠性还表现在,几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。所以,本文将在对DDS的基本原理进行深入理解的基础上,采用多级流水线控制技术对DDS的VHDL语言实现进行优化,同时考虑到系统设计中的异步接口的同步化设计问题,把该设计适配到Xilinx公司的最新90nm工艺的Spartan3E系列的FPGA中。

  1 DDS基本原理及工作过程

  一个基本的DDS由相位累加器、波形存储器ROM、D/A转换器和低通滤波器组成,如图1所示。

  

DDS基本组成模块

 

  在图1中,fc为时钟频率,K为频率控制字(N位),m为ROM地址线位数,n为ROM数据线宽度(一般也为D/A转换器的位数),f0为输出频率。DDS的基本工作过程如下:每来一个时钟脉冲fc,加法器将频率控制字K与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。其中相位累加器由N位加法器与N位累加寄存器级联构成,累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可见,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。用相位累加器输出的数据作为波形存储器ROM的相位取样地址,可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号,由低通滤波器滤除杂散波和谐波以后,输出一个频率为f0的正弦波。输出频率f0与时钟频率fc之间的关系满足下式:

  

 

  由式(1)可见,输出频率f0由fc和K共同决定,保持时钟频率一定,改变一次K值,即可合成一个新频率的正弦波。DDS的最小输出频率(频率分辨率)△f可由方程△f=f0/2N确定。可见,频率分辨率在fc固定时,取决于相位累加器的位数N。只要N足够大,理论上就可以获得足够高的频率分辨精度。另外,由采样定理,合成信号的频率不能超过时钟频率的一半,即f0≤f0/2,因此频率控制值的最大值Kmax应满足Kmax≤2N-1。

  2 DDS的优化设计与实现

  采用VHDL硬件描述语言实现整个电路,不仅利于设计文档的管理,而且方便了设计的修改和扩充,还可以实现在不同FPGA器件[4]之间的移植。以下采用VHDL语言,探讨对FPGA实现DDS电路的三点优化方法。

  2.1 流水线累加器

  在用FPGA设计DDS电路时,相位累加器是决定DDS电路性能的一个关键部分。为使输出波形具有较高的分辨率,本系统采用32位累加器。但若直接用32位加法器构成累加器,则加法器的延时会大大限制累加器的操作速度。因此,这里引入了流水线算法,即采用4个8位累加器级联结构,每级用一个8位累加器实现该部分相位相加,然后将进位值传给下一级做进一步累加。这样可大幅提高系统的工作速度。但由于累加器是一个闭环反馈电路,因此必须使用寄存器,以保证系统的同步、准确运行。具体实现如图2所示。

  

流水累加器原理

 

  2.2 相位/幅度转换电路

  相位/幅度转换电路是DDS电路中的另一个关键部分,设计中面临的主要问题就是资源的开销。该电路通常采用ROM结构,相位累加器的输出是一种数字式锯齿波,通过取它的若干位作为ROM的地址输入,而后通过查表和运算,ROM就能输出所需波形的量化数据。考虑到正弦函数的对称性:在[0,2π]内,正弦函数关于x=π成奇对称,在[0,π]内,关于x=π/2成轴对称。因此,在正弦查找表中只须存储相位在[0,π/2]的函数值。这样,通过一个正弦码表的前1/4周期就可以变换得到整个周期码表,节省了近3/4的资源,非常可观。具体实现如表1所示,为节省ROM资源,取相位累加器输出的高8位做为ROM的输入地址,其中最高位(MSB)控制对输出信号符号的处理,次高位(MSB-1)控制对输入地址的处理。

  

当MSB-1为‘0’(一,三象限)时,对查找地址phase(5...0)不做任何处理;当其为‘1’(二,四象限)时,对phase(5...0)取反。ROM的输出为10位数据,其中最高位为符号位。当MSB为‘0’(一,二象限)时,输出信号符号位为‘0’,低9为ROM中的幅度数据;当其为‘1’(三,四象限)时,输出信号符号位为‘1’,低9位为ROM中的幅度数据的相反数的补码。ROM的VHDL实现的主要部分如下:

 

  architecture Behavioral of rom is

  signal sin:STD_LOGIC_VECTOR(8 downto 0);

  signal temp:STD_LOGIC_VECTOR(5 downto 0);

  begin

  temp<=phase when MSB-1=′0′ else

  not phase;

  process(temp)

  begin

  case temp is

  when ″000000″=>

  sin<=″000000000″;

  …… --正弦查找表由MATLAB生成

  end case;

  end process;

  data_out<=″0″ & sin when MSB=′0′ else

  ″1″ & not sin+″000000001″;

  end Behavioral;

  2.3 同步接口电路设计

[1] [2]

关键字:优化  优化设计  设计

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0915/article_2469.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
优化
优化设计
设计

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved