基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第五章:触发器和寄存器

简介: 基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第五章:触发器和寄存器

1多选(3分)

选出正确的锁存器描述

得分/总分

A.

module Latch
( input D,E,
output reg Q);
always@(E or D)
if(E==1)
Q=D;
else
Q=0;
endmodule

B.

module Latch
( input D,E,
output reg Q);
always@(E or D)
if(E==1)
Q=D;
endmodule

C.

module Latch
( input D,E,
output reg Q);
always_latch
if(E)
Q=D;
endmodule

D.

module Latch
( input D,E,
output reg Q);
always@(E or D)
if(E==1)
Q=D;
else
Q=Q;
endmodule

正确答案:B、C、D

2多选(3分)

‎选出正确的触发器描述

得分/总分

A.

module D_FF
( input D,Clock,
 output reg Q);
 always_ff
   Q <= D;   
endmodule

B.

module D_FF
( input D,Clock,
 output reg Q);
 always@(Clock,D)
   Q <= D;   
endmodule

C.

module D_FF
( input D,Clock,
 output reg Q);
 always_ff@(posedge Clock)
   Q <= D;   
endmodule

D.

module D_FF
( input D,Clock,
 output reg Q);
 always@(posedge Clock)
   Q <= D;   
endmodule

正确答案:C、D

3多选(3分)

‌选出正确的带复位控制的触发器

得分/总分

A.

module D_FF
( input D,Clock,reset,
 output reg Q);
 always@(posedge Clock or  reset)
  if ( reset==0)
   Q <=0;
   else
   Q <=D; 
endmodule

B.

module D_FF
( input D,Clock,reset,
 output reg Q);
 always@(posedge Clock or posedge reset)
  if ( reset==1)
   Q <=0;
  else
   Q <=D; 
endmodule

C.

module D_FF
( input D,Clock,reset,
 output reg Q);
 always@(posedge Clock)
  if ( reset==1)
   Q <=0;
   else
   Q <=D; 
endmodule

D.

module D_FF
( input D,Clock,reset,
 output reg Q);
 always@(posedge Clock or posedeg reset)
  if ( reset==0)
   Q <=0;
   else
   Q <=D; 
endmodule

正确答案:B、C

4多选(3分)

选出具有使能控制的触发器或寄存器

得分/总分

A.

module D_ff
(  input D,CLK,
 output reg Q );
 always@(posedge CLK)
  begin
      Q <= D;
   end 
endmodule

B.

module D_ff
(  input CLK,load,
 input [3:0] D,
 output reg [3:0] Q );
 always@(posedeg CLK)
  begin  
    if (load)
      Q <= D;
   end 
endmodule

C.

module D_ff
(  input D,CLK,En,
 output reg Q );
 always@(posedge CLK)
  begin  
    if (En)
     Q <= D;
   end 
endmodule

D.

module D_ff
(  input D,CLK,En,
 output reg Q );
wire gateclk;
assign gateclk=(En&CLK);
 always@(posedge GATECLK)
  begin  
    if (En)
      Q < =D;
   end 
endmodule

正确答案:B、C、D

5多选(3分)

下面两段代码中信号in,q1,q2和q3的初值分别为0,1,2和3,那么经过1个时钟周期后,always块1中q3的值变成_________,always块2中q3的值变成________。

程序块1

always @(posedge clk)   
 begin     
 q1 = in; 
 q2 = q1; 
 q3 = q2;  
 end 

程序块2

always @(posedge clk)   
 begin     
 q1  <= in;     
 q2  <= q1; 
 q3  <= q2;  
 end

得分/总分

A.always块1中q3的值变成0

B.always块2中q3的值变成0

C.always块2中q3的值变成2

D.always块1中q3的值变成2

正确答案:C、D你选对了

6判断(2分)

同步复位和异步复位的区别是是否需要等待时钟

只要复位信号有效,触发器立即清零,无需等待时钟触发边沿到来的是同步复位;

