verilog期末大作业.doc
- 文档编号:1638885
- 上传时间:2022-10-23
- 格式:DOC
- 页数:11
- 大小:280KB
verilog期末大作业.doc
《verilog期末大作业.doc》由会员分享,可在线阅读,更多相关《verilog期末大作业.doc(11页珍藏版)》请在冰豆网上搜索。
深圳大学实验报告
课程名称:
VerilogHDL及其应用
实验项目名称:
波形选择器
学院:
电子科学与技术学院
专业:
微电子学
指导教师:
刘春平
报告人:
温志煌学号:
2012160228班级:
微电二班
实验时间:
实验报告提交时间:
波形选择器
一、实验目的
(1)熟悉Modelsim软件
(2)掌握Modelsim软件的编译、仿真方法
(3)熟练运用Modelsim 软件进行Verilog程序设计开发
二、实验内容及要求
实验原理:
在同一个波形里面分别取八个点,用这个八个点的数据还原出对应的波形来,在Verilog中通过建立一个函数分别取这些点数据,然后再通过调用函数得到相对应的波形。
1.实验要求
用Verilog语言设计以下电路,分别产生四种波形:
正弦波、方波、三角波1及三角波2。
实验要求先在QuartusII里面编译仿真程序,然后再在Modelsim里面仿真产生这四种波形。
程序仿真结果示意图如图1所示。
图1.四种波形产生及选择器示意图
2.实验步骤
2.1在QuartusII里的操作步骤:
1)建立一个waveshaper的工程文件
2)以Verilog语言书写waveshaper的源程序
3)编译waveshaper源程序
4)最后再仿真一下这个程序,得到与程序相吻合的数据
具体如图所示:
图2.Waveshaper源程序
图3.Waveshaper编译成功
图4.Waveshaper仿真结果
2.2在Modelsim里的操作步骤:
1)建立waveshaper工程
2)添加两个文件waveshaper跟waveshaper_tp到工程
3)分别编译这两个文件
4)在work里面查看编译后的设计单元
5)将信号加入波形窗口
6)运行仿真
其源程序如下:
modulewaveshaper(q,cp,n);
output[7:
0]q;
inputcp;
input[1:
0]n;
reg[7:
0]q;
reg[2:
0]Q=3'd0;
wirecp,cr;
always@(negedgecp)
begin
if(cr)Q<=3'd0;
else
Q<=Q+3'd1;
end
always@(Qorn)
begin
case(n)
0:
q=romout({n,Q});
1:
q=romout({n,Q});
2:
q=romout({n,Q});
3:
q=romout({n,Q});
endcase
end
function[7:
0]romout;
input[4:
0]address;
case(address)
0:
romout=85;
1:
romout=100;
2:
romout=85;
3:
romout=50;
4:
romout=15;
5:
romout=0;
6:
romout=15;
7:
romout=50;
8:
romout=0;
9:
romout=30;
10:
romout=60;
11:
romout=90;
12:
romout=120;
13:
romout=90;
14:
romout=60;
15:
romout=30;
16:
romout=0;
17:
romout=10;
18:
romout=20;
19:
romout=30;
20:
romout=40;
21:
romout=50;
22:
romout=60;
23:
romout=70;
24:
romout=0;
25:
romout=0;
26:
romout=0;
27:
romout=0;
28:
romout=60;
29:
romout=60;
30:
romout=60;
31:
romout=60;
default:
romout=8'hxx;
endcase
endfunction
Endmodule
其测试程序如下:
`timescale1ns/1ns
`include"waveshaper.v"
modulewaveshaper_tp;
regcp;
reg[1:
0]n;
wire[7:
0]q;
parameterDELY=100;
waveshaperA(q,cp,n);//调用测试对象
always#(DELY/2)cp=~cp;//产生时钟波形
initial
begin//激励信号定义
cp=0;
n=0;
#(DELY*80)n=1;
#(DELY*80)n=2;
#(DELY*80)n=3;
#(DELY*80)$finish;
end
//定义结果显示格式
initial$monitor($time,,,"cp=%dn=%dq=%d",cp,n,q);
endmodule
具体的实验步骤图如下:
图5.waveshaper源程序文件
图6.Waveshaper-tp测试程序
两个文件编译成功后在work里面出现:
图7.Work里面的两个文件
三、实验结果及数据分析
在Modelsim里面添加波形后,然后仿真得到的首先是二进制表示的实验结果,然后再在实验结果里改变实验室数据类型,改为波形数据,调整坐标到屏幕中央,得到正弦波、三角波1及三角波2,但是没有出现方波。
由于方波的波形数据调整在另一栏,重新改变波形类型才能出现方波。
其具体的结果图如下:
图8.仿真结果数据显示
图9.仿真结果波形图(没有调整数据类型)
图10.仿真的正弦波(n=0)
图11.仿真出来的方波(n=3)
图12.仿真的三角波1(n=1)
图13.仿真的三角波2(n=2)
数据分析:
仿真时,n是波形选择的关键,n=0时,调用romout函数输出的波形为正弦波;n=1时,输出的为三角波1;n=2时,输出的波形是三角波2;n=3时,调用romout函数输出方波。
这样就把全部波形选择产生了。
四、心得体会
通过此次实验,我更进一步学习了Verilog语言的编写知识,以及一些常见的编写规则,同时提高了解决编译出错的能力。
此次实验中再次运用QuatlusII软件编辑,已经熟练掌握这个软件的操作。
在这次实验中最重要也是最关键的就是Modelsim软件的学习与操作,从不会操作到最后将波形成功仿真出来。
这个过程学会了很多东西,测试程序的编写以及编译成功的过程可谓是绞尽了脑汁。
幸好在反复地检查和修改之后,最终编译成功。
同时也发现一个问题,QuatlusII里面能仿真出来的程序,在Modelsim里面不一定能成功仿真,Modelsim遵循更多规则,输入变量的是必须要有而且是合理的,不能够是端口中的输入、输出。
只有遵循了这些规则,仿真才能做到成功。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- verilog 期末 作业