理论时钟问题

电器工程 数据
2022-01-20 02:19:19

只是一个理论问题比什么都重要。时钟信号在峰谷之间是否必须具有相同的宽度?

带数据的正常时钟信号(下):

正常时钟

带有数据的随机时钟信号(数据仍然与时钟同步)(下):

随机时钟

芯片(通常是任何芯片,但作为示例,串行并行输出移位寄存器)在更随机的时钟下是否仍能正常运行?如果不是,为什么不呢?

同样,不是我打算这样做,但理论上有什么理由我不能使用 Raspberry Pi/Arduino 上的标准输出引脚作为时钟,而另一个引脚作为数据?

示例伪代码:

fakeClockPin = 1;
dataPin = 2;

setPin(dataPin, HIGH);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms

setPin(dataPin, LOW);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms

setPin(dataPin, HIGH);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms

setPin(dataPin, LOW);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms
3个回答

你的时钟信号是边沿触发的,在你的例子中是上升沿。您可以判断,因为数据必须在时钟边沿(设置时间)之前的短时间内保持稳定,并且如果时钟将锁定在下降沿,它将与您的数据更改一致。

除了设置时间之外,几乎没有什么限制:时钟可以随心所欲地保持高电平。但是,在下一个上升沿之前,您必须有一个最短的低电平时间。

只要您在数据表中指定的“正常操作参数”范围内操作芯片,它就会正常运行。大多数芯片只要求时钟边沿之间的最短时间和建立时间(数据稳定到有效时钟边沿)。延长时钟都不会违反。

在实践中,软件生成的时钟信号总是会有很大的时序变化。重要的一点是你不要为外部芯片做得太快。但典型移位寄存器的时序以 10 ns 表示,比您观察到的 1 ms 快几个数量级。

带有“时钟引脚”的简单芯片并不关心时钟边沿何时到达,只关心它。甚至,同步脉冲更有利于软件或更复杂的硬件,例如基于 PLL 的设备。