复位信号有效,并且时钟的有效边沿到来时,才能清零的是异步复位。

得分/总分

A.×

B.√

正确答案:A

解析:同步复位必须等待时钟信号到来

7判断(2分)

复位通常是清零,也时候也会置1,主要是使触发器处于一个确定的初始状态

得分/总分

A.√

B.×

正确答案:A

8判断(2分)

阻塞赋值适用于描述电平敏感的电路,例如组合逻辑电路和锁存器;

非阻塞赋值适用于描述边沿敏感的电路,例如触发器;

当输出没有反馈到输入时,两者没有区别,

一个语句块内可以同时使用阻塞赋值和非阻塞赋值。

得分/总分

A.√

B.×

正确答案:B

解析:一个语句块内只能使用一种类型的赋值语句

9判断(2分)

以下描述语句得到的结果一定是 a=1,b=1,c=1

begin

a <=1;

b <=a;

c <=b;

end

得分/总分

A.×

B.√

正确答案:A

解析:=是阻塞赋值,如果使用=,则结果一定是a=1,b=1,c=1; <=是非阻塞赋值,除了a=1,b会被赋值为a前一刻的值,c会被赋值为b前一刻的值

10判断(2分)

寄存器就是触发器,或者説是由触发器构成的。

得分/总分

A.√

B.×

正确答案:A

11判断(2分)

锁存器对脉冲电平敏感,在特定输入脉冲电平(高电平或低电平)作用下随输入改变状态;

触发器对脉冲边沿敏感,在时间脉冲的上升沿或下降沿变化瞬间改变状态。

(考察锁存器和触发器的区别)

得分/总分

A.√

B.×

正确答案:A

12填空(2分)

使用远程实验平台虚拟面板验证单端口寄存器堆的功能

寄存器能够装入数据的条件是时钟使能信号Load为________(0/1)并且________(有/没有)时钟上升沿。 如果Load=0,有时钟上升沿,寄存器的内容将________(更新/保持不变)。

注意,三个填空的答案之间用#隔开,例如:0#有#更新

得分/总分

1#有#保持不变

2.00/2.00

正确答案:1#有#保持不变

13填空(2分)

‌使用远程实验平台虚拟面板验证单端口寄存器堆的功能

执行下面的写操作操作,给寄存器堆内各个寄存器写入相应的值,完成后,寄存器R2的值应为__________(5/6/7/8)。

‌D INDEX Load CLK
‌0101 00 1 产生一个
‌0110 01 1 产生一个
‌0111 10 1 产生一个
‌1000 11 1 产生一个

得分/总分

7

2.00/2.00

正确答案:7

14填空(2分)

使用远程实验平台虚拟面板验证单端口寄存器堆的功能

读出各个寄存器的值,比较与写操作中保存在寄存器中的值是否一致。单端口寄存器读操作_________(需要/不需要)等待时钟到来。单端口寄存器_________(可以/不可以)同时写入和读出不同寄存器的值,因为它读操作和写操作地址端口index是________(独立的/共用的)。

得分/总分

不需要#不可以#共用的

2.00/2.00

正确答案:不需要#不可以#共用的

15填空(2分)

‌使用远程实验平台虚拟面板验证三端口寄存器堆的功能

执行下面的写操作操作,给寄存器堆内各个寄存器写入相应的值,完成后, 读出各个寄存器的值,比较与写操作中保存在寄存器中的值是否一致, 寄存器R3的值应为__________(5/6/7/8)。

‍

D WA WE CLK
‌0101 00 1 产生一个
‍0110 01 1 产生一个
‌0111 10 1 产生一个
‌1000 11 1 产生一个

得分/总分

8

2.00/2.00

正确答案:8

16填空(2分)

使用远程实验平台虚拟面板验证三端口寄存器堆的功能

