上一篇文章学习了总线的相关知识,途中ABC当时假设为一个个的8位寄存器。这一篇要学习怎么构建这个寄存器

    

  这分为两个三个部分,数据输入,寄存器,数据输出。首先不管输出,来看数据输入和寄存器这两个部分。【03触发器与锁存器】中讲了D型触发器,那么我们的寄存器(D寄存器)就由D锁存器(74LS74)构成,结构如下:

    

  图中画了2位的寄存器,每一个部分就是一个1位的寄存器,如果一共8位的话就需要8个这样的1位寄存器。load端为0,那么数据端不论是多少,输出端Q都不会改变。如果load端为1,当时钟上沿时,Q就会保存D传入的数据。图中上面的寄存器拿load为0举例,下面的是load为1。实际搭建的图如下:

    

  中间四个数字电路分别为 74LS04(反相器),74LS08(与门),74LS32(或门),74LS74(D型锁存器)。黄线为load,蓝线为数据data,白线为时钟clk,可以连接到之前用555定时器做的pc上。实验到时候可以把黄线接在+或者-,表示load到0和1。这是你会看到灯泡(寄存器的数据),会随着clk,相应的根据load的值,存储或无视蓝线data的值。

  这样一个1位寄存器的输入和寄存就做完了,还差输出端。蓝线只需要接入到总线上,就能收到来自总线的数据了,但把数据输出到总线,需要做些处理,需要连接一个三态双向总线收发器。这个在【05总线】这一篇中由讲过为什么。

  整合:至此我们了解了一个1位的寄存器从输入到输出的制作,8位的话则需要8个这样的组合。这里我们可以直接用两个 4bit D-type registers with 3-state outputs(74LS173)即可。顾名思义,即3态输出端的4位D型寄存器集成电路。这里要说明一下,虽然我们要亲手做cpu,但改方便时要方便。我们当然不能方便到直接用一个8086放在面包板上就算做了个cpu,可当然也不能全用基本门电路,甚至用二三极管和电容做cpu,我们要找一个折中到办法,在了解到原理,但重复度比较高的零件,就尽量用即成的。下图位74LS173针脚图:

    

  • CP 时钟输入端(上升沿有效)
  • CR 清除端
  • 1~4D 数据输入端
  • 1~4Q 输出端
  • N,M 三态允许允许端(低电平有效)——是否输出到总线
  • G1,G2 数据选通端(低电平有效)——是否存入

这里引入官方说明:

  

  这样两个74LS173就组成了一个8位寄存器,包含输入和输出端的控制。由于实践中设计的cpu需要直观看到寄存器里的内容,所以不管输出到总线的控制信号如何,我们都希望能够通过LED灯来观察寄存器里的内容。所以我们使74LS173的输出端控制始终为可输出,连接到LED灯上,再在后面接一个74LS245(三态控制)来控制信号是否输出到总线。设计图如下:

    

  其中M,N始终接地,即低电平有效,输出端一直有效,通过LED灯后再进行三态输出处理。

  实操图第一步:

    

  实操图第二步:寄存器输出端连接到三态上,三态的输出端连接到总线。总线又通过蓝线连接到寄存器到输入端,还有三根黄线,最右边是load(数据是否存入),中间是clear(永远0),左边是三态的允许(是否输出到总线)。白线是clk。

    

  将设备连接到pc和总线上:

    

  连接多个寄存器:

    

  总结:至此多个寄存器已经可以和总线交互,并且连接到了pc上,随着时钟到改变,通过load和三态决定是否载入和输出数据。

  参考视频:eater.net

