Um ou dois bits de parada do UART?


15

Os UARTs geralmente permitem escolher entre 1, 1,5 e 2 bits de parada. Com a carga útil de 1 bit de parada, a eficiência é de 80% (8/10), com 2 bits de parada que caem para 72,7% (8/11). Então, qual é a vantagem do segundo bit de parada?

Respostas:


19

Bits de parada extras podem ser uma maneira útil de adicionar um pouco de tempo de processamento de recebimento extra, especialmente em altas taxas de transmissão e / ou usando UART suave, onde é necessário tempo para processar o byte recebido.

Onde a velocidade é baixa e o seu UART oferece apenas taxas de divisão em potências de 2, a adição de um stopbit extra pode ser uma opção para proporcionar uma redução menos drástica na velocidade do que a próxima menor taxa de transmissão.

Acredito que este seja um dos motivos pelo qual o padrão DMX512 especifica 2 interrupções.

Outra situação em que eles podem ser úteis é se você tiver dispositivos encaminhando um fluxo de dados sem buffer ou pacote - pequenas diferenças nas taxas de clock entre os nós e a granularidade de amostragem finita podem causar erros quando os dados são recebidos e retransmitidos por vários nós no uma cadeia, mas se os dados forem enviados com 2 stopbits e os receptores estiverem configurados em um stopbit, ele adiciona margem suficiente para acomodar esses erros e deixa pelo menos um período de stopbit válido para os nós distantes da cadeia receberem de forma confiável.

Eu também encontrei uma situação em que um cabo muito longo causava assimetria nos tempos de subida e descida, resultando em comprimento inadequado de stopbit - enviando 2 stopbits e tendo o receptor apenas um reparo fixo.


6

Nos dias anteriores, as impressoras eram (quase) construções totalmente mecânicas. As taxas de transmissão eram um pouco padronizadas até então; portanto, adicionar um bit de parada extra daria à impressora um tempo extra para imprimir o caractere. Os aspectos de tempo eram mais visíveis na época. Para minha primeira impressora, um http://en.wikipedia.org/wiki/Teletype_Model_33 barulhento , tive que inserir uma pausa de dois caracteres depois de enviar um retorno de carro.


Um modelo 33 devidamente ajustado precisava de apenas um caractere após o retorno de carro. É quando você deve enviar o Linefeed! Esqueci que eles precisavam de 2 bits de parada, mas você está certo, e o que eu disse abaixo da resposta de Russel se aplica (mas esses bits de 1,5 stop eram para o hardware Baudot). Bits de parada extras (de 10ms) não ajudaram em nenhum atraso de retorno de carro.
precisa saber é o seguinte

4

É improvável que dois bits de parada sejam muito mais úteis do que um em um sistema com uma proporção significativa de tempo parado e que esteja trabalhando em um ambiente de baixo ruído (BER baixo), como interno ao equipamento ou em uma interface periférica a poucos metros de cabo e / ou sem um estágio modem-modem.

2 bits de parada oferecem maior tempo de sincronização, mais tempo para processar entre caracteres e, provavelmente, dependendo do hardware e algoritmos, maior chance de obter ou recuperar a sincronização durante um fluxo contínuo de dados. O tempo entre caracteres é de muito menos valor nos sistemas modernos do que quando as velocidades do relógio eram baixas e a taxa de transferência do processador mais baixa.

Se você tiver um fluxo de dados essencialmente contínuo, se não estiver sincronizado, qualquer bit alto parecerá um bit de parada. Qualquer transição alta e baixa parecerá com um limite de bytes. Se o seu receptor iniciar em um limite de 10 e não for um limite de início verdadeiro, isso será descoberto apenas 50% do tempo) (ou seja, se o "bit de parada" final for realmente um bit de dados baixo e você também pulou o limite genuíno de parar / iniciar ao longo do caminho.Em média, você tem 1/4 de perspectiva de um limite de byte ser 1/0 e parecer falsamente um par de parar / iniciar. O exemplo acima sugere que, se você escolher um par inicial, provavelmente há cerca de 50% de chance de você escolher outro na tentativa a seguir.

Se você usar 2 bits de parada (11), uma sequência válida de início de parada é 110, com 1/8 de chance de ocorrer no tráfego de dados aleatórios. A mistura de bits genuínos de parada e início no fluxo não sincronizado altera ligeiramente os satélites, mas parece relativamente improvável que, se você obtiver uma sequência falsa de 110 parada / início em um ciclo, você atingirá outra próxima tentativa antes de tropeçar no genuíno 110. sequência que ocorre em seguida.

Como você observa, 1 bit de parada produz 8/10 = taxa de transferência máxima de 80% e 2 bits de parada produzem 8/11 = 72% de eficiência. A diferença na taxa de transferência no limite total é 80% / 72% = ~ 11% a mais. esse é um ganho útil em circunstâncias extremas, mas não vasto, e se o circuito estiver ocioso mais de 10% das vezes, será de valor mínimo. Se o seu circuito é barulhento e propenso a perdas ocasionais de sincronização, o bit de parada extra pode ajudar bastante. MAS, se você se preocupa muito com a taxa de transferência, pode aumentar a taxa de transmissão (nem sempre) ou mudar para uma operação totalmente síncrona.


Eu não conheço nenhum UARTs que possa ser configurado para ignorar quaisquer bits de início aparentes que não sejam precedidos por mais de um tempo inteiro de marcação (na verdade, a maioria aceitará um bit de início que é precedido por meio tempo de marcação e não pode ser configurado para fazer o contrário). Esse recurso pode ser útil, no entanto.
supercat

Você já encontrou a resposta correta, se podemos aceitar que essa prática remonta aos dias da mecânica. Naquela época, o mecanismo do receptor precisava de cerca de 1 bit para parar e estar pronto para o próximo bit de inicialização. Portanto, o transmissor foi construído para ter um bit de parada de tempo de 1,5 bits. Isso teve o efeito que você descreveu. Se a sincronização foi perdida, pode haver vários caracteres ilegíveis até você recuperar a sincronização. Quando chegamos ao implementações eletrônicos, pôde começar a esperar para a próxima partida mordeu imediatamente ao ver a transição para o nível de paragem - não precisa estofamento
gbarry

@gbarry - methinks não tropeçou em seu comentário.
Russell McMahon

Na verdade, fiquei sem personagens :) Algo errado?
gbarry

