理论时钟问题


8

只是理论问题比什么都重要。窥视信号和波谷信号之间的时钟信号宽度必须相同吗?

带有数据的普通时钟信号(如下):

普通时钟

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

随机时钟

芯片(通常是任何芯片,但以串行并行输出移位寄存器为例)在使用随机时钟的情况下仍能正常工作吗?如果没有,为什么不呢?

同样,不是我打算这样做,但是从理论上讲,我是否有理由不能将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

并非所有时钟都是对称的。某些旧的微处理器需要66%的占空比(如果我没记错的话)的时钟。
HL-SDK

1
伪代码描述的技术称为位敲打bit banging),这是完全合法的事情。
Phil Frost 2014年

Answers:


12

在您的示例中,时钟信号沿边沿触发。您可以知道,因为数据必须在时钟沿(建立时间)之前的短时间内保持稳定,并且如果时钟在下降沿锁存,则它与您的数据更改一致。

除了建立时间以外,其他约束条件很少:时钟可以保持高电平,只要需要即可。但是,在下一个上升沿之前,您将必须有最短的空闲时间。


7

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

实际上,软件生成的时钟信号将始终在时序上有很大的差异。重要的一点是,对于外部芯片,您不要做得太快。但是,典型移位寄存器的时序以ns的10表示,比您观察到的1 ms快几个数量级。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.