存1
记录1,也就是说当第一次输入了值后,不管A接下来是0还是1,电路中存储了不变的值OUTPUT
存取0
记录0
锁存器
将两个结合在一起,做成了锁存器(AND-OR LATCH)
当我的SET设置为1时,1 OR 1 = 1, 最后输出 1 AND 1 = 1,之后只要rest的值依然为0,不给SET,那我的电路就就一直存在着值 OUTPUT=1
新的问题来了,我们有2根输入线 SET,和REST.实现起来比较麻烦,也难以理解,如何优化?
将2条线合并成一条输入线,通过增加一些门
门锁 Gated Latch (因为可以打开和关上)
抽象一下: 我们只关心数据输入0或者允许输入0,以及输出
寄存器
多路复用器
有两个多路复用器,一个处理行,一个处理列
256位内存还是太小了
思考:
1.RAM是什么?什么时候会使用到? 类似在我们玩游戏中的什么? 与之相对的Memory的特点是什么?
2.上一节我们讲ALU全称是什么?
3.电流是单向还是双向的?类似于由八个什么组成的8位脉冲进位加法器? 那我如何可以实现电流的双向呢?
4.讲一讲 使用or门和输入A,B实现记录"1"的电路的方法
5.锁存器是通过OR,NOT,AND怎样实现的?
6.门锁(Gated Latch)是怎么使用的?
7.一组这样的门锁就是什么? 英文是什么? 8个可以存放几个bit? 描述能存几个bit的变量叫做什么?
8.64位寄存器中,一共有多少条线(存值线,允许线, 输出线) ,那么256位寄存器需要多少线? 这么多线如何解决比较好?
9.那我们如何确定交叉的地址呢?正常我们在现实中确定一个交叉地址是地18大街和8大道交叉口,类比到我们的寄存器中,我们使用什么?
10.多路复用器是用来做什么的?
答案:
1.RAM是Ramdom Access mermory, 随机存储器. 当我们玩游戏的时候,存档就是放在RAM中,当电源突然关机,RAM的数据就丢失啦. 与之相对应的Memory内存的特点是 可持久化存储
2.arithmetic logic unit, 计算逻辑单元
3.电流是单向的. 半加器. 通过将电路的输出连回到输入
4.在OR门左边有两个输入A和B,右边有个输出,中间是OR逻辑门的图形表示样式.
当A,B都是0时: 输出0
当A输出为1, B为0时, 输出为1, 这时候将输出连回到B端的输入,作为新的输入B
计算1 OR 1的结果变成了1,即使我们这时候将输入A修改为0,输出依然为1,这样我们就得到了一个记录"1"的电路
5.锁存器是通过并联or门和NOT门的电路,并串联到AND门上实现的
6.门锁有一个DATA IN 线专门存放要改变的数据, 一个WRITE ENABLE线,用来允许改变数据.还有一个输出DATA OUT. 只有当允许线为1的时候,下面里面的回路会变成NOT 1,这样就会往上走,先通过AND判断要变成的值为0还是1,再通过OR门将数据改为对应的DATA中的数据.
7.寄存器(register). 8个, 位宽
8.64条数据线连通输出线64条,还有一条线启用所有锁存器. 513条.
解决方式:使用矩阵
当我们想要仅使用某个寄存器时,我们将其左上角流通的两条线打开.右下角对应的寄存器就是想要打开的寄存器
将所有的锁存器线都连接到一根WRITE ENABLE线上.
假如想要让锁存器变为可写入状态,那么行线,列线,和"允许写入线"都必须为1
这意味着我们可以将所有的锁存器的数据线都连在一根线上,因为只有当writeable的时候才会存储数据,同理readenable线也可以接在同一条上,这样我们其实只需要35根线
9.使用4个字节存储行,4个字节存储列.(0-15 11111111)
10.多路复用器用来计算对应矩阵数据线的地址,