门和布尔代数
这章写的行云流水,作为电子专业的科班,纯当复习了,虽然忘的也差不多了╮(╯▽╰)╭
门
数字电路只能表示两个逻辑值。一般用电压 0~0.5V 表示二进制的0,电压 1 ~ 1.5V 表示二进制的1。
通常用门来表示这种电子设备,由二极管构成,门是所有数字计算机的硬件基础(如CPU和存储器)。
布尔代数
布尔代数是数字计算机的基础。通过布尔代数可以表示各种电路。

任何一个电路都可以用真值表来表示:

基本数字逻辑电路
组合逻辑电路
输出信号由输入信号的当前状态唯一确定的电路就是组合逻辑电路。即输出信号是其输入信号的函数。
多路选择器
多路选择器,通过N个控制信号,就可以控制2N个输入信号中的某个信号输出。
如下图,控制信号A、B、C译码产生一个3位二进制数,当ABC的输入信号为000时,除了D0的信号外,其他输入信号经过与门都是0,最后汇聚到或门时,输出信号F就等于D0;同理,当ABC=001时,F=D1,ABC=010时,F=D2。
多路选择器实现了从并行到串行的转换,其典型应用就是键盘。

译码器
输入一个n位的二进制数,根据二进制的值将2N个输出信号中的一个选中(即将其置1)。
比如常见的3-8译码器,当ABC=000时,D0被选中,置为1,其余为0,输出结果为0000 0001;当ABC=011时,D2被选中为1,其余为0,输出结果为0000 0100
译码器常用于存储器的芯片选择上。比如由8块存储器芯片组成的2G内存,通过译码器就可以从中使能一个进行读写操作。

比较器
比较器用来对两个字进行比较。如果它们相等,则结果为1,否则为0。
如下图,如果A与B相等,则A0=B0,通过异或门后结果为0,汇聚所有结果于或非门,输出的结果为1。

算术电路
移位器
如下图,控制信号C决定移位方向。
c=0时,左移,第7位补0;c=1时,右移,第0位补0。
c=0时,D1 ~ D6中每对与门的左边起了作用;c=1时,D1 ~ D6 中每对与门的右边起了作用

加法器
半加器
半加器可以完成1位二进制相加。
当多位数相加时,半加器可用于最低位求和,并给出进位数。但是这种加法无法考虑低位来的进位,所以称为半加。

全加器
全加器能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号。

ALU
下图是一个简单的一位ALU,可以对两个1位数进行算术或逻辑运算。它结合了组合逻辑电路和算术电路。

译码器的输入决定逻辑部件的输出是AB的与逻辑运算结果(F0F1=00),还是A+B的算术运算结果(F0F1=01),还是B的取反结果(F0F1=10)
F0F1=11时,使能算术计算,置ENA=ENB=1,INVA=0,即可实现A+B
这样的1位 ALU 叫做位片,通过组合多个位片,即可实现任何位的ALU功能。
如下图的8位ALU,其中INC信号只对加法运算器作用,可实现运算结果自增。实现 A+1、A+B+1等功能。

内存
锁存器
锁存器是一种可以记住上一个输入值的电路。它的输出不仅与当前输入值有关,还和它的上一个状态有关。
SR锁存器
SR锁存器:
- 当 R=S=0 时,根据上一个状态Q的不同,锁存器将有两个稳定的状态。
- 当S=1时,锁存器输出状态将为1
- 当R=1时,锁存器输出状态将为0
- 当S=R=1时,锁存器处于不稳定状态,电路状态无法确定
由于该电路能够"记忆"上次是置S还是置R,所以可以利用这个特性来制造计算机内存。

时钟SR锁存器
时钟信号为0时,锁存器状态不变;时钟信号为1时,锁存器状态受S和R的影响。

时钟D锁存器
D锁存器完美地避免了输入信号同时出现1的情况。
当时钟信号为1时,D的当前值会被存储到锁存器中。它是真正意义上的1位内存。

