基于FPGA的DDS设计精品版Word下载.docx

上传人:b****2 文档编号:5736719 上传时间:2023-05-05 格式:DOCX 页数:14 大小:381.99KB
下载 相关 举报
基于FPGA的DDS设计精品版Word下载.docx_第1页
第1页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第2页
第2页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第3页
第3页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第4页
第4页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第5页
第5页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第6页
第6页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第7页
第7页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第8页
第8页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第9页
第9页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第10页
第10页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第11页
第11页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第12页
第12页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第13页
第13页 / 共14页
基于FPGA的DDS设计精品版Word下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的DDS设计精品版Word下载.docx

《基于FPGA的DDS设计精品版Word下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的DDS设计精品版Word下载.docx(14页珍藏版)》请在冰点文库上搜索。

基于FPGA的DDS设计精品版Word下载.docx

DDS系统的基本原理图

图1中虚方框部分是DDS的核心单元,它可以采用CPLD/FPGA来实现。

图中的相位累加器由N位全加器和N位累加寄存器级联而成,可对频率控制字的二进制码进行累加运算,是典型的反馈电路。

频率控制字M和相位控制字分别控制DDS输出正(余)弦波的频率和相位。

每来一个时钟脉冲,相位寄存器以步长M递增。

相位寄存器的输出与相位控制字相加,其结果作为正(余)弦查找表的地址。

正(余)弦查找表的数据存放在ROM中,内部存有一个周期的正弦波信号的数字幅度信息,每个查找表的地址对应于正弦波中0°

~360°

范围内的一个相位点。

查找表把输入的址信息映射成正(余)弦波的数字幅度信号,同时输出到数模转换器DAC的输入端,DAC输出的模拟信号经过低通滤波器(LPF),可得到一个频谱纯净的正(余)弦波。

DDS具体工作过程如下:

每来一个时钟脉冲clk,N位全加器将频率控制数据M与累加寄存器输出的累加相位数据N相加,把相加后的结果送至累加寄存器的输入端。

累加寄存器一方面将上一时钟周期作用后所产生的新的数据反馈到加法器的输入端,以使加法器在下一时钟的作用下继续与频率控制数据M相加;

另一方面将这个值作为取样地址值送入幅度/相位转换电路,此电路根据取样地址输出相应的波形数据。

最后经D/A转换器和低通滤波器将波形数据转换成所需要的模拟波形。

DDS输出信号的频率由下式决定:

q=(

)×

clk(

代表取样点数,M为频率控制字、

代表存储器中存储数据的多少,N代表累加器的位数,clk代表基准时钟频率)。

调节M可以改变取样的点数,从而改变频率。

假定基准时钟为70MHz,累加器为16位,则clk=70MHz,Y=

=65536(N=16),设M=12则X=

=4096,所以q=(4096/65536)×

70=4.375MHz。

可见,通过设定相位累加器位数N、频率控制字M和基准时钟的值,就可以产生任一频率的输出。

DDS的频率分辨率定义为:

q=clk/

由于基准时钟一般是固定的,因此相位累加器的位数就决定了频率的分辨率。

2.功能实现:

如果利用AT29C010芯片实验接线图如下:

图2:

DDS试验连线图

顶层模块图:

图3:

DDS顶层设计电路图

3.系统总体框图:

图4:

总体框图

4.模块描述及功能实现(这里采用的是自己编的rom,没有用falsh芯片):

①顶层模块:

顶层模块主要用于分频,定义系统的输入和输出端口。

由于实验箱采用系统时钟位50MHz,本实验才有时钟频率为5MHz,所以本模块主要负责将时钟进行10分频。

模块将调用相位累加模块和rom模块。

模块端口有:

系统时钟输入端口(接系统时钟),8位频率控制字输入端口和8位相位控制输入端口(接16个开关按键),8位数据输出端口(接D/A的8位输入端口),复位输入端(接一个按键),分频后的时钟输出(接D/A的时钟输入)。

名称

方向

电平

位宽

功能

clk

input

3.3V

1

系统时钟信号,(50MHZ)

F

input

8

频率控制字

reset

复位信号

P

相位控制字

sin_out

output

正弦波数据

clk_5MHz

output

3.3v

分频后的时钟

②相位累加模块:

相位累加主要是利用频率控制字和相位控制字来累加出寻址地址,N=N+M;

address=N+P;

其中N位累加寄存器,初期为0;

M位频率控制字;

address为寻址地址。

时钟输入端口(接顶层模块5MHz时钟),复位输入端口(接顶层模块复位端),8位频率控制字输入端口和8位相位控制输入端口(分别接顶层模块的8位频率控制字输入端口和8位相位控制输入端口),地址输出端口(将地址通过顶层模块传送给rom模块,8位)。

clk_5MH

Input

梦想的力量教学反思1

分频后时钟(5MHz)

M

教学科研8

景山学校通州校区施工情况频率控制字

改革开放的历史性标志是()。

描写学校的成语Input

智能文明答案1

有理数的加减混合运算复位信号

data_PM

教师名言Input

数学试卷讲评教案3.3V

挫折作文材料data_out

Output

13

rom的地址

③rom模块:

首先利用MATLAB生成一个.HEX文件,.HEX文件存储的是一个深度为8192,宽度为8的正弦波形数字信号(数据不能超过255)。

代码为:

depth=8192;

%存储单元数;

widths=8;

%数据宽度为8位;

N=0:

1:

8192;

s=sin(pi*N/125);

%计算0~pi/2的Sin值;

fidc=fopen('

dds.hex'

'

wt'

);

%以"

wt"

的形式打开,\n为换行

%写入sinrom.hex%

fprintf(fidc,'

depth=%d;

\n'

depth);

width=%d;

widths);

address_radix=uns;

data_radix=uns;

ContentBegin\n'

for(x=1:

depth)

%d\n'

round(125*sin(pi*(x-1)/4096)+125));

end

end;

'

fclose(fidc);

然后在quartus下利用MATLAB生成的数据编写一个单口rom,并且生成对应的.V文件,即rom模块。

本模块的功能是通过传送过来的地址,查找地址所对应的数据,并将数据输出。

生成的模块端口:

地址输入端口(接相位累加模块传送过来的地址,13位),时钟输入端口(接分频后的5MHz时钟),数据输出端口(8位)。

address

寻址地址

q

sin波形数据

实验结果及分析:

板子下载:

将数字输出接到DA转换芯片的8个输入脚,用示波器检测DA的模拟输出信号。

改变频率控制字和相位控制字(由于滤波器原因,改变相位控制字没有实际效果),观察波形的改变。

频率控制字为0

频率控制字为128

理论值:

q=(128/16384)×

500k=3.90625kHz(500k为分频后的时钟)

频率控制字为64

q=(64/16384)×

500k=1.953kHz

频率控制字为32

q=(32/16384)×

500k=0.977kHz

频率控制字为16

q=(16/16384)×

500k=0.488kHz

频率控制字为8

q=(8/16384)×

500k=0.244kHz

频率控制字为4

q=(4/16384)×

500k=0.122kHz

频率控制字为1

q=(1/16384)×

500k=0.0305kHz

总结:

效果还不是很好,有点失真。

实际数据与理论有点偏差而且频率大偏差也有所增加,但是频率越高波形效果越好。

由于没有滤波器,毛刺问题没有得到很好的解决。

五.综合布局布线

顶层模块“DDS”:

地址累加器:

ROM:

综合布线:

 

注:

其实实验最后得到的效果比上面的波形好些,只是当时找不到小容量U盘所以没有把波形存下来。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2