在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1355|回复: 1

[原创] 孩子都能学会的FPGA:第十五课——不同频率正弦波的叠加

[复制链接]
发表于 2023-11-29 13:51:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 chdaj58 于 2023-11-29 13:53 编辑

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真(前提是安装了modelsim),降低了初学者的门槛。如需整个工程请留言(WX:Blue23Light),不收任何费用,但是仅供参考,不建议大家获得资料后从事一些商业活动!

既然前面通过DDS可以产生不同频率的正弦波(余弦波),那就可以让两个不同频率的正弦波叠加,后续再设计滤波器吧高频的正弦波滤除。

这节课先实现两个不同频率正弦波的叠加,功能很简单,知识点主要就是加减运算的位数扩展。

工程的要求是系统时钟是100MHz,低电平复位,实现7.8125K500K频率正弦波的叠加。之所以选择7.8125K的正弦波,是想每50个系统时钟从ROM里面读出来一个数据,这样正弦波的频率就是(100M/(256*50))=7.8125K,为什么选择50个系统时钟读一次ROM,主要是滤波算法处理需要一定的时间,50个时钟周期就是2MHz的处理频率。

频率控制字F_WORD设置为500K/(100M/2^32)=21474836。


v2-0b34e544393fad6ec787f360241f6a20_720w.png

50个系统时钟从ROM中读出来一个数据,得到频率是7.8125K的正弦波。


v2-93792a88026757b63bf233dddab70cc6_720w.png

500KHz的正弦波用DDS来实现。


v2-3792ffff7babbefa29c9095819b8b67b_720w.png

下面是实现两个不同频率正弦波的叠加,这儿用到了位数的扩展。因为wave_out0wave_out1都是8bit有符号的整数,取值范围是-128——127,那wave_out0wave_out1相加后的取值范围是-256-255,所以输出wave_out必须扩展一位才能保证结果不会溢出。而wave_out0wave_out1只需要把符号位扩展一位直接叠加即可。


v2-0095cf2841ee4f85d641cc2a908a9516_720w.png

双击sim目录下的top_tb.bat文件,完成自动化的仿真。


v2-56077cc70d2f28fd0d1face122f2e328_720w.png

仿真波形如下所示,由于采样率的问题,波形叠加后会有很多的毛刺。


v2-873fc281b4d79f49d138c22942f8e583_720w.png

下节课我们就设计滤波器,将高频的毛刺滤掉!


发表于 2024-6-25 13:53:27 | 显示全部楼层
感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-28 13:14 , Processed in 0.016894 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表