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

(原创声明:该文是作者的原创,面向对象是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。

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

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

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

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

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

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

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值