0
点赞
收藏
分享

微信扫一扫

期中考试【Verilog】


期中考试【Verilog】

  • ​​前言​​
  • ​​推荐​​
  • ​​期中考试​​
  • ​​一. 单选题(共10题)​​
  • ​​二. 填空题(共5题)​​
  • ​​三. 简答题(共3题)​​
  • ​​四. 其它(共4题)​​
  • ​​最后​​

前言

编写于2022/11/30 13:30

以下内容源自Verilog期中试题
仅供学习交流使用

考试时间 8:40~10:00

首次做:不翻书 9:20左右做完
再次检查:翻书 9:50左右做完
题目难度:不是很难,尽量不翻书

推荐

​​第四章 数字逻辑电路设计方法【Verilog】​​

期中考试

题量:22满分:100
作答时间: 11-30 08:41至11-30 10:00

一. 单选题(共10题)

1.(单选题)门级建模的类型有( )
A. or和AND
B. OR和and
C. and和or
D. A、B、C都正确

我的答案: C 必须是小写
正确答案: C

2.(单选题)
VerilogHDL使用的逻辑是( )
A. 二值逻辑
B. 四值逻辑
C. 三值逻辑
D. 八种强度

我的答案: B 0、1、x、z
正确答案: B

3.(单选题)具有多个输出端口的门是( )
A. and
B. or
C. nor
D. not

我的答案: D 基本门电路这个not很特殊,多输出门 另外还有缓存器buf
正确答案: D

4.(单选题)reg[15:0] mem[127:0] 正确的赋值是( )
A. mem[5]=16’ d0;
B. mem=16’ d0;
C. mem[15][127]=1’ b1;
D. mem[5][3:0]=16’ d1

我的答案: A 位宽 个数
正确答案: A

5.(单选题)
下列标识符中那个是合法的( )
A. \din
B. ALWAYS
C. _out*
D. $abc

我的答案: D 我就这个没有检查,以为自己肯定对
正确答案: B 结果,就这个错了
合法标识符只能有数字、字母、下划线、美元符组成
区分大小写
第一个字符只能是字母或下划线

6.(单选题)在verilog语言中,a=4’b1011,那么 &a=( )
A. 4’b1011
B. 4’b1111
C. 1’b1
D. 1’b0

我的答案: D 归约与
正确答案: D

7 (单选题)在verilog语言中整型数据与( )位寄存器数据在实际意义上是相同的。
A. 8
B. 16
C. 32
D. 64

我的答案: C 整型数据4个字节
正确答案: C

8.(单选题)assign连续赋值语句主要用于对( )类型变量赋值。
A. wire
B. reg
C. integer
D. time

我的答案: A
正确答案: A

9.(单选题)
verilog语言内部已使用的词称为关键字或保留字,( )不是关键字。
A. output
B. tri
C. Module
D. begin

我的答案: C
正确答案: C

10.(单选题)
过程赋值语句,多用于对( )类型语句赋值。
A. reg
B. wire
C. net
D. integer

我的答案: A
正确答案: A

二. 填空题(共5题)

11.(填空题)
verilog语言规定的两种主要物理数据类型分别是____________和_____________,程序模块中输入输出信号的缺省类型为___________________。

我的答案:
(1) 连线型
(2) 寄存器型
(3) wire
正确答案:
(1) 连线类型;寄存器类型
(2) 寄存器类型;连线类型
(3) wire

12.(填空题)
块语句有两种,一种是begin-end语句,通常用来标志________________执行的语句;另一种是fork-join语句,通常用来标志________________执行的语句。

我的答案:
(1) 串行
(2) 并行
正确答案:
(1) 顺序
(2) 并行

13.(填空题)
写出表达式以实现对应电路的逻辑功能

assign F=__________________________________。

期中考试【Verilog】_Verilog

我的答案:
(1) (A&B)|(C与非D)异或E 我的想法是写成(AB+(–CD))⊕E ,数字电路的表达式有点符号打不出来,用了汉字代替
正确答案:
(1) ((A&B)|(~ (C&D)))^ E;(A&B|(~ (C&D)))^E

  1. (填空题)
    根据图中输入输出关系将verilog模块定义补充完整,其中信号A为5比特宽度,其余信号为1比特宽度。

