基于FPGA的DDS波形发生器 .pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

基于FPGA的DDS波形发生器

DDS波形发生器设计

•功能描述

•输入输出描述

•顶层划分

o顶层模块说明

o设计思想说明

•子模块描述

o分频模块

o相位累加器模块

o存储模块

oD/A转换模块

•验证方案

•顶层模块代码片

功能描述

1.具有产生正弦波、三角波、方波、锯齿波四种周期性波形的功

能。

2.输出波形的频率范围为61Hz-915Hz,频率分辨率1Hz。

3.由外界按键输入选择产生波形的种类、频率。

输入输出描述

顶层划分

顶层模块说明

1.fenpin:用于将系统时钟分成所需时钟。

2.addr:用于相位累加。

3.rom:用于将相位转化成幅度。

4.pmodDA2:用于将数字量转化成模拟量。

设计思想说明

1.选择端和频率控制端在时钟控制下,用相位累加器输出的地址,

作为查找表的输入,得到各种波形的数字量输出。

2.数字量输出作为D/A模块的输入,得到模拟量的输出,连接示

波器进行观察,若波形不理想可以用示波器上的数字滤波器,用低通

滤波器,选择上限截止频率进行观察。

子模块描述

分频模块

本次设计需要1MHz,所以首先对系统时钟(50MHz)来进行分

频,使其为1MHz来正常相位模块。

相位累加器模块

相位累加器由14位地址加法器与14位累加寄存器构成。每来一

个时钟脉冲,地址加法器将频率控制字与累加寄存器出的累加相位数据

相加,并把相加后的结果送至累加寄存器的输入端。累加寄存器将上一

时钟周期作用后所产生的新的相位数据反馈到地址加法器的输入端,

使地址加法器在下一时钟的作用下继续与频率控制字相加,这样,相位

累加器在时钟的作用下,进行相位累加,当相位累加器累加满量时就会

产生一次溢出,完成一个周期性的动作,这个周期也就是DDS信号的一

个频率周期(基频)。

备注:因为我的rom地址线为10位(因为存的点越多,精度越

高,但同时使用资源也在成几何倍数增长),频率控制4位,所以想

要采样到我存到rom中的所有点的话,必须要相位累加器的位宽不小

于14位。

存储模块

用MATLAB生成.coe文件,调用rom核,用相位累加器输出的

相位数据作为波形存储器的地址,在时钟下进行波形的相位与幅值转

换,按照地址和选择端的不同可以输出相应相位的正弦波、方波、三

角波、锯齿波得到离散样值序列。

备注:我是用ISE级联modelsim仿真,查看输出端men_out的

波形,ISE中我找不到查看模拟量的选项。级联方式找度娘。

clc;clear;

depth=2^10;存储单元%;

widths=12;数据宽度为%12位;

index=linspace(0,pi*2,depth);

sin_value=sin(index);

sin_value=2*sin_value*(depth-1);扩大正弦幅度值%

sin_value=fix((sin_value)+0.5);

plot(sin_value);

number=[0:depth];

fid=fopen(sin_table.coe,w+);

fprintf(fid,memory_initialization_radix=10;\n);

fprintf(fid,memory_initialization_vector=\n);

fori=1:depth

fprintf(fid,%d,\n,sin_value(

文档评论(0)

188****5560 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档