基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十章:算术逻辑单元

简介: 基于Verilog HDL与虚拟实验平台的计算机组成与CPU实验第十章:算术逻辑单元

1多选(3分)

参考设计中的ALU可以实现哪些运算?

得分/总分

A.减法 F=X-Y

B.或 F=X|Y

C.加法 F=X+Y

D.异或F=X^Y

正确答案:A、B、C、D

2多选(3分)

异或门常用于取反电路,选出正确的描述。

得分/总分

A.任意二进制位x,与1异或,结果是它相反数。

B.任意二进制位x,与0异或,结果是它的相反数。

C.任意二进制位x,与0异或,结果是它本身。

D.任意二进制位x,与1异或,结果是它本身。

正确答案:A、C

3填空(2分)

‌实验任务中ALU电路,令ALUop=0000,运算器实现传送运算F=X,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。(填写二进制数值,例如001101011)

得分/总分

010011000

正确答案:010011000

4填空(2分)

‏实验任务中ALU电路,令ALUop=0000,运算器实现传送运算F=X,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。(填写二进制数值,例如001101011)

得分/总分

010000000

正确答案:010000000

5填空(2分)

‍实验任务中ALU电路,令ALUop=0001,运算器实现加法运算F=X+Y,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010000100

正确答案:010000100

6填空(2分)

‏实验任务中ALU电路,令ALUop=0010,运算器实现减法运算F=X-Y,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010011000

正确答案:010011000

7填空(2分)

‎实验任务中ALU电路,令ALUop=0011,运算器实现与运算F=X&Y,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010000101

正确答案:010000101

8填空(2分)

‌实验任务中ALU电路,令ALUop=0100,运算器实现或运算F=X|Y,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010000110

正确答案:010000110

9填空(2分)

‎实验任务中ALU电路,令ALUop=0101,运算器实现异或运算F=X^Y,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010000111

正确答案:010000111

10填空(2分)

‏实验任务中ALU电路,令ALUop=0110,运算器实现右移运算F=X/2,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

100000000

正确答案:100000000

11填空(2分)

‌实验任务中ALU电路,令ALUop=0111,运算器实现右移运算F=2X,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010100100

正确答案:010100100

12填空(2分)

‍实验任务中ALU电路,令ALUop=1000,运算器实现取反运算F=~X,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010001111

正确答案:010001111

13填空(2分)

‌实验任务中ALU电路,令ALUop=1001,运算器实现取加1运算F=X+1,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010010000

正确答案:010010000

14填空(2分)

‌实验任务中ALU电路,令ALUop=1010,运算器实现取减1运算F=X-1,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010001100

正确答案:010001100

15填空(2分)

‏实验任务中ALU电路,令ALUop=1011,运算器实现取带进位加法运算F=X+Y+Cin,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010100100

正确答案:010100100

16填空(2分)

实验任务中ALU电路,令ALUop=1100,运算器实现取带借位减法运算F=X-Y-Cin,相应的控制信号应该设置为{SR,SV,SL,M3,M2,M1,M0,S1,S0}=________。

得分/总分

010101000

正确答案:010101000

17填空(2分)

实验任务中ALU电路,参与逻辑运算的两个运算数分别是X和________(X/Y/B)

得分/总分

正确答案:B

实验代码

