HDL实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HDL实验报告
专业:电子科学与技术学号:1062910112
姓名:李斌斌
指导教师:梁瑞宇
实验一Modelsim 仿真软件的使用
一、实验目的
(1)熟悉Modelsim 软件;
(2)掌握Modelsim 软件的编译、仿真方法
(3)熟练运用Modelsim 软件进行HDL 程序设计开发
二、实验步骤
(1)学习,练习使用Modelsim软件
(2)用 Verilog HDL 程序实现一个异或门,Modelsim 仿真,观察效果
三、实验结果
(a)程序:module yhm(a,b,c);
input a,b;
output c;
assign c=a^b;
endmodule
module t_yhm;
reg a,b;
wire c;
initial
begin
a=1’b0;b=1’b0;
#10 a=1’b1;b=1’b0;
#10 a=1’b0;b=1’b1;
#10 a=1’b1;b=1’b1;
end
yhm u1(a,b,c);
endmodule
(b)波形
四、心得
1、只有多练习才能更好的使用软件
2、实验编程时要细心仔细
3、遇到问题应该多与同学、老师交流
4、一定要自己动手编程,找出问题所在才能有所收获
5、通过仿真我们才能知道自己编写的程序是否正确
实验二简单组合电路设计
一、实验目的
(1)掌握基于Modelsim 的数字电路设计方法;
(2)熟练掌握HDL 程序的不同实现方法
二、实验内容
设计一个三人表决器(高电平表示通过),实验内容如下:
(1)三个人,一个主裁判,两个副裁判;
(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定
是否通过。
使用 Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真(要求:至少使用两种方法实现上述实验内容和testbench)。
三、实验结果
1、程序
(a)
module bjq(a,b1,b2,c);
input a,b1,b2;
output c;
assign c=a^((!a)&b1&c2);
endmodule
(b)
module bjq(a,b1,b2,c);
input a,b1,b2;
output c;
reg c;
always@(a or b1 or b2)
begin
if (a)
c=1;
else
if (b1&b2)
c=1;
else
c=0;
end
endmodule
module t_bjq;
reg ain,b1in,b2in;
wire cout;
initial
begin
ain=1;
b1in=0;
b2in=0;
#50 ain=1;b1in=1;b2in=0;
#50 ain=1;b1in=0;b2in=1;
#50 ain=1;b1in=1;b2in=1;
#50 ain=0;b1in=0;b2in=0;
#50 ain=0;b1in=1;b2in=0;
#50 ain=0;b1in=0;b2in=1;
#50 ain=0;b1in=1;b2in=1;
$stop;
end
bjq test(.a(ain),.b1(b1in),.b2(b2in),.c(cout));
endmodule
2、波形
四、心得体会
1、注意变量的遍历
2、每一个问题都不止有一种解决方法,学会寻求简便的方法完成任务
3、要熟悉掌握数电知识并且灵活运用
实验三二进制全加器设计
一、实验目的
(1)熟悉Verilog HDL 元件例化语句的作用
(2)熟悉全加器的工作原理
(3)用Verilog HDL 语言设计四位二进制全加器,并仿真,下载验证其功能
二、实验原理
(1)一位全加器原理:
Ai,Bi 分别是两个二进制位,Ci-1 是前级进位,Ci 是进位,Si 是加法结果。
表达式:
Si=A i⊕Bi⊕Ci-1 ;
Ci-1=Ai&Bi+Ai&Ci-1+Bi&Ci-1 ;
⑵四位全加器:
四个一位全加器串联;
三、实验内容
(1)用Verilog HDL 语言描述一位全加器,并使用modelsim 仿真验证结果。
(2)用Verilog HDL 元件例化语句实现四位全加器,modelsim 仿真并下载到实验箱,用按键模拟输入,led 灯模拟输出,验证结果。
(3)设计程序将加法结果分开输出,即十位数和个位数分别用四位数组表示。
四、实验结果
(1)、程序
module qjq1 (a, b, c, cout, out);
input a, b, c;
output cout, out;
assign cout =a~^b~^c;
assign out = (a & b) | (a &c) | (b & c);
波形