1 Eletrônica Digital - Teoria
Aula 04
Código BCD, Códigos Alfa-numéricos e Sistemas de Detecção de Erros
Prof. Otávio Gomes [email protected]
sites.google.com/a/ifmg.edu.br/otavio-gomes/
2 Eletrônica Digital - Teoria
Bytes
A maioria dos microcomputadores manipula e armazena informações e
dados binários em grupos de 8 bits de modo que uma sequência de 8
bits recebe um nome especial: denominado byte.
3 Eletrônica Digital - Teoria
Números binários muitas vezes são divididos em grupos de 4 bits,
assim há um termo específico para esses grupos - nibble.
Nibbles
4 Eletrônica Digital - Teoria
Bits, nibbles e bytes são termos que representam um número fixo de
dígitos binários. De forma geral, denominamos palavra (word) um
grupo de bits que representa uma certa unidade de informação.
Palavras (Word)
5 Eletrônica Digital - Teoria
Código BCD
6 Eletrônica Digital - Teoria
Código BCD
Quando números, letras ou palavras são representados por um grupo
especial de símbolos, dizemos que eles estão codificados, sendo o
grupo de símbolos denominado código.
CODIFICAÇÃO EM BINÁRIO PURO: Um númeo decimal é representado pelo
seu número binário equivalente.
DECIMAL CODIFICADO EM BINÁRIO: Cada dígito de um número decimal é
representado em binário. Esta codificação é denominada de BCD (Binary-
Coded-Decimal).
Para ilustrar, considere o número 874 em decimal:
Codificação em Binário Puro: 87410 = 11011010102
Decimal Codificado em Binário: 87410 =
7 Eletrônica Digital - Teoria
Código BCD
Quando números, letras ou palavras são representados por um grupo
especial de símbolos, dizemos que eles estão codificados, sendo o
grupo de símbolos denominado código.
CODIFICAÇÃO EM BINÁRIO PURO: Um número decimal é representado
pelo seu número binário equivalente.
DECIMAL CODIFICADO EM BINÁRIO: Cada dígito de um número decimal é
representado em binário. Esta codificação é denominada de BCD (Binary-
Coded-Decimal).
Para ilustrar, considere o número 874 em decimal:
Codificação em Binário Puro: 87410 = 11011010102
Decimal Codificado em Binário: 87410 = 100001110100 (BCD)
8 7 4
8 Eletrônica Digital - Teoria
Código BCD
A principal vantagem do código BCD é a relativa facilidade de
conversão para decimal e vice-versa. Apenas os grupos de 4 bits dos
dígitos de 0 a 9 precisam ser memorizados.
Essa característica de fácil conversão é especialmente importante do
ponto de vista do hardware porque nos sistemas digitais são os
circuitos lógicos que realizam as conversões mútuas entre BCD e
decimal.
9 Eletrônica Digital - Teoria
Código Gray
Os sistemas digitais operam em altas velocidades e reagem a
variações que ocorrem nas entradas digitais. A fim de reduzir a
probabilidade de um circuito digital interpretar mal uma entrada que
está mudando, desenvolveu-se o Código Gray.
O Código Gray tem a característica distinta de que apenas um bit muda
entre dois números sucessivos.
10 Eletrônica Digital - Teoria
Código Gray
Os sistemas digitais operam em altas velocidades e reagem a
variações que ocorrem nas entradas digitais. A fim de reduzir a
probabilidade de um circuito digital interpretar mal uma entrada que
está mudando, desenvolveu-se o Código Gray.
O Código Gray tem a característica distinta de que apenas um bit muda
entre dois números sucessivos.
11 Eletrônica Digital - Teoria
Código Gray
Os sistemas digitais operam em altas velocidades e reagem a
variações que ocorrem nas entradas digitais. A fim de reduzir a
probabilidade de um circuito digital interpretar mal uma entrada que
está mudando, desenvolveu-se o Código Gray.
12 Eletrônica Digital - Teoria
Código Gray
Os sistemas digitais operam em altas velocidades e reagem a
variações que ocorrem nas entradas digitais. A fim de reduzir a
probabilidade de um circuito digital interpretar mal uma entrada que
está mudando, desenvolveu-se o Código Gray.
O Código Gray tem a característica distinta de que apenas um bit muda
entre dois números sucessivos.
Para converter binário em Gray, comece com o bit mais significativo e
use-o como o Gray MSB. Em seguida, compare o binário MSB com o
próximo bit, se eles forem iguais então o bit na codificação Gray será 0,
se forem diferentes será 1. Repita a operação até o último bit.
Para converter Gray em binário, comece com o bit mais significativo e
use-o como o binário MSB. Nos passos seguintes, cada bit binário é
obtido comparando o bit binário à esquerda com o bit correspondente
em Código Gray. Bits similares produzem um 0 e bits diferentes
produzem um 1.
13 Eletrônica Digital - Teoria
Código Gray
Para converter binário em Gray, comece com o bit mais significativo e
use-o como o Gray MSB. Em seguida, compare o binário MSB com o
próximo bit, se eles forem iguais então o bit na codificação Gray será 0,
se forem diferentes será 1. Repita a operação até o último bit.
910 = 10012 = 1101Gray
14 Eletrônica Digital - Teoria
Código Gray
Para converter Gray em binário, comece com o bit mais significativo e
use-o como o binário MSB. Nos passos seguintes, cada bit binário é
obtido comparando o bit binário à esquerda com o bit correspondente
em Código Gray. Bits similares produzem um 0 e bits diferentes
produzem um 1.
1101Gray = 10012
15 Eletrônica Digital - Teoria
A aplicação mais comum do código Gray é nos codificadores de
rotação de eixo. Esses dispositivos produzem um valor binário que
representa a posição de um eixo mecânico em rotação.
Código Gray
16 Eletrônica Digital - Teoria
Códigos Alfa-Numéricos
17 Eletrônica Digital - Teoria
Além de dados numéricos, um computador precisa ser capaz de
manipular informações não numéricas. O código alfanumérico mais
utilizado é o Código Padrão Americano para Troca de Informações
(American Standard Code for Information Interchange – ASCII).
O código ASCII é um código de 7 bits, portanto ele tem 27 = 128
representações codificadas. Isso é mais que o suficiente para
representar todos os caracteres de um teclado padrão, como também
funções do tipo <RETURN> e <LINEFEED>.
O código ASCII é usado para transferência de informação alfanumérica
entre um computador e dispositivos externos.
Códigos Alfa-Numéricos Códigos ASCII
18 Eletrônica Digital - Teoria
Código ASCII (7 bits) Bits Bits superiores (mais significativos)
inferiores 000 001 010 011 100 101 110 111
0000 null dle 0 @ P ` p
0001 soh dc1 ! 1 A Q a q
0010 stx dc2 " 2 B R b r
0011 etx dc3 # 3 C S c s
0100 eot dc4 $ 4 D T d t
0101 enq nak % 5 E U e u
0110 ack syn & 6 F V f v
0111 bell etb ' 7 G W g w
1000 bsp can ( 8 H X h x
1001 ht em ) 9 I Y i y
1010 lf sub * : J Z j z
1011 vt esc + ; K [ k {
1100 ff fs , < L \ l |
1101 cr gs – = M ] m }
1110 so rs . > N ^ n ~
1111 si us / ? O _ o del
19 Eletrônica Digital - Teoria
Códigos Alfa-Numéricos Códigos ASCII
20 Eletrônica Digital - Teoria
Códigos Alfa-Numéricos Códigos ASCII
21 Eletrônica Digital - Teoria
Sistemas de Detecção de Erros
22 Eletrônica Digital - Teoria
A maioria dos equipamentos digitais modernos é projetado para ser
relativamente livre de ruído, e a probabilidade de erros deverá ser
baixa. Entretanto, sistemas digitais que transmitam centenas ou até
milhões de bits por segundo, mesmo com uma pequena taxa de
ocorrência de erros podem produzir erros aleatórios capazes de gerar
alguns desastres.
Uma das técnicas mais simples para detecção de erros é o método de
paridade.
Um bit de paridade consiste em um bit extra anexado ao conjunto de
bits do código a ser transferido de uma localidade para outra. O bit de
paridade pode ser 0 ou 1, dependendo do número de 1s contido no
conjunto de bits do código. Dois métodos diferentes são usados:
paridade par e paridade ímpar.
Sistemas de Detecção de Erros Método da Paridade
23 Eletrônica Digital - Teoria
Considere que se deseja transmitir o caractere „C‟ cujo ASCII em 7 bits
é 1000011.
1 0 0 0 0 1 1
C
TRANSMISSOR
1
bit de paridade anexado
Considere paridade par.
Sistemas de Detecção de Erros Método da Paridade
24 Eletrônica Digital - Teoria
Considere que se deseja transmitir o caractere „C‟ cujo ASCII em 7 bits
é 1000011.
1 0 0 0 0 1 1
C
TRANSMISSOR
1
bit de paridade anexado
1 1 0 0 0 1 1
C
RECEPTOR
1
Ruído
Como o número de 1s não é par, o
erro é detectado no receptor. Considere paridade par.
Sistemas de Detecção de Erros Método da Paridade
25 Eletrônica Digital - Teoria
APLICAÇÃO: Quando é necessário transmitir caracteres ASCII entre
dois sistemas independentes, é preciso encontrar um forma de avisar
o receptor na transmissão.
Sistemas de Detecção de Erros Método da Paridade
26 Eletrônica Digital - Teoria
Exemplos
1101Gray = ?BCD8421
00100001BCD8421 = ?Gray
00100101BCD8421 = ?Gray
1001Gray = ?BCD8421
001000012 = ?Gray
001001012 = ?Gray
27 Eletrônica Digital - Teoria
Códigos BCD
28 Eletrônica Digital - Teoria
Dígito decimal Cód. NBCD
(8421)
Cód.Aiken
(2421)
Cód.Stibitz
(8421 – 3)
Cód.7421
(7421)
Cód. 642-1
(642-1)
0 0000 0000 0011 0000 0000
1 0001 0001 0100 0001 0011
2 0010 0010 0101 0010 0010
3 0011 0011 0110 0011 0101
4 0100 0100 0111 0100 0100
5 0101 1011 1000 0101 0111
6 0110 1100 1001 0110 1000
7 0111 1101 1010 0111 1011
8 1000 1110 1011 1001 1010
9 1001 1111 1100 1010 1101
Códigos BCD
29 Eletrônica Digital - Teoria
1. Dígito legal (entre 0 e 9), sem “vai-um”. Resultado está
correto e não existe “vai-um” para o dígito seguinte
2. Dígito ilegal sem “vai-um”. Resultado está entre 10 e 15
(em binário); para obter o dígito correto, subtrair 10 do
dígito (ou somar seis, o que é equivalente), e gerar um
“vai-um” para o dígito decimal seguinte
3. Dígito legal com “vai-um”. Quando o resultado cai entre 16
e 19; para obter o dígito correto subtrair 10 do dígito (ou
somar seis). O “vai-um” gerado está correto
Na soma de dois dígitos BCD (entre 0 e 9) em binário, o dígito resultante pode
estar em um de três casos:
Somas em BCD
30 Eletrônica Digital - Teoria
A =
0000
1000
0011
0010
B = 0000 1001 1000 0011
Sejam A = 0832 e B = 0983
A+B = 1815
Soma em BCD
31 Eletrônica Digital - Teoria
A =
1
0000
1000
0011
0010
B = 0000 1001 1000 0011
0001 0001 1011 0101
caso
1
caso
3
caso
2
caso
1
Sejam A = 0832 e B = 0983; A+B = 1815
Soma em BCD
32 Eletrônica Digital - Teoria
A =
1
0000
1000
0011
0010
B = 0000 1001 1000 0011
0001 0001 1011 0101
caso
1
caso
3
caso
2
caso
1
1
0001 0001 1011 0101
0110 0110
0001 1000 0001 0101
Sejam A = 0832 e B = 0983; A+B = 1815
Tratando-se cada caso, tem-se:
Soma em BCD
33 Eletrônica Digital - Teoria
A=0372 e B=0633
A = 0000 0011 0111 0010
B = 0000 0110 0011 0011
Soma em BCD
34 Eletrônica Digital - Teoria
A=0372 e B=0633 ; A+B = 1005
A = 0000 0011 0111 0010
B = 0000 0110 0011 0011
0000 1001 1010 0101
caso
2
Soma em BCD
35 Eletrônica Digital - Teoria
A=0372 e B=0633 ; A+B = 1005
A = 0000 0011 0111 0010
B = 0000 0110 0011 0011
0000 1001 1010 0101
caso
2
1
0000 1001 1010 0101
0110
0000 1010
caso
2
0000 0101
Com a correção do caso 2 tem-se:
E a correção deste caso fornece o resultado final (1005)
Soma em BCD
36 Eletrônica Digital - Teoria
- soma 6 em todos os dígitos de um dos operandos antes da soma das duas parcelas - só existem dois casos a serem tratados, distinguidos pelo “vai-um”:
1. O resultado não deu “vai-um” e então caiu entre 6 e 15. Deve-se subtrair 6 para obter o dígito correto.
2. O resultado produziu um “vai-um”. Então este “vai-um” já foi propagado e o dígito está correto entre 0 e 9.
A = 0000 0011 0111 0010
soma de 6 0110 0110 0110 0110
0110 1001 1101 1000
Exemplo: seja A=0372 e B=0633
Algoritmo de Hellerman
37 Eletrônica Digital - Teoria
1 1
A+6= 0110 1001 1101 1000
B= 0000 0110 0011 0011
0111
caso
1
0000
caso
2
0000
caso
2
1011
caso
1
Segunda etapa: soma de (A+6) com B:
Terceira etapa: somar 10 e ignorar “vai-um”:
0111 0000 0000 1011
1010 1010
0001 0000 0000 0101
Algoritmo de Hellerman
38 Eletrônica Digital - Teoria
Dígito
decimal
NBCD
(8421)
Excesso-de-3
(8421 – 3)
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100
Códigos BCD
Assim, a regra para a soma em excesso de três é simples: somam-se os dígitos usando aritmética binária; se um „vai-um‟ é gerado, somar 3 (0011) ao dígito decimal; senão, subtrair 3 (0011) ao dígito decimal (ou somar 1101 e desprezar o „vai-um‟).
39 Eletrônica Digital - Teoria
• somente 2 bits com valor igual a 1 em cada código
• permite detecção de erros simples
• exceção: código de zero não usa os pesos, mas mantém dois 1‟s.
Dígito
decimal
Cód.
74210
0 11000
1 00011
2 00101
3 00110
4 01001
5 01010
6 01100
7 10001
8 10010
9 10100
Código de 5 bits ponderados
40 Eletrônica Digital - Teoria
• somente 2 bits com valor 1 em cada código: um à esquerda e um à direita
• esquerda = 01 valor de 0 a 4; esquerda = 10 valor de 5 a 9
• incrementar em 1 = deslocar para a esquerda a parte da direita
Dígito decimal 50 43210
0 01 00001
1 01 00010
2 01 00100
3 01 01000
4 01 10000
5 10 00001
6 10 00010
7 10 00100
8 10 01000
9 10 10000
Código de 7 bits ponderados
Foi utilizado pela IBM
no modelo IBM650.
Também é denominado
de biquinário.
41 Eletrônica Digital - Teoria
Códigos de Hamming
O código de Hamming é um código de bloco linear, foi
desenvolvido por Richard Hamming. É utilizado no processamento de
sinal e nas telecomunicações. A sua utilização permite a transferência e
armazenamento de dados de forma segura e eficiente.
Nas telecomunicações os códigos de Hamming utilizados são
generalizações do Hamming (7,4). Estes podem detectar erros até dois
bits e corrigir até um bit. Em contraste, o código de paridade não pode
corrigir erros, e pode detectar apenas um número ímpar de erros.
42 Eletrônica Digital - Teoria
• “Distância de Hamming”: número de bits que é preciso alterar
para passar de um código válido para outro.
• Exemplo:
– entre 0100 e 0010, d = 2
– entre 0000 e 1111, d = 4
• Distância 1: não é possível detectar/corrigir erros;
• Distância 2: é possível apenas detectar erro em 1 bit;
• Distância 3: é possível detectar e corrigir erro em 1 bit; possível
detectar erros em 2 bits sem corrigir;
• Distância 2n+1: detecta 2n, corrige apenas n
Códigos de Hamming
43 Eletrônica Digital - Teoria
Usa paridade par:
A - paridade de 1,3,5,7
B - paridade de 2,3,6,7
C - paridade de 4,5,6,7
128 combinações
só 16 válidas
Posição 1 2 3 4 5 6 7
Código A B 8 C 4 2 1
0 0 0 0 0 0 0 0
1 1 1 0 1 0 0 1
2 0 1 0 1 0 1 0
3 1 0 0 0 0 1 1
4 1 0 0 1 1 0 0
5 0 1 0 0 1 0 1
6 1 1 0 0 1 1 0
7 0 0 0 1 1 1 1
8 1 1 1 0 0 0 0
9 0 0 1 1 0 0 1
10 1 0 1 1 0 1 0
11 0 1 1 0 0 1 1
12 0 1 1 1 1 0 0
13 1 0 1 0 1 0 1
14 0 0 1 0 1 1 0
15 1 1 1 1 1 1 1
Códigos de Hamming
44 Eletrônica Digital - Teoria
• Calcula-se o bit de paridade par de cada grupo e forma-se um número binário de 3 bits: cba
• se cba = 0, não há erro
• se cba 0, então há erro no bit apontado pelo valor decimal representado por cba
posição: 1 2 3 4 5 6 7
pesos: A B 8 C 4 2 1
valor: 1 0 1 0 0 1 0
c = 1 0 0 1 0
b = 0 0 1 1 0
a = 0 1 1 0 0
cba = 1002 (ou 410)
Códigos de Hamming - Correção
45 Eletrônica Digital - Teoria
• Calcula-se o bit de paridade par de cada grupo e forma-se um número binário de 3 bits: cba
• se cba = 0, não há erro
• se cba 0, então há erro no bit apontado pelo valor decimal representado por cba
posição: 1 2 3 4 5 6 7
pesos: A B 8 C 4 2 1
valor: 1 0 1 0 0 1 0
c = 1 0 0 1 0
b = 0 0 1 1 0
a = 0 1 1 0 0
cba = 1002 (ou 410)
Códigos de Hamming - Correção
46 Eletrônica Digital - Teoria
Usa paridade par:
A - paridade de 1,3,5,7
B - paridade de 2,3,6,7
C - paridade de 4,5,6,7
Exemplos:
0111010
1011001
1110110
Posição 1 2 3 4 5 6 7
Código A B 8 C 4 2 1
0 0 0 0 0 0 0 0
1 1 1 0 1 0 0 1
2 0 1 0 1 0 1 0
3 1 0 0 0 0 1 1
4 1 0 0 1 1 0 0
5 0 1 0 0 1 0 1
6 1 1 0 0 1 1 0
7 0 0 0 1 1 1 1
8 1 1 1 0 0 0 0
9 0 0 1 1 0 0 1
10 1 0 1 1 0 1 0
11 0 1 1 0 0 1 1
12 0 1 1 1 1 0 0
13 1 0 1 0 1 0 1
14 0 0 1 0 1 1 0
15 1 1 1 1 1 1 1
Códigos de Hamming
47 Eletrônica Digital - Teoria
Códigos de Hamming
Considere uma palavra de 8 bits. Numere os bits de:
m1 m2 m3 m4 m5 m6 m7 m8
A esse dado de 8 bits vamos acrescentar 4 bits, formando o código de
Hamming de 12 bits.
Numere os bits do código de Hamming como sendo:
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12
48 Eletrônica Digital - Teoria
Códigos de Hamming
Sejam
x3 = m1
x5 = m2
x6 = m3
x7 = m4
x9 = m5
x10 = m6
x11 = m7
x12 = m8
Os 4 bits restantes são calculados conforme abaixo, onde representa a operação
ou-exclusivo (xor):
x1 = x3 x5 x7 x9 x11
x2 = x3 x6 x7 x10 x11
x4 = x5 x6 x7 x12
x8 = x9 x10 x11 x12
49 Eletrônica Digital - Teoria
Códigos de Hamming
Seja y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 a mensagem recebida.
Calculamos:
k1 = y1 y3 y5 y7 y9 y11
k2 = y2 y3 y6 y7 y10 y11
k3 = y4 y5 y6 y7 y12
k4 = y8 y9 y10 y11 y12
Caso tenhamos k1 = k2 = k3 = k4 = 0, não há erro.
Caso contrário, o número binário codificado pelos 4 bits determina a posição do bit
errado (k4 k3 k2 k1 ).
50 Eletrônica Digital - Teoria
Bibliografia
Capítulo 2 - TOCCI, Ronald; WIDMER, N. S. "Sistemas Digitais.
Princípios e Aplicações". 11ª Edição. Editora Prentice-Hall, 2011.
Capítulo 2 - PEDRONI Volnei A. "Eletrônica Digital Moderna e VHDL". 1ª
Edição. Editora Campus, 2010.
Capítulo 1 - KARIM, Mohammad A.; CHEN, Xinghao. "Projeto Digital -
Conceitos e Princípios Básicos". 1ª Edição. Editora LTC.
51 Eletrônica Digital - Teoria
sites.google.com/a/ifmg.edu.br/otavio-gomes/eletronica-digital