原创 【博客大赛】DDS的逻辑实现

2015-4-27 14:51 2399 12 14 分类: FPGA/CPLD 文集: ALTERA FPGA

这篇文章是看博客大赛中小墨的下面博文后写成的:http://bbs.ednchina.com/BLOG_ARTICLE_3028795.HTM

感谢小墨同学无私奉献了原始工程。

 

最近有点时间,看了小墨的文章,并将其文章附件中的工程下载下来跑了下。由于小墨采用的是Verilog编写的代码,个人更喜欢VHDL代码,也是为了加深理解他的工程,就将其改成了VHDL版本,逻辑实现功能并未有实质改变。

 

此外,由于我手上没有带DAC的板子,所以就去掉了DAC部分,也没有按钮控制输入接口,故将其该由虚拟JTAG来控制频率字、相位字以及波形选择。虚拟JTAG控制平台如下图所示:

1(1).jpg

 

通过“FWord”、“PWord”和“WaveSel”三个按钮以及参数输入窗口对DDS进行控制。

将工程修改完成后,下载到我的EP2C5的板子上,跑出来的效果分别如下所示:

1(1).jpg

上图是通过虚拟JTAG平台控制选择方波,注意频率字这时候设置的非常大,也就是说方波的频率很高,系统时钟我用的是100MHz,这里是为了效果显示,频率字不得不设置较大,否则SignalTap II很难显示周期性变化的波形,以下其它波形类似。

1(1).jpg

以上是正弦波

1(1).jpg

上图为三角波

1(1).jpg
上图为锯齿波
 
 
 
我们注意到上面虽然四种波形频率控制已经实现了,但是相位控制均为0,我在试图控制改变正弦波相位的时候,发现波形错乱,如下图所示:
1(1).jpg
目前该问题原因待查,故这里先不将由瑕疵的工程上传,只记录问题。
-------------------我是华丽丽的分割线------------------
问题似乎已经找到了,在加入相位控制字的时候,没有考虑到ROM地址加上偏移后会超出8-bit地址范围,所以需要判断是否超出,否则会误读下一帧的数据。
修改前代码为:
when sin_wave => rom_addr <= fre_add_sig + pword_sig;--正弦波
修改后代码应该为:
when sin_wave => 
                 if(fre_add_sig + pword_sig)<256 then
                    rom_addr <= fre_add_sig + pword_sig;--正弦波
                 else rom_addr <= (fre_add_sig + pword_sig)-256;
                 end if;
 
其它波形续进行类似修改。
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1002262 2015-5-5 08:42

谢谢分享!

飞言走笔 2015-5-4 10:47

非常好非常好
相关推荐阅读
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
EE直播间
更多
我要评论
2
12
关闭 站长推荐上一条 /1 下一条