Un ou deux bits d'arrêt UART?


15

Les UART vous permettent souvent de choisir entre 1, 1,5 et 2 bits d'arrêt. Avec 1 bit d'arrêt, l'efficacité de la charge utile est de 80% (8/10), avec 2 bits d'arrêt qui tombe à 72,7% (8/11). Alors, quel est l'avantage du deuxième bit d'arrêt?

Réponses:


19

Des bits d'arrêt supplémentaires peuvent être un moyen utile d'ajouter un peu de temps de traitement de réception supplémentaire, en particulier à des débits élevés et / ou en utilisant un UART doux, où du temps est nécessaire pour traiter l'octet reçu.

Lorsque la vitesse est serrée et que votre UART n'offre que des rapports de division en puissances de 2, l'ajout d'un stopbit supplémentaire peut être une option pour donner une réduction de vitesse moins drastique que la prochaine vitesse de transmission la plus basse.

Je pense que c'est une des raisons pour lesquelles la norme DMX512 spécifie 2 stopbits.

Une autre situation où ils peuvent être utiles est si vous avez des appareils qui transfèrent un flux de données sans mise en mémoire tampon ni mise en paquets - de petites différences dans les fréquences d'horloge entre les nœuds et la granularité d'échantillonnage fini peuvent provoquer des erreurs lorsque des données sont reçues et retransmises par un certain nombre de nœuds dans une chaîne, mais si les données sont envoyées avec 2 bits d'arrêt et que les récepteurs sont définis sur un seul bit d'arrêt, cela ajoute suffisamment de marge pour tenir compte de ces erreurs et laisse au moins une période de bit d'arrêt valide pour que les nœuds situés le plus bas de la chaîne reçoivent de manière fiable.

J'ai également rencontré une situation où une très longue longueur de câble a provoqué une asymétrie dans les temps de montée et de descente, entraînant une longueur de bit d'arrêt inadéquate - l'envoi de 2 stopbits et le fait que le récepteur n'en ait besoin que d'un fixe.


6

Autrefois, les imprimantes étaient (presque) des constructions entièrement mécaniques. Les débits en bauds étaient quelque peu standardisés même alors, donc l'ajout d'un bit d'arrêt supplémentaire donnerait à l'imprimante un peu plus de temps pour imprimer le caractère. Les aspects temporels étaient plus visibles à l'époque. Pour ma première imprimante, un http://en.wikipedia.org/wiki/Teletype_Model_33 bruyant , j'ai dû insérer une pause de deux caractères après l'envoi d'un retour chariot.


Un modèle 33 correctement ajusté n'avait besoin que d'un caractère après le retour de chariot. C'est alors que vous êtes censé envoyer le saut de ligne! J'ai oublié qu'ils avaient besoin de 2 bits d'arrêt, mais vous avez raison et donc ce que j'ai dit ci-dessous la réponse de Russel s'applique (mais ces 1,5 bits d'arrêt étaient pour le matériel Baudot). Des bits d'arrêt supplémentaires (de 10 ms) n'ont toutefois pas aidé à retarder le retour du chariot.
gbarry

4

Il est peu probable que deux bits d'arrêt soient beaucoup plus utiles qu'un sur un système qui a une proportion significative de temps d'arrêt et qui fonctionne dans un environnement à faible bruit (faible BER), comme interne à l'équipement ou dans une interface périphérique à quelques mètres de câble et / ou sans étage modem-modem.

2 bits d'arrêt vous donnent un temps de synchronisation plus long, plus de temps pour traiter entre les caractères et probablement, selon le matériel et les algorithmes, de meilleures chances de gagner ou de retrouver la synchronisation pendant un flux de données continu. Le temps intercaractère a beaucoup moins de valeur sur les systèmes modernes que lorsque les vitesses d'horloge étaient faibles et le débit du processeur plus faible.

Si vous avez un flux de données essentiellement continu, s'il n'est pas synchronisé, tout bit élevé ressemblera à un bit d'arrêt. Toute transition haute / basse ressemblera à une limite d'octets. Si votre récepteur démarre sur une limite de 10 et qu'il ne s'agit pas d'une véritable limite de démarrage, cela ne sera découvert que 50% du temps) (c'est-à-dire si le "bit d'arrêt" final se révèle être réellement un bit de données faibles et vous le ferez également ont ignoré la véritable limite stop / start en cours de route. En moyenne, vous avez 1/4 de perspective qu'une limite d'octet soit 1/0 et ressemble faussement à une paire stop / start. Ce qui précède suggère que si vous choisissez un faux stop- commencez la paire puis il y a probablement 50% de chances que vous en choisissiez une autre lors de la tentative suivante.

Si vous utilisez 2 bits d'arrêt (11), alors une séquence de démarrage d'arrêt valide est 110 qui a 1 / 8ème chance de se produire dans le trafic de données aléatoire. Le mélange de véritables bits d'arrêt et de démarrage dans le flux non synchronisé modifie légèrement les sats, mais il semble relativement peu probable que si vous obtenez une fausse séquence d'arrêt / démarrage de 110 sur un cycle que vous en frappiez un autre, essayez ensuite avant de trébucher sur le véritable 110 séquence qui se produit ensuite.

Comme vous le constatez, 1 bit d'arrêt donne 8/10 = 80% de débit maximum et 2 bits d'arrêt donnent 8/11 = 72% d'efficacité. La différence de débit à la limite absolue est de 80% / 72% = ~ 11% de plus. il s'agit d'un gain utile dans des circonstances extrêmes, mais pas vaste et si le circuit est inactif plus d'environ 10% du temps, il a une valeur minimale. Si votre circuit est bruyant et sujet à une perte de synchronisation occasionnelle, le bit d'arrêt supplémentaire peut être très utile. MAIS si vous vous souciez autant du débit, vous pouvez souvent augmenter le débit en bauds (pas toujours) ou passer en fonctionnement entièrement synchrone.


Je ne connais aucun UART qui peut être configuré pour ignorer les bits de début apparents qui ne sont pas précédés de plus d'un temps de marquage complet (en effet, la plupart accepteront un bit de démarrage qui est précédé d'un demi-temps de et ne peut pas être configuré pour faire autrement). Une telle fonctionnalité pourrait cependant être utile.
supercat