我的答案:
(1) output[4:0] A
(2) input B
(3) inout C
正确答案:
(1) input B;
(2) inout C ;
(3) output [4:0] A;

15.(填空题)
1、 假设某4比特位宽的变量a的值为4’b1010,计算下列运算表达式的结果:

&a=_______________________;

{3{a}}=____________________;

!a=_______________________。

我的答案:
(1) 1’b0 归约与
(2) 12’b101010101010 复制
(3) 0 逻辑非
正确答案:
(1) 0;1’b0
(2) 12’b101010101010
(3) 0;1’b0

三. 简答题(共3题)

16.(简答题)请解释下列名词:HDL,EDA,FPGA,IP,RTL。

看书

HDL:是一种高级程序设计语言,通过对数字电路和系统的语言描述,可以对数字集成电路进行设计和验证
EDA:一些公司提供功能强大的电子设计自动化工具
FPGA:现场可编程门阵列
IP核:具有知识产权核的集成电路芯核的总称
RTL:数字电路设计和代码编码阶段

17.(简答题)always语句和initial语句的关键区别是什么?能否相互嵌套?

initial:在时刻0开始,只能执行一次
always:在触发条件下,便可执行
不能相互嵌套

18.(简答题)
分别画出下面两个程序综合出的电路图(其中d为输入)。

阻塞赋值=和非阻塞赋值<=的区别


input d,clk;
output q0,q1,q2;
reg q0,q1,q2;
always@(posedge clk)
begin
q0<=d;
q1<= q0;
q2<= q1;
end



input d,clk;
output q0,q1,q2;
reg q0,q1,q2;
always@(posedge clk)
begin
q0= d;
q1= q0;
q2= q1;
end

我的答案:

期中考试【Verilog】_赋值_02

我少画了一个D触发器输出q0

期中考试【Verilog】_Verilog_03

期中考试【Verilog】_fpga开发_04

测试

module test1(q0,q1,q2,clk,d);
input d,clk;
output q0,q1,q2;
reg q0,q1,q2;
always@(posedge clk)
begin
q0<=d;
q1<= q0;
q2<= q1;
end
endmodule

module test2(q0,q1,q2,clk,d);
input d,clk;
output q0,q1,q2;
reg q0,q1,q2;
always@(posedge clk)
begin
q0 = d;
q1 = q0;
q2 = q1;
end
endmodule

module test_tb;
reg d,clk;
wire q0,q1,q2;

test1 u1(q0,q1,q2,clk,d);
test2 u2(q0,q1,q2,clk,d);

always
#5 clk = ~clk;
initial
begin
clk=0;
#10 d=0;
#50 d=1;
end
endmodule

期中考试【Verilog】_赋值_05

四. 其它(共4题)

19.(其它)
设计一个带复位端且对输入时钟clk进行八分频的电路模块。并设计相应的测试电路。
设计要求:复位信号为同步、高电平有效,时钟的下降沿触发。

