Logisim实验--计组(保姆级教程)-8位可控加减法电路设计-CLA182四位先行进位电路设计-4位快速加法器设计-16位快速加法器设计-32位快速加法器设计

目录

8位可控加减法电路设计

CLA182四位先行进位电路设计

4位快速加法器设计

16位快速加法器设计

32位快速加法器设计

MIPS运算器设计


8位可控加减法电路设计

实验目的
帮助学生掌握一位全加器的实现逻辑,掌握多位可控加减法电路的实现逻辑,熟悉 Logisim 平台基本功能,能在 logisim 中实现多位可控加减法电路。

首先了解一下一些概念:

半加器 是一种能实现两个一位二进制数(A, B)相加,并输出一个结果位(S)和进位(C0)的加法器电路。它没有进位输入端,因此不考虑低位向本位的进位。

S = A\oplus B  

C0 = A ~ B

 全加器 是一种除了能完成两个一位二进制数(A, B)的相加功能得到和位(S)和进位(Cout)之外,还能连同低位的进位(Cin)一起相加的加法器电路。

S = A \oplus B \oplus Cin

Cout = A ~B ~+ ~ (A\oplus B ) ~Cin

其次,计算机无法直接进行减法运算,故引入补码概念。至此计算机中可将加减法看作一类运算。

[A]补 + [B]补 = C

[A]补 - [B]补 = [A]补 + [-B]补 = [A]补 + ([B]补)全反 + 1 = C

最后是 溢出判断,根据运算过程中的最高数据位与符号位的仅为是否一致进行检验。设最高有效数据为产生的仅为信号为 C_d ,符号位产生的进位信号为 C_f ,则溢出检测为

V = C_f \oplus C_d

接下来就是按着连线。

这里注意Cout,OF是需要自己加的隧道线路,并要将其位宽设置为1。 

CLA182四位先行进位电路设计

实验目的
帮助学生掌握快速加法器中先行进位的原理,能利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器,能分析对应电路的时间延迟。 

首先我们来了解一下是先行进位的原理,在上一个实验中,看出全加器的高位运算必须等待地位的进位信号,导致延迟很大,所以我们需要考虑优化时间。

使得进位输出与最低为进位输入C_0存在一级运算关系,大大节省了多次进位传递的时间。整个电路的延迟就是二级门电路延迟。

这样我们就可以写出并行加法器进位链 ,无需等待低位给出进位信号,因此出现了先行进位电路。缺点就是位数越长,进位链电路的复杂度就越高。

其中 Gi,Pi 为进位生成函数和传递函数,Cin 为进位输入,C1~C4 为进位输出。

这里还需介绍一下G,P 为成组进位生成函数和成组进位传递函数。

成组进位生成函数 G用于计算组内各位的进位生成情况,并综合得出整个组的进位生成信号。在四位先行进位加法器中,Gg可以表示为:

G = G_3 + P_3G_2 + P_3P_2G_1 + P_3P_2P_1G_0

它综合了组内各位的进位生成情况,并生成一个总的进位生成信号。这个信号对于确定高位组的进位情况至关重要。

成组进位传递函数 P用于传递低位组的进位信号到高位组。在四位先行进位加法器中,Pg可以表示为:

P = P_3P_2P_1P_0

将低位组的进位信号传递到高位组。通过Pg,低位组的进位可以影响到高位组的计算,从而实现整个加法器的快速运算。

接下来是C1~C4进位输出链的逻辑表达式

C_1= G_1+P_1 ~Cin

C_2 = G_2 + P_2G_1+ P_2 P_1 Cin

C_3 =G_3+ P_3 G_2 + P_3P_2 G_1 +P_3 P_2 P_1 Cin

C_4 = G_4+ P_4 G_3 + P_4 P_3 G_2+ P_4 P_3 P_2 G_1+ P_4 P_3 P_2 P_1 Cin

接下来也就是根据逻辑表达是连线了,需要注意的就是与或门的引脚数。 (这里连线建议自己按照上述的逻辑电路关系自己来连,下面的连线可能看得比较花)。

4位快速加法器设计

实验目的
帮助学生掌握快速加法器中先行进位的原理,能利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器,能分析对应电路的时间延迟。

将上一个实验完成后,得到所有的进位信号,各位就可以并行求和了,求和公式如下:

S_3 = X_3\oplus Y_3\oplus C_3 = P_3\oplus C_3

S_2 = X_2\oplus Y_2\oplus C_2 = P_2\oplus C_2

S_1 = X_1\oplus Y_1\oplus C_1 = P_1\oplus C_1

S_0 = X_0\oplus Y_0\oplus C_0 = P_0\oplus C_0

所以求和只在上一个实验后加了一级异或门就能得到,所以整个电路的延迟就是三级门电路延迟。

16位快速加法器设计

实验目的
帮助学生理解成组进位产生函数,成组进位传递函数的概念,熟悉 Logisim 平台子电路的概念,能利用前述实验封装好的4位先行进位子电路以及4位快速加法器子电路构建16位、32位、64位快速加法器,并能利用相关知识分析对应电路的时间延迟,理解电路并行的概念。

这个实验就是针对上个实验的一个组合电路的设计思想,已经有4位的快速加法器那么16的快速加法器只需要连接4个4位的快速加法器就行了,这里就不多做介绍。

32位快速加法器设计

实验目的
帮助学生理解成组进位产生函数,成组进位传递函数的概念,熟悉 Logisim 平台子电路的概念,能利用前述实验封装好的4位先行进位子电路以及4位快速加法器子电路构建16位、32位、64位快速加法器,并能利用相关知识分析对应电路的时间延迟,理解电路并行的概念。

