VerilogHDL实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VerilogHDL实验报告
实验一Modelsim仿真软件的使用
一、实验目的
(1)熟悉Modelsim 软件
(2)掌握Modelsim 软件的编译、仿真方法
(3)熟练运用Modelsim 软件进行HDL 程序设计开发
二、实验内容
1、实验要求
用Verilog HDL 程序实现一个异或门,Modelism仿真,观察效果。
2、步骤
1、建立工程
2、添加文件到工程
3、编译文件
4、查看编译后的设计单元
5、将信号加入波形窗口
6、运行仿真
3、方法
moduleyihuo (a,b,c);
inputa,b;
output c;
assign c=a^b;
endmodule
测试程序:
module t_yihuo;
reg a,b; wire c;
initial begin a=0; forever #20 a=~a; end initial begin b=0; forever #30 b=~b; end
yihuou1(a,b,c);
endmodule
二、实验结果
波形图:
三、分析和心得
通过这次的实验,我基本熟悉Modelsim软件,掌握了Modelsim软件的编译、仿真方法。
同时在编写程序的过程中,加深了我对课上所讲的HDL的语法的认识。
实验二简单组合电路设计
一、实验目的
(1)掌握基于Modelsim的数字电路设计方法
(2)熟练掌握HDL 程序的不同实现方法
二、实验内容
1、实验要求
设计一个三人表决器(高电平表示通过),实验内容如下:
(1)三个人,一个主裁判,两个副裁判;
(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。
使用 Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真。
2、方法
module test(a,b,c,s);
inputa,b,c;
output s;
assign s=c|(b&a);
endmodule
modulet_test;
rega,b,c;
wire s;
initial
begin
a=0;
forever#10 a=~a;
end
initial
begin
b=0;
forever #20 b=~b;
end
initial
begin
c=0;
forever#40 c=~c;
end
test u1(a,b,c,s);
endmodule
三、实验结果
四、分析和心得
通过本次实验,我掌握基于Modelsim的简单数字电路设计方法,且尝试了用不同方法实现功能,三人表决器可以通过testbench测试程序实现,也可以利用always模块实现,可见程序的设计思想是很重要的。
实验三二进制全加器设计
一、实验目的
(1)熟悉Verilog HDL 元件例化语句的作用
(2)熟悉全加器的工作原理
(3)用Verilog HDL 语言设计四位二进制全加器,并仿真,下载验证其功能
二、实验内容
1、实验要求
(1)用 Verilog HDL 语言描述一位全加器,并使用 modelsim仿
真验证结果。
(2)用 Verilog HDL 元件例化语句实现四位全加器,modelsim 仿真验证结果。
(3)设计程序将加法结果分开输出,即十位数和个位数分别用四位数组表示。
2、方法
module add1(a,b,c,s,sc);
inputa,b,c;
outputs,sc;
assign {s,sc}=a+b+c;
endmodule
module add4(ad1,ad2,c,ss,sc);
input [3:0] ad1,ad2;
input c;
output [3:0]ss;
outputsc;
wire c1,c2,c3;
add1 u1(ad1[0],ad2[0],c,ss[0],c1);
add1 u2(ad1[1],ad2[1],c1,ss[1],c2); add1 u3(ad1[2],ad2[2],c2,ss[2],c3); add1 u4(ad1[3],ad2[3],c3,ss[3],sc); endmodule
测试程序:
module t_add4;
reg [3:0] ad1,ad2;
reg c;
wiresc;
wire [3:0]ss;
initial
begin
ad1=4'b0;
forever #10 ad1=ad1+4'b1;
end
initial
begin
ad2=4'b0;
forever #80 ad2=ad2+4'b1;
end
initial
begin
c=4'b0;
forever #640 c=c+4'b1;
end
add4 f1(ad1,ad2,c,ss,sc);
endmodule
三、实验结果
波形图:
四、分析和心得
通过这次试验我熟悉了Verilog HDL 元件例化语句的作用,并且熟悉全加器的工作原理。
在四位全加器的过程中,也了解了如何调用模块。
实验四二进制计数器设计
一、实验目的
(1)熟悉Verilog HDL 时序电路的设计方法;
(2)了解清零和使能的概念,以及同步清零和异步清零的区别
(3)用Verilog HDL 语言设计二进制计数器,并仿真
二、实验内容
1、实验要求
(1)编程实现二进制计数器并仿真。
(2)编程实现十进制计数器,含同异步清零端和进位输出端,编程实现,并modelsim仿真。
2、方法
(1)二进制计数器
module test(out,count,clk,nrst); inputclk,nrst;
output [3:0] out,count;
reg [3:0] out,count;
always @(posedgeclk or negedgenrst) begin
if(!nrst)
begin
out<=4'b0;
count<=1'b0;
end
else
if(out==4'b0001)
begin
out<=4'b0000;
count<=count+1'b1;
end
else
out<=out+4'b1;
end
endmodule
测试程序:
modulet_test;
regclk,nrst;
wire [3:0] out,count;
initial
begin
clk=0;
forever #10 clk=~clk;
end
initial
p c l a s s = " t " > b e g i n / p > p c l a s s = " t " > n r s t = 0 ; / p > p c l a s s = " t " > # 1 0 n r s t = 1 ; / p > p c l a s s = " t " > # 3 0 n r s t = 0 ; / p > p c l a s s = " t " > # 3 0 n r s t = 1 ; / p > p c l a s s = " t " > e n d / p > p c l a s s = " t " > t e s t u 1 ( o u t , c o u n t , c l k , n r s t ) ; e n d m o d u l e / p >。