三端口寄存器 读操作的地址端口是________(WA/RA),写操作的地址端口是________(WA/RA),即读操作的和写操作的地址端口WE是_________(独立的/共用的)。

注意,三个填空的答案之间用#隔开,例如:0#有#更新

得分/总分

RA#WA#独立的

2.00/2.00

正确答案:RA#WA#独立的

17填空(2分)

使用远程实验平台虚拟面板验证三端口寄存器堆的功能

该三端口寄存器_________(可以/不可以)在写入_________(1/2)个寄存器的同时读出__________(1/2)个寄存器的值。

得分/总分

可以#1#2

2.00/2.00

正确答案:可以#1#2

实验代码

`default_nettype none 
module DataReg
#(parameter N = 4)
(   output reg [N-1:0] oQ,
    input wire [N-1:0] iD,
    input wire Clk,
    input wire Load,
    input wire Reset
);
always @(posedge Clk or posedge Reset)
begin
  if (Reset)
    oQ <= 0;  
  else if (Load)
    oQ <= iD;
end
endmodule
`default_nettype none 
module VirtualBoard (
    input  logic  CLOCK,      // 10 MHz Input Clock 
    input  logic [19:0] PB,   // 20 Push Buttons, logical 1 when pressed
    input  logic [35:0] S,    // 36 Switches
    output logic [35:0] L,    // 36 LEDs, drive logical 1 to light up
    output logic  [7:0] SD7,  // 8 common anode Seven-segment Display
    output logic  [7:0] SD6,
    output logic  [7:0] SD5,
    output logic  [7:0] SD4,
    output logic  [7:0] SD3,
    output logic  [7:0] SD2,
    output logic  [7:0] SD1,
    output logic  [7:0] SD0
);
/********* Seven-segment decoder instantiation **********/
logic [3:0] HD[7:0];  // 8 hexadecimal display 
SevenSegDecode ssdecode_inst7(.iData(HD[7]), .oSeg(SD7));
SevenSegDecode ssdecode_inst6(.iData(HD[6]), .oSeg(SD6));
SevenSegDecode ssdecode_inst5(.iData(HD[5]), .oSeg(SD5));
SevenSegDecode ssdecode_inst4(.iData(HD[4]), .oSeg(SD4));
SevenSegDecode ssdecode_inst3(.iData(HD[3]), .oSeg(SD3));
SevenSegDecode ssdecode_inst2(.iData(HD[2]), .oSeg(SD2));
SevenSegDecode ssdecode_inst1(.iData(HD[1]), .oSeg(SD1));
SevenSegDecode ssdecode_inst0(.iData(HD[0]), .oSeg(SD0));
/** The input port is replaced with an internal signal **/
wire clk    = PB[1];
wire [1:0] WA = S[5:4];
wire WE = S[6];
wire [3:0] WD = S[11:8];
wire [1:0] RA1=S[1:0];
wire [1:0] RA2=S[3:2];
/************* The logic of this experiment *************/
localparam N = 4;
// 2-4 decode
logic load3, load2, load1, load0;
always_comb begin
    if (WE)
        case (WA)
            2'b00: {load3, load2, load1, load0} = 4'b0001;
        2'b01: {load3, load2, load1, load0} = 4'b0010;
        2'b10: {load3, load2, load1, load0} = 4'b0100;
        2'b11: {load3, load2, load1, load0} = 4'b1000; 
            /*-
                这里将译码器补充完整
                                                       -*/
            default: {load3, load2, load1, load0} = 4'bx;
        endcase
    else
        {load3, load2, load1, load0} = 4'b0000;
end
// register instantiation
logic [N-1:0] R0_Q, R1_Q, R2_Q, R3_Q;
DataReg #(N) R0(.oQ(R0_Q), .iD(WD), .Clk(clk), .Load(load0), .Reset(1'b0));
DataReg #(N) R1(.oQ(R1_Q), .iD(WD), .Clk(clk), .Load(load1), .Reset(1'b0));
DataReg #(N) R2(.oQ(R2_Q), .iD(WD), .Clk(clk), .Load(load2), .Reset(1'b0));
DataReg #(N) R3(.oQ(R3_Q), .iD(WD), .Clk(clk), .Load(load3), .Reset(1'b0));
/*-
    这里实例化其余的寄存器
                                                                          -*/
