VerilogHDL复习题与答案

更新时间:2023-11-10 09:22:01 阅读量: 教育文库 文档下载

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

VerilogHDL硬件描述语言复习

一、

1. Verilog HDL 是在哪一年首次被I E E E标准化的? 答:Verilog HDL是在1995年首次被IEEE标准化的。 2. Verilog HDL支持哪三种基本描述方式?

答:Verilog HDL可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程化结

构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模

3. Verilog HDL 是由哪个公司最先开发的?

答:Verilog HDL是由Gateway Design Automation公司最先开发的 4. Verilog HDL中的两类主要数据类型什么?

答:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,抽象的数据存储元件。 5. U D P代表什么?

答:UDP代表用户定义原语

6. 写出两个开关级基本门的名称。 答:pmos nmos

7. 写出两个基本逻辑门的名称。 答:and or

8. 在数据流描述方式中使用什么语句描述一个设计? 答:设计的数据流行为使用连续赋值语句进行描述 9. 采用结构描述方式描述1位全加器。 答:

module full_add(a,b,cin,s,co); input a,b,cin; output s,co;

wire S1,T1,T2,T3; xor

X1(S1,a,b), X2(s,S1,cin); and

A1(T3,a,b), A2(T2,b,cin), A3(T1,a,cin); or

O1(co,T1,T2,T3); endmodule

10. i n i t i a l语句与always 语句的关键区别是什么? 答: 1) initial语句:此语句只执行一次。

2) always语句:此语句总是循环执行, 或者说此语句重复执行。

11. 采用数据流方式描述2 - 4译码器。 答:

'timescale 1ns/ns

module Decoder2×4(A,B,EN,Z);

input A,B,EN; output [0:3]Z;

而寄存器类型表示1

wire abar,Bbar; assign #1 Abar=~A; assign #1 Bbar=~B;

assign #2 Z[0]=~(Abar&Bbar&EN); assign #2 Z[1]=~(Abar&B&EN); assign #2 Z[2]=~(A&Bbar&EN); assign #2 Z[3]=~(A&B&EN);

endmodule

1 2. 找出下面连续赋值语句的错误。

assign Reset=#2 Sel^WriteBus;

答:不符合连续赋值语句的语法,应该为:assign #2 Reset = ^ WriteBus; 二、

1. 下列标识符哪些合法,哪些非法?

C O u n T, 1_2 M a n y, \\**1, R e a l?, \\wait, Initial

答:COunT合法,1_2 Many非法,\\**1,Real?非法,\\wait合法,Initial合法 2. 在Verilog HDL中是否有布尔类型? 答:没有

3. 如果线网类型变量说明后未赋值,其缺省值为多少? 答:z

4. Verilog HDL 允许没有显式说明的线网类型。如果是这样,怎样决定线网类型?

答:在Verilog HDL 中,有可能不必声明某种线网类型。在这样的情况下,缺省线网类型为1位 线网。

5. 下面的说明错在哪里? i n t e g e r [0:3] R i p p l e;

答:应该是integer Ripple [0:3] 6. Verilog HDL有哪几大类数据类型?

答:verilog hdl 有两大类数据类型:线网类型和寄存器类型。

7.Verilog HDL有哪几种寄存器类型?

答:有五种不同的寄存器类型:reg、integer、time、real、realtime。 三、

1. 假定长度为6 4个字的存储器, 每个字8位,编写Verilog 代码,按逆序交换存储器的内容。即 将第0个字与第6 3个字交换,第1个字与第6 2个字交换,依此类推。 答:

reg [7:0] mem [63:0]; integer i = 0; reg [7:0] temp; while(i < 32) begin

temp = mem[i];

mem[i] = mem[63 - i]; mem[63 - i] = temp; i = i + 1; end

2. 假定3 2位总线A d d re s s _ B u s, 编写一个表达式,计算从第11位到第2 0位的归约与非。 答:~& addressBus[20:11]

3. 假定一条总线C o n t ro l _ B u s [ 1 5 : 0 ],编写赋值语句将总线分为两条总线: A b u s [ 0 : 9 ]和B b u s[ 6 : 1 ]。

2

答:Abus = ControlBus[9:0]; Bbus = ControlBus[15:10];

4. 编写一个表达式,执行算术移位,将Qparity 中包含的8位有符号数算术移位。 答:{Qparity[7-i:0], Qparity[7:8-i]}//左移,i表示移的位数 {Qparity[i-1:0], Qparity[7: i]}//右移,i表示移的位数

5. 使用条件操作符, 编写赋值语句选择N e x t S t a t e的值。如果C u rre n t S t a t e的值为R E S E T, 那么N e x t S t a t e的值为G O;如果C u rre n t S t a t e的值为G O,则N e x t S t a t e 的值为B U S Y;如果C u rre n t S t a t e的值为B U S Y;则N e x t S t a t e的值为R E S E T。

答:NextState = (CurrentState == RESET) ? Go : (CurrentState == Go ? BUSY : RESET) 6. 如何从标量变量A,B,C和D中产生总线B u s Q[0:3]? 如何从两条总线B u s A [ 0 : 3 ]和B u s Y

[ 2 0 : 1 5 ]形成新的总线B u s R [ 1 0 : 1 ] ? 答:BusQ[3:0] = {D, C, B, A}

BusR[10:1] = {BusY[20:15], BusA[3:0]}

四、

1、Verilig HDL提供的内置基本门分为哪几类?

1) 多输入门、2) 多输出门、3) 三态门 2、多输入门与多输出门的区别在哪里?

答:多输入门:and nand nor or xor xnor 这些逻辑门只有单个输出, 1个或多个输入 第一个端口是输出,其它端口是输入。

