Buscar

09 - Conversores de código

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CIRCUITOS 
DIGITAIS
Eduardo Scheffer Saraiva
Conversores de códigos
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar códigos com e sem pesos posicionais.
 � Conceituar conversores de código.
 � Descrever o processo de conversão entre códigos.
Introdução
Para que exista a comunicação, um processo que envolve a troca de infor-
mações entre dois ou mais interlocutores, é preciso haver a intenção de se 
comunicar, a construção da mensagem a ser comunicada, a codificação 
dessa mensagem e a sua transmissão. E isso é válido não somente para 
as comunicações humanas, mas também para as comunicações entre 
humanos e máquinas. 
Os sistemas digitais nos mais diversos setores de nossa sociedade 
trabalham com linguagens próprias, para melhorar suas capacidades 
de processamento de sinais e armazenamento de informações. Essas 
linguagens se baseiam no sistema binário, no qual as quantidades são 
representadas por valores de 0 e 1. Porém, apesar de todas as facilidades 
atreladas ao uso de sistemas digitais, ainda são de suma importância 
representações facilitadas, para que os usuários e operadores desses 
sistemas consigam entender a informação que está sendo entregue. 
Para resolver esse problema de comunicação, existem os conversores 
de códigos, ferramentas que tornam possível a “tradução” da linguagem 
em formato decimal para o formato binário, e vice-versa.
Neste capítulo, você aprenderá a identificar codificações nas quais o 
peso posicional é essencial, assim como entenderá codificações em que 
não existe a necessidade desse artifício. Por fim, aprenderá os conceitos 
que envolvem os conversores de código e descreverá o processo de 
conversão entre diferentes codificações.
1 Códigos e pesos posicionais
Circuitos digitais fazem uso de representações nas quais toda informação 
precisa ser expressa em apenas dois valores 0 e 1, conhecidas como represen-
tações de base binária (DE; GHATAK, 2003; FLOYD, 2009). Assim como 
representações na base decimal, elas apresentam uma notação posicional, isto 
é, o dígito apresenta um “peso” que depende de sua posição em determinado 
número. Na base decimal, esses “pesos” serão dados pela potência de base 
10 que o algarismo estará multiplicando, aumentando o valor da potência 
conforme avançamos no número da direita para a esquerda.
Para representações de base binária, o bit mais à direita é chamado de 
bit menos significativo [do inglês, least significant bit (LSB)], e o bit mais à 
esquerda, bit mais significativo [most significant bit (MSB)] (FLOYD, 2009). 
Nesse tipo de representação, a posição dos bits tem pesos que variam multi-
plicando o bit pela potência de base 2, em que a potência aumenta iniciando 
da direita para a esquerda.
Para entendermos melhor esse conceito, considere o exemplo apresentado 
a seguir.
Converta o número 127 na base decimal em seu equivalente em base binária.
Para representarmos esse valor na base decimal, precisamos estabelecer uma relação 
de soma de produtos.
O dígito à esquerda
apresenta maior peso
1 72
O dígito à direita
apresenta menor peso
1x102 2x101 7x100 127
O equivalente binário para esse número é: 01111111.
0 × 27 + 1 × 26 + 1 × 25 + 1 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20 = 127
Conversores de códigos2
O código posicional mais facilmente encontrado em aplicações é o BCD 
(do inglês, binary coded decimal), que estabelece uma relação simples entre o 
valor decimal e um equivalente de base 2. Apesar de simples, tal codificação 
é largamente utilizada (Quadro 1). 
Dígito 
decimal
Código BCD
A3 A2 A1 A0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
Quadro 1. Código BCD
 Outra codificação posicional normalmente encontrada é o código binário 
