打印

基于FPGA的DDFS信号源实现

[复制链接]
1509|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiao6666|  楼主 | 2013-5-21 21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在电子信息领域,函数发生器(信号源)是通用的设备。近年来电子信息技能 的飞速发展,使得各领域对信号源的要求在不断提高。不但要求其频率稳定度和精确 度高,要求频率改动 的方便性,而且还要求可以产生任意波形,输出不同幅度的信号等。而实现频率合成要领 有许多种,但基本上可以归纳为直接频率合成和间接频率合成两大类要领 。采用传统的频率合成技能 要实现上述要求,几乎是不可能的。DDFS技能 是自21世纪70年代出现的一种新型的直接频率合成技能 。DDFS 技能 是在信号的采样定理的基础上提出来的,从“相位”的概念出发,执行 频率合成,不但可运用 晶体振荡的高频率稳定度、高精确 度,且频率改动 方便,转换速度快,便于产生任意波形等,因此,DDFS技能 是目前高精密度信号源的核心技能 。目前已有专用的DDFS芯片,如美国AD公司的AD9850等可用于DDS 信号源的开发,但其成本较高。
1 DDFS原理
DDFS的原理:将对正弦等各种信号的采样量化数据存入ROM存储器中,在时钟的控制下,依次或隔一定步进读取ROM中的数据,再通过D/A转换芯片及后级的低通滤波器来实现频率合成的一种要领 。其原理框图如图1所示。其主要的组成部分包括:相位累加器(也可理解为ROM存储单元的读地址发生单元)、正弦信号采样量化数据存储ROM表、D/A转换及低通滤波器。

DDFS参数计算:DDFS的主要参数包括正弦信号的采样点数,最高输出频率fomax,最低输出频率fomax及频率分辨率△fo等。根据DDFS原理可知,在时钟控制下将所有ROM存储数据依次读出,则输出的信号周期最长Tomax=NTc,即输出频率最低为fomax;只读出两个点(∏/2和 3∏/2)的采样数据,则输出的信号周期最短Tomin=2Tc,即输出频率最高为fomax。其中Tc为时钟周期。相应计算如下。(1)输出信号频率通式:fo=Sfc/2n,其中2n为采样点个数N,故可知n为采样后ROM的地址位数;其中S为步进长度,即每S个地址取一个采样点;
(2)输出最低频率

(3)输出最高频率

查看原图(大图)虽然根据奈奎斯特采样定理,一个周期采样两个点即可保证信号的频谱信息不丢失,但为了输出信号滤波后失真较小,一个周期至少采样8个点;故可知S的取值范围应该为1~2n-3;
(4)频率分辨率△fo:△fo=fc/2n,与最低频率一致。
2 DDFS的FPGA实现的参数计算
本设计充分运用 CycloneII系列FPGA芯片EP2C35的片上资源来实现一个基于DDFS的正弦信号源。由于此芯片的片上可用ROM单元为483,840位二进制,因此,片上ROM资源只能够存储215(32768)个8位二进制采样点的数据。
(1)ROM资源优化:由于是正弦信号,因此只要采样其(0,n/2)区间上的函数值,即可根据其周期性及对称性,求出其他区间上的相应的函数值。故,虽然片上资源只能存储215(32768)个8位二进制数据,但运用 正弦信号的对称性,可实现217点采样。由于正弦信号在(n~2n)间为负值,因此输出函数值时,须要 执行 补码转换;
(2)地址位长度:ROM的寻址地址为15位二进制数;
(3)步进位长度:步进最大应为217/23=214,即步进为14位的二进制数;
(4)相位控制字:相位是指读取数据时,应该属于(0,2n)上的哪个区间,由于共有4个不同的区间。故可采用2位的二进制数来标识;不同的相位区间,决定着地址的读取方向及输出函数值能无法 取补码运算;
(5)任意波形的产生:要产生任意波形,可运用 任意波形如矩形脉冲、三角波、锯齿波等的傅利叶级数分解表达式,取其前有限次(如10次)谐波执行 求和并存入指定的RAM单元,再依次读出数据,即可产生任意的信号。也可以将相应波形的数据执行 采样,存入ROM中,按一定步进执行 读取。通过以上剖析 ,在充分运用 片上存储单元,不扩展外部存储器,地址时钟为10 MHz的基础上,可得频率分辨率为△f=78 Hz,输出信号最高频率(一个周期最少采样8个点)为fomax=fc/8=1.25 MHz;输出信号最低频率为fomin=Sfc/2ns=1=fc/217=78 Hz。若采样点达到232个及以上,频率分辨率可以做到0.015 Hz,达到mHz量级。可见运用 Cyclone II系列芯片设计出性能优良的信号源。根据DDFS的原理,其FPGA设计原理如图2所示。其中控制单元由有限状态机构成。虽然整个系统的控制不一定须要 运用 有限状态机,但由于运用 的FPGA 芯片不支撑 异步的ROM,即从地址锁存进入ROM单元,到数据从ROM中读出有至少一个时钟周期以上的延时。因此采用状态机来执行 控制,可以达到较好的输出与时钟同步。控制流程为:时钟信号进入控制单元,由它产生地址发生单元的输入时钟adrclk,地址发生单元在时钟adrclk的驱动下,结合输入的步进信号Step,产生地址及此地址所对应的象限Phase,此地址产生后立即输入到ROM单元中,过两个时钟周期后,控制单元从ROM存储单元中读出输入地址对应的数据,并在时钟的控制下,将前面所产生的象限值Phase与ROM数据一起送到补码转换单元,补码转换单元根据Phase的值来决定能无法 须要 执行 补码转换,若须要 ,则执行 补码运算并将数据输出,若不须要 ,则直接将数据输出。下面给出各模块的详细 设计细节。

