P6 寄存器 & 内存-Registers and RAM

传送门:P6 寄存器 & 内存-Registers and RAM

具备记忆存储功能的电路

        锁存器

        固定存储1的电路:

固定存储1的电路

        用一个或门即可实现固定存储1,在输出端添加一根线返回到原输入端B,这样当或门输出1之后,无论A输入端如何改变,电路会一直持续输出1。

        固定存储0的电路:

固定存储0的电路

        用一个与门即可实现固定存储0,在输出端添加一根线返回到原输入端B,这样当与门输出0之后,无论A输入端如何改变,电路会一直持续输出0。

        AND - OR锁存器:两个数据输入端的1位锁存器

AND - OR锁存器电路

        两个固定存储0和1的电路相结合即为具备存储0和1的电路。

        当设置端 = 1时,固定存储1;当复位端 = 1时,固定存储0。如果设置端 = 复位端 = 0,电路会输出最后放入的内容。

        门锁:单个数据输入端的1位锁存器

门锁电路

        允许写入线是负责打开或关闭存储功能的输入端。

        当允许输入线端 = 0时,无论数据输入端 = 0或1,电路的输出端恒为上一步存储的结果(若无上一步存储,则输出默认为0)。因此可以通过控制允许输入端打开存储功能与否,从而实现长期或短期存储数据输入端所提供的数值(一个字节)。

        寄存器

        一位字节的存储电路已经实现,但是现实需要的数据存储至少要求4位字节,8位字节等,因此通过利用多个锁存器并行组合成的电路形成的元件,就是寄存器。

        位宽:寄存器存储的每一个数字的位数。

8位寄存器电路

        利用8个单字节锁存器即可实现8位寄存器,同时将8条启用写入线替代为1条总启用写入线。

        也就是说,64位寄存器需要129条线,256位寄存器需要513条线,这样的话就太烧钱了!!!矩阵应运而生!!!

        矩阵:

16 * 16门锁矩阵

        当要启用某个锁存器时,就打开相应的行线和列线。如何实现呢?

矩阵局部锁存器电路

        对于一个m * n的矩阵如果我们单纯设置相对独立的m条行线和n条列线作为允许写入线,是不可以实现打开或关闭指定锁存器的功能的,因为,当第k行线或第k列线为1时,第k行或第k列所有锁存器都会打开。因此需要做点改动:

改版后的矩阵局部锁存器电路

        如图,对于两条行和列的允许写入线设置一个与门,当两者都为1时,指定的锁存器才会打开允许写入的功能(未打开的锁存器则自动忽略数据)。

        当然,我们也可以用同样的办法设置允许读取线来读取数据。

        对于256位寄存器,如今只需要1条数据线,1条允许写入线,1条允许读取线,16条行线,16条列线,即35条线!

        多路复用器

        交叉点的标志:寄存器通过矩阵打开指定锁存器存放数据,而指定位置其实也是一种数据,也就是地址。

        一个寄存器需要两个多路复用器充当行,列的两个地址标识。(比如存放8位数据的256位寄存器,最多有16行或列,16 = 2^4,因此这里的多路复用器采用4位即可,eg:12行8列 = 1100 1000)

多路复用器

8位数字内存(1位数字8个字节)

        其实就是8个类似256位寄存器并排组成的内存。

8位数字内存


8位数字内存简图

        含有256个地址,每个地址能读或写一个8位值。

你可能感兴趣的:(P6 寄存器 & 内存-Registers and RAM)