Vous êtes plutôt tombé sur la bonne réponse, si nous pouvons accepter que cette pratique remonte à l'époque mécanique. À l'époque, le mécanisme du récepteur avait besoin d'environ 1 bit de temps pour s'arrêter pour être prêt pour le bit de démarrage suivant. L'émetteur a donc été conçu pour avoir un bit d'arrêt de temps de 1,5 bit. Cela a eu l'effet que vous avez décrit. Si la synchronisation a été perdue, il peut y avoir plusieurs caractères parasites jusqu'à ce que vous ayez retrouvé la synchronisation. Lorsque nous sommes arrivés aux implémentations électroniques, le récepteur pouvait commencer à attendre le prochain bit de démarrage immédiatement après avoir vu la transition vers le niveau d'arrêt - il n'avait pas besoin de remplissage
gbarry

@gbarry - il me semble que des milliers de personnes ont plutôt trébuché dans votre commentaire.
Russell McMahon

En fait, j'ai manqué de personnages :) Quelque chose ne va pas?
gbarry

3

Pour amplifier le point de mikeselectricstuff sur le temps de réception avec des "UART doux", une application de réception qui saura toujours quand accepter des données et le fait sur une base d'interrogation peut souvent gérer des vitesses de transmission plus rapides que ce qui serait pratique avec un UART doux entraîné par interruption. De telles applications, cependant, ne peuvent traiter les données entrantes que pendant le temps entre le début du bit d'arrêt d'un octet et le bit de démarrage de l'octet suivant; le temps nécessaire pour traiter chaque octet finit par être le facteur limitant de la vitesse de communication. Le traitement des données au 115,200-N-8-2 n'est pas beaucoup plus exigeant que le traitement au 57,600-N-8-1, mais c'est plus de 80% plus rapide.

Parfois, on peut pousser les choses encore plus loin en utilisant des formats de données apparemment moins efficaces. Par exemple, on peut envoyer chaque octet en deux parties, une avec sept bits et une avec un (les MSB de la partie à un bit sont tous définis). Si l'on fait cela, même avec un seul bit d'arrêt, il y aura huit temps de marquage entre la fin d'une paire d'octets et le début de la suivante, permettant ainsi de pousser le débit binaire quatre fois plus haut que celui d'un pourrait faire avec seulement deux bits d'arrêt (et huit fois plus élevé que ce que l'on pourrait faire avec un). Malgré le fait d'envoyer deux fois plus d'octets, la multiplication par quatre du débit de données serait une victoire majeure. De plus, bien que chaque paire d'octets transmise puisse être utilisée pour envoyer huit bits de données, seulement 130 des 256 valeurs d'octets possibles seraient utilisées par le codage,


Vous pouvez également utiliser des vitesses de transmission élevées en UART (250K et plus) en générant une interruption sur le bord du bit de départ et en restant dans le code d'interruption pour tout l'octet - un bit d'arrêt supplémentaire peut être très utile ici.
mikeselectricstuff

@mikeselectricstuff: Un bit d'arrêt supplémentaire peut être très utile, tout comme l'utilisation de certains bits de chaque octet (nécessitant que le LSB de chaque octet soit défini peut être utile car on peut dériver la synchronisation du front montant de ce bit, même s'il peut y avoir une petite pente lorsque l'interruption se produit). Cependant, une limitation majeure de l'approche déclenchée par l'interruption de bits au démarrage est qu'il n'y a pas de bonne façon d'envoyer des données alors que les données entrantes peuvent arriver. Soit les données transmises, soit les données reçues (ou les deux) vont perdre.
supercat

2

Il était une fois des monstres électromécaniques appelés télétypes. La plupart fonctionnaient sur des moteurs à courant alternatif synchrones avec la fréquence de la ligne électrique. Ainsi, il y avait toujours une chance que deux machines communicantes n'aient pas été synchronisées sur le même réseau électrique ou même fonctionnant sur du courant alternatif utilisant des fréquences différentes d'ailleurs.

Ainsi, afin de permettre à une machine plus lente de rattraper son retard et de ne pas dériver de la synchronisation, deux bits d'arrêt ont été envoyés.

À d'autres fins, comme permettre au chariot d'impression de revenir au début d'une nouvelle ligne, un CR, un LF plus deux frottements ont été envoyés (tous les trous sur une bande à 8 niveaux).

Il était habituel pour les circuits fonctionnant à des vitesses de 110 bauds et plus lentement uniquement.


1

La lenteur des dispositifs mécaniques récepteurs a été la raison de l'ajout de bits d'arrêt supplémentaires, mais les appareils d'aujourd'hui sont assez rapides et fonctionnent à des vitesses de transmission encore plus élevées sans avoir besoin d'un bit d'arrêt supplémentaire

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.