3

Para ampliar o argumento de mikeselectricstuff sobre o tempo de recebimento com "soft UARTs", um aplicativo de recebimento que sempre saberá quando aceitar dados e o faz com base em pesquisas geralmente pode lidar com taxas de transmissão mais rápidas do que seria prático com um soft UART acionado por interrupção. Tais aplicativos, no entanto, só podem processar dados recebidos durante o tempo entre o início do bit de parada de um byte e o bit de início do próximo byte; o tempo necessário para processar cada byte acaba sendo o fator limitante da velocidade das comunicações. O processamento de dados em 115.200-N-8-2 não é muito mais exigente do que em 57.600-N-8-1, mas é mais de 80% mais rápido.

Às vezes, é possível avançar ainda mais usando formatos de dados aparentemente menos eficientes. Por exemplo, pode-se enviar cada byte em duas partes, uma com sete bits e outra com um (os MSBs da parte de um bit estão todos definidos). Se alguém fizer isso, mesmo com apenas um bit de parada, haverá oito tempos de marcação entre o final de um par de bytes e o início do próximo, permitindo, assim, aumentar a taxa de bits quatro vezes mais alto do que aquele poderia fazer com apenas dois bits de parada (e oito vezes mais alto do que se poderia fazer com um). Apesar de ter que enviar o dobro de bytes, o aumento de quatro vezes na taxa de dados seria uma grande vitória. Além disso, embora cada par de bytes transmitidos possa ser usado para enviar oito bits de dados, apenas 130 dos 256 valores de bytes possíveis seriam usados ​​pela codificação,


Também é possível fazer soft-UART de altas taxas de transmissão (250K e mais), gerando uma interrupção na extremidade do startbit e permanecendo dentro do código de interrupção para todo o byte - um stopbit extra pode ser muito útil aqui.
mikeselectricstuff

@mikeselectricstuff: Um bit de parada extra pode ser muito útil, assim como o uso de apenas alguns bits em cada byte (exigindo que o LSB de cada byte seja definido pode ser útil porque é possível derivar o tempo da borda ascendente desse bit, mesmo se houver um pequeno golpe quando a interrupção ocorrer). Uma grande limitação da abordagem de interrupção de bits acionada na inicialização, no entanto, é que não existe uma maneira agradável de enviar dados enquanto os dados recebidos podem chegar. Os dados transmitidos ou recebidos (ou ambos) serão perdidos.
Supercat #

2

Era uma vez monstros eletromecânicos chamados teletipos. A maioria funcionou em motores CA sincronizados com a frequência da linha de energia. Portanto, sempre havia uma chance de que duas máquinas de comunicação não fossem sincronizadas com a mesma rede elétrica ou que funcionassem com corrente alternada usando frequências diferentes para esse assunto.

Assim, para permitir que uma máquina mais lenta se recupere e não saia da sincronização, dois bits de parada foram enviados.

Para outros fins, como permitir que o carro de impressão retorne ao início de uma nova linha, foram enviadas uma CR, LF mais duas rubouts (todos os furos em uma fita de 8 níveis).

Era habitual para circuitos rodando a velocidades de 110 Baud e apenas mais lento.


1

A lentidão dos dispositivos mecânicos receptores foi a razão por trás da adição de bits de parada extras, no entanto, hoje os dispositivos são rápidos o suficiente e funcionam com taxas de transmissão ainda mais altas sem a necessidade de um bit de parada extra

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.