Verilog HDL 实验报告Word下载.docx
《Verilog HDL 实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《Verilog HDL 实验报告Word下载.docx(13页珍藏版)》请在冰点文库上搜索。
moduleyihuo(a,b,c);
inputa,b;
outputc;
assignc=a^b;
endmodule
测试程序:
modulet_yihuo;
rega,b;
wirec;
initial
begin
a=0;
forever#20a=~a;
end
b=0;
forever#30b=~b;
yihuou1(a,b,c);
2、实验结果
波形图:
3、分析和心得
通过这次的实验,我基本熟悉Modelsim软件,掌握了Modelsim软件的编译、仿真方法。
同时在编写程序的过程中,加深了我对课上所讲的HDL的语法的认识。
实验二简单组合电路设计
(1)掌握基于Modelsim的数字电路设计方法
(2)熟练掌握HDL程序的不同实现方法
设计一个三人表决器(高电平表示通过),实验内容如下:
(1)三个人,一个主裁判,两个副裁判;
(2)规则:
只要主裁判同意,输出结果为通过;
否则,按少数服从多数原则决定是否通过。
使用VerilogHDL程序实现上述实验内容,并使用modelsim仿真。
2、方法
moduletest(a,b,c,s);
inputa,b,c;
outputs;
assigns=c|(b&
a);
modulet_test;
rega,b,c;
wires;
initial
begin
a=0;
forever#10a=~a;
end
b=0;
forever#20b=~b;
c=0;
forever#40c=~c;
testu1(a,b,c,s);
三、实验结果
4、分析和心得
通过本次实验,我掌握基于Modelsim的简单数字电路设计方法,且尝试了用不同方法实现功能,三人表决器可以通过testbench测试程序实现,也可以利用always模块实现,可见程序的设计思想是很重要的。
实验三二进制全加器设计
(1)熟悉VerilogHDL元件例化语句的作用
(2)熟悉全加器的工作原理
(3)用VerilogHDL语言设计四位二进制全加器,并仿真,下载验证其功能
(1)用VerilogHDL语言描述一位全加器,并使用modelsim仿真验证结果。
(2)用VerilogHDL元件例化语句实现四位全加器,modelsim仿真验证结果。
(3)设计程序将加法结果分开输出,即十位数和个位数分别用四位数组表示。
moduleadd1(a,b,c,s,sc);
outputs,sc;
assign{s,sc}=a+b+c;
moduleadd4(ad1,ad2,c,ss,sc);
input[3:
0]ad1,ad2;
inputc;
output[3:
0]ss;
outputsc;
wirec1,c2,c3;
add1u1(ad1[0],ad2[0],c,ss[0],c1);
add1u2(ad1[1],ad2[1],c1,ss[1],c2);
add1u3(ad1[2],ad2[2],c2,ss[2],c3);
add1u4(ad1[3],ad2[3],c3,ss[3],sc);
modulet_add4;
reg[3:
regc;
wiresc;
wire[3:
ad1=4'
b0;
forever#10ad1=ad1+4'
b1;
ad2=4'
forever#80ad2=ad2+4'
c=4'
forever#640c=c+4'
add4f1(ad1,ad2,c,ss,sc);
四、分析和心得
通过这次试验我熟悉了VerilogHDL元件例化语句的作用,并且熟悉全加器的工作原理。
在四位全加器的过程中,也了解了如何调用模块。
实验四二进制计数器设计
(1)熟悉VerilogHDL时序电路的设计方法;
(2)了解清零和使能的概念,以及同步清零和异步清零的区别
(3)用VerilogHDL语言设计二进制计数器,并仿真
(1)编程实现二进制计数器并仿真。
(2)编程实现十进制计数器,含同异步清零端和进位输出端,编程实现,并modelsim仿真。
(1)二进制计数器
moduletest(out,count,clk,nrst);
inputclk,nrst;
0]out,count;
always@(posedgeclkornegedgenrst)
if(!
nrst)
out<
=4'
count<
=1'
else
if(out==4'
b0001)
b0000;
=count+1'
=out+4'
regclk,nrst;
clk=0;
forever#10clk=~clk;
nrst=0;
#10nrst=1;
#30nrst=0;
#30nrst=1;
testu1(out,count,clk,nrst);
(2)十进制计数器
b1001)
moduleT_test;
三、实验结果
二进制波形图:
十进制波形图:
四、分析和心得
本次实验熟悉了对textbench程序的编写,可以更好的验证已知程序的正确性,同时熟悉VerilogHDL时序电路的设计方法,掌握了同异步清零的区别和功能使用,学会了计数器的编写,把理论和实际相结合,非常实用。
实验五基本IO实验
(1)学习QuartusⅡ5.0的基本操作;
(2)熟悉教学实验板的使用;
(3)初步掌握Verilog语言的设计输入,编译,仿真和调试过程。
1、实验步骤
(1)建立工程
(2)建立文本文件
(3)分配管脚
(4)编译
(5)仿真
(6)下载
(7)实验结果
2、实验方法
程序:
moduletestio(key1,led1);
inputkey1;
outputled1;
assignled1=~key1;
管脚:
set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"
ASINPUTTRI-STATED"
set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF
set_location_assignmentPIN_181-toled1
set_location_assignmentPIN_64-tokey1
仿真波形图:
在实验箱上的效果是:
按下实验板上的KEY1,对应的第一个LED灯灭。
四分析和心得
本次实验让我学会了一个新的软件的应用。
实验让我们学会了把HDL语言从简单的软件仿真到了硬件上的实现,真正使得理论和实际相结合,我意识到了以后需要多多动手实际操作。