首页 > 工作总结 > 其他总结
EDA-Verilog HDL期末复习题总结必过
编辑:醉人清风 识别码:36-411077 其他总结 发布时间: 2023-04-14 03:13:01 来源:网络

EDA-Verilog

HDL期末复习题总结必过

选择题

1.大规模可编程器件主要有

FPGA、CPLD

两类,下列对

FPGA

结构与工作原理的描述

中,正确的是(C)。

A.

FPGA

全称为复杂可编程逻辑器件;

B.

FPGA

是基于乘积项结构的可编程逻辑器件;

C.基于

SRAM的FPGA

器件,在每次上电后必须进行一次配置;

D.在Altera

公司生产的器件中,MAX7000

系列属

FPGA

结构。

2.不完整的IF语句,其综合结果可实现(A)

A.时序逻辑电路

B.组合逻辑电

C.双向电路

D.三态控制电路

3.综合是EDA设计流程的关键步骤,在下面对综合的描述中,(D)是错误的。

A.综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;

B.综合就是将电路的高级语言转化成低级的,可与FPGA

/

CPLD的基本结构相映射的网表文件;

C.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;

D.综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果是唯一的。

4.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是(C)。

A.FPGA全称为复杂可编程逻辑器件;

B.FPGA是基于乘积项结构的可编程逻辑器件;

C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置;

D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。

5.以下关于状态机的描述中正确的是(B)

A.Moore型状态机其输出是当前状态和所有输入的函数

B.与Moore型状态机相比,Mealy型的输出变化要领先一个时钟周期

C.Mealy型状态机其输出是当前状态的函数

D.以上都不对

6.目前应用最广泛的硬件描述语言是(B)。

A.VHDL

B.Verilog

HDL

C.汇编语言

D.C语言

7.一模块的I/O

端口说明:

“input

[7:0]

a;”,则关于该端口说法正确的是(A)。

A.输入端口,位宽为

B.输出端口,位宽为

C.输入端口,位宽为

D.输出端口,位宽为

8.基于

EDA

软件的FPGA

/

CPLD

设计流程为:原理图

/HDL

文本输入

综合→___

__→

试。

确的是(B)。

①功能仿真

②时序仿真

③逻辑综合④配置

⑤分配管脚

A.③①

B.①⑤

C.④⑤

D.④②

9.下列标识符中,(A)是不合法的标识符。

A.

9moon

B.

State0

C.

Not_Ack_0

D.

signall

10.下列语句中,不属于并行语句的是:(D)

A.过程语句

B.

assign语句

C.元件例化语句

D.

case语句

11.已知

“a

=1’b1;

b=3'b001;”那么

{a,b}

=(C)

(A)

4'b0011

(B)

3'b001

(C)

4'b1001

(D)

3'b101

12.在verilog

中,下列语句哪个不是分支语句?(D)

(A)

if-else

(B)

case

(C)

casez

(D)

repeat

13.在verilog

语言中整型数据在默认情况与(C)位寄存器数据在实际意义上是相同的。

(A)

(B)

(C)

(D)

14.大规模可编程器件主要有

FPGA、CPLD

两类,下列对

FPGA

结构与工作原理的描述中,正确的是(C)

A.

FPGA

全称为复杂可编程逻辑器件;

B.

FPGA

是基于乘积项结构的可编程逻辑器件;

C.基于

SRAM的FPGA

器件,在每次上电后必须进行一次配置;

D.在Altera

公司生产的器件中,MAX7000

系列属

FPGA

结构。

15.请根据以下两条语句的执行,最后变量

A

中的值是

(A)

reg

[7:0]

A;

A=2'hFF;

A.

8'b0000_0011

B.

8'h03

C.8'b1111_1111

D.8'b11111111

16.下列描述中采用时钟正沿触发且

reset异步下降沿复位的代码描述是

(C)

A、always

@(posedge

clk,negedge

reset)

if(reset)

B、always@(posedge

clk,reset)

if

(!reset)

C、always

@(posedge

clk,negedge

reset)

if(!reset)

D、always

@(negedge

clk,posedge

reset)

if

(reset)

17.关于过程块以及过程赋值描述中,下列正确的是(A)

A、在过程赋值语句中表达式左边的信号一定是寄存器类型;

B、过程块中的语句一定是可综合的;

C、在过程块中,使用过程赋值语句给

wire

赋值不会产生错误;

D、过程块中时序控制的种类有简单延迟、边沿敏感和电平敏感。

18.Verilog

语言与

C

语言的区别,不正确的描述是(C)

A、Verilog

语言可实现并行计算,C

语言只是串行计算;

B、Verilog

