以 6502 为例讲讲怎么阅读 CPU 电路图

开篇

你是否曾对 CPU 的工作原理充满好奇,以及简单的晶体管又是如何组成逻辑门,进而构建出复杂的逻辑电路实现?本文将以知名的 6502 CPU 的电路图为例,介绍如何阅读 CPU 电路图,并向你演示如何从晶体管电路还原出逻辑门电路。通过这篇文章的引导,你将能够揭开 CPU 复杂设计的面纱,一窥其内部运作的奥秘。

示例图

首先,让我们先大致了解一下 6502 CPU 的晶体管电路图。目前我能找到的电路图有两个。一个是一份 PDF 文档(6502 Schematic.pdf),这份文档中的电路图虽然没有详细到每根线都画出来,但关键组件的电路图都有,算是很简洁的一份电路图。另一份是电路图是 GitHub 上有人整理的一个 SVG 版本的电路图(下图),这份电路图非常详尽,详细到每根线、每个晶体管都有,是非常好的资源。
6502-cd.svg

MOSFET

仔细研究上面的电路图,可以发现图中一共可总结出两种元件,如下图:

它们都是一种 MOSFET(金属氧化物半导体场效应晶体管),再具体点,它们都是一种 N 型 MOSFET,简称 NMOS。

MOSFET 可以看作一种由电压控制的特制开关,其中 NMOS 在控制电压为高电平(逻辑 1)时导通,低电平(逻辑 0)时断开。

上图中,上部中间的连接端就是控制端。

耗尽型 NMOS

既然都是 NMOS,那 A 和 B 的区别是什么呢?答案是,A 属于增加型 NMOS,而 B 属于耗尽型。

耗尽型 NMOS 的作用是充当负载,为其它 MOS 提供电压电流,相当于一个电阻。充当负载时,它的一个连接端与供电相接(如下图),另一个连接端与控制端连接在一起,使它处于常导通状态。

上图中,小圆圈表示供电。

非门

根据 NMOS 高电平导通的特性,将它的一个端接地,另一个连接端搭配一个耗尽型 NMOS 的负载就可以构成一个非门。

当 X 为高电平时,下面的 NMOS 导通,Y 相当于直接接地,此时 Y 为低电平;当 X 为低电平时,下面的 NMOS 截止,Y 相当与供电连接,此时 Y 为高电平。综上,这个电路是一个非门逻辑电路。

与非门

在非门的下方再串联一个 NMOS,就得到了与非门。

或非门

在非门的旁边再并联一个 NMOS,就得到了或非门。

锁存器

电路图中还有一类非常常见的结构,如下图:

这种结构大概率表达的是一种锁存器 – D-锁存器。锁存器是一种基本的存储元件,相当于一个 1 比特的内存,在时序逻辑中用于存储和保持状态信息。锁存器的使能端(E 端)常与时钟信号连接,因此若在电路图中看到时钟信号接入了使能端,则这样结构很可能是锁存器。初看之下,这样的结构似乎没有道理,为什么一个开关加上一个非门就能存储数据了?其实这里面涉及一些电学知识,这里就不过多阐述了,我们是为了理解电路图,只需记住这样的结构就行了。

示例

有了上面的基本知识后,我们可以尝试解读一下 CPU 电路图了,看看能不能还原其中的逻辑。以下是 6502 ALU 一个计算单元的电路图(来自 6502 Schematic.pdf),ALU 由 8 个类似的单元串联组成,可完成 8 位二进制数(一个字节)的计算。

根据上面的知识,可以把相应的逻辑门标注出来:

其中只有蓝色框标记的部分不是基础逻辑门,但是应用非门的分析方法,不难得出它是一个与门和或非门的组合:

弄清楚之后,再把方块标记的部分转化成逻辑门表示:

未转化成逻辑门的 NMOS 相当于开关,负责数据通路的选择。其中 x1 ~ x5 是输入选择,x6 ~ x12 负责运算选择,x14 ~ x15 负责输出目的地选择。去除掉这些选择器后,这个 ALU 计算单元的纯逻辑门电路如下:

