Circuitos Digitais I
Notas de Aula
Sistemas de Representa¸
c˜
ao
Num´
ericos
Bases e C´
odigos
Ricardo Tokio Higuti
Departamento de Engenharia El´etrica - FEIS - Unesp
Bases
• ´E importante representar valores das informa¸c˜oes que desejamos pro-cessar;
• Por exemplo, num sinal amostrado, converter uma amplitude em uma sequˆencia de bits;
• O mais comum ´e utilizar a base 10:
358.1710= 3 × 102+ 5 × 101+ 8 × 100+ 1 × 10−1+ 7 × 10−2
Representa¸
c˜
ao em uma base b
N´umero representado numa base inteira b > 1, com n d´ıgitos na parte inteira e m d´ıgitos na parte fracion´aria:
Nb= (an−1an−2 · · · a2 a1a0 · a−1a−2 · · · a−m+1 a−m)b Nb= an−1× b n−1 + an−2× b n−2 + · · · + a2× b 2 + a1× b 1 + a0× b 0 + +a−1× b−1+ a−2× b−2+ · · · + a−m+1× b−m+1+ a−m× b−m • D´ıgitos v´alidos: 0 a (b − 1)
• Parte inteira (positiva) com n d´ıgitos: valores de 0 a (bn
− 1) Base 2
• ´E uma das bases mais importantes em circuitos digitais; • D´ıgitos v´alidos: 0 e 1;
• BIT: BInary digiT - d´ıgito bin´ario; • N´umero representado na base 2:
1011.112= 1 × 2 3
+ 1 × 21
+ 2 × 20
+ 1 × 2−1+ 1 × 2−2= 11.7510
• Um conjunto de 8 bits ´e chamado de Byte (B);
• Um conjunto de 4 bits (meio Byte) ´e chamado de Nibble.
Convers˜
ao da base 10 para uma base b
Parte inteira
Seja um n´umero inteiro positivo escrito na base b: Nb= an−1× b
n−1
+ an−2× b n−2
+ · · · + a2× b2+ a1× b1+ a0× b0,
onde lembra-se que 0 ≤ ai≤ b − 1,
Utilizando-se divis˜oes inteiras (11/3 = 3, resto 2), divide-se Nb por b,
obtendo-se: Nb0= Nb b = an−1× b n−2 + an−2× b n−3 + · · · + a2× b 1 + a1× b 0 , resto a0.
Ou seja, o resto da divis˜ao inteira de Nb por b ´e igual ao d´ıgito menos
significativo do n´umero escrito na base b. Repetindo-se a opera¸c˜ao de divis˜ao:
Nb1= Nb0 b = an−1× b n−3 + an−2× b n−4 + · · · + a2× b 0 , resto a1.
e assim por diante.
Esta opera¸c˜ao ´e feita at´e que o resultado da divis˜ao seja menor que b, que ser´a o ´ultimo resto da divis˜ao, e portanto o valor do d´ıgito mais significativo.
Portanto, para converter um n´umero inteiro positivo da base 10 para a base b, basta fazer divis˜oes inteiras sucessivas por b. Os restos das divis˜oes s˜ao os d´ıgitos do n´umero na base b.
Exemplos
• O n´umero 18 na base 10, convertido para a base 2, seria: 18 2 = 9, resto 0 −→ a0= 0 9 2 = 4, resto 1 −→ a1 = 1 4 2 = 2, resto 0 −→ a2 = 0 2 2 = 1, resto 0 −→ a3 = 0 1 2 = 0, resto 1 −→ a4 = 1 Portanto: 1810= 100102= 1 × 24+ 1 × 21
• Convertendo o n´umero 18 da base 10 para a base 3: 18 3 = 6, resto 0 −→ a0= 0 6 3 = 2, resto 0 −→ a1 = 0 2 3 = 0, resto 2 −→ a2 = 2 Portanto: 1810= 2003= 2 × 32
Convers˜
ao da base 10 para uma base b
Parte fracion´aria
Seja um n´umero fracion´ario escrito na base b:
Nb= a−1× b−1+ a−2× b−2+ a−3× b−3+ a−4× b−4+ · · ·
Ao multiplicar Nbpor b, fica-se com:
Nb× b = a−1+ a−2× b−1+ a−3× b−2+ a−4× b−3+ · · ·
Ou seja, o resultado tem uma parte inteira (a−1) e uma parte fracion´aria.
Portanto, a parte inteira ´e o valor do d´ıgito logo ap´os o ponto decimal: a−1.
Repetindo-se a opera¸c˜ao, toma-se a parte fracion´aria de (Nb× b) e
multiplica-se por b novamente, obtendo-se o d´ıgito a−2, e assim
Exemplos
• O n´umero 0.75 na base 10, convertido para a base 2, seria: 0.75 × 2 = 1.5 −→ a−1= 1
0.5 × 2 = 1.0 −→ a−2= 1
Portanto:
0.7510= 0.112= 1 × 2−1+ 1 × 2−2
• Convertendo o n´umero 0.75 da base 10 para a base 3: 0.75 × 3 = 2.25 −→ a−1= 2
0.25 × 3 = 0.75 −→ a−2= 0
0.75 × 3 = 2.25 −→ a−3= 2
0.25 × 3 = 0.75 −→ a−4= 0
e portanto resulta numa d´ızima, e o n´umero 0.75 n˜ao tem uma repre-senta¸c˜ao exata na base 3 (se for utilizado um n´umero finito de d´ıgitos):
0.7510= 0.2020202020...3= 2 × 3−1+ 2 × 3−3+ 2 × 3−5+ · · ·
Se usarmos apenas trˆes d´ıgitos ap´os o ponto decimal, fica-se com a aproxima¸c˜ao:
0.2023= 2 × 3−1+ 2 × 3−3= 0.740740740...
ou seja, h´a um erro na representa¸c˜ao.
Convers˜
ao de base
• Parte inteira: resto das divis˜oes sucessivas (divis˜ao inteira)
• Parte fracion´aria: multiplica¸c˜oes sucessivas (parte inteira da multi-plica¸c˜ao e mant´em a parte fracion´aria)
• Para converter de uma base b1 para uma base b2 deve-se, de forma
geral, converter para a base 10 e depois para a outra base
• H´a rela¸c˜ao direta entre algumas bases, por exemplo, da base 2 para a base 8 ou base 2 para base 16
Bases importantes
• Base 2 - Bin´aria • Base 8 - Octal
– d´ıgitos: 0 a 7 • Base 16 - Hexadecimal
Base Hexadecimal
• H´a 16 d´ıgitos poss´ıveis: de 0 a “15”;
• De 0 a 9 os d´ıgitos hexa s˜ao os pr´oprios n´umeros ar´abicos; • De 10 a 15, utilizam-se as letras de A a F;
• Dois d´ıgitos hexadecimais formam um Byte (oito bits);
• ´E uma forma mais compacta de representar uma sequˆencia de bits.
decimal hexadecimal bin´ario
0 0 0000 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 A 11 B 12 C 13 D 14 E 15 F 16 17 18 128 129 130 200 222 255 256
Exerc´ıcios
Fa¸ca as seguintes convers˜oes entre bases: 1. 101101.011 da base 2 para a base 10; 2. 30.3 da base 10 para base 2;
3. 23.1 da base 4 para a base 3; 4. AF.8 da base 16 para a base 10; 5. AF.8 da base 16 para a base 2.
C´
odigos
• As bases seguem uma lei de forma¸c˜ao dos n´umeros. Se um n´umero est´a escrito em determinada base, saberemos seu valor.
• Pode-se utilizar tamb´em c´odigos, que n˜ao necessariamente precisam seguir uma l´ogica para representar os n´umeros.
• Alguns c´odigos de interesse: – BCD - Binary-coded decimal
D´ıgitos da base 10 (0 a 9) codificados em 4 bits;
– Gray - muda apenas um bit entre representa¸c˜oes adjacentes; – ASCII - c´odigo que representa letras, n´umeros e comandos/controle; – C´odigos detectores/corretores de erros - adicionam bits `a informa¸c˜ao original para aumentar a confiabilidade na transmiss˜ao da in-forma¸c˜ao.
C´
odigo BCD
• BCD - Binary-Coded Decimal (Decimal Codificado em Bin´ario); • Codifica os d´ıgitos decimais (0 a 9) em bin´ario;
• S˜ao necess´arios 4 bits para representar os d´ıgitos de 0 a 9:
decimal BCD 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001
• Portanto, das 16 possibilidades de representa¸c˜ao com 4 bits, apenas 10 s˜ao usadas. H´a uma menor eficiˆencia no uso de mem´oria (bits). • ´E ´util para mostrar valores num´ericos em displays, por exemplo.
C´
odigo BCD
• Para n´umeros maiores que 9 (compare a quantidade de bits em cada caso):
decimal BCD bin´ario 10 0001 0000 1010 11 12 13 14 15 16 17 18 128 0001 0010 1000 129 130 200 222 255 256 1 0000 0000
C´
odigo de Gray
• ´E um c´odigo no qual h´a mudan¸ca de apenas um bit entre um n´umero e o n´umero adjacente;
• Para trˆes bits:
decimal bin´ario Gray
0 000 000 1 001 001 2 010 011 3 011 010 4 100 110 5 101 111 6 110 101 7 111 100
• Na pr´atica ´e dif´ıcil fazer com que os bits mudem exatamente no mesmo instante;
• Mudar apenas um bit de cada vez pode levar a menor taxa de erros; • Algumas aplica¸c˜oes:
– Codifica¸c˜ao em comunica¸c˜oes digitais para reduzir taxa de erro; – Codifica¸c˜ao de posi¸c˜ao (encoder )
C´
ogigo de Gray
• Encoder de posi¸c˜ao;
• Exemplo para 8 posi¸c˜oes (na pr´atica s˜ao mais, para aumentar a res-olu¸c˜ao);
000 001
100
• Na mudan¸ca da posi¸c˜ao 3 para a 4, se fosse usada a representa¸c˜ao bin´aria (base 2), dever-se-ia mudar de 011 para 100, ou seja, trˆes bits deveriam mudar simultaneamente;
• Isso ´e bem dif´ıcil de ocorrer na pr´atica, e poderia ocorrer 011 101 -100, ocasionando erros na identifica¸c˜ao da posi¸c˜ao do motor.
C´
odigo ASCII
• ASCII - American Standard Code for Information Interchange; • C´odigo que representa caracteres (letras, n´umeros) e comandos (enter,
espa¸co, fim de linha, etc.);
• Utiliza 7 bits para representar 256 caracteres e comandos;
ASCII CONTROL CODE CHART
b7 b6 b5 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 BITS b4 b3 b2 b1 CONTROL SYMBOLS
NUMBERS UPPER CASE LOWER CASE
0 0 0 0 0 NUL 0 0 16 DLE 10 20 32 SP 20 40 48 0 30 60 64 @ 40 100 80 P 50 120 96 ‘ 60 140 112 p 70 160 0 0 0 1 1 SOH 1 1 17 DC1 11 21 33 ! 21 41 49 1 31 61 65 A 41 101 81 Q 51 121 97 a 61 141 113 q 71 161 0 0 1 0 2 STX 2 2 18 DC2 12 22 34 ” 22 42 50 2 32 62 66 B 42 102 82 R 52 122 98 b 62 142 114 r 72 162 0 0 1 1 3 ETX 3 3 19 DC3 13 23 35 # 23 43 51 3 33 63 67 C 43 103 83 S 53 123 99 c 63 143 115 s 73 163 0 1 0 0 4 EOT 4 4 20 DC4 14 24 36 $ 24 44 52 4 34 64 68 D 44 104 84 T 54 124 100 d 64 144 116 t 74 164 0 1 0 1 5 ENQ 5 5 21 NAK 15 25 37 % 25 45 53 5 35 65 69 E 45 105 85 U 55 125 101 e 65 145 117 u 75 165 0 1 1 0 6 ACK 6 6 22 SYN 16 26 38 & 26 46 54 6 36 66 70 F 46 106 86 V 56 126 102 f 66 146 118 v 76 166 0 1 1 1 7 BEL 7 7 23 ETB 17 27 39 ’ 27 47 55 7 37 67 71 G 47 107 87 W 57 127 103 g 67 147 119 w 77 167 1 0 0 0 8 BS 8 10 24 CAN 18 30 40 ( 28 50 56 8 38 70 72 H 48 110 88 X 58 130 104 h 68 150 120 x 78 170 1 0 0 1 9 HT 9 11 25 EM 19 31 41 ) 29 51 57 9 39 71 73 I 49 111 89 Y 59 131 105 i 69 151 121 y 79 171 1 0 1 0 10 LF A 12 26 SUB 1A 32 42 * 2A 52 58 : 3A 72 74 J 4A 112 90 Z 5A 132 106 j 6A 152 122 z 7A 172 1 0 1 1 11 VT B 13 27 ESC 1B 33 43 + 2B 53 59 ; 3B 73 75 K 4B 113 91 [ 5B 133 107 k 6B 153 123 { 7B 173 1 1 0 0 12 FF C 14 28 FS 1C 34 44 , 2C 54 60 < 3C 74 76 L 4C 114 92 \ 5C 134 108 l 6C 154 124 | 7C 174 1 1 0 1 13 CR D 15 29 GS 1D 35 45 2D 55 61 = 3D 75 77 M 4D 115 93 ] 5D 135 109 m 6D 155 125 } 7D 175 1 1 1 0 14 SO E 16 30 RS 1E 36 46 . 2E 56 62 > 3E 76 78 N 4E 116 94 ˆ 5E 136 110 n 6E 156 126 ˜ 7E 176 1 1 1 1 15 SI F 17 31 US 1F 37 47 / 2F 57 63 ? 3F 77 79 O 4F 117 95 5F 137 111 o 6F 157 127 DEL 7F 177 LEGEND: d ec CHAR h ex oct V ictor E ijkhout Dept. of C omp. Sci. U niversity of T ennessee K noxville T N 37996, U SA
C´
odigo ASCII
• Por exemplo, para codificar a palavra: “Unesp” • Em hexadecimal: 55 6E 65 73 70
• Em bin´ario: 1010101 1101110 1100101 1110011 1110000
C´
odigos Detectores e Corretores de Erros
• Transmiss˜ao de dados digitais - suscet´ıveis a ru´ıdo;
• Existe a op¸c˜ao de adicionar bits `a mensagem original para detectar e/ou corrigir erros
Bit de Paridade
• No caso mais simples: um bit adicionado a cada certo n´umero de bits; • Paridade par: o bit adicionado ´e 0 ou 1, de forma que o n´umero total
de 1’s seja par (contando com o pr´oprio bit de paridade);
• Paridade ´ımpar: idem ao caso anterior, mas o n´umero total de 1’s ´e ´ımpar.
• Suponha que se deseje transmitir a palavra “Unesp”. os bits originais seriam:
1010101 1101110 1100101 1110011 1110000
• Poderiam ocorrer erros em determinados bits, e, por exemplo, o sinal recebido seria:
1000101 1101100 0100101 1111011 1110000 • Nesse caso, o dado decodificado seria: “Ej%{p”
• Considerando agora um bit de paridade par (a cada 7 bit, no bit mais significativo), o c´odigo enviado seria:
01010101 11101110 01100101 11110011 11110000
• Se ocorressem erros nos mesmos bits, estes seriam detectados. No primeiro caractere, se a sequˆencia de bits recebida fosse:
01000101
• O erro seria detectado pois agora h´a um n´umero ´ımpar de 1’s, e, neste caso, pode-se descartar o dado e pedir que seja retransmitido. • Para um bit de paridade, n˜ao se detecta um n´umero par de erros.