触发器
触发器:利用反转器微小的传输延迟,在某个特定的时刻对某个信号采用并加以存储。
触发器状态的改变发生在时钟信号进行跳变的时刻,是边沿触发。
如下图,在a从低电平跳变到高电平时,由于反转器的微小的传输延迟(通常是几百个皮秒),使得b处的信号仍然保持高电平,未进行反转跳变为低电平。这种时间上的后移,使得在时钟信号的上升沿之后的一定时间,D锁存器将被激活。

表示符号

寄存器
多个触发器组合一起就构成了寄存器,用来保持超过1位长的数据。
如下是一个8位寄存器。8个一位触发器的时钟信号由同一个输入信号CK控制。触发器会在时钟信号CK上升沿时存储信号。

非反向缓冲器

内存组成
如下图的内存系统有一个4个字长为3位的字,对内存的每次读写操作都针对其中一个完整的3位字进行。

写内存:假设将输入数据001写入字0
- 地址译码部分,地址信号 A0A1=00
- 片选信号 CS=1
- 读写信号 RD=0
此时,被选中的字的CK信号收到一个上升沿,输入线上的数据就会被装入字0的3个触发器中完成写操作
读内存:假设要读取字0中的数据
- 地址译码部分,地址信号 A0A1=00
- 片选信号 CS=1
- 读写信号 RD = 1
由于控制信号相与后为低电平,所有的写门的输出都为低,使得触发器中的内容不会被修改。选中的字的信号和被选中的字的Q位与在一起,这样,被选中的字就可将它的数据输出到底部的四输入或门中。由于其他三个字此时的输出都为0,在底部的非反向缓冲器中的输入信号和选中的字中的数据相同。同时,将使能信号OE置高,使能非反向缓冲器,使得数据输出到Q0Q1Q2 ,至此完成了一次读内存操作
RAM和ROM

CPU芯片和总线
CPU集成在单个芯片中,每个CPU芯片都通过它的管脚与外部世界进行通信。连接管脚和外部世界的平行导线叫总线。
CPU芯片
CPU芯片上的管脚可以分为三类:
- 地址信号:m个地址信号管脚的CPU,其最大可寻址2m 的地址空间
- 数据信号:n个数据信号管脚的CPU,可在一次读写操作中读出或写入一个n位的字
- 控制信号
- 总线控制信号:用于表明CPU要读或写内存,或做其他事情
- 总线仲裁信号:用于控制总线上的流量,解决总线冲突。
- 中断信号:用于CPU处理输入/输出设备的请求。
- 协处理器信号:用于和浮点运算芯片、GPU等其他芯片的通信
- 状态信号
- 其他控制信号

要从内存取指令时,CPU 先将指令存放的内存地址输出到它的地址信号管脚上,然后发出一个或多个控制信号,通知内存它要读(例如)一个字。内存回应这个请求,将CPU要读的字送到CPU的数据信号管脚上,并发出控制信号,表示它完成了这个动作。CPU看到这个信号后,就可以从数字信号管脚接收这个字,得到了要取的指令。
总线
计算机总线
总线是计算机中多个设备公用的电子通道,所有连接上来的设备都必须遵循总线协议。
和CPU一样,总线上也有地址信号、数据信号和控制信号。即控制总线、地址总线、数据总线。但是,总线上的信号线和CPU的管脚不一定是一一对应的。

连接在总线上的设备分为两类:
- 主设备:能自行对总线的数据传输进行初始化
- 从设备:只能等待CPU的启动命令
注意,从设备在不同场景下可能会是当前场景下的主设备。但是,任何情况下,内存都无法成为主设备。

