计算机的工作原理:RAM系列-触发器

计算机是什么呢?——简而言之,可以看成是一个“自动干活的设备”。说起来并不复杂,我们一一拆解一下这句话。首先“设备”很好理解,不用多解释。“干活”也好理解,就是要能实现一定的功能。“自动”是啥意义呢?——就是在初始人为干预结束后,设备能自动运行,也就是说,机器能自己存储并执行某种预设的“指令”。按照这个理解,我们基本就可以得到计算机的组成了:负责干活的设备和负责存储的设备。我们把前者叫做CPU,后者叫做RAM。当然还需要一些辅助设备将这两个东西连接起来,简要模型如下:

前面说了,RAM的作用是存储数据,我们知道,要存储信息,至少要有两个状态,且都必须是稳定的,我们把这样的器件称为双稳态器。最简单的双稳态器组成非常简单——两个非门串联反馈在一起,如下图所示:

经过简单分析这个电路,很容易发现:上图中红色部分信号既可以是高电平,也可以是低电平!也就是说,原来电路上是高电平的话,就一直维持在高电平,原来低电平的话,就一直维持在低电平-----这个电路有两个稳定状态,也就是有最简单的记忆功能。

大家都知道,触发器是现代电子技术中一个非常核心的器件,其实触发器的本质就是通过两个非门串联反馈在一起的双稳态器。

但是呢,基于两个非门串联反馈在一起的双稳态器有一个缺点:
状态一旦确定了之后就不再变化了,也就是说,我们没有办法改变这个系统的记忆,因为没有控制接口。
这当然难不倒我们,我们可以自己加上,比如,可以用两个与非门来代替非门,这样就可以增加两个控制端:

当然,也可以用或非门来代替非门,感兴趣的可以自己试一下。
如果将上图的与非门翻转180°,就会变成下面的图:

有没有一种似曾相识的感觉?没错,这就是RS触发器,它有四种状态:
a=1,b=1,为保持状态,也就是退化为两个非门的反馈串联;
a=0,b=1或a=1,b=0,就会控制记忆和输出;
a=0,b=0,o和ō 都是1,应避免出现该种状态,我们称之为非法态。(o表示输出(output),ō 表示反向输出)

有两个bug:

能够控制记忆,但是有非法状态;
整个系统不受控,一直在工作,当输入端变化时,输出端也跟着变化。
我们可以在输入端再增加两个或门,这样的话,中间这个输入引脚为1的话,电路处于保持状态,就自动屏蔽外部输入,也就是老子不干活了。只有中间这个引脚为0的时候,才工作。

这样就就解决了第二个bug,但是依然有存在非法态的可能,怎么干掉呢?
既然中间引脚解决了保持记忆的问题,那我们最后只要保证输入的两个引脚不同,就可以避免全0的情况,加个非门不就完事了?两个输入永远不会同时为0。

这就是电平型D触发器。

前面我们说了,只有当s=0时,输出才等于输入,系统才开始干活,我们更习惯s=1时干活,这样也好办,再加一个非门。同时,我们把表示a改为i,意为input。

这样显得略臃肿,我们知道:

即:

这样左上方的或门就可以变为与非门,所以有:

同时,我们又知道:

所以,此时:

可以进一步简化成4个与非门的形式。

这就是1位寄存器了。简写形式如下:

1位寄存器

其功能是:

当s=1时,o=i;当s=0时,o保持原来的状态。

1.国产替代摸不着门儿?快来回看兆易创新直播课!

2.开源的RISC-V能否成为中国“缺芯”的解药?

3.树莓派Pico:仅4美元的MCU

4.MCU支持AI功能的多种原因~

5.2020年,我学习到的20条软件工程准则~

6.状态机思路在嵌入式开发中的应用~

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
这是Z80-MBC(多引导计算机),这是一个微型4MHz Z80 64kB RAM系统,带有基本和Forth解释器,CP / M 2.2,QP / M 2.71,汇编器和C工具链。 这是一个完整的开发“生态系统”,并且使用iLoad引导模式,可以通过单个命令(例如在Arduino IDE中)在目标上交叉编译,加载和执行目标汇编程序或C程序。 而且,它可以轻松扩展,并且具有Atmega32A作为“通用” I / O仿真器的“ Arduino心”。 技术细节/组件 “基本系统”所需的IC为: Z80 CPU CMOS(Z84C00)4Mhz或更高 Atmega32A TC551001-70(128kB RAM) 74HC00 MCU Atmega32A用作通用I / O子系统,Eeprom,以及Z80 CPU的复位和4MHz时钟发生器。 将附件链接处获取的Arduino引导加载程序闪存到Atmega32A中 ,并且可以使用Arduino IDE的板管理器。 首先(使用您喜欢的方法)刷新Arduino引导程序,然后开始构建整个程序! 当然,我使用Arduino IDE开发了与Z80总线交互并“ 虚拟化 ” Z80 CPU看到的外围设备的IOS(I / O子系统)。 作为振荡器,它使用内部8MHz Atmega32A振荡器,因此不需要石英,并且由此衍生出Z80 CPU的4MHz时钟(因此,从闪存中加载引导加载程序时,必须选择“内部8MHZ振荡器”引导加载程序变体。 Arduino IDE!)。 74HC00主要用作RS触发器,以在I / O操作期间停止Z80 CPU,从而为Atmega32A提供了与Z80总线交互所需的时间。 128kB RAM TC551001仅用于一半(64kB),因为Z80地址空间仅为64kB(我为低成本而选择了该IC)。 请注意,此处只能使用Z80 CPU的CMOS版本。这是因为在此原理图中所遵循的给定条件下,只有CMOS版本具有与Atmega32A和74HC00兼容的逻辑电平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值