这里的思路和上一个实验大致差不多,其实也可以用2个16位的快速加法器来连接实现,但是这里的题目只提供了4位快速加法器,所以就得连接8个4位快速加法器来实现,也不多赘述了。

MIPS运算器设计

实验内容:
利用前面实验封装好的32位加法器以及 Logisim 平台中现有运算部件,构建一个32位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符号溢出 OF 、无符号溢出 UOF ,结果相等 Equal ),ALU 功能以及输入输出引脚见后表,在主电路中详细测试自己封装的 ALU ,并分析该运算器的优缺点。

解释:

这里我们看到会有三个输入,输入S表示要进行的操作类型,所以我们就需要根据上表来组织电路。(这里它说不能用自带的加法器和减法器,那我们就用我们之前做的32位快速加法器来构造就行了),接下来我们一个一个操作来讲解一下(我们先把所有的结果都算出来再根据ALU_OP来选择需要的输出即可):

当s=0,Result = X << Y 逻辑左移 (Y 取低五位) Result2=0

这里Y取低五位是因为该X只有32位,所以左移的最大2^5,所以Y只需要5位就可以表示0~32之间的数。

端口数表示为输出的分线数,这里改5或者4都可以,主要是把下面的前5位的数让他们在第一个端口输出,而其他的不能在第一个端口输出即可。

在运算器中找到移位器,设置位宽和左移类型,加入输出0的隧道引脚。

 Result = X >>>Y 算术右移 (Y 取低五位) Result2=0:

同上述一样,但注意这里是算数右移。

 Result = X >> Y 逻辑右移 (Y 取低五位) Result2=0:

注意这个是逻辑右移,输出标签为3.

Result = (X * Y)[31:0]; Result2 = (X * Y)[63:32] 无符号乘法:

这里使用自带的乘法器,设置位宽32,且结果的高位为输出标签为3',结果为标签3。

Result = X/Y; Result2 = X%Y 无符号除法:

除法运算和上一个差不多,使用自带的除法器,设置位宽为32,和输出标签。

Result = X + Y (Set OF/UOF):

有符号加法溢出OF+:看最高位进位和次高位进位是否一致

无符号加法溢出UOF+:最高位与sub异或,加法的话sub是0,而当最高位为1时表示溢出。

再输出标签5.

Result = X - Y (Set OF/UOF):

使用求补器讲Y转化成补码,所以sub还是为0,在计算无符号溢出时就得加一个取反。

Result = X & Y 按位与,按位或,按位异或,按位或非:

这四个比较简单,找到对应得逻辑门,并设置位宽为32即可。

Result = (X < Y) ? 1 : 0 符号比较

这里我们需要用到比较器即红色部分(类型选择2的补码,表示有符号比较),我们输出得答案是32位的数,而比较器返回的只是一位的数,所以我们使用分线器的端口0来接受比较结果(如黄色部分的设置,位宽32,端口数2,除了第一个是0号端口其余都是1号端口),再引入一个位宽为31的0的常量(如蓝色部分)来组合成一个32的满足输出要求的数。

之后再接一个Equal。

Result = (X < Y) ? 1 : 0 无符号比较:

 这里我们需要用到比较器即红色部分(类型选择无符号),同上一个一样,我们使用分线器的端口0来接受比较结果(如黄色部分的设置,位宽32,端口数2,除了第一个是0号端口其余都是1号端口),再引入一个位宽为31的0的常量(如蓝色部分)来组合成一个32的满足输出要求的数。

接下来是输出结果的选择:

使用多路选择器(如红色部分,设置位宽为32,端位宽为4)来根据输入的s来指定输出结果,注意输出Result2的含义,表示

即操作三和四的3'和4',接到第二个的多路选择器的输入3和4(如黄色部分), 其余都接一个位宽为32的常量0(如蓝色部分)。

溢出判断

这里我们使用比较器(位宽为4)来看是否操作为5、6,再引入位宽为4的常量5、6,通过与门和或门来合理规划电路。

测试

编写好后可以根据其自带的测试电路来进行测试(如红色部分),按Ctrl+k开始测试,如果成绩为100表示全部通过没有问题;如果有误的话下面可以看是哪个运算错误就会在其指示灯报红。

全部电路一览

(希望你能顺利通过)

(有帮助请点赞支持,有疑问也可评论指出)

74182先行进位电路的设计步骤如下: 1. 确定输入输出引脚:74182先行进位电路有两个输入引脚Cn和Gi,以及两个输出引脚P和G。 2. 确定逻辑功能:先行进位电路的逻辑功能是判断当前是否需要进位,如果需要,则输出进位信号,否则输出0。 3. 根据逻辑功能设计电路:先行进位电路的电路设计如下: - 当输入Cn和Gi均为1时,输出进位信号G=1; - 当输入Cn和Gi中有一个为1时,输出进位信号P=1,G=0; - 当输入Cn和Gi均为0时,输出进位信号P=G=0。 四位快速加法器设计步骤如下: 1. 确定输入输出引脚:四位快速加法器有两个四位输入A和B,以及两个四位输出S和C。 2. 设计加法器电路:四位快速加法器加法器电路如下: - 对于每一的加法,使用一个全加器电路; - 对于最低,直接使用一个全加器电路,输出当前的和S0和进位信号C1; - 对于其他,使用一个先行进位电路和一个全加器电路,先行进位电路判断当前是否需要进位,如果需要,则将进位信号Ci+1置为1,否则置为0,然后使用全加器电路计算当前的和Si和进位信号Ci+1。 3. 连接加法器电路:将多个全加器电路和先行进位电路按照数连接起来,得到四位快速加法器的电路。 需要注意的是,由于先行进位电路需要用到上一进位信号,因此在实际连接电路时需要将进位信号Ci+1与上一进位信号Ci相连。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wirepuller_king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值