【从零开始自制CPU之学习篇06】寄存器的更多相关文章

  1. 【从零开始自制CPU之学习篇07】最简单的ALU—全加器

    ALU是算术逻辑单元,是CPU中重要的一部分,因为CPU本质上就是不断重复最简单的计算.而我们这一版CPU的ALU部分更为简单,是一个只能做加法的ALU. 理论部分 我们需要一个能帮我们进行数学计算的 ...

  2. 【从零开始自制CPU之学习篇00】开篇

    从今天开始决定用面包板制作一个8位的CPU,实现几个简单的指令.我给自己分两大部分计划,第一部分是学习制作CPU的理论知识,第二部分是实践.并打算实施计划的同时用博客的方式记录下来.理论知识的部分重点 ...

  3. 【从零开始自制CPU之学习篇05】总线

    总线定义:总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线.地址总线和控制总线,分别用来传输数据.数 ...

  4. 【从零开始自制CPU之学习篇03】锁存器与触发器

    本篇学习了两种锁存器:SR Latch和D Latch,一种触发器:D flip flop SR Latch:SR—锁存器 初始状态下,S和R都为0,Q和Q‘随机有一个为1另一个 为0(取决于电流速度 ...

  5. 【从零开始自制CPU之学习篇04】电容

    电解电容: 多数在1μF以上,直接用数字表示.如:4.7μF.100μF.220μF等等.这种电容的两极有正负之分,长脚是正极. 独石电容: 独石电容器是多层陶瓷电容器的别称, 简称MLCC 读数方法 ...

  6. 【从零开始自制CPU之学习篇02】555定时器

    555定时器是一种集成电路芯片,常被用于定时器.脉冲产生器和震荡电路.在CPU制作中作为pc(程序计数器)的主要组成部分.以下是我购买的NE555实拍图: NE555的针脚示意图: 555定时器各针脚 ...

  7. 【从零开始自制CPU之学习篇01】识别四色环电阻

    制作CPU的好多部分都用到了各种阻值的电阻,由于我选购的是色环电阻,即电阻表面涂上一定颜色的色环,来代表这个电阻的阻值.因此通过色环来快速识别电阻阻值需要作为储备知识,不然一堆电阻插在面包板上很快就乱 ...

  8. Objective-C学习篇06—NSString与NSMutableString

    NSString OC提供了定义字符串对象的方法,也就是将想要表达的字符串用一对双引号引起来,并在开头加上@.@是OC中的指令符,它告诉编译器@以后的内容为OC中的语法.比如@”Harbingwang ...

  9. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

随机推荐

  1. 课堂小记---JavaScript(2)

    本阶段难点疑点梳理 1.关于switch中default的使用: default同case功能一样,区别在于并不匹配任何信息,只有当case中无任何匹配的时候才会执行default.需要注意的是,这是 ...

  2. 线程池ThreadPoolTaskExecutor配置说明

    一般实际开发中经常用到多线程,所以需要使用线程池了, ThreadPoolTaskExecutor通常通过XML方式配置,或者通过Executors的工厂方法进行配置.  XML方式配置代码如下:交给 ...

  3. 【数据结构】KMP算法

    我还是不太懂... 转2篇大神的解释    1>https://www.cnblogs.com/yjiyjige/p/3263858.html     2>https://blog.csd ...

  4. jenkins里用ansible发布代码常见的问题

    1.stdout: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined cd bin/vi catalina. ...

  5. B站资源索引

    自从搭建了B站的监控之后,就收集了一堆up主,下面分类整理一下,排名不分先后,内容会持续更新……2019-4-10 19:04:08 一.酷玩&装机&开箱 1.AS极客 2.Virtu ...

  6. VB洗牌算法产生随机数组

    算法图示: 运行效果: 详细代码: Option Explicit '洗16张牌(0-15),方便用十六进制显示 Dim Card() As Long Private Sub 洗牌() Dim i&a ...

  7. XP Sp3 开机就要激活,否则无法登录windows桌面

    参考网页:https://www.reddit.com/r/sysadmin/comments/5m9240/activating_windows_xp_in_2017_still_possible/ ...

  8. Hadoop集群搭建-HA高可用(手动切换模式)(四)

    步骤和集群规划 1)保存完全分布式模式配置 2)在full配置的基础上修改为高可用HA 3)第一次启动HA 4)常规启动HA 5)运行wordcount 集群规划: centos虚拟机:node-00 ...

  9. LSI IBM服务器阵列卡操作经历

    说明:因为服务器的一个磁盘坏了,因为没有经验不敢操作.正好有一台撤下来的相同服务器,所以查找了各种教程,研究了一下各种操作.记录在这里,防止忘记.一.概念说明raid(自己百度)阵列卡组(group) ...

  10. Servlet 上传下载文件

    上传文件 1)在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮 2)表单需要上传文件时,需指定表单 enctype 的值 ...