相关帖子

沙发
xiao6666|  楼主 | 2013-5-21 21:41 | 只看该作者
(1)控制单元:控制单元是整个系统的核心部件。由一个基本 的有限状态机构成。其状态转换图如图3所示。

(2)地址发生单元:设计思路为根据输入的Step值,计算出总共四个象限所需取值的点数,也就可以计算出一个象限所要取值的点数m,然后在时钟作用下执行 计数,当计数值达m个时,说明一个象限内已经取完点,此时phase自加1,计数变量重新置零。由于在(0,π/2)sin的函数值为从0→1变化; (π/2,π)函数值从1→0变化;(π,3π/2)函数值从0→-1变化;(3π/2,2π)函数值从-1→0变化。故在(0,π/2)和 (π,3π/2)地址值从0→32767,每隔一个步进Step读一个数据,当然后者的数据要经过补码单元的处理;而在(π/2,π)和 (3π/2,2π)象限,地址值则从32767→0,每隔一个步进Step读一个数据即可,同样的,后者的数据也要经过补码单元的处理。(4)补码转换单元:根据目前地址所处象限来决定能无法 须要 执行 补码转换。如产生正弦信号时,(0,π)象限sin函数值为正,而(π,2π)象限上sin 函数值为负,因此在(π,2π)象限时,须要 对输出数据执行 补码转换。补码转换单元较基本 ,根据二进制数取补的原理执行 设计即可。
4 结果剖析
本设计在QuartusII6.0的平台上完成设计工作,其仿真波形如图4所示。在仿真波形中配置 的步进长度为1024点。由于有状态机执行 流程控制,产生的波形较平滑,元多滑毛刺产生。若要进一步提高输出信号频率范围,则设计流程 中,不应对时钟信号执行 分频。

同时,还可以运用 QuartusII的SigTapII工具对所设计的程序执行 硬件验证,配置 好相应步进后,相应的输出波形如图5及图6所示。可见所产生的低频正弦信号波形平滑,而频率较高时有一定的毛刺,这可以通过后级的低通滤波电路(如切比雪夫低通滤波网络等)来执行 滤除。

本设计运用 的逻辑单元只占FPGA片上资源的1%,存储单元占54%,I/O口占13%。可见主要资源为片上的存储单元,如果提高一位地址位,则数据量翻倍,FPGA片上ROM不够用。通过QuartusII6.0的时钟剖析 ,本设计可达到的最高时钟为149.41 MHz,而地址发生的时钟为时钟的4分频,故地址发生单元的最高时钟可达37.352 5 MHz,相应的输出信号最高频率可达4.665 MHz,相应的最低频率及频率步进为284.976 Hz。
5 结束语
本设计在不向外扩展ROM存储器的情况下,对DDFS设计执行 优化,充分运用 Cyclone II系列FPGA的片上资源,其输出正弦信号最高频率可达4 MHz以上。只要采用更好的方案执行 设计,使采样点可以做到232个及以上,频率分辨率可以做到0.015 Hz,达到mHz量级,进一步提高信号源的输出信号频率范围及频率分辨率等技能 指标,可运用 Cyclone II系列芯片设计出性能优良的信号源,达到实用信号源的要求。

使用特权

评论回复
板凳
rensailin| | 2014-3-19 22:05 | 只看该作者
楼主,你分析的好透彻,但我有一点疑问。请问那个最大步进值是怎么求出来的?是按照一个周期最少采八个点来求的吗?另,正弦波一个周期最少不是采三个点就足够吗?(虽然我知道这里的8个点很正确,但不知理论来源。)谢谢!

使用特权

评论回复
地板
雷北城| | 2021-5-14 15:04 | 只看该作者
谢谢分享,学习了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

453

帖子

1

粉丝