【头歌·计组·自己动手画CPU】二、运算器设计(讲解版) 【计算机硬件系统设计】

🕺作者: 主页

我的专栏
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博客

加法器实现

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

第1关:8位可控加减法电路设计

推荐视频: 【计组】多位串行加法器实现原理_哔哩哔哩_bilibili

1. 推荐博客:一位全加器的实现
(一)半加器
  1. 半加器的定义
    半加器是能够对两个一位的二进制数进行相加得到半加和以及半加进位的组合电路。
  2. 半加器的真值表
    A,B表示二进制数,C表示半加进位,S表示半加和
  3. 输出表达式
    image.png
  4. 逻辑电路图
(二)1位全加器
  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. 输出表达式
    image.png

  3. 逻辑图

需要注意引脚的含义

image.png

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 接线图

image.png

第2关:CLA182四位先行进位电路设计

我讲的没老师讲的好,咱们直接看视频吧。

原理:推荐视频

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

接线图

image.png

第3关:4位快速加法器设计

原理之前讲了,类似
image.png
image.png

第4关:16位快速加法器设计

image.png

第5关:32位快速加法器设计

image.png

乘法器实现

原理老师上课讲过,这里有课件供大家复习查看,不再赘述了。
视频:计算机组成原理期末大题使用原码阵列乘法器和补码阵列乘法器分别计算x*y_哔哩哔哩_bilibili
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

第6关:5位无符号阵列乘法器设计

阵列乘法器由多个加法器和乘法器组成,其工作原理是将待乘数和乘数分别按位拆分成多个小段,在阵列乘法器中进行乘法运算和累加,并最终得出乘积。
阵列乘法器将待乘数和乘数逐位相乘,并将结果送入加法器进行累加。在每个时钟周期中,阵列乘法器会对每个乘数位进行一次部分积计算,直到所有位都完成运算。部分积计算完成后,阵列乘法器会将结果根据位数进行排序和加和,以得到最终乘积。
阵列乘法器的优点是速度快、复杂度低、结构简单等。它广泛应用于数字信号处理、数值计算、图像处理等领域中,是实现大规模数据处理的重要工具。
image.png

第7关:6位有符号补码阵列乘法器

image.png

第8关:乘法流水线设计

image.png

第9关:原码一位乘法器设计

image.png

第10关:补码一位乘法器设计

image.png

第11关:MIPS运算器设计

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/681219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是智慧隧道,如何建设智慧隧道

一、隧道管理的难点痛点 近年来隧道建设规模不断扩大,作为隧道通车里程最多、规模最大的国家,截至2022年底,我国公路隧道共有24850处、2678.43万延米,其中特长隧道1752处、795.11万延米,长隧道6715处、1172.82万延米。…

【北邮鲁鹏老师计算机视觉课程笔记】06 corner 局部特征

【北邮鲁鹏老师计算机视觉课程笔记】06 corner 局部特征 1 局部特征的任务牵引:全景拼接 ①提取特征 ②匹配特征 ③拼接图像 我们希望特征有什么特性? ①可重复性 ②显著性 ③计算效率和表达紧凑性 ④局部性 2 特征点检测的任务 3 角点 在角点&#…

记一次Spring for Kotlin中JacksonConfig配置Long转String失败

目录 起因真相解决方案 起因 众所周知,浏览器在处理 Long类型(比如雪花算法生成的id)时,往往会出大事情。 浏览器在处理长整型(Long)类型时可能会遇到问题,主要原因是浏览器在处理数字时有限制…

8.【CPP】Vector(扩容问题||迭代器失效问题简述迭代器的种类)

vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自…

ubuntu服务器部署gitlab docker并配置nginx反向代理https访问

拉取镜像 docker pull gitlab/gitlab-ce运行容器 docker run --detach \--publish 9080:80 --publish 9022:22 --publish 9443:443\--namegitlab \--restartalways \--volume /home/docker/gitlab/config:/etc/gitlab \--volume /home/docker/gitlab/logs:/var/log/gitlab \-…

如何学习VBA_3.2.14:VBA中字符串的处理和判断函数

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。 如果…

RestFul的认识

前言 RESTful 是 Representational State Transfer 的缩写,是一种软件架构风格,用于在网络上构建和整合应用程序。它基于 HTTP 协议,并定义了一组约束和规范,用于规范客户端和服务器之间的通信。 RESTful API 是遵循 REST 架构规…

【复现】Supabase后端服务 SQL注入漏洞_48

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 Supabase是什么 Supabase将自己定位为Firebase的开源替代品,提供了一套工具来帮助开发者构建web或移动应用程序。 Sup…

441. Arranging Coins( 排列硬币)

问题描述 你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。 给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。 问题分析 等差数列求和问…

【c++基础】国王的魔镜

说明 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把…

LeetCode、1268. 搜索推荐系统【中等,前缀树+优先队列、排序+前缀匹配】

文章目录 前言LeetCode、1268. 搜索推荐系统【中等,前缀树优先队列、排序前缀匹配】题目类型及分类思路API调用(排序前缀匹配)前缀树优先队列 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创…

车载诊断协议DoIP系列 —— DoIP应用(Application)需求

车载诊断协议DoIP系列 —— DoIP应用(Application)需求 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一…

基于python深度学习的中文情感分析的系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

【Chrono Engine学习总结】4-vehicle-4.2-车辆轨迹跟踪

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 0、Vehicle的driver driver在上一篇总结中有过介绍,【Chrono Engine学习总结】4-vehicle-4.1-vehicle的基本概念,这里进一步介绍。 对于一个…

部分意图分类【LLM+RAG】

在生成人工智能领域工作最有价值的事情之一就是发现新兴技术如何融入新的解决方案。 举个例子:在为北美顶级金融服务公司之一设计对话式人工智能助手时,WillowTree 的数据和人工智能研究团队 (DART) 发现,将意图分类与大型语言模型 (LLM) 结合…

推荐高端资源素材图库下载平台整站源码

推荐高端图库素材下载站的响应式模板和完整的整站源码,适用于娱乐网资源网。该模板支持移动端,并集成了支付宝接口。 演示地 址 : runruncode.com/tupiao/19692.html 页面设计精美,不亚于大型网站的美工水准,并且用户…

【STL】vector模拟实现

vector模拟实现 一、vector函数接口总览二、vector当中的成员介绍三、list模拟实现1、默认成员函数(1)构造函数1(2)构造函数2(3)构造函数3 2、拷贝构造函数(1)写法一:老式…

键盘重映射禁用 CtrlAltDel 键的利弊

目录 前言 一、Scancode Map 的规范 二、禁用 CtrlAltDel 的方法及其缺陷 三、编程实现和测试 3.1 C 实现的简易修改工具 3.2 C# 实现的窗口工具 四、总结 本文属于原创文章,转载请注明出处: https://blog.csdn.net/qq_59075481/article/details…

龙芯开启ssh服务——使用Putty连接

本文采用龙芯3A6000处理器,Loongnix操作系统。 为了能使用其他电脑远程操控龙芯电脑,需要打开loongnix的ssh服务,并在其他电脑里使用putty连接loongnix。 1 修改ssh配置文件 命令行输入: sudo vim /etc/ssh/sshd_config按下i插…

Linux-进程信号

Linux进程信号 初步认识信号信号的存储结构信号的处理方式信号的产生硬件异常产生的信号核心转储sigset_t信号集信号集的操作函数对block表的操作对pending表的操作对handler表的操作信号的捕捉用户态和内核态 信号的处理过程可重入函数volatile关键字 初步认识信号 生活中有哪…