Verilog语言学习提纲(含部分答案)

更新时间:2023-05-01 12:58:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Verilog语言学习提纲

1、一个复杂数字电路的完整VerilogHDL模型,是由什么构成的?

(可选项:(1) 变量(2) 寄存器(3) 门电路(4) 模块module)

2、Verilog语言规定的4种基本逻辑值是什么?

3、在Verilog程序中,如果没有说明输入、输出变量的数据类型,它们的数据类型是什么?

4、Verilog语言中逻辑运算符“&&”与位运算符“&”有什么不同?

5、什么是Verilog语言中的拼接运算和缩位运算:

(1)下列运算的二进制值是多少?

reg [3:0] m;

m = 4’b1010; //{2{m}}的二进制值是。

(2)假设m=4’b0101,按照要求填写下列运算的结果:

&m = , |m= ,

^m = , ^m= 。

6、根据下面的V erilog描述,画出数字电路的逻辑图,写出逻辑电路的输出表达式。

moudule Circuit_A(input A,B, output Y1,Y2);

assign Y1=A&B;

or (Y2,A,B);

endmodule

7、使用连续赋值语句,写出由下列逻辑函数定义的逻辑电路的Verilog 描述。

(1) L 1=(B+C)(A _+D)B _

(2) L 2=(B _C+ABC+BC _)(A+D _

)

(3) L 3=C(AD+B)+A _

B

8、图1所示的是一个码制变换器,将输入的格雷码转换成二进制码输出。试用Verilog 描述它的功能,然后用Vivado 软件进行逻辑功能仿真,并给出仿真波形。

图1

9、说明下列Verilog 程序所描述电路的逻辑功能。

(1)module Circuit_A(

input [1:0] A, B,

input S, E,

output [1:0] Y

) ;

assign Y = E? (S? A:B): ’bz ; endmodule

(2)module Circuit_B

#(parameter N=8)

(

input [N-1:0] in0,in1,

output reg gt,eq,lt

);

always@*

begin

gt=0;

eq=0;

lt=0;

if (in0>in1)

gt=1;

if (in0==in1)

eq=1;

if (in0

lt=1;

end

endmodule

10、下面是用分层次方法设计的4位串行全加器程序。设计者首先完成了1位全加器(模块名为_1bitAdder)的建模和仿真,结果是正确的;然后再顶层调用4个1位全加器模块组合成为4位全加器(模块名为_4bitAdder),结果编译未能通过,试参照图2所示组成框图分析下列程序中存在的错误,并进行改正。

module_4bitAdder (A, B, Cin, Sum, Cout);

input [3:0] A, B;

input Cin;

output [3:0] Sum;

output Cout;

reg Cout;

reg [4:0] temp;

always @ (A or B or Cin)

begin

temp[0] = Cin;

_1bitAdder u0 (A[0], B[0], temp[0], Sum[0], temp[1]);

_1bitAdder u1 (A[1], B[1], temp[1], Sum[1], temp[2]);

_1bitAdder u2 (A[2], B[2], temp[2], Sum[2], temp[3]);

_1bitAdder u3 (A[3], B[3], temp[3], Sum[3], temp[4]);

Cout = temp[4];

end

endmodule

module_1bitAdder (A, B, Ci, Sum, Co); //此模块正确

input A, B, Ci;

output Sum, Co;

assign Sum = A^B^Ci;

assign Co = (A&B) | (B&Ci) | (A&Ci);

endmodule

图2四位串行进位全加器

本文来源:https://www.bwwdw.com/article/rjze.html

Top