计算机组成原理-用logisim设计ALU(8位算术/逻辑运算)

用logisim设计ALU

这个是大多学生会有的一个作业,只是不同学校形式不同,有的是软件实现,有的则是硬件电路箱实现

设计要求

(1)设计两个控制端S1和S0,完成相应的算术逻辑运算。

S1S0逻辑功能
00AND
01OR
10ADD
11SUB

(2)输入:两个8位二进制数。输出:C、O以及Z(判断是否有进位、溢出、结果是否为0)。

实现步骤:

(一)设计思路:
(1) 看到这个题,题目给了各种S0S1的取值对应各种输出情况,我们很容易想到要用到选择器
(2) 首先与或以S0一个量决定,于是我打算封装一个可以通过一个输入接口控制选择做8位与、或运算的电路部件,如图所示:

在这里插入图片描述
在这里插入图片描述

具体封装部件时为了后续方便使用,我将输入A八位与B八位分开上下放置
(3) 加减方面直接可以设计一个有进位、溢出输出的可控八位加减电路,同时可以通过一个变量S0同时控制与或里的筛选变量和加减里的变量sub
加减电路如图:
在这里插入图片描述

(4) 最后由于要通过S2对与或、加减做进一步筛选,我选择设计一个8位选择器,并进行封装(为了图里面方便使用,毕竟线比较多,我设计成了方形,两块输入分别位于正方形两条边)
如图:
在这里插入图片描述
在这里插入图片描述

(5) 我们这个时候想到需要有一个是否结果为0的判断,可是这个加在主线路会显得不够整洁,所以我决定将其加在上面那个选择器里,使其多一个输出Z
如图:
在这里插入图片描述

(6) 最后将几部分组合起来即可

(二)逻辑电路图展示:
在这里插入图片描述

(三)测试:
让我们分别测试一下各种情况
A7到A0分别固定为:1111 1110
B7到B0分别固定为:0000 0001
S1S0:00,即“与”运算(正确结果应该为0000 0000)
在这里插入图片描述

S1S0:01,即“或”运算(正确结果应该为0111 1111)
在这里插入图片描述

S1S0:10,即“加”运算(正确结果应该为:1111 1111)
在这里插入图片描述

S1S0:11即“减”运算(正确结果应该为1111 1101)

在这里插入图片描述

  • 23
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
根据提供的引用内容,可以得知已经有8位算术逻辑运算电路图的设计,但是没有提供具体的电路图。因此,我将为您介绍一下8位算术逻辑运算器的基本原理和实现方法。 8位算术逻辑运算器是计算机中的一个重要组成部分,它可以实现各种算术逻辑运算,如加、减、与、或、非、异或等。其基本原理是将两个8位二进制数输入到运算器中,经过运算后输出一个8位的结果。下面是一个简单的8位算术逻辑运算器的电路图: ```verilog module ALU(input [7:0] A, input [7:0] B, input [2:0] opcode, output reg [7:0] result, output reg zero, output reg carry, output reg overflow); always @(*) begin case (opcode) 3'b000: result = A + B; // 加法 3'b001: result = A - B; // 减法 3'b010: result = A & B; // 与运算 3'b011: result = A | B; // 或运算 3'b100: result = ~A; // 非运算 3'b101: result = A ^ B; // 异或运算 3'b110: result = A << 1; // 左移一位 3'b111: result = A >> 1; // 右移一位 endcase end assign zero = (result == 8'b0); // 判断结果是否为0 assign carry = (result[8] == 1); // 判断是否有进位 assign overflow = ((A[7] == B[7]) && (A[7] != result[7])); // 判断是否溢出 endmodule ``` 上述电路图中,输入A和B是两个8位的二进制数,opcode是一个3位的控制信号,用于选择不同的运算方式。输出result是一个8位的二进制数,表示运算结果;zero表示结果是否为0;carry表示是否有进位;overflow表示是否溢出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值