em excesso-3, ou XS3 (Quadro 2), muito comum, por exemplo, em alguns 
computadores mais antigos, bem como em caixas registradoras e calculadoras 
eletrônicas portáteis da década de 1970. Sua principal vantagem consiste no 
fato de que um número decimal pode ser complementado por 9 tão facilmente 
quanto um número binário pode ser complementado: apenas invertendo todos 
os bits. Além disso, as operações de soma e subtração são facilitadas por essa 
codificação (GHOSH; BHANJA, 2014).
3Conversores de códigos
Decimal XS3
–3 0000
–2 0001
–1 0010
0 0011
1 0100
2 0101
3 0110
4 0111
5 1000
6 1001
7 1010
8 1011
9 1100
10 1101
11 1110
12 1111
Quadro 2. Codificação excesso-3
Outra vantagem dessa codificação é que os códigos 0000 e 1111 não são 
usados para representar os valores entre 0 e 9; assim, uma falha na memória 
ou na linha de transmissão básica poderá resultar nesses códigos sem maiores 
problemas de codificação. 
Conversores de códigos4
Codificações com pesos posicionais são largamente utilizadas, porém 
alguns problemas podem não ser tão facilmente resolvidos por meio delas. 
Para isso, existem codificações que não fazem uso de pesos posicionais, 
apresentando propósitos diferentes, como o código Gray, um sistema de código 
binário inventado por Frank Gray. Esse código surgiu para corrigir problemas 
associados ao ruído gerado por sistemas que necessitavam de grandes potências, 
como os primeiros circuitos lógicos digitais realizados por meio de válvulas 
e contatores de alta potência: ao variarem, diversos bits simultaneamente 
ocasionavam problemas relacionados ao ruído. O uso desse código permitiu 
que qualquer mudança de estado do sistema variaria apenas um bit por vez.
Apesar de os problemas de ruídos já não serem mais tão frequentes, ainda 
se utiliza o código Gray para determinados problemas (Quadro 3), como no 
caso de sensores de orientação para juntas rotativas, facilitando a obtenção 
do ângulo da junta.
Decimal
Código Gray
A B C D
0 0 0 0 0
1 0 0 0 1
2 0 0 1 1
3 0 0 1 0
4 0 1 1 0
5 0 1 1 1
6 0 1 0 1
7 0 1 0 0
8 1 1 0 0
9 1 1 0 1
Quadro 3. Código Gray
5Conversores de códigos
Outro exemplo muito utilizado de codificação sem peso condicional refere-
-se à codificação para display de sete segmentos, um tipo de display aplicado 
em circuitos digitais por seu custo reduzido em relação a alternativas como 
o display de matriz de pontos. Ele utiliza a informação em base binária para 
criar uma combinação de saídas luminosas para representar uma informação 
alfanumérica; assim, a informação poderá ser compreendida de maneira 
facilitada pelo usuário que deseja saber sobre determinado estado do sistema.
Os segmentos de um display de sete segmentos são definidos pelas letras 
de “a” a “g”, conforme apresentado no Quadro 4.
Decimal
Código display de 7-segmentos
a b c d e f G
0 1 1 1 1 1 1 0
1 0 1 1 0 0 0 0
2 1 1 0 1 1 0 1
3 1 1 1 1 0 0 1
4 0 1 1 0 0 1 1
5 1 0 1 1 0 1 1
6 1 0 1 1 1 1 1
7 1 1 1 0 0 0 0
8 1 1 1 1 1 1 1
9 1 1 1 1 0 1 1
Quadro 4. Código display de 7-segmentos considerando sinal luminoso ativo com nível 
alto
Conversores de códigos6
Além disso, existem aplicações que exigem garantias para a segurança da co-
dificação. Para isso, podemos fazer uso do conceito de bit de paridade (Quadro 5), 
que funciona de maneira a detectar erros entre diferentes sinais. O princípio 
é simples: independentemente da forma de codificação (posicional ou não), 
podemos determinar que cada grupo de bits deve conter um número par ou 
ímpar de 1s.
Pelo conceito de paridade, é possível criar lógicas que forcem o grupo de 
1s a ser par ou ímpar em determinado conjunto de bits. A falha então será 
verificada caso haja um número incorreto de 1s dentro da lógica adotada. 
Paridade Par Paridade Ímpar BCD
0 1 0000
1 0 0001
1 0 0010
0 1 0011
1 0 0100
0 1 0101
0 1 0110
1 0 0111
1 0 1000
0 1 1001
Quadro 5. Codificação de paridade
Como o bit de paridade não é posicional, pode ser alocado no início ou no 
final da codificação, o que dependerá da maneira como a codificação está 
sendo construída. Observe que o número total de 1s, incluindo o bit de pari-
dade, é sempre par para a paridadepar e sempre ímpar para a paridade ímpar.
7Conversores de códigos
Um conjunto de 8 bits com valor binário “10101111” deve ser codificado com a utilização 
de um código de paridade par. Qual será o valor binário depois da codificação?
Para resolvermos esse problema, o bit de paridade deverá ser calculado e, depois, 
enviado junto ao conjunto de bits “10101111x”. Assim, pode-se perceber que exis-
tem seis bits “1”, tornando esse valor par; assim, o bit de paridade recebe o valor “0”. 
Ao fim da codificação, teremos o valor do conjunto codificado com paridade “101011110”.
Você deve se atentar ao fato de que há diversas outras formas de codificações de 
informação, como o código ASCII, muito utilizado para representar textos em com-
putadores, e os códigos em base octal ou hexadecimal.
Até agora, apresentamos diferentes tipos de codificações, tanto códigos 
que dependem de seu peso posicional quanto codificações não ponderadas, 
que solucionam diferentes problemas, cabendo ao profissional de engenharia 
elétrica identificar corretamente sua aplicação. A seguir, abordaremos mais 
sobre os conversores de códigos.
2 Conversores de códigos
Um código é um conjunto de bits organizados em um padrão único usado para 
representar uma informação específica. Já um conversor de código converte 
uma informação codificada de uma maneira em outra forma de código, por 
exemplo, as conversões entre binário e outros códigos, como decimal codificado 
em binário (BCD) e código Gray.
Conversores de códigos8
Em circuitos digitais, um codificador compreende o dispositivo responsável 
por fazer a conversão de um código em outro, como um número decimal de 
0 a 9 em seu respectivo valor binário. Como vemos na Figura 1, um nível alto 
em uma das entradas representa o valor em decimal que queremos codificar 
— por meio do circuito codificador, é apresentado na saída o sinal em seu 
valor binário.
Figura 1. Exemplo de codificador de código decimal para BCD.
De maneira oposta ao codificador, quando queremos que um sinal codi-
ficado volte para a representação original, podemos usar os decodificadores, 
circuitos que têm a característica de receber a informação codificada e a 
transformar em uma informação não codificada, como um decodificador 
que recebe uma entrada em código BCD e a transforma em seu equivalente 
em decimal.
9Conversores de códigos
Considere que recebemos os valores de 1 a 6 em codificação binária que indicam, 
respectivamente, os lados de um dado. Para entendermos essa informação de maneira 
prática, devemos usar um decodificador para transformar a informação binária em 
uma representação conhecida. Para isso, estabelecemos a tabela verdade:
Entrada codificada Saída
0 0 1 0 0 0 0 0 1
0 1 0 0 0 0 0 1 0
0 1 1 0 0 0 1 0 0
1 0 0 0 0 1 0 0 0
1 0 1 0 1 0 0 0 0
1 1 0 1 0 0 0 0 0
Assim, o decodificador terá como entrada o valor do lado do dado de maneira 
codificada e terá o nível alto ativo apenas na saída que corresponde à lateral correta 
do dado.
Neste tópico, foram apresentados os principais tipos de conversores de 
códigos para circuitos digitais, os codificadores e os decodificadores, além de 
um exemplo de aplicação de uma entrada codificada e de sua relação com o 
decodificador, de modo que sua saída possa ser interpretada facilmente pelo 
usuário. A seguir, vamos conhecer métodos de conversão entre códigos e a 
sua aplicação em circuitos digitais.
Conversores de códigos10
3 Processo de conversão entre códigos
Um método de conversão entre códigos muito conhecido dos engenheiros e 
estudantes de engenharia é o mapa de Karnaugh, uma poderosa ferramenta 
que nos possibilita estabelecer as relações entre diferentes linguagens por meio 
de sua tabela verdade. Trata-se de um método de simplificação de expressões 
de álgebra booleana: por meio do reconhecimento de padrões nos mapas, 
podemos evitar cálculos extensivos para a obtenção de uma representação 
simplificada do circuito.
Para implementar o mapa de Karnaugh, é preciso transferir os valores 
desejados da tabela verdade para uma grade bidimensional de modo que as 
células dessa grade sejam ordenadas pelo código Gray. Assim, cada célula 
representará uma combinação das entradas, em que o valor a preencher a 
célula corresponde ao valor da saída atribuído a essa combinação de entradas.
Identificam-se grupos ótimos de 1s ou 0s, termos que serão utilizados para 
escrever uma expressão booleana mínima representando a lógica necessária. 
Ao implementarmos esse método, estabelecemos como entrada da tabela 
verdade os valores em determinada linguagem, enquanto a saída da tabela 
será o valor equivalente para a linguagem na qual desejamos a conversão. 
Se queremos converter um código Gray em um código XS3, precisamos construir 
a seguinte tabela verdade, considerando as demais combinações de entrada como 
valores que não nos interessam (don’t care):
Decimal
Código Gray XS3
E3 E2 E1 E0 S3 S2 S1 S0
0 0 0 0 0 0 0 1 1
1 0 0 0 1 0 1 0 0
2 0 0 1 1 0 1 0 1
3 0 0 1 0 0 1 1 0
4 0 1 1 0 0 1 1 1
11Conversores de códigos
Decimal
Código Gray XS3
E3 E2 E1 E0 S3 S2 S1 S0
5 0 1 1 1 1 0 0 0
6 0 1 0 1 1 0 0 1
7 0 1 0 0 1 0 1 0
8 1 1 0 0 1 0 1 1
9 1 1 0 1 1 1 0 0
Para realizarmos a conversão entre os códigos, devemos estabelecer uma relação 
entre as saídas e as entradas com o auxílio do mapa de Karnaugh, de modo que cada 
uma das saídas terá um mapa relacionado à combinação de entradas:
Para S3, teremos o seguinte mapa:
onde as entradas que apresentam valor alto na saída são agrupadas em conjuntos 
de 2n. Cada conjunto representa uma parcela da equação responsável pela conver-
são. Uma vez que todos os bits de interesse foram agrupados, obtém-se a equação 
para a saída. Essa operação deverá ser repetida para todas as saídas do sistema que 
desejamos converter.
Porém, existem métodos de conversão entre determinados códigos que não 
necessitam do mapa de Karnaugh, que podem ser vantajosos, uma vez que não 
necessitam da tabela verdade que descreve o comportamento da codificação. 
Além disso, há situações em que desejamos saber a informação que está sendo 
transmitida de apenas um número, quando ferramentas de conversão direta 
se tornam muito úteis.
Conversores de códigos12
Um método de conversão direta é possível quando desejamos, por exemplo, 
converter o código BCD em seu equivalente em binário. Para isso, devemos 
estabelecer algumas premissas: cada dígito de determinado peso no código 
BCD deverá ser representado por um conjunto de 4 bits, e os valores em nível 
alto da representação binária do código BCD precisarão ser convertidos em 
seu valor binário considerando seu peso. A adição dos valores binários de 
todos os elementos que apresentam nível alto resultará no equivalente binário 
do valor BCD.
Converta o número BCD 0101 0111 (decimal 57) em seu equivalente binário.
Os 4 bits mais à esquerda representam 5 em binário, porém apresentam peso maior 
que o conjunto da direita. O conjunto de 4 bits à direita representa 7 em base binária. 
Desse modo, o grupo à esquerda apresenta um peso de 10, enquanto da direita tem 
peso unitário.
Assim, somando as representações binárias para cada um dos valores que aparecem 
em nível alto na representação BCD, obtemos o equivalente em binário para o número 
57, dado por: 0011 1001.
Outro método de codificação direta corresponde à conversão de binário em 
código Gray, para o qual devemos somar cada par de bits da esquerda para a 
direita descartando os carries de modo a obter o próximo bit na representação 
Gray.
Para convertermos de código Gray para binário, fazemos uma operação 
semelhante à de conversão de binário em Gray — somamos o bit do código 
binário ao próximo bit do código Gray e descartamos os carries. Para enten-
dermos melhor um exemplo de conversão é apresentado a seguir.
13Conversores de códigos
Converta o número binário 111011 em sua representação em código Gray.
Para executarmos essa conversão, é necessário somarmos os pares de bits da repre-
sentação bináriada esquerda para a direita, o que gerará o bit da representação em 
Gray. Para casos em que a soma apresente um carry, este será descartado.
Para retornarmos à representação original, devemos fazer uma pequena modifi-
cação no método. Em vez de somarmos os pares de bits da representação em Gray, 
somaremos o bit em binário com o próximo bit da representação Gray, novamente 
descartando os carries
Neste capítulo, apresentamos os conversores de códigos, importante ferramenta 
que propiciou a comunicação entre máquinas da maneira como conhecemos 
hoje. Ao longo do capítulo, abordamos diferentes tipos de códigos e métodos 
para implementá-los em circuitos digitais. E, por fim, mostramos exemplos 
didáticos do uso desses códigos em aplicações práticas.
DE, D.; GHATAK, K. P. Basic electronics. Delhi: Pearson, 2003.
FLOYD, T. Sistemas digitais: fundamentos e aplicações. 9. ed. Porto Alegre: Bookman, 2009.
GHOSH, D.; BHANJA, N. Design of digital arithmetic circuit using excess-3 code and 9's 
complement method. IOSR-JECE, Gurugram, v. 9, p. 15-18, 2014.
Conversores de códigos14
Leituras recomendadas
DORAN, R. W. The Gray code. J. UCS, [s. l.], v. 13, n. 11, p. 1573-1597, 2007.
HOLDER, M. E. A modified Karnaugh map technique. IEEE Transactions on Education, 
New York, v. 48, n. 1, p. 206-207, 2005.
YOU, Y.; JEON, J. Design of extendable BCD-EXCESS 3 code convertor using quantum-
-dot cellular automata. Journal of Advanced Navigation Technology, Seul, v. 20, n. 1, 
p. 65-71, 2016.
15Conversores de códigos

Continue navegando