Verilog期末实验报告-波形发生器

深 圳 大 学 实 验 报 告

课程名称: Verilog使用及其应用

实验名称: 频率可变的任意波形发生器 学院: 电子科学与技术学院

专业:电子科学与技术 班级: 2

组号: 指导教师: 刘春平 报告人: 陈昊 学号: 2007160162

实验地点 科技楼B115

一、实验目的

应用Verilog进行编写四种波形发生的程序,并结合DE2板与DVCC实验板上的D/A转换器在示波器显示出波形。初步了解Verilog的编程及DE2板的应用,加强对其的实际应用操作能力。

二、实验原理

实验程序分为三部分:

第一、 通过计数器实现内置信号分频,并通过外置开关调节频率来控制输出波形的频率。 第二、 设定ROM中的数值,将波形数据存储到ROM中。

第三、 设定波形选择开关。

图 1-1 系统总体设计方案

DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。它由相位累加器、相幅转换函数表、D/A转换器以及内部时序控制产生器等电路组成。

参考频率f_clk为整个合成器的工作频率,输入的频率字保存在频率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。p为频率字,即相位增量;参考频率为f_clk;相位累加器的长度为N位,输出频率f_out为:

f_out——输出信号的频率; N————相位累加器的位数;

p———频率控制字(步长); f_clk——基准时钟频率。

图1-2 四种波形单周期的取样示意图

段地址 基地址 D7 D6 D5 D4 D3 D2 D1 D0

10

17

15

17

10

3

5

3

3

3

3

3

1

1

1

1

5

10

15

20

25

30

35

35

30

25

20

15

10

5

图1-3 函数查找表的设计

三、实验内容

程序编码:

module dds(f_clk,p,choose,data);//端口设定

input [5:0] p; //频率控制字

input[1:0] choose; //波形选择

input f_clk; //内置晶振

output [7:0] data;

wire [7:0]data;

reg [5:0] addr,address;

reg [5:0] i;

reg f_out;

initial

begin

i

addr

f_out

end

always @(posedge f_clk) //

begin

if(i==p) //

begin

i=0;

f_out=~f_out;

end

else

i=i+1;

end

function [7:0] romout; //ROM

input[5:0] address;

case(address) //

0 : romout = 10; //

1 : romout = 17;

2 : romout = 15;

3 : romout = 17;

4 : romout = 10;

5 : romout = 3;

6 : romout = 5;

7 : romout = 3;

8 : romout = 3; //

9 : romout = 3;

10: romout = 3; 利用计数器实现任意分频设定频率控制字p 的设定 各波形初值的预装入 正弦波初值 方波初值

11: romout = 3;

12: romout = 1;

13: romout = 1;

14: romout = 1;

15: romout = 1;

16 : romout = 0; //正三角波初值

17 : romout = 5;

18 : romout = 10;

19 : romout = 15;

20 : romout = 20;

21 : romout = 25;

22 : romout = 30;

23 : romout = 35;

24 : romout = 35; //反三角波初值

25 : romout = 30;

26 : romout = 25;

27 : romout = 20;

28 : romout = 15;

29 : romout = 10;

30 : romout = 5;

31 : romout = 0;

default : romout = 10'hxx;

endcase

endfunction

always@(posedge f_out)

begin

if(addr==8) //波形数据切换

addr=0;

else

addr=addr+1;

case(choose) //波形选择开关设定

0: address=addr;

1: address=addr+8;

2: address=addr+16;

3: address=addr+24;

endcase

end

assign data = romout(address);//将ROM中对应数据传递输出端口data输出 endmodule

1.正弦波示意图:(choose=0时的波形数值

)

2.方波示意图:(choose=1时的波形数值)

3.正三角波示意图:(choose=2时的波形数值)

4.反三角波示意图:(choose=3时的波形数值)

通过这次期末实验,更进一步认识了Verilog语言的使用,详细了解了整个设计制作和仿真流程,独立思考并通过一步步的调试,逐步摸索和进一步优化程序最终完成实验,锻炼了逻辑思维能力。实验综合性较强,在实验中涉及了本学期多个知识点: ①always语句;②initial语句;③if—else语句;④case语句;⑤传递函数assign;⑥function说明语句。

在测试和调整程序时发现一些容易犯错的问题:

第一、 用case语句取代了定义ROM造成了数据开始并没有固化在ROM中而是从程序中写入

再读出。(解决办法:用function语句对ROM进行定义并装初值)

