从零开始制作CPU

news2024/11/24 12:37:08

文章目录

  • 简介
    • 与门
    • 或门
    • 非门
    • 异或门
  • ALU
    • 加法
      • 半加器
      • 全加器
      • 8位加法器
    • 减法
      • 补码
      • 8位补码器
      • 8位减法器
  • 存储
    • 锁存器
      • 8位锁存器
      • 带边沿触发的锁存器
    • 内存
      • 内存单元
      • 16位内存
  • CPU
    • PC程序计数器
    • CPU连接
  • 自制乘法器
    • 移位
    • 8位乘法器
  • 自制除法器
    • 比较
      • 一位比较
      • 8位比较
    • 8位除法器

简介

黑马最近出了个制作计算机的视频:https://www.bilibili.com/video/BV1nV411T7U3
我看了看,感觉不错,跟着做了个,扩展了减法,乘法,除法,文件在文末,大佬轻喷

与门

请添加图片描述
两个继电器同时控制输出

或门

请添加图片描述

两个继电器都直接连接输出

非门

请添加图片描述

双掷继电器反接,默认连通

异或门

请添加图片描述

两个双掷继电器镜像交叉相连

ALU

即算术逻辑单元,有两个单元:算数单元(负责加减乘除等运算)和逻辑单元(负责与或非等判断)

加法

半加器

请添加图片描述

只能处理一位的加法,利用异或门输出SUM(输入相同时输出0,不同时输出1),利用与门输出进位C(全为1时才输出1)

全加器

请添加图片描述

能处理包含进位的一位的加法,先用半加器处理被加数和加数,再用半加器处理结果和输入的进位的加法,得到最终结果,两次半加有一个进位则最终结果进位

8位加法器

请添加图片描述

第0位无进位输入,使用半加器,其他位有进位输入,使用全加器,最终聚合出结果

减法

补码

二进制减法使用被减数加上减数的补码实现,补码=原码取反+1

img

当E为1时,是求补码,例如1010输入,异或输出0110

8位补码器

根据上图扩展得到

请添加图片描述

8位减法器

请添加图片描述

存储

锁存器

请添加图片描述

两个反馈门电路结合即可做出锁存器

请添加图片描述

当Din和WE(写使能)同为1,则反馈或门(记住1的)输入1。下面的电路目的是筛选出Din为0,WE为1的输入情况,此时反馈与门(记住0的)输入0

8位锁存器

请添加图片描述

带边沿触发的锁存器

请添加图片描述

此时这里的按钮/时钟输入就是WE,带时钟的目的是保证器件同步动作,使得操作更有效率

内存

内存单元

请添加图片描述

先根据行和列(row, column)选择单元,选中后才能写(str)或读(load),选中并load驱动输出,下拉电阻默认低电平输出。

16位内存

请添加图片描述

输入address为4位地址,LUT查找表处理输入输出的映射关系,使0 ~ 15的输入分别对应到16个内存单元上

CPU

请添加图片描述

PC程序计数器

请添加图片描述

时钟输入上升沿时,4位寄存器中的值被取出加一,再放回寄存器中输出出来

CPU连接

请添加图片描述

执行步骤:

  1. 取指(令)阶段——所有指令相同

    1. PC程序计数器初始为0,其中的数据通过CPU内部地址总线发给MAR内存地址寄存器
    2. PC程序计数器+1
    3. MAR内存地址寄存器中的值(内存中指令的地址编号)通过CPU外部地址总线发给内存(EEPROM),内存输出指令通过CPU外部数据总线给MBR内存缓存寄存器
    4. MBR内存缓存寄存器通过CPU内部数据总线将数据交给IR指令寄存器
  2. 译码和执行阶段

    1. IR指令寄存器输出给LUT查找表,查出对应的操作集(开闭一系列模块的输入)
    2. 通过开闭一系列输入实现不同操作,如运算、从内存中取数据等
  3. 下一个取指阶段

    一个指令对应的操作步骤完成后(由一个计数器控制步骤的进行——计数器接入LUT查找表),控制操作步骤的计数器溢出,从零开始计数,PC程序计数器(此时已+1)发数据给MAR内存地址寄存器

自制乘法器

二进制乘法原理

img

