Quels problèmes pourraient survenir lors du chaînage de 40 registres à décalage?


16

Je prévois de chaîner ensemble des registres à décalage 40 x 74HC595 . La chaîne de 74HC595s sera contrôlé par un microcontrôleur de 5 V, ce qui va générer les SDI, CLOCKet des LATCHsignaux.

Chaque registre à décalage et le microcontrôleur auront leur propre PCB, comme illustré dans le schéma ci-dessous:

diagramme

En raison de contraintes mécaniques, la distance entre chaque registre à décalage sera d'environ 30 cm (12 pouces), de sorte que les signaux de commande se déplaceront sur une distance d'environ. 12 m (40 pi). En plus de cela, l'ensemble du système sera monté dans un environnement très bruyant (à proximité de lampes fluorescentes, de fils électriques, etc.)

Ma préoccupation est que les signaux de commande seront très bruyants et que les registres à décalage pourraient produire les mauvaises choses. Je pensais à:

  • Utilisation d'un CI tampon sur chaque carte pour mettre en mémoire tampon les signaux de contrôle. Lequel recommanderiez-vous?
  • Utilisation de câbles blindés entre les cartes pour les signaux
  • Baisser la CLOCKfréquence autant que possible. Je n'ai besoin de mettre à jour le contenu des registres que quelques fois par jour.

Les solutions ci-dessus sont-elles une bonne chose à faire? Que puis-je faire d'autre pour réduire au minimum le bruit (potentiel) dans les fils de signal?


3
Cela ressemble à un candidat fantastique pour un CPLD à la place des 40 registres à décalage.
Joel B

2
@JoelB Cela peut sembler être un bon choix pour un CPLD, mais cela signifierait avoir 320 (= 40 * 8) signaux allant de la carte principale (CPLD) à tous les endroits. Il serait très difficile à installer, dans mon cas, dans cet environnement; et ce sera très difficile à maintenir. De plus, les signaux, bien que plus courts, seront toujours soumis au bruit.
m.Alin

1
@Joel - Digikey ne répertorie que quelques CPLD avec 320 E / S, et ce sont tous des BGA. Ils sont également plus chers que 40 '595, et comme m.Alin dit que vous n'avez pas l'avantage des signaux distribués. D'un point de vue logique, c'est un travail parfait pour un CPLD, d'un point de vue pratique moins.
stevenvh

2
@ m.Alin - Vous avez tout à fait raison. Je viens de lire 40 registres à décalage et de taper CPLD. Après avoir lu attentivement la question, la façon dont vous le faites est logique.
Joel B

Réponses:


14

Utilisez des tampons de déclenchement Schmitt aux entrées de chaque carte. Ils nettoieront les signaux afin que tout bruit ne donne pas de fausses impulsions sur l'horloge, par exemple. Le 74LVC3G17 est un triple tampon non inverseur.

Passez également les signaux en mémoire tampon au tableau suivant. Sinon, toutes les entrées seraient parallèles et vous pourriez dépasser le fan-out du microcontrôleur d'entraînement (je pense en particulier à la charge capacitive totale). La connexion en guirlande des signaux d'horloge et de verrouillage donnera un retard d'ondulation tout au long de la chaîne, mais les données le feront également, et vous prévoyez de passer à faible vitesse de toute façon.


1
@ m.Alin - Oui, une étape push-pull serait bien. Mais je recommanderais fortement les tampons, non seulement pour la capacité d'entraînement, mais surtout pour l' hystérésis du déclencheur Schmitt , qui évitera les fausses impulsions d'horloge causées par le bruit autour du seuil.
stevenvh

2
@Saad - Vous voulez dire que le tampon envoie le signal au câble? La bonne chose est alors qu'il fournira une faible impédance qui réduit le bruit. Mais s'il y aurait un parasite sur le côté du récepteur , vous ne pouvez rien faire à ce sujet sur le côté envoi. C'est donc le récepteur qui a besoin d'une bonne immunité au bruit, que fournit le déclencheur Schmitt.
stevenvh

1
@Saad - Oui, mais dans ce cas, cela semble exagéré: les fils ne font que 30 cm de long, et vous avez déjà un répéteur / tampon sur chaque carte.
stevenvh

1
@stevenvh Oui, je parlais généralement. Vos messages contiennent une mine d'informations et j'apprends presque toujours quelque chose de nouveau! Dans ce cas, j'ai des tampons sur une carte contrôleur qui se connectent à un câble qui se connecte à une «carte fille». Je ne m'attends pas à beaucoup de bruit, donc je pourrais rester avec mon arrangement. Je n'ai que des tampons là-bas pour que ma source ne finisse pas par piloter 8 appareils (avec une capacité d'entrée de 8pF + une capacité de trace et de câble).
Saad

1
@Saad - Merci pour les fleurs! :-) Gardez un œil sur la capacité du câble, surtout s'il fait plus d'un mètre ou si longtemps. Règle générale: 100 pF / m, c'est beaucoup plus que la capacité d'entrée.
stevenvh

9

Le problème qui peut se produire est que certaines horloges SR avant les horloges SR suivantes, de sorte que la prochaine SR horloge dans les mauvaises données. Une solution (standard?) Pour cela consiste à câbler l'horloge à partir du dernier SR.

J'envisagerais d'ajouter un (schmit-trigger?) Tampon à chaque carte pour les 3 lignes de signal.

(modifier) ​​Baisser la fréquence d'horloge n'aidera pas (sauf si elle était beaucoup trop élevée pour commencer). Les problèmes que vous pouvez avoir se produisent sur les bords de l'horloge, que vous aurez de toute façon, peu importe la fréquence à laquelle vous choisissez votre fréquence d'horloge.


8

Le plus gros problème lors du chaînage des registres à décalage est de garantir la prévisibilité de la relation temporelle entre l'horloge utilisée par chaque carte pour recevoir les données et la modification des données de la carte précédente. Le fait que la sortie du 74HC595 change sur le même front que l'horloge est un peu gênant à cet égard. Je suggérerais que le signal d'horloge soit mis en mémoire tampon au fur et à mesure qu'il traverse chaque carte et que le signal de données provenant du 74HC595 d'une carte soit mis à travers un tampon qui le retardera d'un temps légèrement plus long que le tampon d'horloge.

Alternativement, vous pouvez utiliser un registre à décalage comme le 74HC4094 qui a son changement de sortie de données sur le front d'horloge descendant, ou vous pouvez ajouter une bascule entre la sortie du dernier 74HC595 sur la carte et la carte suivante, et avoir cette bascule verrouiller sa sortie sur le front descendant de l'horloge qui entraîne les 74HC595 (peut-être passer l'horloge à travers deux onduleurs pour la mettre en mémoire tampon et envoyer le signal d'horloge inversé à la bascule).

Si le nombre de sorties 74HC595 que vous utiliserez est inférieur d'un (ou plusieurs) au nombre fourni par vos puces (par exemple, sur une carte avec deux 74HC595, vous n'avez en fait besoin que de 15 sorties), vous pouvez alimenter le dernier 74HC595 sur une carte avec une horloge inversée des autres, mais cela vous coûterait l'utilisation d'une sortie 74HC595 à chaque fois que le signal passe entre une horloge non inversée 74HC595 et une horloge inversée 74HC595.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.