DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1763|回复: 1
打印 上一主题 下一主题

[待整理] 基于FPGA的直接数字频率合成技术设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 13:59:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
基于FPGA的直接数字频率合成技术设计

摘要:介绍了利用现场可编程逻辑门阵列FPGA实现直接数字频率合成(DDS)的原理、电路结构和优化方法。重点介绍了DDS技术在FPGA中的实现方法,给出了采用ALTERA公司的ACEX系列FPGA芯片EP1K30TC进行直接数字频率合成的VHDL源程序。   关键词:直接数字频率合成(DDS);现场可编程逻辑门阵列(FPGA);EP1K30TC-144
直接数字频率合成(Direct Digital Fraquency Syn-thesis即DDFS,一般简称DDS)是从相位概念出发直接合成所需波形的一种新的频率合成技术。它在相对带宽、频率转换时间、相位连续性、正交输出、高分辨率以及集成化等一系列性能指标方面已远远超过了传统频率合成技术。当累加器的N很大时,最低输出频率可达Hz、mHz甚至μHz。也就是说:DDS的最低合成频率接近于零频。如果fc为50MHz, 那么当N为48位时,其分辨率可达179nHz。转换时间最快可达10ns的量级,这都是传统频率合成所不能比拟的。但它的不足之处是最高工作频率会受限、噪声和杂波不够理想。
本设计采用ALTERA 公司的FPGA芯片EP1K30TC-144来实现DDS技术。EP1K30芯片属ALTERA 公司的ACEX系列,该系列是ALTERA公司着眼于通信、音频处理及类似场合应用而推出的FPGA器件系列芯片,它采用0.22/0.18微米混合工艺,密度从10000门到100000门。所有ACEX系列器件均兼容64bit、66MHz的PCI,并支持锁相环电路。ACEX 1K采用查找表(LUT)和EAB(嵌入式阵列块)相结合的结构,可用来实现存储器、专用逻辑功能和通用逻辑功能,每个EBA能提供4096比特的存储空间,每个LE包含4个输入LUT、一个可编程的触发器、进位链和一个层叠链。合理运用进位链能够提高系统运行速度。
EP1K30TC-144的最大系统门数为119000,它有1728个逻辑宏单元数和5个嵌入式阵列块,最大可提供2kB的ROM/RAM位,因而可完全满足DDS设计的要求。

1 DDS的实现过程
图1为DDS系统的基本原理图,图中的相位累加器由N位全加器和N位累加寄存器级联而成,可对频率控制字的2进制码进行累加运算,是典型的反馈电路,产生的累加结果的高M位作为ROM查找表的取样地址值,而此查找表中储存了一个周期的正弦波幅度值。显然,此处存储器ROM可以看作一个从相位到正弦幅值的转换器。这样,用ROM的输出值来驱动DAC,然后经滤波即可转换成所需要的模拟正弦波形;同时N位累加输出又可作为全加器的下一轮数据与频率数据相加,直到相位累加器加满产生溢出,从而完成一个周期,也就是DDS信号的频率周期。

2 DDS在FPGA中的实现
考虑到本系统的规模以及以后的扩展需要,该系统中的DDS电路采用VHDL硬件描述语言来实现,因为VHDL语言设计的电路模块可以方便地移植到不同的FPGA芯片中。由于硬件原因,本系统的最高频率为100kHz,因此,采用常规设计即可满足要求,但若要应用于高速系统,还要采用一些提高系统运行速度的措施,如采用流水线技术,即在设计中把延时较大的组合逻辑块切割成两块大致相等的组合逻辑块,并在这两个逻辑块中插入触发器,也可通过多个触发器时钟来提高系统速度,还可以采用ALTREA 公司的FPGA器件所特有的进位链来设计高速电路。

    图2所示为一个具有频率、相位与幅度调制的DDS系统的FPGA组成框图。它的频率调制可以在调谐寄存器与相位累加器之间插入一加法器来实现,频率调制与相位调制有相同的分辨率,因此,频率可以覆盖整个调谐频段。相位调制器可通过在相位累加器后插入一个加法器来实现。幅度调制则是在正弦查找表后插入一个乘法器来实现。该系统具有高精度、高稳定性等特点。
2.1 ROM查找表的设计
ROM查找表在整个设计中是一个比较重要的部分。为了保证波形的平滑,设计时可将一个周期分为1024个点。但是,点数太多时,用文本方式输入可能有很多困难。因此,应当用C语言描述正弦方程式,最后再将其转化为所需的mif文件。以下是其C语言的源程序:
main()
{int i;float s;
for(i=0;i<1024;i++)
{ s = sin(atan(1)*8*i/1024);
......
2.2 DDS主模块设计
DDS主模块部分可根据上述原理,采用VHDL来描述,以下是部分源程序:
BEGIN
PROCESS (clk)
BEGIN
IF(clk'event AND clk='1') THEN
\\时钟上升沿触发
freqw<=freqin;
acc<=acc+freqw; \\开始累加
END IF;
END PROCESS;
romaddr<=acc(adder width-1 downto adder width-10); \\累加结果的高11位作为
查找表的地址位
i_rom:lpm_rom \\调用ROM查找表
......
2.3 DDS控制模块设计
DDS部分的系统控制是根据所需要的功能(如相位调制、幅度调制等)要求而设计的,这一点也是利用了FPGA的灵活性。其部分程序如下:
COMPONENT ddsc IS   \调用DDS主模块
......
END COMPONENT ;
SIGNAL clkcnt :integer RANGE 4 DOWNTO 0;
\\内部信号定义
SIGNAL clk:std_logic;
SIGNAL freqind:std_logic_vector(15 DOWNTO 0);
BEGIN
i_ddsc:ddsc \\调用DDS主模块
PORT MAP(clk=>clk,ddsout =>ddsout,freqin=>freqind);
clk<=sclk; \\连接内部端口
PROCESS (sclk)
BEGIN
IFsclk'event AND sclk='1' THEN
\\系统时钟的上升沿触发
freqind<=fpin;
END IF;

3 结论
本系统在频率不高于100kHz时能产生精确的正弦波形,而且十分稳定。由于基准时钟为50MHz,且分辨率为16位,因此,该系统能产生的最低频率为500Hz,若要产生更低频率及更精确的波形,可以提高分辨率并相应减小基准时钟,这在FPGA中实现起来相当容易。
实践证明:用FPGA设计DDS电路较采用专用DDS芯片更为灵活。因为,只要改变FPGA中的ROM数据,DDS就可以产生任意波形,因而具有相当大的灵活性。相比之下:FPGA的功能完全取决于设计需求,可以复杂也可以简单,而且FPGA芯片还支持在系统现场升级,虽然在精度和速度上略有不足,但也能基本满足绝大多数系统的使用要求。另外,将DDS设计嵌入到FPGA芯片所构成的系统中,其系统成本并不会增加多少,而购买专用芯片的价格则是前者的很多倍。因此,采用FPGA来设计DDS系统具有很高的性价比。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-23 10:40 , 耗时 0.087418 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表