南信大2020-2021第一学期FPGA/CPLD期末试卷

一、填空题 (每空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=4b1010,B=4b1101,C= 4'blxxz, D= 4 b1xxz, E=4'b1xxx,则 A==C的结果为逻辑值x,A==B的结果为逻辑值0,C===D的结果为逻辑值1

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

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

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

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

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

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

A. 8b00010001 B. 8b11011001 C. 8’b11001000 D. 8’b00110111

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

A. 1ns B.1ps C. 10ps D. 10ns

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

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

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

A. input B.Wire C. begin D. 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);
endmodule
module Top;

wire q,Qbar;
reg set,reset;
SR_latch ml(q,qbar,~set,~reset);

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

module stimulus
reg x,y, a,b,m;
initial
m=1’b0;
initial
begin 
#5 a=1’b1
#25 b=1’b0;
end
initial
begin
#10 x=1’b0;
#25 y=1’b1;
end
initial
#50 finish
endmodule

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

reg [3:0] encoding:

integer state;

case (encoding)

4’b1xxx : next_state = 3;

4bx1xx : next_state = 2;

4bxx1x : next_state = 1;

4'bxxx1 : next_state = 0;

default : next_state = 0:

endcase

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

如果输入encoding的值为4b00xz,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<=s0;
out =0;
else
case(state)
s0:begin state<=(ina)?s1:s0;out=0;end
s1:begin state<=(ina)?s2:s0;out=0;end
s2:begin state<=(ina)?s3:s0;out=0;end
s3:begin state<=(ina)?s3:s0;out=1;end
endcase
end
endmodule
  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好,我是AI语言助手,以下是对您的回复: 20201022-成信大-c语言程序设计-20201学期《c语言程序设计b》是一门面向大学生的C语言程序设计课程,主要教授C语言的基础知识和编程技巧,包括数据类型、运算符、流程控制语句、函数、指针、数组、结构体等内容。通过本课程的学习,学生可以掌握C语言的基本语法和编程思想,提高编程能力和解决问题的能力,为以后的编程学习和工作打下坚实的基础。 ### 回答2: 20201学期的《c语言程序设计b》是一个深入学习C语言的课程,教授的是C语言的高级应用。在本次课程中,学生将会进一步学习C语言的语法、程序设计思路以及具体的编码实践。 首先,学生将会学习C语言中的函数、指针、结构体、联合体、枚举等高级概念。这些概念是C语言面向对象编程中至关重要的概念,也是学生在日后编写复杂程序时所必须了解的内容。此外,在学习这些概念的同时,学生还将学习如何使用宏定义和预编译指令来进一步优化程序性能。 其次,学生将会进行具体的编码实践,包括基于C语言的数据结构设计和实现、字符串处理、文件操作、网络编程等等。这些项目和实践将会提供给学生大量的机会来将所学的概念应用到具体的场景中,帮助学生更深入地理解C语言的应用。 此外,学生还将参加课堂讨论、代码评审等活动,通过这些活动来提高自己的编程能力、代码质量和团队协作能力。教师也将会给学生提供详细的反馈,帮助他们改善自己的问题和提高自己的能力。 总之,《c语言程序设计b》是一门非常重要的课程,对于学生日后从事计算机编程工作具有非常重要的意义。通过学习这门课程,学生将会大幅提高自己的编程能力、透彻理解C语言并将其应用到实际工作中。 ### 回答3: 成信大-20201学期《c语言程序设计b》是一门针对深入学习C语言的高级课程,内容涵盖了高级数据结构、算法设计、动态内存分配、文件操作等等。 在这门课程中,学生将通过实践和理论学习,掌握C语言的高级编程技巧和策略。课程的重点之一是高级数据结构,包括链表、树、哈希表、图等等,学生将深入理解数据结构的实现和应用。 除此之外,课程还将涉及算法设计和分析,学生将学习如何设计出高效的算法,并进行时间和空间复杂度分析。动态内存分配和文件操作也是这门课程的重点,这些技术对于C语言程序设计来说非常重要。 学生在课程中还将开展实践项目,以实现理论学习。通过项目实践,学生将在实际中应用学到的技术,发现其中存在的问题并解决。 总之,成信大-20201学期《c语言程序设计b》是一门非常高级的、面向深度学习的课程。通过系统学习和实践的方式,学生将深入掌握C语言的高级编程技巧。这门课程对于想要深入学习C语言的学生来说是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值