PS:上图中被乘数是0111,乘数是0101,算式为0111 * 0101

移位

在这里插入图片描述

经修改可变成左移

请添加图片描述

8位乘法器

请添加图片描述

乘数B的各个位分别控制被乘数A是否左移1 ~ 7位,不左移则此位的结果为0,最后各位结果相加,输出

自制除法器

二进制除法原理

除法过程

PS:被除数为1111011,除数为0100,算式为1111011 / 0100

比较

一位比较

请添加图片描述

异或门先判断是否相同,从而输出能否比较,能比较就给与门输入1,同时AB只有一个1,则与门输出与A输入相同,A ^ 为1表示A大

8位比较

请添加图片描述

拆成两个4位比较器,CAN驱动1位比较结果,同时CAN又被邻高位控制,或门接收4位中两个高位的CAN,输出1时表示高位已经完成比较了,低位不需要比较。两个4位比较器结合又用到两个或门,接收(4、5位)和(6、7位与的结果),然后控制。

8位除法器

请添加图片描述

性能很差,只是翻译了二进制除法原理,时不时会报错,可能是软件Bug

最终组合为ALU:

请添加图片描述

软件及子电路图:
链接: https://pan.baidu.com/s/1A9UI37GTXxFWFdGyMnV5nw?pwd=9cn6 提取码: 9cn6 复制这段内容后打开百度网盘手机App,操作更方便哦

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

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

相关文章

BOOTMGR丢失无法开机怎么办?

BOOTMGR(引导管理器,Boot Manager的简称)其实是一个引导操作系统的程序,通常位于系统保留分区或系统分区中。如果系统分区或系统保留分区的根目录中的BOOTMGR存在错误,那么系统将会在计算机启动时提示找不到操作系统。…

一文读懂ChatGPT,ChatGPT百科全书

引言 ChatGPT是什么? ChatGPT是一款先进的自然语言处理(NLP)模型,由OpenAI开发和维护。它基于OpenAI的第四代生成预训练Transformer(GPT-4)架构,旨在通过深度学习技术理解和生成人类语言。ChatG…

大一统真的来了:多模态共享参数的 Meta-Transformer

出品人:Towhee 技术团队 作者:张晨 在探索通用人工智能的多种可能发展方向中,多模态大模型(MLLM)已成为当前备受关注的重要方向。随着 GPT-4 对图文理解的冲击,更多模态的理解成为了学术界的热点话题&#…

优思学院|PDCA循环与精益管理有何相通之处?

PDCA是精益管理和六西格玛管理的基础原则,通常PDCA可以转化为六西格玛的DMAIC,变成一套以数据驱动方式为主来减少过程变异的改善方法,也可以应用于精益管理的原则上,处理优化价值流和减少浪费的改进上。 PDCA循环原则 这是由美国…

centos下安装ftp-读取目录列表失败-

1.下载安装ftp服务器端和客户端 #1.安装yum -y install vsftpdyum -y install ftp #2.修改配置文件vim /etc/vsftpd.conflocal_enablesYESwrite_enableYESanonymous_enableYESanon_mkdir_write_enableYES //允许匿名用户在FTP上创建目录anon_upload_enableYES //允许匿名用户…

【ElementUI组件封装】搭建架子、按钮自行封装、封装element的表格、表单

通过原生 button 封装类 el-button 组件封装 el-form 相关表单通用组件封装 el-table 相关表格通用组件 Vite Vue3 ElementPlus业务组件封装 数字化管理平台 Vue3ViteVueRouterPiniaAxiosElementPlus 个人博客地址 开发环境:Vite3 Vue3 兼容性:Vite…

前端企业微信开发内嵌H5记录 右边侧边栏开发

企业微信内嵌H5(侧边栏)开发流程 1、如果要想在企业微信和客户聊天的过程中出现右侧侧边栏,需要添加非本企业的人员微信,右边侧边栏就会自动出现(可折叠)。 示例: 2、创建一个自建应用 a.先登…

VMware horizon 8 建立手动桌面池

准备一台win10的虚拟机,改静态IP,计算机名,加入域,把Agent软件上传到机器中。 2:右键管理员身份安装程序。 一般默认 根据自己实际情况选择 启用桌面远程功能 安装完成 安装完成以后创建一个快照,以后是好知道机…