语言可以描述电路结构,C

语言仅仅描述算法;

C、Verilog

语言源于

C

语言,包括它的逻辑和延迟;

D、Verilog

语言可以编写测试向量进行仿真和测试。

19.11.下列模块的例化正确的是(C)。

A.Mydesign

design(sin(sin),sout(sout));

B.Mydesign

design(.sin(sin),.sout(sout));

C.Mydesign

design(.sin(sin),.sout(sout););

D.Mydesign

design(.sin(sin);

.sout(sout));

20.下列关于

Verilog

HDL语言中模块的例化说法错误的是(B)。

A.在引用模块时,有些信号要被输入到引用模块中,有些信号要从引用模块中输出

B.在引用模块时,必须严格按照模块定义的端口顺序来连接

C.在引用模块时可以用“

.”符号,表明原模块是定义时规定的端口名,用端口名和被引用模块的端口相对应,提高程序的可读性和可移植性

D.在语句“

Mydesign

design(.port1(port1),.port2

(port2));

”中,被引用的模块为Mydesign

模块

21.下列

Verilog

HDL语言中寄存器类型数据定义与注释矛盾的是(D)。

A.reg

[3:0]

sat

//sat

位寄存器

B.reg

cnt

//cnt

位寄存器

C.reg

[0:3]

mymem

[0:63]

//mymem

位寄存器的数组

D.reg

[1:5]

dig

//dig

位寄存器

22.下列关于非阻塞赋值运算方式(如

b<=a;)说法错误的是(B)。

A.块结束后才完成赋值操作

B.b的值立刻改变

C.在编写可综合模块时是一种比较常用的赋值方式

D.非阻塞赋值符“

<=”与小于等于符“

<=”意义完全不同,前者用于赋值操作,后者是关系运算符,用于比较大小。

23.下列关于阻塞赋值运算方式(如

b=a;)说法错误的是(A)。

A.赋值语句执行完后,块才结束

B.b的值在赋值语句执行完后立刻就改变的C.在沿触发的always

块中使用时,综合后可能会产生意想不到的结果

D.在“always”模块中的reg

型信号都采用此赋值方式

24.在下列

Verilog

HDL运算符中,属于三目运算符的是(C)。

A.&&

B.!

==

C.?:

D.===

25.当

a

<0

时,s的值是(C)。

assign

s=

(a

>=2)

?

:

(a

0)

?

2:

0;

A.0

B.1

C.2

D.其他

26.在Verilog

HDL

语言中的位拼接运算符是(A)。

A.{

}

B.C.()

D.'

27.下面语句中,信号

a

会被综合成(B)。

reg

[5:0]

a;

always

@(posedge

clk)

if

(ss>10)

a

<=

20;

else

if

(ss

15)

a

<=

30;

A.寄存器

B.触发器

C.连线资源

D.其他

28.下列程序段中无锁存器的是(C)。

B.always

@

(al

or

d)

begin

if(al)

q<=d;if(!al)

q<=!d;

end

A.always

@

(al

or

d)

begin

if(al)

q<=

d;

end

D.always

@

(sel[1:0]

or

a

or

b)

case(sel[1:0])

2'

b00:

q<=a;

2'

b11;

q<=b;

Endcase

C.always

@

(al

or

d)

begin

if(al)

q<=d;

else

q<=0;

end

29.程序段如下

:

begin:

reg[7:0]

tem;

count

=

0;

tem

=

rega;

while(tem)

begin

if(tem[0])

count

=

count

+1;

tem

=

tem

>>1;

end

end

如果

rega的值为

b10101011,则程序结束后,count的值是()。

A.4

B.5

C.6

D.7

30.多路选择器简称多路器,它的输入输出端口情况是()。

A.多输入,多输出

B.多输入,单输出

C.单输入,多输出

D.单输入,单输出

填空题

1.用

EDA

技术进行电子系统设计的目标是最终完成ASIC的设计与实现。

2.可编程器件分为

FPGA

CPLD。

3.随着

EDA

技术的不断完善与成熟,自顶向下的设计方法更多的被应用于

Verilog

HDL

4.设计当中。

5.目前国际上较大的PLD

器件制造公司有

Altera

Xilinx

公司。

6.完整的条件语句将产生

组合电路,不完整的条件语句将产生时序电路。

7.阻

=,非

为<=。

8.有限状态机分为

Moore

Mealy

两种类型。

9.EDA

缩写的含义为

电子设计自动化

(Electronic

Design

Automation)

10.状态机常用状态编码有

二进制、格雷码

和独热码。

11.Verilog

HDL

中任务可以调用

其他任务

和函数。

