实验二 verilog行为语句实验
- 格式:doc
- 大小:207.00 KB
- 文档页数:6
1 实验二:基于verilogHDL行为语句的电路设计
班级: 姓名: 学号:
作业完成后,以班级为单位,班长或课代表收集齐电子版实验报告,统一提交.
文件命名规则如“通1_王五_学号”
一、实验目的
1、 了解verilog HDL行为语句,可综合与非可综合
2、 掌握always过程块的格式,注意事项
3、 掌握串行块begin-end、assign持续赋值
4、 掌握if-else、for、·define、等可综合过程语句
5、 练习基本的组合电路和时序电路的verilogHDL设计与仿真
二、预习要求
1.了解veirlogHDL行为语句。
2. Verilog HDL的模块结构的组成。
3.简单电路系统设计的流程和方法。
三、实验基本概念
1、74HC138的功能表入下
2、74160的功能表
2
3、74161
四、实验内容
(一)典型习题的验证与仿真
设计要求:
1、将课本(课件)中的模256计数器在QuartusII进行编辑和综合,体会计数器设计,注意控制信号的同步、异步,高电平与低电平有效的问题。
2、将阻塞赋值与非阻塞赋值的实例进行综合,对比RTL与门级视图,体会区别。
3、将模60的BCD码加法计数器进行编辑、综合和仿真,并思考数电仿真中的24进制加法
3 器电路设计与此设计的关联性,可尝试设计一个模24进制计数器。
4. BCD码的七段管译码器设计
5、for循环实现2个8位乘法,尝试用别的方法设计乘法器并进行综合,并进行对比
6、过程和结果(后面继续添加)
上述题目,课件皆有源代码,如果个人对代码有改进,有引申,将代码黏贴到下面空白处,或者写一下自己对上述需注意问题的体会。(内容不限)
(二)设计一个类似于74138的译码器电路
设计要求:
1、用verilog设计译码器,并进行综合和仿真
2.观察RTL级和门级综合视图,对比在数字电路上学过的电路结构。
3. QuartusII进行功能仿真,验证设计的正确性。
4、过程和结果(后面继续添加)
将在程序编辑、编译过程中的错误进行记录(截图或者文本),并错误指出来
(1)编译过程出现的问题总结
错误提示(系统提示) 解决方法
书写错误,少加了空格 提示“ora0”有错 添加空格
写完case语句没有在末尾添加endcase 提示case 没有与endcase 对应 在末尾添加case
没有添加default语句 没有提示 添加使之更完善
(2)代码与仿真结果(结果截图)
module test(s1,s2,s3,a0,a1,a2,y0,y1,y2,y3,y4,y5,y6,y7);
input s1,s2,s3,a0,a1,a2;
output reg y0,y1,y2,y3,y4,y5,y6,y7;
always @(s1 or s2 or s3 or a0 or a1 or a2)
begin
if((~s1)|(~(s2&s3))) {y7,y6,y5,y4,y3,y2,y1,y0}=7'b11111111;
if(s1&(s2&s3))
begin case({a2,a1,a0})
3'b000:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b11111110;
3'b001:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b11111101;
3'b010:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b11111011;
3'b011:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b11110111;
3'b100:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b11101111;
3'b101:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b11011111;
3'b110:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b10111111;
3'b111:{y7,y6,y5,y4,y3,y2,y1,y0}=7'b01111111;
default:{y7,y6,y5,y4,y3,y2,y1,y0}=7'bxxxxxxxx;
endcase
end
end
endmodule
4 module Verilog2(E1,E2,E3,A,B,C,Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7);
input E1,E2,E3; //使能输入端(74LS138有三个使能输入)
input A,B,C; //输入
output wire Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7; //输出
assign Y0 = ((E1 & !E2 & !E3) ==1'b1) ? !(!A & !B & !C) : 1'bz;
assign Y1 = ((E1 & !E2 & !E3) ==1'b1) ? !(!A & !B & C) : 1'bz;
assign Y2 = ((E1 & !E2 & !E3) ==1'b1) ? !(!A & B & !C) : 1'bz;
assign Y3 = ((E1 & !E2 & !E3) ==1'b1) ? !(!A & B & C) : 1'bz;
assign Y4 = ((E1 & !E2 & !E3) ==1'b1) ? !( A & !B & !C) : 1'bz;
assign Y5 = ((E1 & !E2 & !E3) ==1'b1) ? !( A & !B & C) : 1'bz;
assign Y6 = ((E1 & !E2 & !E3) ==1'b1) ? !( A & B & !C) : 1'bz;
assign Y7 = ((E1 & !E2 & !E3) ==1'b1) ? !( A & B & C) : 1'bz;
endmodule
(三)设计一个类似于74161的计数器电路
设计要求:
5 1、用verilog设计译码器,并进行综合和仿真
2.观察RTL级和门级综合视图,对比在数字电路上学过的电路结构。
3. QuartusII进行功能仿真,验证设计的正确性。
4、过程和结果(后面继续添加)
将在程序编辑、编译过程中的错误进行记录(截图或者文本),并错误指出来
(1)编译过程出现的问题总结
错误提示(系统提示) 解决方法
错误1
错误2
……..
(2)代码与仿真结果(结果截图)
(四)用case或for语句设计一个表决电路
设计要求:
1、参加表决为9人,同意为1,不同意为0
2、同意者过半表示通过
3. QuartusII进行功能仿真,验证设计的正确性。
4、过程和结果(后面继续添加)
将在程序编辑、编译过程中的错误进行记录(截图或者文本),并错误指出来
(1)编译过程出现的问题总结
错误提示(系统提示) 解决方法
错误1
错误2
……..
(2)代码与仿真结果(结果截图)
实验要求
1、按照上面的提示完善报告
2、将程序编译过程中出现的主要错误及解决方案进行总结
3、掌握和练习数字系统的分析步骤,并将一些核心步骤进行记录
4、将编写的程序与仿真结果进行记录
6