实验二 verilog行为语句实验

  • 格式:doc
  • 大小:207.00 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二:基于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的功能表

3、74161

四、实验内容

(一)典型习题的验证与仿真

设计要求:

1、将课本(课件)中的模256计数器在QuartusII进行编辑和综合,体会计数器设计,注意控制信号的同步、异步,高电平与低电平有效的问题。

2、将阻塞赋值与非阻塞赋值的实例进行综合,对比RTL与门级视图,体会区别。

3、将模60的BCD码加法计数器进行编辑、综合和仿真,并思考数电仿真中的24进制加法

器电路设计与此设计的关联性,可尝试设计一个模24进制计数器。

4.BCD码的七段管译码器设计

5、for循环实现2个8位乘法,尝试用别的方法设计乘法器并进行综合,并进行对比

6、过程和结果(后面继续添加)

上述题目,课件皆有源代码,如果个人对代码有改进,有引申,将代码黏贴到下面空白处,或者写一下自己对上述需注意问题的体会。(内容不限)

(二)设计一个类似于74138的译码器电路

设计要求:

1、用verilog设计译码器,并进行综合和仿真

2.观察RTL级和门级综合视图,对比在数字电路上学过的电路结构。

3.QuartusII进行功能仿真,验证设计的正确性。

4、过程和结果(后面继续添加)

将在程序编辑、编译过程中的错误进行记录(截图或者文本),并错误指出来

(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

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的计数器电路

设计要求: