Juste une question théorique plus que tout. Le signal d'horloge doit-il avoir la même largeur entre les pics et les creux?
Un signal d'horloge normal avec des données (ci-dessous):
Un signal d'horloge aléatoire avec des données (les données sont toujours synchronisées avec l'horloge) (ci-dessous):
La puce (toute puce en général, mais à titre d'exemple, un registre à décalage série en parallèle) se comporterait-elle toujours normalement avec une horloge plus aléatoire? Sinon, pourquoi pas?
Encore une fois, pas que je prévois de le faire, mais théoriquement, y a-t-il une raison pour laquelle je ne pourrais pas utiliser une broche de sortie standard sur le Raspberry Pi / Arduino comme horloge et une autre broche comme données?
Exemple de pseudo code:
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
Réponses:
Votre signal d'horloge déclenche un front, dans vos exemples sur le front positif. Vous pouvez le dire parce que les données doivent être stables peu de temps avant le front d'horloge ( temps de configuration ), et si l'horloge se verrouillait sur le front descendant, elle coïnciderait avec le changement de vos données.
Hormis le temps de configuration, il y a peu de contraintes: l'horloge peut rester élevée aussi longtemps qu'elle le souhaite. Vous devrez cependant avoir un minimum de temps bas, avant le prochain front montant.
la source
Une puce se comportera normalement tant que vous l'utiliserez dans les «paramètres de fonctionnement normal» spécifiés dans la fiche technique. La plupart des puces n'ont que des exigences concernant le temps minimum entre les fronts d'horloge et le temps de configuration (les données sont stables jusqu'au front d'horloge actif). Aucun des deux n'est violé en étirant l'horloge.
En pratique, un signal d'horloge généré par logiciel aura toujours de grandes variations de synchronisation. Le point important est que vous ne faites pas les choses trop rapidement pour la puce externe. Mais la synchronisation d'un registre à décalage typique est exprimée en 10 de ns, ce qui est quelques ordres plus rapide que les 1 ms que vous observez.
la source
Une simple puce avec une "broche d'horloge" ne se soucie pas quand le bord de l'horloge arrive, seulement cela. Même, les impulsions isochrones sont davantage au profit d'un logiciel ou d'un matériel plus complexe, par exemple des dispositifs basés sur PLL.
la source