12.系统函数和任务函数的首字符标志为

$,预编译指令首字符标志为

#。

13.可编程逻辑器件的优化过程主要是对

速度

和资源的处理过程。

14.大型数字逻辑电路设计采用的IP

核有

IP、固

IP

和硬

IP。

15.IEEE

标准的硬件描述语言是

verilog

HDL

VHDL。

16.Verilog

语言规定的两种主要的数据类型分别是

wire(或

net)

reg

。程序模块中输入,输出信号的缺省类型为

wire(或

net)。

17.Verilog

语言规定了逻辑电路中信号的4

种状态,分别是

0,1,X

Z。其中

0

表示低电平状态,1

表示高电平状态,X

表示

不定态(或未知状态),Z

表示

高阻态。

18.块语句有两种,一种是

begin-end

语句,通常用来标志

顺序

执行的语句;

一种是

fork-join

语句,通常用来标志

并行

执行的语句。

19.写出表达式以实现对应电路的逻辑功能

20.下面两段代码中信号

in,q1,q2

q3的初值分别为

0,1,2

3,那么经过

个时钟周期后,左侧程序中

q3的值变成0,右侧程序中

q3的值变成2。

名词解释

1.EDA

2.ASIC

专用集成电路

3.RTL

寄存器传输级

4.FPGA

现场可编程门阵列

5.SOPC

可编程片上系统

6.CPLD

复杂可编程逻辑器件

7.LPM

参数可定制宏模块库

8.EDA

电子设计自动化

9.IEEE

电子电气工程师协会

10.IP

知识产权核

11.ISP

在系统可编程

12.LUT:查找表

13.HDL:硬件描述语言

14.RTL:寄存器传输逻辑

简答题

1.简要说明仿真时阻塞赋值与非阻塞赋值的区别。

非阻塞(non-blocking)

赋值方式

(b<=

a)

b的值被赋成新值

a的操作,并不是立刻完成的,而是在块结束时才完成;

块内的多条赋值语句在块结束时同时赋值;

硬件有对应的电路。

阻塞(blocking)

赋值方式

(b

=

a)

b的值立刻被赋成新值

a;

完成该赋值语句后才能执行下一句的操作;

硬件没有对应的电路,因而综合结果未知。

2.简述有限状态机

FSM

分为哪两类?有何区别?有限状态机的状态编码风格主要有哪三种?

FSM的三段式描述风格中,三段分别描述什么?

根据内部结构不同可分为摩尔型Moore状态机和米里型Mearly状态机两种。

摩尔型状态机的输出只由当前状态决定,而次态由输入和现态共同决定;米里型状态机的输出由输入和现态共同决定,而次态也由输入和现态决定。状态编码主要有三种:连续二进制编码、格雷码和独热码。

3.Verilog

HDL

语言进行电路设计方法有哪几种

①自上而下的设计方法(Top-Down)

②自下而上的设计方法(Bottom-Up)

③综合设计的方法

4.简述moore状态机和mealy状态机的区别

答:从输出的时序上看,Mealy机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。Moore机的输出则仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。

Moore型状态机:次态=f(现状,输入),输出=f(现状);

Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入);

5.简述FPGA内部主要结构及其功能

答:FPGA由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。

大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。查找表完成纯组合逻辑功能。查找表完成纯组合逻辑功能。嵌入式块RAM可以配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等存储结构。布线资源连通FPGA内部所有单元。

6.简述基于数字系统设计流程包括哪些步骤

?

包括五个步骤:

⑴、设计输入:

将设计的结构和功能通过原理图或硬件描述语言进行设计或编程,进行

语法或逻辑检查,通过表示输入完成,否则反复检查直到无任何错误。

⑵、逻辑综合:将较高层的设计描述自动转化为较低层次描述的过程,包括行为综合,逻辑综合和版图综合或结构综合,最后生成电路逻辑网表的过程。

⑶、布局布线:将综合生成的电路网表映射到具体的目标器件中,并产生最终可下载文件的过程。

⑷、仿真:就是按照逻辑功能的算法和仿真库对设计进行模拟,以验证设计并排除错误的过程,包括功能仿真和时序仿真。

⑸、编程配置:将适配后生成的编程文件装入到

PLD

器件的过程,根据不同器件实现编程或配置。

7.简述CPLD和FPGA主要区别。

答:CPLD:主要逻辑阵列块、宏单元、扩展乘积项和可编程连线阵列构成。程序掉电不丢失。

FPGA:FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM,程序掉电丢失,需重新加载。

8.EDA设计的基本设计过程。

答:图形输入HDL;文本输入;

综合;适配;时序仿真与功能仿真;编程下载;硬件测试

