cpu时钟是如何连接到其他组件的。人们说所有的操作都开始于时钟滴答声是什么意思。
发布于 2019-03-29 17:09:54
CPU时钟驱动CPU。在内部有一个总线系统,基本上是一个捆绑的电气连接。有些人,而且只有一个人,可能会把他们的数据放在上面。例如,寄存器输出或ALU结果(他们不想这样做,控制单元告诉他们这样做,这确保在写模式下只有一个实体可以访问总线)。
这种操作是不安全的,因为当电信号通过逻辑门时,逻辑可能会多次波动电信号,直到电信号稳定,或者某些信号会比其他信号更早到来。这取决于电容和电感效应等,延迟信号。
因此,在时钟触发之前,没有人会从总线上读取数据。时钟脉冲表明经过了足够的时间,信号应该是安全的,并且假定总线上的信号是稳定的。
这只需在想要从总线读取的器件上使用带时钟信号的and门或边沿检测器即可。
示例:
Data-Bus ----/8----- [ ]
Data-In ----------- [ R ]
Data-Out ----------- [ E ]
Clk ----------- [ G ]
' Data-Out may be asyncronous like this, though not recommended, or on falling/low clock pulse, or the Data-Out signal is clock synced:
Data-Bus[0] = Data-Out AND Data[0]
Data-Bus[1] = Data-Out AND Data[1]
Data-Bus[2] = Data-Out AND Data[2]
[...]
' Data-In will almost always be clock synced
If (Data-In AND Raising-Clk-Edge)
{
Data[0] = Data-Bus[0]
Data[1] = Data-Bus[1]
[...]
}当然,这很大程度上取决于您的实际硬件。例如,读使能、写使能和输出使能可以是低有效等。
有一个great youtube series是一个人在电路板上实际构建一个CPU。当然,就现代cpu的功能而言,这过于简化了,但它有助于理解基础知识。
cpu时钟本身通常不直接连接到其他硬件,而是由cpu生成触发脉冲,告知其他硬件现在可以安全地从总线读取/写入总线。
每条指令可以由几条微指令组成。例如:
LDA #5,将5加载到A寄存器
' Fetch
Put IP on Address bus, Enable memory out => Opcode for LDA-Immediate is now on Data-Bus
Write-Enable Instruction Register, Increment IP
' Decode with combinatorial logic
' CU realizes it needs another word from memory (the value) and it needs to go to the A-Register
' Execute
Put IP on Address bus, Enable memory out => #5 now on data-bus
Increment IP, Write-Enable A-Register => #5 now in A-Register
' Done这是由cpu时钟完成的。系统时钟与此关系不大。
https://stackoverflow.com/questions/55413752
复制相似问题