🕺作者: 主页
我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言
🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢支持!!!
文章目录
- 加法器实现
- 第1关:8位可控加减法电路设计
- [1. 推荐博客:一位全加器的实现](https://blog.csdn.net/qq_43279579/article/details/115480406)
- (一)半加器
- (二)1位全加器
- 需要注意引脚的含义
- [2. 推荐博客:本实验具体实现原理](http://t.csdnimg.cn/CO71h)
- 3 接线图
- 第2关:CLA182四位先行进位电路设计
- 原理:[推荐视频]()
- 接线图
- 第3关:4位快速加法器设计
- 第4关:16位快速加法器设计
- 第5关:32位快速加法器设计
- 乘法器实现
- 第6关:5位无符号阵列乘法器设计
- 第7关:6位有符号补码阵列乘法器
- 第8关:乘法流水线设计
- 第9关:原码一位乘法器设计
- 第10关:补码一位乘法器设计
- 第11关:MIPS运算器设计
由于原理是一致的,为了不做多余的重复劳动,下面主要是通过搜罗网上的资料来讲述的,这里都会贴上别人的链接
新手推荐博客:Logisim常用组件库介绍(很适合新手观看)-CSDN博客
加法器实现
第1关:8位可控加减法电路设计
推荐视频: 【计组】多位串行加法器实现原理_哔哩哔哩_bilibili
1. 推荐博客:一位全加器的实现
(一)半加器
- 半加器的定义
半加器是能够对两个一位的二进制数进行相加得到半加和
以及半加进位
的组合电路。 - 半加器的真值表
A,B表示二进制数,C表示半加进位,S表示半加和 - 输出表达式
- 逻辑电路图
(二)1位全加器
-
1位全加器的真值表
Ain表示被加数,Bin表示加数,Cin表示低位进位,Cout表示高位进位,Sum表示本位和
| Ain | Bin | Cin | Cout | Sum |
| — | — | — | — | — |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 | -
输出表达式
-
逻辑图
需要注意引脚的含义
2. 推荐博客:本实验具体实现原理
这里我认为他已经写的很清楚了,所以就大概讲一下。
logisim平台已经给了全加器芯片,第一个要解决的问题就是如何利用全加器进行减法运算。两个数进行减法运算可以看被减数加负的减数,因此要将y转换成(-y)补之后再进行加法运算:符号位转换成1,数值位按位取反再加1。由于减法运算时sub为1,因此可以将y的各位与sub异或,同时sub作为最低为全加器的低位进位输入,以此实现上述功能。
第二个要解决的问题是溢出的判断:两个数的加减法运算可以分为以下四种情况:正+正,正+负,负+正,负+负,而溢出仅会在正+正与负+负时有可能发生。
m表示最高数值位进位,n表示符号位进位,首先讨论一定不会发生溢出的两种情况(正+负与负+正):可以总结为10+01或10+11两种情况(高位为符号位,低位为最高数值位),可能的结果有两种:n=0,m=0和n=1,m=1。此时n异或m=0。
再讨论可能会发生溢出的两种情况。
正+正:可能的情况可以概括为01+01,01+00,00+00,其中第一种情况会发生溢出(n=0,m=1,n异或m=1),后两种情况不会发生溢出(n=0,m=0,n异或m=0).
负+负:两个负数相加结果应为负数,结果符号位应为1,当符号位为0时发生溢出,可能的情况可概括为10+10,10+11,11+11,其中前两种情况的结果符号位为0,发生溢出**(n=1,m=0,n异或m=1),第三种情况符号位为1,没有发生溢出(n=1,m=1,n异或m=0)。
综合以上讨论,可以发现当符号位进位和最高位进位异或结果为1时发生溢出**,异或结果为0时没有发生溢出。由此就得到了补码运算判断溢出的方法。
3 接线图
第2关:CLA182四位先行进位电路设计
我讲的没老师讲的好,咱们直接看视频吧。
原理:推荐视频
接线图
第3关:4位快速加法器设计
原理之前讲了,类似
第4关:16位快速加法器设计
第5关:32位快速加法器设计
乘法器实现
原理老师上课讲过,这里有课件供大家复习查看,不再赘述了。
视频:计算机组成原理期末大题使用原码阵列乘法器和补码阵列乘法器分别计算x*y_哔哩哔哩_bilibili
第6关:5位无符号阵列乘法器设计
阵列乘法器由多个加法器和乘法器组成,其工作原理是将待乘数和乘数分别按位拆分成多个小段,在阵列乘法器中进行乘法运算和累加,并最终得出乘积。
阵列乘法器将待乘数和乘数逐位相乘,并将结果送入加法器进行累加。在每个时钟周期中,阵列乘法器会对每个乘数位进行一次部分积计算,直到所有位都完成运算。部分积计算完成后,阵列乘法器会将结果根据位数进行排序和加和,以得到最终乘积。
阵列乘法器的优点是速度快、复杂度低、结构简单等。它广泛应用于数字信号处理、数值计算、图像处理等领域中,是实现大规模数据处理的重要工具。