导航菜单

南信大2020

一、填空题 (每空1分,共20分)

1、抽象层次描述包括4层,分别是   行为级   、  数据流  、   门级  和开关级。

2、变量是在程序运行过程中其值可以改变的量。变量分为两种,一种类型为  线网  类型,一般指示硬件电路的物理连接,另一种是  寄存器型 对应的是具有状态保持作用的存储元件。

3、Verilog采用四值逻辑系统0表示低电平,1表示高电平,x表示  不确定值   Z表示  高阻值     。

4、状态机按照输出逻辑可以分为两种,一种称为 米勒 状态机,其时序逻辑的输出不仅取决于当前状态,还取决于输入;另一种称为  摩尔 状态机序其时序逻辑的输出只取决于当前状态。

5、在Verilog语言中常用指明位数的数字,请计算完成下列等式:

8’d120 = 8’h  78    = 8’b 01111000

6、Verilog的端口具有以下三种类型:   input   、   output   、  inout  。

7、等价操作符包括逻辑相等和case相等,若A=4’b1010,B=4’b1101,C= 4'blxxz, D= 4 b1xxz, E=4'b1xxx,则 A==C的结果为逻辑值x,A==B的结果为逻辑值0,C===D的结果为逻辑值1 。

8、拼接操作符可以将多个操作数拼接在一起,若A=1’b1,B=2’b00,c=2’b10,则

Y={A , B, C, 3’b001}的结果为  9’b10010001 

Y={4{A},2{B},C}的结果为  10’b1111000010 

9、为了实现任务的同时调用,Verilog通过在task关键字前增加  automatic  关键字,实现自动任务。

二、选择题(每题2分,共20分)

1、在 Verilog HDL的逻揖运算中,设A=8’b11010001,B=8’b00011001,则表达式“A&B”的结果为    A 

A. 8’b00010001B. 8’b11011001 C. 8’b11001000 D. 8’b00110111

2、`timescale用于说明时间尺度,语句`timescale lns/10ps中程序中的仿真精度为多少  C  

A. 1ns B.1psC. 10psD. 10ns

3、如果在数字说明中没有指定基数,那么默认表示为十进制数。如果没有指定位宽度,则默认的位宽度与仿真器和使用的计算机有关(最小为  C  位)

A. 8  B.16 C. 32D. 64

4、Verilog HDL定义了一系列保留字,叫做关键词,指出下列哪一个不属于关键词(  B  )

A. input B.WireC. beginD. task

5、端口没有定义数据类型时,缺省为类型  B  

A. reg B. wire C. tri D.不可用

6、寄存器类型在赋新值以前保持  D  

A. 0 B. 1 C. X D.原值

7、从模块内部来讲,输入端口应该是  A  

A. 线网型B. 寄存器型C. 线网或寄存器型 D.以上均不对

8、从模块外部来讲,输入端口应该是  C  

A. 线网型B. 寄存器型C. 线网或寄存器型 D.以上均不对

9、由于线网类型代表的是物理连接线,因此它不存贮逻辑值,必须由器件所驱动。当一个wire类型的信号没有被驱动时,缺省值为  D  

A. 0 B. 1 C. X D. Z

10、对于模块module fulladd(sum, cout, a, b, cin)来说,采用命名端口连接法,下述哪种方式可以调用该模块  D  

A. fulladd f4(sum, cout, a, b, cin)

B. fulladd f4(SUM, COUT, A, B, CIN)

C. fulladd f4(.SUM(sum), .COUT(cout), .A(a), .B(b), .CIN(cin))

D. fulladd f4(.sum(sum), .cout(cout), .a(a), .b(b), .cin(cin))

三、问答题(每题4分,共20分)

1、Verilog设计中模块的调用等都需要遵守端口连接规则,请详细论述该规则的细节。

输入端口:从模块内部来讲,输入端口必须为线网数据类型,从模块外部来看,输入端口可以连接到线网或reg数据类型的变量

输出端口:从模块内部来讲,输出端口可以是线网或reg数据类型,从模块外部来看,输出必须连接到线网类型的变量,而不能连接到reg类型的变量。

输入/输出:从模块内部来讲,输入/输出端口必须为线网数据类型,从模块外部来看,输入/输出端口也必须连接到线网类型的变量。

位宽匹配:Verilog允许端口的内外两个部分具有不同的位宽。

未连接端口:允许模块实例的端口保持未连接的状态。

2、连续赋值和过程赋值语句的特点是什么?简单分析一下两种语句的区别。

连续赋值语句是Verilog数据流建模的基本语句,用于对线网进行赋值,它等价于门级描述,然而是从更高的抽象角度来对电路进行描述,连续赋值语句必须以关键词assign开始