module dclk8(out, clk, clr); 
output [2:0] out;
input clk,clr;
reg [3:0] out;//少了
always @ (negedge clk) //negedge
if (clr)
out<=3'b000;
else
if (out==3'b111)
out<=3'b000;
else
out<=out+1;
endmodule

module dclk8_tb; 
wire[2:0] out;
reg clk,clr;

dclk8 u1(out, clk, clr);

always
#5 clk = ~clk;
initial
begin
clk=0;
clr=1;
#10 clr=0;
#15 clr=1;
#10 clr=0;//应该再补个clr=0
end
endmodule

仿真结果:如下

期中考试【Verilog】_赋值_06

只有计数器,不能实现分频

修改

//设计一个带复位端且对输入时钟clk进行八分频的电路模块。并设计相应的测试电路。
//设计要求:复位信号为同步、高电平有效,时钟的下降沿触发。
/*
module dclk8(out, clk, clr);
output[3:0] out;
input clk,clr;
reg [3:0] out;
always @ (negedge clk) //negedge
if (clr)
out<=3'b000;
else
if (out==3'b111)
out<=3'b000;
else
out<=out+1;

endmodule
*/

module dclk8(clk8, clk, clr);
output clk8;
input clk,clr;
reg clk8;
reg [3:0] out;
always @ (negedge clk) //negedge
if (clr)
out<=3'b000;
else
if (out==3'b111)
out<=3'b000;
else
out<=out+1;

always @ (out)
if (clr)
clk8<=0;
else
if (out==3'b111)
clk8=~clk8;


endmodule

/*
module dclk8_tb;
wire[2:0] out;
reg clk,clr;

dclk8 u1(out, clk, clr);

always
#5 clk = ~clk;
initial
begin
clk=0;
clr=1;
#10 clr=0;
#15 clr=1;
#10 clr=0;//应该再补个clr=0
end
endmodule
*/

module dclk8_tb;
wire clk8;
reg clk,clr;

dclk8 u1(clk8, clk, clr);

always
#5 clk = ~clk;
initial
begin
clk=0;
clr=1;
#10 clr=0;
#15 clr=1;
#10 clr=0;//应该再补个clr=0
end
endmodule

期中考试【Verilog】_Verilog_07

20.(其它)
试用Verilog HdL描述一个4位的全加器,并编写测试代码。(端口A、B为加数,CI为进位输入,SUM为和,CO为进位输出。)

module adder4(sum, co, a, b, ci);
output[3:0] sum;
output co;
input[3:0] a, b;
input ci;
assign {co,sum}=a+b+ci;
endmodule

module adder4_tb;
wire[3:0] sum;
wire co;
reg[3:0] a,b;
reg ci;

adder4 u4(sum, co, a, b, ci);//我把实例化忘了

initial
begin
a=4'b0000;b=4'b0000;ci=0;
#10 a=4'b0001;b=4'b0001;ci=1;
#10 a=4'b0011;b=4'b0011;ci=0;
#10 a=4'b0111;b=4'b0111;ci=1;
#10 a=4'b1111;b=4'b1111;ci=0;
end
endmodule

期中考试【Verilog】_Verilog_08

21.(其它)
设计一奇偶校验位生成电路,输入八位总线信号bus,输出奇校验位odd,偶校验位even。并设计相应的测试电路。

module checker8 (odd,even,bus); 
output odd,even;
input [7:0] bus;
assign even=^bus;
assign odd=~even;
endmodule

module checker8_tb; 
wire odd,even;
reg [7:0] bus;

checker8 u8(odd,even,bus);//我把实例化忘了

initial
begin
bus=8'b00000000;
#10 bus=8'b00000001;
#10 bus=8'b10000000;
#10 bus=8'b11111111;
end
endmodule

期中考试【Verilog】_fpga开发_09

22.(其它)
请用Verilog Hdl设计一个十进制的同步减法计数器,要求具有复位和置数功能,并编写测试代码。

module counter10(count, clk, reset,load,d); 
output [3:0] count;
input clk,reset,load;
input [3:0] d;
reg [3:0] count;
always @ (posedge clk)
if (!reset) count<=4'b0000;
else if (load) count<=d; //这个又少了if
else
if (count==4'b0000) count<=4'b1001;
else count<=count-1;
endmodule

module counter10_tb; 
wire [3:0] count;
reg clk,reset,load;
reg [3:0] d;

counter10 c10(count, clk, reset,load,d);//这个没有忘

always
#5 clk = ~clk;

initial
begin
clk=0;
reset=1;
load=1;
d=4'b1001
#5 load=0;
#50 reset=0;
#50 load=1;d=4'b0000;
# 5 load=0;
end //又忘了个end

endmodule

修改测试代码

module counter10_tb; 
wire [3:0] count;
reg clk,reset,load;
reg [3:0] d;

counter10 c10(count, clk, reset,load,d);

always
#5 clk = ~clk;


initial
begin
clk=0;
reset=1;
load=1;
d=4'b1001;
#10 load=0;
#50 reset=0;
#10 reset=1;load=1;d=4'b0000;
#10 load=0;
end //又忘了个end

/*
initial
begin
clk=0;
reset=0;
load=0;
#10
reset=1;
load=1;
d=4'b1001;
#10
load=0;

end //又忘了个e
*/
endmodule

期中考试【Verilog】_fpga开发_10

最后

总结:
不够细心
本来应该能答对的
有可能是手跟不上脑子吧

2022-11-30 15:39

这篇博客能写好的原因是:站在巨人的肩膀上

这篇博客要写好的目的是:做别人的肩膀

开源:为爱发电

学习:为我而行


举报

相关推荐

0 条评论