第二、 应该注意传递函数中的输出端口应该是wire型的,如果定义为reg将会出错。 第三、 开始时波形数据按照图放入初值时,有负数、小数等,当装入负数小数后在仿真中

无法正确显示数字。(解决办法:将波形平移扩大将小数和负数换算成整数装入即可显示波形数据)

第四、 关键的问题是怎样实现寻址的操作,首先是定义一个从0—7的循环加法计数器作为

段内基地址寻址,然后通过case语句choose波形选择相应波段的段地址。

个人觉得这样的实验比较贴近学习和工作,通过自己动手更加能够充分掌握所学知识点,将书本和实际结合起来,希望以后可以开展更多这样的实验。

深 圳 大 学 实 验 报 告

课程名称: Verilog使用及其应用

实验名称: 频率可变的任意波形发生器 学院: 电子科学与技术学院

专业:电子科学与技术 班级: 2

组号: 指导教师: 刘春平 报告人: 陈昊 学号: 2007160162

实验地点 科技楼B115

一、实验目的

应用Verilog进行编写四种波形发生的程序,并结合DE2板与DVCC实验板上的D/A转换器在示波器显示出波形。初步了解Verilog的编程及DE2板的应用,加强对其的实际应用操作能力。

二、实验原理

实验程序分为三部分:

第一、 通过计数器实现内置信号分频,并通过外置开关调节频率来控制输出波形的频率。 第二、 设定ROM中的数值,将波形数据存储到ROM中。

第三、 设定波形选择开关。

图 1-1 系统总体设计方案

DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。它由相位累加器、相幅转换函数表、D/A转换器以及内部时序控制产生器等电路组成。

参考频率f_clk为整个合成器的工作频率,输入的频率字保存在频率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。p为频率字,即相位增量;参考频率为f_clk;相位累加器的长度为N位,输出频率f_out为:

f_out——输出信号的频率; N————相位累加器的位数;

p———频率控制字(步长); f_clk——基准时钟频率。

图1-2 四种波形单周期的取样示意图

段地址 基地址 D7 D6 D5 D4 D3 D2 D1 D0

10

17

15

17

10

3

5

3

3

3

3

3

1

1

1

1

5

10

15

20

25

30

35

35

30

25

20

15

10

5

图1-3 函数查找表的设计

三、实验内容

程序编码:

module dds(f_clk,p,choose,data);//端口设定

input [5:0] p; //频率控制字

input[1:0] choose; //波形选择

input f_clk; //内置晶振

output [7:0] data;

wire [7:0]data;

reg [5:0] addr,address;

reg [5:0] i;

reg f_out;

initial

begin

i

addr

f_out

end

always @(posedge f_clk) //

begin

if(i==p) //

begin

i=0;

f_out=~f_out;

end

else

i=i+1;

end

function [7:0] romout; //ROM

input[5:0] address;

case(address) //

0 : romout = 10; //

1 : romout = 17;

2 : romout = 15;

3 : romout = 17;

4 : romout = 10;

5 : romout = 3;

6 : romout = 5;

7 : romout = 3;

8 : romout = 3; //

9 : romout = 3;

10: romout = 3; 利用计数器实现任意分频设定频率控制字p 的设定 各波形初值的预装入 正弦波初值 方波初值

11: romout = 3;

12: romout = 1;

13: romout = 1;

14: romout = 1;

15: romout = 1;

16 : romout = 0; //正三角波初值

17 : romout = 5;

18 : romout = 10;

19 : romout = 15;

20 : romout = 20;

21 : romout = 25;

22 : romout = 30;

23 : romout = 35;

24 : romout = 35; //反三角波初值

25 : romout = 30;

26 : romout = 25;

27 : romout = 20;

28 : romout = 15;

29 : romout = 10;

30 : romout = 5;

31 : romout = 0;

default : romout = 10'hxx;

endcase

endfunction

always@(posedge f_out)

begin

if(addr==8) //波形数据切换

addr=0;

else

addr=addr+1;

case(choose) //波形选择开关设定

0: address=addr;

1: address=addr+8;

2: address=addr+16;

3: address=addr+24;

endcase

end

assign data = romout(address);//将ROM中对应数据传递输出端口data输出 endmodule

1.正弦波示意图:(choose=0时的波形数值

)

2.方波示意图:(choose=1时的波形数值)

3.正三角波示意图:(choose=2时的波形数值)

4.反三角波示意图:(choose=3时的波形数值)

