DDS算法的Verilog实现

DDS算法的Verilog实现

ID:40544713

大小:40.00 KB

页数:4页

时间:2019-08-04

DDS算法的Verilog实现_第1页
DDS算法的Verilog实现_第2页
DDS算法的Verilog实现_第3页
DDS算法的Verilog实现_第4页
资源描述:

《DDS算法的Verilog实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、DDS设计要求用VerilogHDL语言实现基于DDS技术的余弦信号发生器,其输出位宽为16bit。二、使用MATLAB定点正、余弦波形数值借助MATLAB生成ROM中的定点正、余弦波形数值,形成.coe文件。1.利用MATLAB计算出正、余弦波形的浮点值,并量化16bit的定点波形数值[2]。x=linspace(0,6.28,1024);%在区间[0,6.28]之间等间隔地取1024个点y1=cos(x);%计算相应的正余弦值y2=sin(x);%由于正余弦波形的值在[0,1]之间,需要量化成16bit,先将数值

2、放大y1=y1*32678;y2=y2*32768;%再将放大的浮点值量化,并写到存放在E盘的文本中fid=fopen('e:/cos_coe.txt','wt');fprintf(fid,'%16.0f',y1);%在写文件时量化成16bitfclose(fid)fid=fopen('e:/sin_coe.txt','wt');fprintf(fid,'%16.0f',y2);fclose(fid)2.产生.coe文件在e盘根目录下,将cos_coe.txt和sin_coe.txt的后缀改成.coe,打开文件,

3、把每一行之间的空格用文本的替换功能换成逗号“,”,并在最后一行添加一个分号“;”。最后在文件的最开始添加下面两行:memory_initialization_radix=10;memory_initialization_vector=然后保存文件退出。三、将coe文件加载到BLOCKROM所生成的ROM中新建一个BLOCKRAM的IPCore,其位置为Memories&StorageElements/RAMs&ROMs/BlockMemoryGeneratorv4.3,在第一页选择singleportrom,在第二页选择

4、位宽为16、深度为1024,在第三页下载.coe文件,然后双击finish,完成IPcore的生成。如果.coe文件生成的不对,图中用椭圆标志之处是红色的,.coe文件错误的类型主要有数据基数不对和数据的长度不对这两类。四、DDS的VerilogHDL的实现`timescale1ns/1psmoduledds(data,we,clk,ce,reset,sine,cose);input[31:0]data;//频率控制字inputwe;//频率控制字写使能inputclk;//时钟inputce;//DDS使能inputr

5、eset;//复位output[15:0]sine;//正弦信号输出output[15:0]cose;//余弦信号输出reg[31:0]ADD_A;//正弦波产生模块的相位累加器reg[31:0]ADD_B;//余弦波产生模块的相位累加器reg[15:0]cose_DR;//余弦波的查找表输出reg[15:0]sine_DR;//正弦波的查找表输出wire[31:0]data;//频率控制字wire[9:0]ROM_A;wire[15:0]cose_D;wire[15:0]sine_D;assigncose=cose_D

6、R;assignsine=sine_DR;assignROM_A=ADD_B[31:22];always@(posedgeclkorposedgereset)beginif(reset)//系统初始化时,默认的频率控制字为0ADD_A<=0;elseif(we)ADD_A<=data;endalways@(posedgeclkorposedgereset)beginif(reset)ADD_B<=0;elseif(ce)ADD_B<=ADD_B+ADD_A;//ADD_B为累加的结果endalways@(posedgec

7、lkorposedgereset)beginif(reset)cose_DR<=0;elseif(ce)cose_DR<=cose_D;endalways@(posedgeclkorposedgereset)beginif(reset)sine_DR<=0;elseif(ce)sine_DR<=sine_D;end//调用两个ROM,存储着正余弦波形一个周期的数值cosu1(.clka(clk),.addra(ROM_A),.douta(cose_D));sinu2(.clka(clk),.addra(ROM_A),.d

8、outa(sine_D));endmodule

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。