原创 基于DSP Builder的DDS设计

2013-8-1 20:08 1074 14 16 分类: FPGA/CPLD 文集: FPGA相关

为了更熟练地掌握DSP Builder的设计技能。决定找几个相关的例子来做一下。今天,其实是昨天就把模型搭建好了,只是一直不出波形。先来看一下,我参照书上搭建的模型。

qq截图20130801174431.jpg
DDS的原理,我就不在这儿费话了。根据书上的提示,这个模型几分钟就搭建好了。当然这个只是DDS的一部分,由于开发板上没有D/A转换芯片,此实验只能实现NCO部分,在simulink里仿真。可是就这么一个简单的实验,我照着书做都做了两天才做出来。对软件不熟悉是很大的一原因吧。
首先是仿真后,没有在虚拟示波器上见波形。偶然间把仿真时间调整为100后(原来是5),见到波形了。原来是仿真时间不匹配。害得我调了这么久。
波形成功弄出来了。可是这个波形离我想要的正弦波相差甚远。
11.jpg
我又看了下,原理图,可能影响波形的参数主要有三个。(相位字设为0)一是频率字,频率字值越大,频率越高。相同的时间刻度上,可以显示的波形个数越多。为了清楚的看到波形,需要协同调整频率字和仿真时间。如果频率字一定,只能调整仿真时间。第二个参数是调幅字。调幅字按说只会影响波形的幅值,不会影响到波形的形状。但LUT输出与调幅字做了乘法运算。如果乘积超过乘法器的位数,则会溢出。输出波形就会变形。结果如下图。当产生溢出时,乘法器输出傎产生跳变,波形也就会产生跳变。
2.jpg
另外一个参数就是LUT的MATLAB ARRAY。1023*sin([0:2*pi/(2^10):2*pi])+1024,其中,10是LUT的深度。1023是其幅值,加上1024是为了保证输出为非负。其幅值过大,与前面的幅度字相乘后,就会产生溢出。LUT深度为6时,其波形如下:
6.jpg
由此看来,LUT的深度会影响输出波形的精度。
另一个影响输出波形精度的因素是D/A的精度,下面两图分别是D/A精度为16位和10位时的输出波形。它们的差别很明显。
7.jpg
9.jpg
 
参考书籍:《EDA技术与VHDL》潘松,清华大学出版社
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户436773 2013-8-2 12:09

都是照着书上做的,还没有出实物。过两天找个D/A芯片,做个实物出来。

飞言走笔 2013-8-1 21:46

做得很不错啊~~
相关推荐阅读
用户436773 2015-01-04 11:52
经验总结:FPGA时序约束的6种方法
对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地,设计的时序收敛过程就会更可控...
用户436773 2014-08-08 11:13
评论:@FPGA学习历程 博客中提到的“【原创】基于Nios II的VGA字符显示控制”
学习...
用户436773 2014-08-08 11:12
评论:@FPGA学习历程 博客中提到的“【原创】基于Verilog的VGA显示控制(有源码)”
最近在学VGA显示,借鉴下...
用户436773 2014-02-24 09:16
如何调试数字硬件设计
工程设计项目中最令人振奋的时刻之一就是第一次将硬件移到实验室准备开始集成测试的时候。开发过程中的这个阶段通常需要很长时间,也会对所有的项目工程师造成很大的压力。不过,现有的工具和方法能减轻压力,帮助推...
用户436773 2013-12-04 16:48
AccelDSP
  AccelDSP其实是一种综合工具,所以也叫AccelDSP综合工具。它可以将特定的Matlab程序进行浮点到定点的转换,生成定点的Matlab程序或者C++程序,并综合成HDL代码和t...
用户436773 2013-12-03 09:50
sigmoid函数基于LUT的FPGA实现
在神经网络中,经常以sigmoid函数作为激励函数。sigmoid函数的实现主要有以下几种方法:泰勒级数展开、分段多项式逼近、LUT(查找表)法、以及分段多项式与查找表结合。 其中,查找法实现...
我要评论
2
14
关闭 站长推荐上一条 /3 下一条