.9.解释什么是功能仿真?综合答:是直接对HDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求。仿真过程可不涉及任何具体器件的硬件特性。

10.简述Verilog描述的状态机的一般结构包含哪几个部分。

答:说明部分、主控时序进程、主控组合进程、辅助进程。

(1)

说明部分:使用parameter定义系统状态:

用于描述状态。

(2)

主控时序进程:负责状态机运转和在时钟驱动下负责状态转换的进程。

(3)

主控组合进程:根据外部输入的控制信号和当前状态的状态值确定下一状态(next_state)的取向。

(4)

辅助进程:用于配合状态机工作的组合进程或时序进程

11.简述

Verilog

HDL

编程语言中函数与任务运用有什么特点?

函数和任务都能独立完成相应电路功能,通过在同一模块中的调用实现相应逻辑电路功能。但它们又有以下不同:

⑴、函数中不能包含时序控制语句,对函数的调用,必须在同一仿真时刻返回。而任务可以包含时序控制语句,任务的返回时间和调用时间可以不同。

⑵、在函数中不能调用任务,而任务中可以调用其它任务和函数。但在函数中可以调用其它函数或函数自身。

⑶、函数必须包含至少一个端口,且在函数中只能定义

input

端口。任务可以包含

0个或任何多个端口,且可以定义

input、output

inout

端口。

⑷、函数必须返回一个值,而任务不能返回值,只能通过

output

inout

端口来传递执行结果。

12.简述

FPGA

CPLD

两种器件应用特点。

CPLD

FPGA

都是通用可编程逻辑器件,均可在EDA

仿真平台上进行数字逻辑电路设计,它们不同体现在以下几方面:

FPGA

集成度和复杂度高于

CPLD,所以

FPGA

可实现复杂逻辑电路设计,而

CPLD适合简单和低成本的逻辑电路设计。

⑵、FPGA

内主要由

LUT

和寄存器组成,倾向实现复杂时序逻辑电路设计,而

CPLD内主要由乘积项逻辑组成,倾向实现组合逻辑电路设计。

⑶、FPGA

工艺多为

SRAM、flash

等工艺,掉电后内信息消失,所以该类型需外配存储器,而

CPLD

工艺多为

EEPROM

等工艺,掉电后信息不消失,所以不用外配存储器。

⑷、FPGA

相对

CPLD

成本高,但都可以在内都镶嵌硬核和软核,实现片上系统功能。

13.画出下面程序综合出来的电路图。

always@(posedge

clk)

begin

q0<=~q2;

q1<=

q0;

q2<=

q1;

end

程序填空

1.下面是case语句编写的3-8译码器电路,将横线上的语句补上,使程序形成完整功能

module

decoder38

(sel,csout);

reg[7:0]

csout;

always@(③)

begin

case(④)

3'b000:csout=8'b11111110;

3'b001:csout=8'b11111101;

3'b010:csout=8'b11111011;

3'b011:csout=8'b11110111;

3'b100:csout=8'b11101111;

3'b101:csout=8'b11011111;

3'b110:csout=8'b10111111;

3'b111:csout=8'b01111111;

default:csout=8'b11111110;

endcase

end

endmodule

①input[2:0]

sel;

output[7:0]

csout;③

sel,csout

④sel

2.下面是通过

case语句实现四选一电路部分程序,将横线上的语句补上,使程序形成完整功能

module

mux41a(a,b,c,d,s1,s0,y);

input

a,b,c,d;

output

y;

always@

(a,b,c,d,s1,s0)

begin:MUX41

case(③)

2'b00:y=a;

2'b01:y=b;

2'b10:y=c;

2'b11:y=d;

:y=a;

endcase

end

endmodule

input

s1,s0;

reg

y;

{s1,s0}

default

3.下面是通过循环语句实现程序,用以统计一个8位二进制数中含1的数量,将横线上的语句补上,使程序形成完整功能。

module

num_1_e3_16(x,num);

output

[3:0]num;

reg

[3:0]num;

always@(③)

begin

num=0;

for(i=0;i<=7;i=i+1)

end

endmodule

input

[7:0]x;

integer

i;

x

if(x[i])

num=num+1;

4.下面是程序功能是一个具有同步置1,异步清零0的D触发器。端口说明

RST:异步清零CLK:时钟输入,SET:同步置1,EN:同步使能,D:数据输入,Q:数据输出

module

e5_3(RST,CLK,SET,EN,D,Q);

input

RST,CLK,SET,EN,D;

reg

Q;

always@(②)

begin

if(③)

Q<=0;

else

if(EN)

begin

if(④)

Q<=1;