可以看出,这个单元包含一个全加器,并同时可以进行 “与”、“或”、“异或” 运算。

总结

文本介绍了 NMOS 及提示了逻辑门是如何使用 NMOS 构建的,并用一个实际的例子演示了如何从 NMOS 电路图还原逻辑电路。希望本文可以满足你的好奇心,如果大家对 6502 其它部分的原理也感兴趣,欢迎阅读我的后续文章。

参考

  • balazs schematic
  • 6502 svg schematic
  • 【硬核科普】带你认识CPU第00期——什么是MOSFET

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core WebApi第2讲:前后端分离,Restful

动态页面:数据流动 / Web服务器 / Ajax / 前后端分离 / restful风格源栈课堂一起帮https://17bang.ren/Code/261 一、Ajax:页面可以局部刷新 1、PPT演示:使用Ajax也无法减小带宽耗用 请求第一个页面,用AJAX从服务器端加载了一个页头。 请求第…

Maven进阶——坐标、依赖、仓库

目录 1.pomxml文件 2. 坐标 2.1 坐标的概念 2.2 坐标的意义 2.3 坐标的含义 2.4 自己项目的坐标 2.5 第三方项目坐标 3. 依赖 3.1 依赖的意义 3.2 依赖的使用 3.3 第三方依赖的查找方法 3.4 依赖范围 3.5 依赖传递和可选依赖 3.5.1 依赖传递 3.5.2 依赖范围对传…

ollama 在 Linux 环境的安装

ollama 在 Linux 环境的安装 介绍 他的存在在我看来跟 docker 的很是相似,他把市面上已经存在的大语言模型集合在一个仓库中,然后通过 ollama 的方式来管理这些大语言模型 下载 # 可以直接通过 http 的方式吧对应的 shell 脚本下载下来,然…

【10天速通Navigation2】(三) :Cartographer建图算法配置:从仿真到实车,从原理到实现

前言 往期内容: 第一期:【10天速通Navigation2】(一) 框架总览和概念解释第二期:【10天速通Navigation2】(二) :ROS2gazebo阿克曼小车模型搭建-gazebo_ackermann_drive等插件的配置和说明 本教材将贯穿nav2的全部内容&#xff0c…

【Android】Kotlin教程(4)

文章目录 1.field2.计算属性3.主构造函数4.次构造函数5.默认参数6.初始化块7.初始化顺序7.延迟初始化lateinit8.惰性初始化 1.field field 关键字通常与属性的自定义 getter 和 setter 一起使用。当你需要为一个属性提供自定义的行为时,可以使用 field 来访问或设置…

Visual Studio2022 Profile 工具使用

本篇研究下Visual Studio自带的性能分析工具,针对C代码,基于Visual Studio2022 文章目录 CPU使用率检测并发可视化工具使用率视图线程视图内核视图并发可视化工具SDK 参考资料 CPU使用率 对于CPU密集型程序,我们可以通过分析程序的CPU使用率…

【MySQL】MySQL数据库中密码加密和查询的解决方案

本篇博客是为了记录自己在遇到password函数无法生效时的解决方案。通过使用AES_ENCRYPT(str,key)和AES_DECRYPT(str,key)进行加密和解密。 一、问题 自己想创建一个user表,user表中有一个password属性列,自己想对密码进行加密后再存入数据库&#xff0c…

基于JAVA+SpringBoot+Vue的华府便利店信息管理系统

基于JAVASpringBootVue的华府便利店信息管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&#x1f3…

GCC 简介

Linux 中的编译器 GCC 的编译原理和使用详解 GCC 简介 GCC(GNU Compiler Collection)是一套由 GNU 开发的编程语言编译器,它支持多种编程语言,包括 C、C、Objective-C、Fortran、Ada 和 Go 等。GCC 是一个开源的工具集&#xff…

STM32F103C8T6 IO 操作

1.开启相关时钟 在 STM32 微控制器中,开启 GPIO 端口的时钟是确保 IO 口可以正常工作的第一步。 查找 RCC 寄存器使能时钟 在 STM32 中,时钟控制的寄存器通常位于 RCC (Reset and Clock Control) 模块中。不同的 STM32 系列(如 STM32F1、STM…

vue3+vite 部署npm 包

公司需要所以研究了一下怎么部署安装,比较简单 先下载个vue项目 不用安准路由,pinna 啥的,只需要一个最简单的模版 删掉App.vue 中的其它组件 npm create vuelatest 开始写自定义组件 新建一个el-text 组件, name是重点,vue3中…

《Python游戏编程入门》注-第3章3

《Python游戏编程入门》的“3.2.4 Mad Lib”中介绍了一个名为“Mad Lib”游戏的编写方法。 1 游戏玩法 “Mad Lib”游戏由玩家根据提示输入一些信息,例如男人姓名、女人姓名、喜欢的食物以及太空船的名字等。游戏根据玩家输入的信息编写出一个故事,如图…

洛谷 P1226:【模板】快速幂

【题目来源】https://www.luogu.com.cn/problem/P1226【题目描述】 给你三个整数 a,b,p,求 a^b mod p。【输入格式】 输入只有一行三个整数,分别代表 a,b,p。【输出格式】 输出一行一个字符串 a^b mod ps&a…

Centos7快速重置root密码

1、重新启动Centos7,5秒内按向下方向键,使其停留在开机界面,如下图。 2、按’e’键,进入如下界面,移动向下方向键至“linux16”开头的行。然后按向右的方向键移动,找到“ro”并将其修改为“rw init/sysroot/bin/bash…

编写一个简单的Iinput_dev框架

往期内容 本专栏往期内容: input子系统的框架和重要数据结构详解-CSDN博客input device和input handler的注册以及匹配过程解析-CSDN博客input device和input handler的注册以及匹配过程解析-CSDN博客 I2C子系统专栏: 专栏地址:IIC子系统_憧憬…

使用 NumPy 和 Matplotlib 进行高级数据可视化:实践指南

使用 NumPy 和 Matplotlib 进行高级数据可视化:实践指南 数据科学和工程实践中,NumPy 和 Matplotlib 是强大的组合工具。本文将进一步展示如何借助这两个库进行更复杂的可视化任务,例如创建多曲线、叠加图、动态可视化等场景。 一、环境准备…

Crowd Counting 系列NO4.—SwitchCNN(CVPR 2017)网络复现

文章目录 引言简介环境配置1、numpy 安装2、matplotlib 安装3、cv2 安装,即opencv-python安装4、scipy 安装5、theano安装7、flip_filters不再支持 数据问题密度图生成注意 引言 SwitchCNN是我看的比较早的一篇多列密集计数网络了,但是其网络实现因各种…

漏洞挖掘 | 基于mssql数据库的sql注入

前记 今天挖edu随意点开个站,发现存在mssql数据库的sql注入,在此分享下整个挖掘过程 目录 0x1 判断网站数据库类型 0x2 了解mssql数据库的主要三大系统表 0x3 了解mssql的主要函数 0x4 判断注入点及其注入类型 0x5 联合查询之判断列数 0x6 联合查询之…

Redis 哨兵 总结

前言 相关系列 《Redis & 目录》(持续更新)《Redis & 哨兵 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 哨兵 & 总结》(学习总结/最新最准/持续更新)《Redis & 哨兵…

【成长day】NeRF学习记录1:预备知识nerf论文算法学习

个人知乎文章链接:https://zhuanlan.zhihu.com/p/3383996241 预备知识 NeRF重建 NeRF的全称是Neural Radiance Fields,即将场景表示为视场合成的神经辐射场,用神经网络来拟合辐射场,实现对三维场景的隐式表示。本质是完成了图形…