多输出门有:buf, not 这些门都只有单个输入,一个或多个输出 最后的端口是输入端口,其余的所有端口为输出端口。

3、Verilog HDL内置的mos开关门有哪些? 答:cmos, nmos, pmos, rcmos, rnmos, rpmos 4、门时延值的组成有哪几个值? 答: 1) 上升时延 2) 下降时延 3) 关断时延

5. Verilig HDL提供的内置基本门分为哪几类?

答: 1) 多输入门 2) 多输出门 3) 三态门 4) 上拉、下拉电阻 5) MOS开关 6) 双向开关 6.假定一条总线Control_Bus[7:0],编写赋值语句将总线分为两条总线:Abus [0:2]和Bbus[ 4 : 1 ]。 答:Abus=ControlBus[2:0]; Bbus=ControlBus[15:12];

7. 编写一个表达式,执行算术移位,将Qparity 中包含的8位有符号数算术左移3位。 答:{Qparity[4:0], Qparity[7:5]}

8.要求采用数据流方式设计一个半加器,写出完整的Verilig HDL设计模块。

答:

module half_add(Sum, Cout,A, B); input A, B;

output Sum, Cout; assign Sum=A^B; assign Cout=A&B; endmodule 五、

1、操作符有 按操作数个数分为3 种类型,其中三目操作符有 2 个操作符和 3 个操作数。

2、关键字全是 小 写,标识符的首字符必须是 字母 或 下划线 。

3

3、数字A=5’b011?的?表示 z 。设B=5’b101x1,C=5’b01x11,则操作运算F=B+C的结果F= 5'bxxxxx 。

4、VerilogHDL中保存字符串“Hello”需要 5 位。

5、声明reg [7:0]data[4:0]表示 5 个 8 位的存储单元。 6、module test(q,clk,crt); output q; reg q;

Input clk,crt; always @(posedge clk) begin

if(crt==1) q=~q;

end endmodule

7、数据流建模的主要语法结构是 assign LHS_target = RHS_expression; 语句 ,采用 assign 关键字开始。

8、线网赋值延迟可以通过 普通赋值 延迟, 隐式连续赋值 延迟和 线网声明 延迟三种方法来实现。

9、模型引用时,要指定实例名,但 硬件 和 用户定义 原语例外。

10、语句assign #(2:3:4,5:6:7)port(out,clk,in)中的典型关断延迟是 4 ,最大关断延时是 7 。

11、VerilogHDL语言可以从四个不同的抽象层次描述电路,这四层是 开关级 、 门级 、 寄存器传送级 、 算法级

12、结构化建模的主要语句是 内置门原语 和 用户定义原语 。 六、

1.门级建模的类型有:

(A)or和AND (B)OR和and

(C)and和or (D)A、B、C都正确 ( C ) 2.VerilogHDL使用的是逻辑是:

(A)二值逻辑 (B)四值逻辑 (C)三值逻辑 (D)八种强度 ( B ) 3.不属于寄存器类型的是:

(A)integer (B)reg

(C)wand (D)time ( C ) 4.VerilogHDL语言中,标识符的作用范围是: (A)本模块 (B)外部模块

(C)所有模块 (D)全局模块 ( A ) 5.具有多个输出端口的门是:

(A)and (B)or

(C)nor (D)not ( D )

七、

1、语句内部时延与语句前时延效果是否一样? 答:不一样

2、当时延表达式为负数时,时延值是如何处理得到? 答:取绝对值

3、VeriligHDL有几种循环语句?分别采用关键字是什么?

答:总共有四种循环语句,分别采用forever、repeat、while、for。 八、

4

1.VerilogHDL语言和C语言的结构化语句有何不同?

答:1.Verilog HDL是在C语言的基础上发展起来的,保留了C语言的结构特点。2.C语言由函数组成,Verilog由模块(module)组成3.C语言通过函数名及其端口变量实现调用,Verilog也通过模块名和端口变量实现调用4.C语言有主函数main(),Verilog的个module均等价,但必有一个顶层模块,包含芯片系统与外界的所有I/O信号5.C语言是顺序执行,而Verilog的所有module均并发执行6.C语言与Verilog语法相似。

2、VerilogHDL语言的操作符类型有哪些?其数据流建模采用什么来描述设计吗? 答:算术、逻辑、关系、等价、按位、缩减、移位、拼接、条件 数据流建模采用算术与逻辑来描述设计 3、VerilogHDL语言的优点是什么?

答: Verilog HDL语言的优势:由于它在其门级描述的底层,也就是晶体管开关的描述方面比VHDL等各种其它的HDL语言有更强的功能。所以在复杂数字逻辑电路和系统的设计仿真时更有优势;描述的设计思想、电路结构和逻辑关系清晰明了,并且设计语言简练、易学易用;其模块化分层结构在大规模设计时更能体现出优势。因此可以看出,Verilog HDL语言在EDA设计中相对与其他的各种硬件描述语言更有优势。 4、下列例子中,b,c,d的最终值分别是什么? initial begin

b=1’b1;c=1’b0; #10 b=1’b0; end initial begin

d=#25{b|c}; end

答:b=1'b0、c=1'b0、d=1'b0

5.一位全减器模块wsub具有三个一位输入:x,y和z(前面的借位),两个一位的输出D(差)和B(借位)。计算D和B的逻辑等式如下所示: D?x.y.z?x.y.z?x.y.z?x.y.z

B?x.y?x.z?y.z

写出VerilogHDL数据流描述的该全减器wsub。 答: module wsub(D,B,x,y,x) input x,y,z;

output D,B;

assign D=~x*~y*~z+~x*y*~z+x*~y*~Z+x*y*z; assign B=~x*y+~x*z+y*z; endmodule

5

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

Top