申请美国J1签证所需材料清单

在申请前往美国进行交流学习、文化交流或实习等项目的J1签证时,申请人需要准备一系列必要的材料。这些材料将有助于确保申请的顺利进行,以下是J1签证材料清单的详细内容: 1. 签证申请表格: 首先,申请人需要填写并签署D…

多网点多品牌精密空调集中监控方案

精密机房空调主要应用于通信数据机房、交换机 房、IDC机房、精密医疗设备室、外科手术室、实验室、精密电子仪器仪表生产车间等环境,这样的环境对空气的温度、湿度、洁净度、气流分布等各项指标有很高的要求,必须由每年365天、每天24小时安全可靠运行的专用机房精密…

DoIP学习笔记系列:导航篇

文章目录 1. 前言2. 导航3. 参考资料 1. 前言 DoIP学习笔记系列是一整套基于网络的诊断协议学习笔记,非常适合对有UDS基础但对DoIP没有实战经验的小伙伴参考,通过源协议讲解,企标讲解,测试需求讲解,测试用例讲解&…

使用 Apache DolphinScheduler 进行 EMR 任务调度

By AWS Team 前言 随着企业规模的扩大,业务数据的激增,我们会使用 Hadoop/Spark 框架来处理大量数据的 ETL/聚合分析作业,⽽这些作业将需要由统一的作业调度平台去定时调度。 在 Amazon EMR 中,可以使用 AWS 提供 Step Functio…

Flutter系列文章-Flutter进阶

在前两篇文章中,我们已经了解了Flutter的基础知识,包括Flutter的设计理念、框架结构、Widget系统、基础Widgets以及布局。在本文中,我们将进一步探讨Flutter的高级主题,包括处理用户交互、创建动画、访问网络数据等等。为了更好地…

黄东旭:The Future of Database,掀开 TiDB Serverless 的引擎盖

在 PingCAP 用户峰会 2023 上, PingCAP 联合创始人兼 CTO 黄东旭 分享了“The Future of Database”为主题的演讲, 介绍了 TiDB Serverless 作为未来一代数据库的核心设计理念。黄东旭 通过分享个人经历和示例,强调了数据库的服务化而非服务化…

【C 程序设计】第 1 章:C 语言简介与思维导图

目录 一、C 语言思维导图 (1)数据类型 (2)运算 (3)控制结构 (4)过程式,模块化程序设计 (5)输入输出 (6)编码规…

AntDB数据库与东方通TongWeb完成兼容互认,共筑数字化底座核心能力

近日,湖南亚信安慧科技有限公司(简称:亚信安慧)与北京东方通科技股份有限公司(简称:东方通)完成AntDB数据库与东方通应用服务器TongWeb V7.0的兼容互认。经测试,AntDB数据库能与东方…

C++入门之stl六大组件--Vector库函数的介绍,以及模拟实现一些常用接口

文章目录 前言 一、vector的介绍和使用 1.vector的介绍 2.vector的使用 2.1vector的定义 ​编辑 2.2vector iterator的使用 2.3vector空间增长问题 2.4vector增删查改 2.5vector迭代器失效问题 会引起迭代器失效的操作有: 二、模拟实现一些vector常用接口…

四、运算符(2)

本章概要 关系运算符 测试对象等价 逻辑运算符 短路 字面值常量 下划线指数计数法 位运算符 关系运算符 关系运算符会通过产生一个布尔(boolean)结果来表示操作数之间的关系。如果关系为真,则结果为 true,如果关系为假&#xf…

Android版本的发展4-13

Android 4.4 KitKat 1、通过主机卡模拟实现新的 NFC 功能。 2、低功耗传感器,传感器批处理,步测器和计步器。 3、全屏沉浸模式,隐藏所有系统 UI,例如状态栏和导航栏。它适用于鲜艳的视觉内容,例如照片、视频、地图、…

CTF-REVERSE练习之逆向初探

逆向是指通过反汇编和调试等一些手段及工具,分析计算机程序的二进制可执行代码,从而获得程序的算法细节和实现原理的技术。不仅如此,逆向技能在信息安全面向的具体工作,如恶意代码分析、软件漏洞挖掘、移动安全以及对软件的破解方…