过程赋值语句的更新对象是寄存器,整数,实数或时间变量,这些类型的变量在被赋值后,其值将保持不变,直到被其他过程赋值语句赋予新值。

连续赋值语句总是处于活动状态,任意一个操作数的变化都会导致表达式的重新计算以及重新赋值,但过程赋值语句只有在执行到的时候才会起作用。

3、块语句包括两种类型:顺序块和并行块,请分别描述它们两者的特点。

顺序块中的语句是一条接一条按顺序执行的,只有前面的语句执行完成之后,才能执行后面的语句(除了带有内嵌延迟控制的非阻塞赋值语句)如果语句包括延迟或事件控制,那么延迟总是相对于前面那条语句执行完成的仿真时间的。

并行块内的语句并发执行,语句执行的顺序是由各自语句中的延迟或事件控制决定的,语句中的延迟或事件控制是相对于块语句开始执行的时刻而言的。

4、在Verilog中,任务和函数是不同的,请对两者的不同点进行概括。

任务:可以支持多种目的,能计算多个结果值,这些结果值只能通过被调用的任务的输出或总线端口输出。能够启动其他任务或函数。可以没有或有多个任何类型的变量。没有返回值。任务可以定义自己的仿真时间单位。

函数:通过返回一个值来响应输入信号的值,一般将函数作为表达式中的操作符,这个操作的结果值就是这个函数的返回值。不能启动任务。需要至少一个输入变量。有一个返回值。函数的仿真——仿真时间为零。

5、请解释下列名词,给出中文解释和英文全称

HDL:硬件描述语言 Hardware Description Language

RTL:寄存器传输级 Register Transfer Level

FPGA:现场可编程  Field Programmable Gate Arrays

VLSI:超大规模集成电路 Very Large Scale Integrated

EDA:电子设计自动化 Electronic Design Automation

三、程序题  (共 40 分)

1、已知D触发器的模块描述为D_FF(q, d, clk, clr),请按照下图给出T触发器的设计描述(用完整的Verilog设计块来实现)。(5分)

module T_FF(q,clk,reset);output q;input clk,reste;wire d;D_FF dff0(q,d,clk,reset);not nl(d,q);endmodule

2、根据下图用Verilog语言的门建模方式实现SR锁存器。同时写出设计块(SR_latch)和激励块(Top)。(5分)

module SR_latch(Q,Qbar,Sbar,Rbar);output Q,Qbar;input Sbar,Rbar;nand nl(Q,Sbar,Qbar);nand nl(Qbar,Rbar,Q);endmodulemodule Top;wire q,Qbar;reg set,reset;SR_latch ml(q,qbar,~set,~reset);

3、读下面的程序,画出该程序的时序图(包括x,y,a,b,m)。(5分)

module stimulusreg x,y, a,b,m;initialm=1’b0;initialbegin #5 a=1’b1#25 b=1’b0;endinitialbegin#10 x=1’b0;#25 y=1’b1;endinitial#50 finishendmodule

4、读下面程序回答问题(5分)

reg [3:0] encoding:

integer state;

case (encoding)

4’b1xxx : next_state = 3;

4’bx1xx : next_state = 2;

4’bxx1x : next_state = 1;

4'bxxx1 : next_state = 0;

default : next_state = 0:

endcase

如果输入encoding的值为4’b10xz,next_state为多少?  3

如果输入encoding的值为4’b00xz,next_state为多少?  0

5、请用行为级建模设计四选一多路选择器。注意该选择器输入和输出的位宽均为2位。只需要实现设计块。(5分)

module mux4_to_l (out,i0,il,i2,i3,sl,s0)。

6、用行为级设计可异步复位,同步置数的四位计数器。clear上升沿时复位,N_set下降沿时置数,数值为N_in。(5分)

module counter(Q, clock, clear, N_set, N_in)

7、请按照下面的状态图,写出Verilog状态机模块,其中In输入,out为输出,当输入满足条件(S0,S1,S2)实现状态转移,不满足条件则实现状态保持。实现完整的设计块程序(注意输入输出位宽)。(10分)

module fsm(clk, rst, ina,out);input clk,rst, ina; //定义时钟、复位和输入信号output out; //定义输出控制信号的端口reg out; //定义状态寄存器parameter s0 = 3'b00,s1 =3'b01,s2 =3'b10, s3=3'b11; //定义状态变量参数值reg [0:1] state;always @ (posedge clk or negedge rst)if (!rst)begin //定义复位后的初始状态和输出值state

相关推荐: