FPGA数字信号处理之verilog实现NCO(原理)
FPGA自学笔记分享 2023-03-06
NCO:numerically controlled oscillator,数字控制振荡器,用来产生正弦波、余弦波,是数字信号处理中的基础元件之一。e^(ix)=(cos x+isin x)verilog生成NCO的常用方法有:1、推荐使用双端口ROM查找表的方式进行NCO设计;2、使用CORDIC算法进行NCO设计;3、查找表+计算的方式进行NCO设计;

本文介绍查找表方式实现NCO的原理:

1、根据需求分析NCO需要的步进,进而确定NCO的点数:比如:100MHZ的采样率下,需要的频率是1MHz的整数倍,则NCO的最小步进即为1Mhz,此时一个NCO周期需要的点数为:100MHz/ 1Mhz = 100个点;2、分析需要的量化位宽,使用python或者matlab生成相应信号:Num = 100data_mult = 1024test_data = np.arange(Num)test_data = np.round(np.e**(test_data*1j*2*np.pi/Num)*data_mult)绘制生成信号的时域和频域如下图:3、保存数据编写verilog代码,注意对最大信号的处理1024要-1。设计时可以根据单音信号的特性优化ROM深度:把0-π/2的 cos(n) = c(n),如下图所示:

可以将rom查找表的深度简化到fs/4.




声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • FPGA
  • 可编程
  • PLC
  • verilog
下载排行榜
更多
评测报告
更多
广告