通过这次期末实验,更进一步认识了Verilog语言的使用,详细了解了整个设计制作和仿真流程,独立思考并通过一步步的调试,逐步摸索和进一步优化程序最终完成实验,锻炼了逻辑思维能力。实验综合性较强,在实验中涉及了本学期多个知识点: ①always语句;②initial语句;③if—else语句;④case语句;⑤传递函数assign;⑥function说明语句。

在测试和调整程序时发现一些容易犯错的问题:

第一、 用case语句取代了定义ROM造成了数据开始并没有固化在ROM中而是从程序中写入

再读出。(解决办法:用function语句对ROM进行定义并装初值)

第二、 应该注意传递函数中的输出端口应该是wire型的,如果定义为reg将会出错。 第三、 开始时波形数据按照图放入初值时,有负数、小数等,当装入负数小数后在仿真中

无法正确显示数字。(解决办法:将波形平移扩大将小数和负数换算成整数装入即可显示波形数据)

第四、 关键的问题是怎样实现寻址的操作,首先是定义一个从0—7的循环加法计数器作为

段内基地址寻址,然后通过case语句choose波形选择相应波段的段地址。

个人觉得这样的实验比较贴近学习和工作,通过自己动手更加能够充分掌握所学知识点,将书本和实际结合起来,希望以后可以开展更多这样的实验。


相关文章

  • 频率可变的任意波形发生器
  • 深 圳 大 学 实 验 报 告 课程名称: Verilog使用及其应用 实验名称: 频率可变的任意波形发生器 学院: 电子科学与技术学院 一. 前言 波形发生器是一种数据信号发生器,在调试硬件时,常常需要加入一些信号,以观察电路工作是否正常 ...查看


  • Verilog入门训练4-三人表决器
  • 实训3:三人表决器的设计与实现 问题提出:表决器既是多数通过事件,三个人参与表决,大于或等于二人即为通过.请设计一个数字组合逻辑电路,实现上述三人表决功能. 1. 逻辑抽象 假设参与表决的三人分别为A .B .C ,表决结果为F .当三人中 ...查看


  • 数字电路实验(1)基础实验
  • 电子技术基础实验(二)2.1 集成门电路的逻辑功能与QII应用 哈尔滨工程大学信息与通信工程学院 电子技术基础教研室  课程介绍 实验室守则 实验考核 实验内容 2.1.1. 2014092100 课程介绍 简介 课程介绍 2009 ...查看


  • 基于Verilog的数字电路模拟实验
  • 基于Verilog 的数字电路模拟实验 电子信息学院 10微电子1028402010 陈阵 实验一 3-8译码器Verilog 设计 实验时间:2012-11-16 实验地点:电子信息楼218 指导老师:黄秋萍 一.实验内容 1.在Mode ...查看


  • 算术逻辑单元_verilog代码
  • 5实验5 5.1 实验内容 题目:使用case 语句设计八功能的算术运算单元(ALU ),其输入信号a 和b 均为4位,输入功能选择信号select 为3位,输出信号out 为5位.算术运算单元ALU 所执行的操作与select 信号有关, ...查看


  • 实验3 多路选择器的设计
  • 实验3 多路选择器的设计 一. 实验目的 1. 熟练掌握多路选择器的设计方法 2. 熟悉门级描述的编程方法: 二. 实验内容 1. 编写程序实现2选1的多路选择器 2. 编写程序实现8选1的数据选择器 三. 实验要求 1. 根据参考内容,用 ...查看


  • FPGA频率计实验报告
  • 数字频率计 用VHDL 语言设计实现基于FPGA 的数字频率计 学校: 学院: 姓名: 学号: 实验室: 实验日期: 摘要 本文介绍了一种基于FPGA 的数字频率的实现方法.该设计采用硬件描述语言VHDL ,在软件开发平台ISE 上完成.该 ...查看


  • 7人表决控制电路
  • 摘 要 7人表决控制电路是一简单的输入信号检测与处理.产生输出控制信号的逻辑电路.本文详细介绍了依据功能要求进行控制电路方案设计的过程,并在此基础上将整体电路分为输入信号处理模块, 计时模块, 译码模块,比较模块,显示模块等主要功能模块.实 ...查看


  • 8位串行进位加法器
  • 实验报告 一. 实验目的 使对quartus II的使用进行初步的了解,对于一些芯片的组合应用更加掌握. 二. 实验内容 设计8位串行进位加法器 用半加器设计一个全加器元件,然后根据图4-38,在顶层设计中用8个1位全加器构成8位串行进位加 ...查看


热门内容