- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
深圳大学实验报告
课程名称: Verilog使用及其应用
试验名称: 频率可变的任意波形发生器
学院: 电子科学与技术学院
专业:电子科学与技术班级:
组号: 指导教师:
报告人: 学号:
试验地点
一、试验目的
应用Verilog进展编写四种波形发生的程序,并结合DE2板与DVCC试验板上的D/A转换器在示波器显示出波形。初步了解Verilog的编程及DE2板的应用,加强对其的实际应用操作力量。
二、试验原理
试验程序分为三局部:
第一、通过计数器实现内置信号分频,并通过外置开关调整频率来掌握输出波形的频率。其次、设定ROM中的数值,将波形数据存储到ROM中。
第三、设定波形选择开关。
总体设计方案及其原理说明:
FPGA
FPGA
图1-1系统总体设计方案
DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。它由相位累加器、相幅转换函数表、D/A转换器以及内部时序掌握产生器等电路组成。
参考频率f_clk为整个合成器的工作频率,输入的频率字保存在频率存放器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。p为频率字,即相位增量;参考频率为f_clk;相位累加器的长度为N位,输出频率f_out为:
f_out——输出信号的频率;N————相位累加器的位数;p———频率掌握字〔步长〕;f_clk——基准时钟频率。
0000010000011700010150001117001001000101300110500111
00
000
10
00
001
17
00
010
15
00
011
17
00
100
10
00
101
3
00
110
5
00
111
3
01
000
3
01
001
3
01
010
3
01
011
3
01
100
1
01
101
1
01
110
1
01
111
1
10
000
0
10
001
5
10
010
10
10
011
15
10
100
20
10
101
25
10
110
30
10
111
35
11
000
35
11
001
30
11
010
25
11
011
20
11
100
15
11
101
10
11
110
5
11
111
0
图1-3
函数查找表的设计
三、试验内容程序编码:
moduledds(f_clk,p,choose,data);//端口设定input[5:0]p; //频率掌握字
input[1:0]choose; //波形选择
inputf_clk; //内置晶振output[7:0]data;
wire[7:0]data;
reg[5:0]addr,addr1;
reg[5:0]i;regf_out;
initial
begin
i=0;
addr=0;f_out=0;
end
always@(posedgef_clk) //利用计数器实现任意分频begin
if(i==p) //设定频率掌握字pbegin
i=0;
f_out=~f_out;
end
end
else
i=i+1;
function[7:0]rom_out; //ROM的设定input[5:0]addr1;
case(addr1) //各波形初值的预装入
:rom_out=10; //正弦波初值
:rom_out=17;
:rom_out=15;
:rom_out=17;
:rom_out=10;
:rom_out=3;
:rom_out=5;
:rom_out=3;
:rom_out=3; //方波初值
:rom_out=3;10:rom_out=3;
11:
rom_out
=
3;
12:
rom_out
=
1;
13:
rom_out
=
1;
14:
rom_out
=
1;
15:
rom_out
=
1;
16:
rom_out
=
0;
//正三角波初值
17:
rom_out
=
5;
18:
rom_out
=
10;
19:
rom_out
=
15;
20:
rom_out
=
20;
21:
rom_out
=
25;
22:
rom_out
=
30;
23:
rom_out
=
35;
24:
rom_out
=
35;
//反三角波初值
25:
rom_out
=
30;
26:
rom_out
=
25;
27:
rom_out
=
20;
28:
rom_out
=
15;
29:
rom_out
=
1
文档评论(0)