else

Q<=D;

end

end

endmodule

output

Q;

posedge

CLK

or

negedge

RST

!RST

SET

对应RTL图完成Verilog程序。

module

e5_6(set,D,clk,en,reset,Q);

input

set,D,clk,en,reset;

reg

Q;

always@(②)

begin

if(reset)

else

if(set)

else

if(en)

end

endmodule

output

Q;

posedge

clk

or

posedge

reset

or

posedge

set

Q<=0;

Q<=1;

Q<=D;

编程题

1.试用

Verilog

HDL

描述一个带进位输入、输出的8

位全加器。

端口:

A、B

为加数,CI

为进位输入,S

为和,CO

为进位输出

2.设计一个4位4输入最大数值检测电路,其中,a、b、c和d为4位二进制数,输出为max。

module

max_in4(a,b,c,d,max);

input

[3:0]a,b,c,d;

output

[3:0]max;

wire

[3:0]max1=(a>=b)?a:b;

wire

[3:0]max2=(c>=d)?c:d;

assign

max=(max1>max2)?max1:max2;

endmodule

3.编写一个带异步清零、异步置位的D

触发器。

端口:

CLK

为时钟,D

为输入,CLK

为清零输入端,SET

为置位输入端;

Q

输出端。

4.设计一个带有异步复位控制端和时钟使能控制端的10进制计数器。

端口设定如下:

输入端口:

CLK

:时钟,RST:复位端,EN:时钟使能端,LOAD

:置位控制端,DIN

:置位数据端;输出端口:

COUT:进位输出端,DOUT

:计数输出端

5.编写一个4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复

位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为

6.填写完成一个8-3线编码器的真值表(5分),并写出其verilog程序

-3线编码器真值表

en

b

y0y1y2

00000000

000

00000010

001

00000100

010

00001000

011

00010000

00100000

01000000

10000000

0

xxxxxxxx

高阻态

7.用IF语句编写一个四选一电路,要求输入d0~d3,s为选择端,输出y。

8.现有输入信号是一个占空比位50%的方波,用VHDL设计一个时钟的5分频

电路,输出为占空比位20%,写出VHDL代码。

9.现有输入信号是一个占空比位50%的方波,用VHDL设计一个时钟的5分频

电路,输出为占空比位50%,写出VHDL代码。

10.试用

verilog

语言描述:图示为一个

位移位寄存器,是由四个

D

触发器

(分别设为

U1,U2,U3,U4)构成的。其中

seri_in

是这个移位寄存器的串行输入;

clk

为移位时脉冲输入;clr

为清零控制信号输入;

Q[1]~Q[3]

则为移位寄存器的并行输出。

11.设计一个带复位端且对输入时钟

clk

进行二分频模块,并画出仿真波形。

module

m2(out,clk,reset);

input

reset,clk;

output

out;

reg

out;

always

@(negedge

clk)

begin

if(reset)

out<=0;

else

out<=~out;

end

endmodule

12.设计一带异步复位端、异步置数段(低电平有效)的四位加法计数器,时钟

clk上升沿有效),复位信号

clr,置数信号

load、输入数据

data、输出

qout

。并画出仿真波形。

module

adder_4(qout,clr,clk,load,data);

output[3:0]

qout;

input[3:0]

data;

input

load,clr,clk;

reg[3:0]

qout;

always

@(posedge

clk

or

negedge

load

or

negedge

clk)

begin

if(!load)

qout<=data;

else

if(!clr)

qout<=0;

else

qout<=qout+1;

end

endmodule

13.试设计一个

3/8

译码器,规定模块定义为

module

Decoder(Out,In,En),其中

Out为译码器输出,In

为译码器输入,En

为译码使能输入。要求:写出

3/8

译码器

Verilog

HDL设计程序并注释;

module

decoder(Out,In,En);

(2

分)

output

[7:0]

out;

input

[2:0]

in;

input

en;

//IO

定义

(3

分)

reg

[7:0]

out;

always

@

(In

or

En)

begin

if(En

==

0)

//若

En

为低电平,3

输出无效电平

(2

分)

Out

=

b0;

else

//

En

为高电平,3/8

译码

(3

分)

case(in)

b000:

Out

=

b00000001;

//0

b001:

Out

=

b00000010;

//1

b010:

Out

=

b00000100;

//2

b011:

Out

=

b00001000;

//3

b100:

Out

=

b00010000;

//4

b101:

Out

=

b00100000;

//5

b110:

Out

=

b01000000;

//6

b111:

Out

=

b10000000;

//7

endcase

end

设计一个

EDA-Verilog HDL期末复习题总结必过
TOP