// 4-1 MUX
logic  [N-1:0] RD1;
logic  [N-1:0] RD2;
//logic  [N-1:0] GRS_Q;
 always_comb begin
  case (RA1)
    2'b00 : RD1=R0_Q;
    2'b01 : RD1=R1_Q;
    2'b10 : RD1=R2_Q;
    2'b11 : RD1=R3_Q;
    default : RD1=4'bx;
  endcase
  case (RA2)
    2'b00 : RD2=R0_Q;
    2'b01 : RD2=R1_Q;
    2'b10 : RD2=R2_Q;
    2'b11 : RD2=R3_Q;
    default : RD1=4'bx;
  endcase
end
/*
 always_comb
  case (Index)
    2'b00 : GRS_Q=R0_Q;
    2'b01 : GRS_Q=R1_Q;
    2'b10 : GRS_Q=R2_Q;
    2'b11 : GRS_Q=R3_Q;
    default : GRS_Q=4'bx;
  endcase
*/
/****** Internal signal assignment to output port *******/
assign HD[0] = R0_Q;
assign HD[1] = R1_Q;
assign HD[2] = R2_Q;
assign HD[3] = R3_Q;
assign HD[4] = RD1;
assign HD[5] = RD2;
//assign HD[4] = GRS_Q;
assign L[0] = load0;
assign L[1] = load1;
assign L[2] = load2;
assign L[3] = load3;
endmodule


目录
相关文章
|
存储 缓存 程序员
软考软件评测师——计算机组成与体系结构(CPU指令系统)
本内容详细解析了计算机中央处理器(CPU)的核心架构及其关键组件的工作原理。首先介绍了CPU的四大核心模块:运算单元、控制单元、寄存器阵列和内部总线,并阐述其在数据处理中的核心职责。接着深入探讨了算术逻辑部件(ALU)的功能与专用寄存器的作用,以及通用寄存器对性能提升的意义。随后分析了控制单元的指令处理流程及特殊寄存器的功能。此外,还解析了寄存器系统的分类与设计特点,并对比了不同内存访问模式的特点与应用场景。最后,通过历年真题巩固相关知识点,帮助理解CPU各组件的协同工作及优化策略。
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
484 1
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
Ubuntu 网络虚拟化 Windows
国产化之虚拟ARM64-CPU安装银河麒麟操作系统
国产化之虚拟ARM64-CPU安装银河麒麟操作系统
6307 0
|
前端开发 rax
实验一:查看CPU和内存,用机器指令和汇编指令编程
实验一:查看CPU和内存,用机器指令和汇编指令编程
584 0
|
缓存 人工智能 算法
不同业务怎么选服务器?CPU / 内存 / 带宽配置表
本文详解了服务器三大核心配置——CPU、内存、带宽,帮助读者快速理解服务器性能原理。结合不同业务场景,如个人博客、电商、数据库、直播等,提供配置选择建议,并强调合理搭配的重要性,避免资源浪费或瓶颈限制。内容实用,适合初学者和业务选型参考。
1764 0
|
存储 消息中间件 缓存
从纳秒到毫秒的“时空之旅”:CPU是如何看待内存与硬盘的?
在数据爆炸的时代,如何高效存储与管理海量数据成为系统设计的核心挑战。本文从计算机存储体系结构出发,解析B+树、LSM树与Kafka日志结构在不同数据库中的应用与优化策略,帮助你深入理解高性能存储背后的原理。
464 0
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
4026 0
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
1361 11
|
存储 设计模式 监控
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
1612 166

热门文章

最新文章