毕业论文求助(急)dds频率可变方波的产生
时间:10-02
整理:3721RD
点击:
利用dds技术产生频率可变的方波时,为什么要经过一个加发器然后再经过一个存储器,把存储器的输出反馈回去那个频率控制字进行相加,看了eda教程还是不懂,累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。取存储器的最高位的输出就是方波的波形,怕老师问,不知道为什么那样就是,这样出来好使,不懂原因,CPLD的频率是50MHz,而频率在10001Hz到11000之间可调,频率控制是36位的,相位控制字是10位的,编程显示频率已调的方波时第三十五位即最高作为输出,相位控制字也是最高位,还有为什么积分了就是相位了(黑体是最主要迷惑)。求大神讲解。还有几天就交论文了。我们没有学过FPGA现在把程序放在底下:
module dds
(
clk_i,
fword_a,
pword_a,
fword_b,
aout,
bout
);
input clk_i;
input [35:0] fword_a; //control a's f
input [9:0] pword_a; //control a's phase
input [35:0] fword_b; //control b's f
output aout;
output bout;
wire aout;
wire bout;
wire [35:0] awire;
wire [35:0] addout_fa;
wire [9:0] pawire;
wire [9:0] pawire_out;
wire [9:0] addout_pa;
wire [35:0] bwire;
wire [35:0] addout_fb;
assign aout=pawire_out[9];
assign pawire=awire[35:26];
assign bout=bwire[35];
add36 add36_ainst
(
.a (fword_a),
.b (awire),
.sum (addout_fa),
.c ()
);
reg36 reg36_ainst
(
.clk_i(clk_i),
.DIN (addout_fa),
.DOUT (awire)
);
add10 add10_ainst
(
.a (pword_a),
.b (pawire),
.sum (addout_pa),
.c ()
);
reg10 reg10_ainst
(
.clk_i(clk_i),
.DIN (addout_pa),
.DOUT (pawire_out)
);
add36 add36_binst
(
.a (fword_b),
.b (bwire),
.sum (addout_fb),
.c ()
);
reg36 reg36_binst
(
.clk_i(clk_i),
.DIN (addout_fb),
.DOUT (bwire)
);
endmodule
那个reg是存储器,当来一个上升沿时进行储存,add是两位数加法器(不同位两个数就不一样),求大神讲原因谢谢了。
还有为什么要拿输出的高十位给那个作为一个相位加法器的输入
这个问题。怎么跟你说呢。
dds原理其实很简单,就是对一个固定波形进行重采样输出。
RAM里面存的就是那个固定波形,频率的积分得到相位,也就是说,对频率进行积分(累加),得到输出的相位,然后通过相位查表,就输出对应相位的波形值了。
师兄只能帮到这里了。自己仔细分析下dds的实现机理,很简单的。
关于DDS,推荐你看一下孙肖子老师编写的《电子设计指南》,里面写得很清楚,很明白。
我刚刚下载了孙肖子老师编写的《电子设计指南》,我发个贴贡献出去嘿嘿,谢谢
Wish《电子设计指南》is what I want....
最新DDS模块增加美观实用的散热片,新增2013年全国大学生电子竞赛E题正交扫频源完整例程(可实现题目1~40M扫频功能,并可以通过按键和液晶屏设置和显示扫频参数)。
详情请见:http://item.taobao.com/item.htm?id=8643082098
http://bbs.eetop.cn/viewthread.php?tid=400154那本书地址
你只需要控制你波形存储器的溢出率就可以控制频率了,不管方波还是正弦
我去。
学习 学习
