各位FPGA用户大家好,为了给本版块营造更良好的学习氛围,现特邀请我们的版主小梅哥带我们一起做项目【基于DDS技术的信号发生器系统】 欢迎大家一起跟帖交流学习!
题目:设计一个基于DDS技术的信号发生器系统。
要求:
1、有输入设备,能够对系统输出信号的频率和相位进行调整;
2、有输出设备,能够实时显示当前输出信号的频率和相位;
3、频率步进要求最低1Hz;
4、相位步进要求最低0.1°;
5、DA精度要求最低10位,可以没有硬件DA芯片(采用signaltap II来抓取输出波形即可),要求最低一路正弦输出,也可以为两路正弦输出。
6、输出正弦信号最高频率要求大于等于1M。
第一周内容,请各位采用word或者绘图软件绘制出系统的结构图,列出所需要的硬件资源。
同时对频率精度和相位精度要求进行分析,得出实现精度要求需要满足那些条件。
输入设备可采用PS2键盘、独立按键、矩阵键盘、红外遥控、串口之类的;
输出设备可采用数码管、串口、LCD1602、LCD12864、VGA之类的。
欢迎大家跟帖一起学习,每周二我们将定时更新,希望大家都可以通过这次活动学习到更多的知识,同时如果大家希望通过本论坛学到哪方的技术或者赶兴趣的技术,均可跟帖留言,我们将尽全力安排工程师带领大家一起学习交流!
36
|
|
|
|
这是一路的波形,跟着小梅哥学习~
-
1.png
(24.17 KB, 下载次数: 20)
-
2.png
(16.24 KB, 下载次数: 18)
|
|
|
|
|
版主大大,可以带着我们学习一下滤波,FFT之类IP核的使用吗?
|
|
|
|
|
今天先将DDS的原理发上来,方便大家思考。明天出我的解答。
DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有相对带宽大,频率转换时间短、分辨率高和相位连续性好等优点,很容易实现频率,相位,和幅度的数控调制,广泛应用于通信领域。
DDS的基本结构图如图1所示:
图1 DDS的基本结构图
主要由相位累加器,相位调制器,正弦数据表,和D/A转换器构成,相位累加器由N位加法器与N位寄存器构成。每来一个时钟,加法器就将频率控制字,与累加寄存器输出的相位数据相加,相加的结果又反馈至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字想加,这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,在每一个时钟脉冲输入时,相位累加器便把频率控制字累加一次。相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率,就是DDS输出的信号频率,用相位累加器输出的数据,作为波形存储器的相位采样地址,这样就可以把存储在波形存储器里的波形采样值经查表找出,完成相位到幅度的转换,波形存储器的付出送到D/A转换器,由D/A转换器将数字信号转换成模拟信号输出,DDS信号流程示意图如图4.51所示。
图2 DDS信号流程示意图
由于相位累加器为N位,相当于把正弦信号在相位上的精度定义为N位,(N的取值范围一般为24~32),所以其分辨率为1/2N,若系统时钟频率为Fclk,频率控制字fword为1,则输出频率为Fout=Fclk/2N,这个频率相当于“基频”,若fword为B,则输出频率为
当系统输入时钟频率,Fclk不变时,输出信号频率由频率控制字M所决定,由上式可得:
其中B为频率字,注意B要取整,有时会有误差,在本设计中,N取32位,系统时钟频率Fclk为120兆,
选取ROM的地址(即相位累加器的输出数据)时,可以间隔选通,相位寄存器输出的位数一般取10~16位,这种截取方法称为截断式用法,以减少ROM的容量,m太大会导致ROM容量的成倍上升,而输出精度受D/A位数的限制未有很大改善,在本设计中M取12位。
|
|
|
|
|
以上为周立功《EDA实验与实践》一书中对DDS系统介绍,该书中将Fclk设定为120M,相位累加器位宽N设定为了32位,因此其频率调整步进(基频)为F=Fclk/2N=120_000_000/232=0.028Hz。 我们系统要求频率步进不超过1Hz,因此F=2N/2N<=1,即要求Fclk不大于2N即可。 同时,为了输出一个比较完整的正弦波,这里我们建议一个完整周期的正弦波采样点数不低于8个,设若每个时钟输出一个点的数据,因为设计要求输出正弦波信号频率不低于1MHz,因此,要求系统时钟即2N>=8M。 因为DA输出精度为10位,因此输出电压被分为1024个等级,如果使用ROM来存储一个完整的正弦信号,则最低要求存储2048个10位的数据,即共需要20480bit的ROM存储空间。 相位调整精度直接受相位寄存器位宽M控制,因为相位调整步进要求不大于0.1°,因此要求2M>=360/0.1。则M要求最小为12。 以上条件确定好之后,我们就能够根据自己的实际要求设计我们的DDS单元了。具体该部分设计,小梅哥将留在下周发布,期间也给大家一个学习和尝试的过程。 今天小梅哥主要把我设计的DDS信号发生器系统的框架结构发布出来,这样,我们便能在大的框架下,开展我们以后的子模块设计。 小梅哥设计的DDS信号发生器系统的架构如下图所示:
以上为我设计的DDS系统的架构。各位如果有什么其他设计,欢迎跟帖提出。本周的内容就到这里。接下来,请大家开始顶层模块的设计和DDS模块的设计。
最后提一点,DDS模块的设计一定要有结果验证,当然,做验证,最好的方式就是仿真。希望大家在提交答案的时候都能有仿真文件。
|
|
|
|
|
楼主能不能好好讲一下频率控制字和累加的过程,感觉这里比较不清楚。或者举实例,50hz的正弦波和50Khz的正弦波如何通过频率控制字然后累加生成。再有ROM里面的数据固定的么?(比如是正弦波)
|
|
|
|
|
这个是个好题目呀。。。写好了很实用的,,,但是实际中频率最高为CK/4最好,,频率再高的话幅度的衰减很明显的。。。。
|
|
|
|
|