verilog期末大作业.doc

上传人:wj 文档编号:4843777 上传时间:2023-05-07 格式:DOC 页数:11 大小:280KB
下载 相关 举报
verilog期末大作业.doc_第1页
第1页 / 共11页
verilog期末大作业.doc_第2页
第2页 / 共11页
verilog期末大作业.doc_第3页
第3页 / 共11页
verilog期末大作业.doc_第4页
第4页 / 共11页
verilog期末大作业.doc_第5页
第5页 / 共11页
verilog期末大作业.doc_第6页
第6页 / 共11页
verilog期末大作业.doc_第7页
第7页 / 共11页
verilog期末大作业.doc_第8页
第8页 / 共11页
verilog期末大作业.doc_第9页
第9页 / 共11页
verilog期末大作业.doc_第10页
第10页 / 共11页
verilog期末大作业.doc_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

verilog期末大作业.doc

《verilog期末大作业.doc》由会员分享,可在线阅读,更多相关《verilog期末大作业.doc(11页珍藏版)》请在冰点文库上搜索。

verilog期末大作业.doc

深圳大学实验报告

课程名称:

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遵循更多规则,输入变量的是必须要有而且是合理的,不能够是端口中的输入、输出。

只有遵循了这些规则,仿真才能做到成功。

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

当前位置:首页 > 经管营销 > 财务管理

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

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