原创 FPGA实现正弦波发生器

2008-6-11 18:02 6420 10 15 分类: FPGA/CPLD

       本实现采用是altera的cyclone实现的,使用了quartus的一些高级功能,如:宏模块的引用、signal  Tap、以及modelsim的联合仿真。


       正弦波的硬件实现比较简单:首先设计一个ROM用来存放正弦函数的幅度数据;用一个计数器来指定ROM地址(相位)的增加,输出相应的幅度值。这样在连续的时间内显示的就是一个完整的正弦波形。原理图如下


点击看大图


生成模块如下:新建工程和原理图文件,点击symbol TOOL图标,点击46d2ae8b-70b9-449f-a07c-aff412e2f4ab.jpg选项就可以引用宏模型了。其中rom在storage中,counter 在数学库中。rom选择8BIT宽,64words,counter选择6bit宽,单向计数。


在建ROM模块前,先建一个初始数据文件(重点),这里直接在quartus中建memory initialnization file,输入正弦波的幅度值,也可以用excel/matlab/c++中的函数方便的生成数据。初始值如下所示:


b214f382-ecdf-41f0-8d80-96a477f84a40.jpg


最后仿真,因quartus不支持模拟显示,所以我们有两种方法一种是signal tap,它是需要硬件平台的一种在线分析仪;另一种就是modelsim,在采用modelsim仿真时必须加入必要的altera库函数,由于篇幅关系,这里对两种仿真不再多说,下图是modelsim的后级仿真(加入延时),可见加入延时后有一定的毛刺,但并不影响结果,如果不加入延时,产生的为平滑的正弦波。验证了设计的正确性.


点击看大图


 


 


 


 


 


 


 


 


 

文章评论5条评论)

登录后参与讨论

用户1533688 2011-7-1 09:15

请教如何用modelsim仿真出连续正弦波??谢谢

用户1503232 2010-6-22 09:03

讲的很好!

用户1569864 2008-7-1 21:54

我做了一个DDS,原理差不多,但不完善~~

用户146077 2008-6-15 21:26

可以考虑用CORDIC算法来做,不用ROM!

用户146077 2008-6-15 21:25

没有相位累加器阿! 频率不可调!
相关推荐阅读
用户136355 2009-03-20 22:49
如何用好可控硅(汇总)
前言:     很多人都应该使用过可控硅吧,但有多少人知道在可控硅的应用电路设计中,需要注意什么问题?哪些参数又是需要考虑的?会用一个可控硅很容易,书上抄个电路图下来,就可以,但想用好可控硅可不是那么...
用户136355 2009-03-18 11:18
总结PCB检查流程
总结PCB检查流程<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />    发板到PC...
用户136355 2008-11-03 17:39
商人的守则
1.坚持看CCTV-1新闻联播。   要想把握经济命脉,必须关注政局,新闻联播图文并茂,有声有色,着实为中国商人的最佳晴雨表。   2.不要轻易相信合约或合同   哪怕合约让你的律师看过了,公证处公证...
用户136355 2008-08-01 11:13
快乐人生
任正非在给华为公司一名抑郁症患者的信中提到,“华为不断地有员工自杀与自残,而且员工中患忧郁症、焦虑症的不断增多,令人十分担心。有什么办法可以让员工积极、开放、正派地面对人生?我思考再三,不得其解。但我...
用户136355 2008-07-09 14:40
Electromagnetic Interference电磁干扰
 电磁干扰(Electromagnetic Interference),简称EMI,有传导干扰和辐射干扰两种。传导干扰主要是电子设备产生的干扰信号通过导电介质或公共电源线互相产生干扰;辐射干扰是指电子...
用户136355 2008-06-25 11:25
理解指针
   1指针的概念       指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的       类型,指针的值或者叫...
我要评论
5
10
关闭 站长推荐上一条 /2 下一条