总线宽度
总线中地址信号的根数越多,CPU能够直接寻址的内存空间越大,价格也更昂贵。
若总线中有N根地址线,则CPU能用它对总共2N个不同的存储单元进行寻址。
有两种办法可以提高总线中的数据带宽:缩短总线周期(单位时间内传送次数增加)或增加总线中数据信号线(每次传送更多的数据位)。
虽然有可能 (但很困难)提高总线速度,但由于总线中不同的信号线的传输速度有细微的差别,也就是所谓总线偏离问题的存在,使得这种方法比较困难。总线速度越快,偏离就越严重。而且提高总线速度无法保证向后兼容。
混合总线:将原来分离的数据信号和地址信号合并一起,使得它们即可做地址信号又可以用作数据信号。
例如,对内存写操作时地址信号要先传给内存并由锁存起来,然后才能在总线上传送数据信号。而用原来地址信号和数据信号相分离的方案时,地址和数据可以同时传送。显然,混合总线的传输速度比原来至少慢2倍,但是大大降低了成本。
由于总线偏离等设计技术的原因和向后兼容的要求,使得当前的总线频率都比较低。
总线仲裁(主要是思想)
两个或多个设备需要成为总线的主设备时就产生了总线冲突。防止总线冲突,就必须釆用一些总线仲裁机制。
仲裁机制可分为集中式和竞争式两种方式。
集中式仲裁
集中式总线仲裁由一个单独的总线仲裁器来决定下一次该哪个设备使用总线。
总线仲裁器只能区分出有请求和无请求两种状态,无法判断有多少个总线设备发出了总线请求。
单级集中式仲裁
如下图,总线中有一条线或在一起的总线请求信号,总线请求信号由一个或多个总线设备在任何时间发出。
当总线仲裁器发现总线请求后,它发出一个总线授权信号。这个信号被串联到所有的输入/输出设备上。当物理上离仲裁器最近的那个输入/输出设备得到授权信号时,由这个设备来检査是否它发出了总线请求信号。如果是,由它接管总线, 并停止授权信号继续往下传播。若该设备没有发出总线请求,则将授权信号继续传送到下一个设备,这个设备再重复上述动作,直到有一个设备接管总线为止。这种方式称为菊链仲裁 ,它的特点是设备使用总线的优先级由它离总线仲裁器的距离决定,最近的优先级最高。在集中式仲裁机制中,通常将CPU的优先级设为最低。
责任链模式有木有!!!!

多级集中式仲裁
多级仲裁中每一级都有各自的总线请求信号和总线授权信号。简单地说就是优先级的思想。
如下图两级仲裁机制中每个设备都接在其中的某一级仲裁线上,时间急迫的设备连接的仲裁线的优先级较高。如图中的设备1、2和4连在优先级为1的仲裁线上,而设备3和设备5连在优先级为2的仲裁线上。当多个总线仲裁级别同时发出了总线请求时,总线仲裁器只对优先级最高的那个级别发出总线授权信号,在同一优先级内,再使用菊链仲裁方式,决定由哪个设备使用总线。图中的设备在发生冲突时,优先级依次为1、2、4、3、5。

仲裁预处理
部分仲裁器还有第三根信号线,是由设备在得到授权并控制总线后发出的,一旦设备发出这个确认信号,总线请求信号和授权信号都被置反,这时,在这个设备使用总线的同时, 其他设备还照样可以发出总线请求,当前设备使用完总线后,下一个总线主设备就已经选择出来了。也就是说,下一个总线仲裁的循环可以在设备发出的确认信号刚被置反时就开始。 这种应用模式需要在总线中增加信号,并要求每个设备中增加相应的逻辑电路,但确实提高了总线周期的利用率。
竞争式仲裁
简单地说,竞争式仲裁就是广播,或者说是观察者模式。
例如,某台计算机可以有16个优先级的总线请求信号,当它的一个设备需要使用总线时,就发出与它相对应的总线请求信号,所有的设备都监听着所有的总线请求信号,这样,到每个总线周期结束时,每个设备都能知道自己是否是优先级最高的总线请求者,能否得到允许在下一个总线周期使用总线。与集中式总线仲裁相比,这种总线仲裁方式要求的总线信号更多,但防止了总线潜在的浪费。它还要求总线上设备的个数不能超过总线请求信号线的条数。
总线操作
总线具有多种工作模式,比如常见的如下几种操作:
- 块传输:正常情况下,总线上一次传送一个字。对于cache这种要求一次读取一个缓存行的设备会使用块传输
- 读改写:CPU可以在不释放总线使用权的情况下,从内存中读入一个字,检查并修改该字,然后将它写回到内存中。在多处理器系统中,这种总线操作防止了其他CPU争用正在被使用的总线,使它们无法干扰第一个CPU的总线操作。
- 中断:多个输入/输出设备同时向CPU发起中断请求时,通过集中式仲裁,同一时刻优先级最高的设备将获得总线控制权
2275



被折叠的 条评论
为什么被折叠?



