Pregunta teórica del reloj

8

Solo una pregunta teórica más que nada. ¿La señal del reloj tiene que tener el mismo ancho entre miradas y canales?

Una señal de reloj normal con datos (a continuación):

Reloj normal

Una señal de reloj aleatorio con datos (los datos aún están sincronizados con el reloj) (a continuación):

Reloj al azar

¿El chip (cualquier chip en general, pero como ejemplo, un registro de desplazamiento en serie en paralelo) se comportaría normalmente con un reloj más aleatorio? ¿Si no, porque no?

Una vez más, no es que esté planeando hacer esto, pero en teoría ¿hay alguna razón por la que no pueda usar un pin de salida estándar en el Raspberry Pi / Arduino como reloj y otro pin como datos?

Pseudocódigo de ejemplo:

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
vimist
fuente
No todos los relojes son simétricos. Ciertos microprocesadores antiguos necesitaban un reloj de ciclo de trabajo del 66% (si no recuerdo mal).
HL-SDK
1
La técnica descrita por su pseudocódigo se llama bit banging , y es una cosa perfectamente legítima.
Phil Frost

Respuestas:

12

Su señal de reloj es de activación de borde, en sus ejemplos en el borde positivo. Se nota porque los datos tienen que ser estables poco tiempo antes del límite del reloj ( tiempo de configuración ), y si el reloj se engancha en el borde descendente, coincidiría con el cambio de sus datos.

Excepto por el tiempo de configuración, existen pocas restricciones: el reloj puede permanecer alto todo el tiempo que quiera. Sin embargo, deberá tener un tiempo mínimo mínimo antes del próximo borde ascendente.

radagast
fuente
7

Un chip se comportará normalmente siempre que lo opere dentro de los 'parámetros de funcionamiento normal' como se especifica en la hoja de datos. La mayoría de los chips solo tienen requisitos sobre el tiempo mínimo entre los bordes del reloj y el tiempo de configuración (datos estables al borde del reloj activo). Tampoco se violan al estirar el reloj.

En la práctica, una señal de reloj generada por software siempre tendrá grandes variaciones en el tiempo. El punto importante es que no haces las cosas demasiado rápido para el chip externo. Pero el tiempo de un registro de desplazamiento típico se expresa en 10's de ns, que es unas pocas órdenes más rápido que el 1 ms que observa.

Wouter van Ooijen
fuente
1

Un chip simple con un "pin de reloj" no le importa cuando llega el borde del reloj, solo que sí. Incluso, los pulsos isócronos son más para beneficio del software o hardware más complejo, por ejemplo, dispositivos basados ​​en PLL.

Ignacio Vazquez-Abrams
fuente