`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
); 
/** The input port is replaced with an internal signal **/
logic M0;
logic M1;
wire Cin=S[8];
logic M2;
logic M3;
wire [3:0] X = S[7:4];
wire [3:0] Y = S[3:0];
logic SL;
logic SV;
logic SR;
logic SS1;
logic SS0;
logic [8:0] oSeg;
wire [3:0] iData=S[12:9];
always_comb
 begin 
  case(iData)
   4'h0:oSeg=9'b010000000;
  4'h1:oSeg=9'b010000100;
  4'h2:oSeg=9'b010011000;
  4'h3:oSeg=9'b000000101;
  4'h4:oSeg=9'b000000110;
  4'h5:oSeg=9'b000000111;
  4'h8:oSeg=9'b000001111;
  4'h6:oSeg=9'b100000000;
  4'h7:oSeg=9'b001000000;
  4'hB:oSeg=9'b010100100;
  4'hC:oSeg=9'b010101000;
  4'h9:oSeg=9'b010010000;
  4'hA:oSeg=9'b010001100;
default:oSeg=9'bx;
endcase
end
assign {SR,SV,SL,M3,M2,M1,M0,SS1,SS0}=oSeg[8:0];
/************* The logic of this experiment *************/
wire [3:0] A,B,F;
wire C0;
wire sign, zero, overflow, carryOut;
/*assign A[31]=X[31]&SR|X[31]&SV|X[30]&SL;
assign A[30]=X[31]&SR|X[30]&SV|X[29]&SL;
assign A[29]=X[30]&SR|X[29]&SV|X[28]&SL;
assign A[28]=X[29]&SR|X[28]&SV|X[27]&SL;
assign A[27]=X[28]&SR|X[27]&SV|X[26]&SL;
assign A[26]=X[27]&SR|X[26]&SV|X[25]&SL;
assign A[25]=X[26]&SR|X[25]&SV|X[24]&SL;
assign A[24]=X[25]&SR|X[24]&SV|X[23]&SL;
assign A[23]=X[24]&SR|X[23]&SV|X[22]&SL;
assign A[22]=X[23]&SR|X[22]&SV|X[21]&SL;
assign A[21]=X[22]&SR|X[21]&SV|X[20]&SL;
assign A[20]=X[21]&SR|X[20]&SV|X[19]&SL;
assign A[19]=X[20]&SR|X[19]&SV|X[18]&SL;
assign A[18]=X[19]&SR|X[18]&SV|X[17]&SL;
assign A[17]=X[18]&SR|X[17]&SV|X[16]&SL;
assign A[16]=X[17]&SR|X[16]&SV|X[15]&SL;
assign A[15]=X[16]&SR|X[15]&SV|X[14]&SL;
assign A[14]=X[15]&SR|X[14]&SV|X[13]&SL;
assign A[13]=X[14]&SR|X[13]&SV|X[12]&SL;
assign A[12]=X[13]&SR|X[12]&SV|X[11]&SL;
assign A[11]=X[12]&SR|X[11]&SV|X[10]&SL;
assign A[10]=X[11]&SR|X[10]&SV|X[9]&SL;
assign A[9]=X[10]&SR|X[9]&SV|X[8]&SL;
assign A[8]=X[9]&SR|X[8]&SV|X[7]&SL;
assign A[7]=X[8]&SR|X[7]&SV|X[6]&SL;
assign A[6]=X[7]&SR|X[6]&SV|X[5]&SL;
assign A[5]=X[6]&SR|X[5]&SV|X[4]&SL;
assign A[4]=X[5]&SR|X[4]&SV|X[3]&SL;*/
//assign A[3]=X[4]&SR|X[3]&SV|X[2]&SL;
assign A[3]=X[3]&SR|X[3]&SV|X[2]&SL;
assign A[2]=X[3]&SR|X[2]&SV|X[1]&SL;
assign A[1]=X[2]&SR|X[1]&SV|X[0]&SL;
assign A[0]=X[1]&SR|X[0]&SV|0&SL;
assign B = (Y&{4{M0}})|(~Y&{4{M1}});
assign C0 = M2|(Cin&M3);
logic [4:0] result;
assign {carryOut,F[3:0]} = A + B + C0;  
assign sign = F[3];
assign zero = (F==0) ? 1 : 0;  // ~|F;
assign overflow = (~A[3]) & ~B[3] & F[3] | (A[3]) & B[3] & ~F[3];
/****** Internal signal assign to output port *******/
assign L[3:0]  = B[3:0];
assign L[12:9] = result[3:0];
assign L[32]=SR;
assign L[31]=SV;
assign L[30]=SL;
assign L[24]=SS1;
assign L[23]=SS0;
assign L[26]=M3;
assign L[27]=M2;
assign L[28]=M1;
assign L[29]=M0;
assign L[21:18] = {sign, zero, overflow, carryOut};
always_comb
begin
  case ({SS1,SS0})
    2'b00: result=A+B+C0;
    2'b01: result=X&B;
    2'b10: result=X|B;
    2'b11: result=X^B;
    default: result={5{1'bx}};
  endcase
end
endmodule


目录
相关文章
|
人工智能 并行计算 openCL
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
随着 Llama2 的开源,以及通义千问、百川、智谱等国内大模型的问世,很多用户有了本地部署去尝试大模型的需求,然而硬件的需求阻碍了很多人的尝试,并不是所有人都拥有一块英伟达显卡的,所以 Llama2 问世不久,大神 Andrej Karpathy 的一个 weekend project 爆火——llama2.c。
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
|
2月前
|
存储 缓存
CPU运算器的工作原理基于其内部结构,通过执行算术和逻辑操作来完成各种任务
CPU运算器的工作原理基于其内部结构,通过执行算术和逻辑操作来完成各种任务
93 3
|
6月前
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
104 1
|
5月前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
7月前
|
存储 缓存 算法
带你理清CPU,cache和存储器之间的逻辑运作
带你理清CPU,cache和存储器之间的逻辑运作
1262 3
|
7月前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能平台PAI产品使用合集之如何在CPU服务器上使用PAIEasyRec进行分布式训练
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
7月前
|
安全 机器人
ABB PLC自动化可编程逻辑控制器PLC AC500型 CPU
ABB PLC自动化可编程逻辑控制器PLC AC500型 CPU
|
Ubuntu 网络虚拟化 Windows
国产化之虚拟ARM64-CPU安装银河麒麟操作系统
国产化之虚拟ARM64-CPU安装银河麒麟操作系统
1498 0
|
22天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
54 7
|
1月前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
205 1