ELT2 "Para quem não crê, nenhuma explicação é possível. Para quem crê, nenhuma explicação é necessária". Pe. Donizete Eng.º Lacyr João Sverzut - Reedição 02/2009 1 1. INTRODUÇÃO Em nossos dias ouvimos falar muito na eletrônica digital ou sistemas digitais. Fica óbvio que o desenvolvimento desta tecnologia veio trazer um volume imenso de inovações em todas as áreas em que a eletrônica é necessária. Buscaremos em nossos estudos e pesquisas trazer ao vosso conhecimento os conhecimentos básicos e avançados que permitirão buscar uma evolução constante do discente. Meu objetivo, como seu professor, é o de apontar o horizonte deste conhecimento e auxiliá-lo na construção do mesmo. Eu disse auxiliá-lo, pois a minha função será esta mesma já que um professor sabe que todo potencial emana de seu aluno e não do próprio professor. Todos os tópicos que estudaremos dentro dos sistemas digitais foram derivados a partir de sistema analógicos já que nós somos “seres analógicos” por natureza. Podemos ver no nosso cotidiano que muitos dos instrumentos analógicos foram substituídos por instrumentos digitais, até mesmo o simples termômetro doméstico para se medir a temperatura corporal. 2. Sinais Analógicos e Sinais Digitais Todo sinal elétrico ou informação possui uma forma de representação, em nosso caso iremos abordar os sinais analógicos e os sinais ou informações digitais. 2.1. Sinais Analógicos Os sinais analógicos são representados por símbolos ou figuras que são continuamente variáveis como, por exemplo, os ponteiros de um relógio cujas posições e ângulos determinam a hora. Ou ainda o termômetro clínico com coluna de mercúrio cuja altura irá mostrar a variação da febre. A representação gráfica de um sinal analógico senoidal na frequência de 1 Hz ( onde 1 Hertz = 1 ciclo por segundo) pode ser vista na figura 1. Podemos ver que a representação do sinal é continuamente variável, de acordo com a característica senoidal e alternada do sinal. Pode-se notar que o sinal tem sua variação de tensão (amplitude) em torno dos valores máximos de pico do sinal 1 Vp e -1Vp. Dentro dos tempos do ciclo 2 completo da onda a mesma poderá assumir valores correspondentes ao tempo de 0 a V[volts] 1Vp T2 T1 0,5 1 t[s] -1Vp 1segundo. Figura 1 - Representação de um sinal analógico senoidal Se o sinal for um sinal de áudio, mais complexo em termos de freqüências, a representação seria da forma que se vê na figura 2, onde é representado um trecho de uma música. Figura 2 - Representação de um sinal de áudio (trecho de música). 2.2. Sinais Analógicos Sistemas analógicos são aqueles que manipulam quantidades ou variáveis físicas que podem variar ao longo de uma faixa contínua de valores. Como exemplo podemos citar o ajuste de luminosidade de uma lâmpada incandescente, ajustado por um potenciômetro que pode selecionar qualquer nível de luminosidade da lâmpada desde apagada até o máximo de luminosidade. 3 2.3. Sinais Digitais Os sinais digitais tem seus níveis representados por símbolos discretos, denominados dígitos, o que irá levar a uma representação discreta do sinal. Uma representação a níveis discretos significa que as variações do sinal digital em função do tempo será discreta ou em degraus ou passo a passo. Alguns autores utilizam a analogia seguinte para diferenciar as representações analógica e digital dos sinais. Analógica /Amostragem contínua Digital / Amostragem discreta (passo a passo) Uma questão se apresenta: Qual a diferença entre a manipulação de dados analógicos e digitais? Podemos citar como exemplo a leitura de um velocímetro de auto analógico e um velocímetro digital. Em um velocímetro analógico como o da figura 3 várias pessoas poderão fazer a leitura de forma diferente frente a uma multa por excesso de velocidade. Figura 3 - Velocímetro analógico O policial irá multá-lo em uma velocidade de 83 km/h e você irá jurar que estava a 80 km/h! E assim várias pessoas poderiam realizar leituras diferentes dependedo do ponto de vista . Já em um velocímetro digital a leitura seria como no exemplo da figura 4. 4 Figura 4 - Velocímetro digital Este mesmo tipo de erro na leitura, conhecido como erro de paralaxe, ocorre entre uma leitura em um multímetro analógico, um termômetro de mercúrio, etc. 2.4. Vantagens e Limitações das técnicas digitais 2.4.1. Vantagens - Maior facilidade nos projetos pois são, basicamente, circuitos de chaveamento onde são importantes as faixas de tensões e não a exatidão da tensão a ser aplicada. - Facilidade de armazenamento de informações. - Maior facilidade de manter a exatidão e precisão. - Permitem a programação das operações. - Menor suscetibilidade aos ruídos. - Maior escala de integração visto que uma grande parte dos componentes utilizados na eletrônica analógica não necessitam serem incluídos (capacitores, resistores de precisão, transformadores). 2.4.2. Limitações São poucas as limitações mas todo os problemas derivam do tempo necessário para a conversão das grandezas analógicas em digitais. Posto que o mundo real é quase inteiramente analógico e que grande parte de suas grandezas são analógicas... 5 3. SISTEMAS DE NUMERAÇÃO Neste capítulo iremos estudar alguns dos sistemas de numeração mais utilizados no estudo dos sistemas digitais. Estes são de importância fundamental para o conhecimento e estudo da lógica digital. 3.1. Sistema de Numeração Decimal O sistema decimal é composto pela base 10 e pelos símbolos (algarismos) 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Com estes componentes podemos formar quaisquer números desejados. Você verá que a “mecânica” de todo sistema numérico é a mesma: a base é X e os algarismos vão de 0 a (X-1). O valor de um número neste sistema, bem como nos outros sistemas de numeração que veremos a seguir, depende da posição em que se encontra o algarismo pois, de acordo com a posição do mesmo, este terá um determinado peso. Este peso é obtido através da base (10) elevada a um expoente que depende de sua posição, como podemos ver abaixo. 10n ......... 104 103 102 101 100 , ......... Dezena de milhar milhar centena dezena unidade Vírgula decimal 10-1 10-2 ....... 10-n ....... Assim, quando queremos formar um número no sistema decimal, basta colocar o algarismo na sua devida posição para que o mesmo determine o valor numérico do algarismo: Exemplo: Formação do número inteiro1.238. 103 102 101 100 1 2 3 8 Assim, o número é formado como pode ser visto a seguir: 1 x 103 = 1.000+ 2 x 102 = 200+ 3 x 101 = 30+ 8 x 100 = 8+ Total 1.238 6 3.2. Sistema de Numeração Binário O sistema de numeração binário é composto pela base 2 e pelos algarismos 0 e 1. Da mesma forma que no sistema decimal, o valor de um determinado número depende da posição de seus dígitos. No sistema binário as posições são obtidas, da mesma forma que no sistema decimal, elevando-se a base a expoentes que vão de 0 até n. n 2 ......... 4 2 2 3 2 2 1 0 2 2 MSB ......... -1 , 2 -2 2 Vírgula decimal ....... -n 2 ....... LSB Cada uma das posições acima representa um peso para o numero binário, sendo que a 0 posição 2-n (ou 2 nos casos dos números inteiros)representa o dígito menos significativo n (LSB) e a posição 2 representa o dígito mais significativo (MSB). Você vai ouvir falar muito em “bit” durante sua vida. Esta palavra muito utilizada nada mais é do que uma abreviatura, na língua inglesa, de binary digit. Portanto dizer dígito ou algarismo binário ou bit, dá na mesma. Portanto, quando se diz que um determinado número possui 5 bits estamos dizendo que o mesmo possui 5 algarismos binários. Tomemos o exemplo a seguir. Pesos 23 22 21 20 1 0 1 1 , 2-1 2-2 2-3 1 0 1 MSB LSB Conversão de um número Decimal inteiro para Binário. Para se converter um número decimal em binário devemos realizar sucessivas divisões pela base 2 no número decimal. Ao final, basta escrevermos os restos das divisões como nos mostra a figura do exemplo a seguir. Exemplo: Realizar a conversão do número decimal 63 para binário. 63 2 62 31 2 1 30 15 2 1 14 7 2 6 3 2 1 2 1 2 1 0 0 1 7 1 A seta nos indica o sentido da leitura do resultado obtido. Assim o número 63(10) será escrito como o binário 111111(2). Exercício Como exemplo realize a conversão do decimal 64 em binário. 3.2.1. Conversão de um número binário inteiro em um número decimal. A conversão do número binário para número decimal é realizada multiplicando-se o dígito pelo respectivo peso de sua posição em seguida somando-se com os outros produtos de bits por peso do número. Podemos ver o procedimento no exemplo que segue. Exemplo: Converter o binário 111111(2) em decimal. 25 24 23 22 21 20 1 1 1 1 1 1 Após colocar os pesos de cada posição do número, basta multiplicar o bit pelo peso e somarmos aos outros produtos, ou seja; 1 x 25 + 1 x 24 + 1 x 23 + 1 x 22 + 1 x 21 + 1 x 20 = 1 x 32 + 1 x 16 + 1 x 8 + 1 x 4 + 1 x 2 + 1 x 1 = 32+16+8+4+2+1 = 63(10) Cabe aqui ressaltar que, utilizando um número binário, com 4 bits poderemos representar até o número decimal 15. Por que motivo? Sabemos que os 4 bits são representados na forma abaixo. 23 22 21 20 Ao escrevermos o número binário 1111(2), teremos: 8 8 4 2 1 1 1 1 1 Este é o maior número que podemos escrever com os 4 bits e corresponde ao decimal 15 (8+4+2+1) Assim, com n bits em um número binário conseguiremos representar até o número decimal de valor (2n-1). Exercícios 1) Converter 1000000(2) em um número decimal. 2) Quantos bits são necessários para representar o decimal 1024 ? 3) Converter de decimal para binário os seguintes números: a) 132(10) b) 28(10) c) 45(10) d) 100(10) e) 78(10) 4) Converter os números binários para decimais. a) 1001100110(2) 9 b) 100000001(2) c) 1010101(2) d) 1001001(2) e) 1111101(2) Outra forma de conversão decimal inteiro para binário de forma muito mais facilitada é a de utilizar a “cerca” e preencher a mesma com zero e um conforme a necessidade. Veja o exemplo a seguir e repita todos os exercícios anteriores com a nova técnica. Exemplo Representar o número decimal 126 em binário. - Determine o peso máximo a ser utilizado. Como? Veja a cerca: 28 27 256 128 26 25 24 23 22 21 20 64 32 16 8 4 2 1 Pela tabela, com os pesos em bases binária e convertidos para decimais, fica fácil ver que a composição do número 126 não necessitará dos pesos 27 (128) e 28 (256). Assim, a tabela necessária se reduz á seguinte. Por razões de facilidade passo a representar a tabela com os valores dos pesos expressos em decimais. 64 32 16 8 4 2 1 - Preencha a tabela com 1 abaixo do peso que é necessário e 0 abaixo do peso desnecessário. 64 32 16 8 4 2 1 1 1 1 1 1 1 0 Assim, 126(10) = 1111110(2) 10 Macetologia: Se “escondermos” uma posição qualquer da cerca dos pesos veremos que a soma daquelas restantes à direita terá como resultado a “escondida” menos 1. Exemplo 64 32 16 8 4 2 1 Vê-se que a mão “esconde” a posição de peso 128, então a soma dos pesos à direita da mão será 32+16+8+4+2+1=63. Que é o valor da posição escondida (64) menos 1! 3.3. Sistema de Numeração Octal Apesar de pouco utilizado e já que estamos com a mão na massa vamos estudá-lo pois conhecimento nunca é demais. O sistema octal será formado por aquela “mecânica” já citada anteriormente, composto por: Base: 8 Algarismos: 0, 1, 2, 3, 4, 5, 6, e 7. Como comentado anteriormente o processo de formação de qualquer sistema numérico é fundamentado na base do sistema. Assim, no sistema octal, da mesma forma que no sistema decimal, o valor de um determinado número depende da posição de seus algarismos. No sistema octal os pesos das posições são obtidos elevando-se a base a expoentes que vão de 0 até n 8n ......... 84 83 82 81 80 ......... Cada uma das posições acima representa um peso para a formação de um numero octal, sendo que a posição 80 representa o algarismo menos significativo e a posição 8n representa o algarismo mais significativo. 3.3.1. Conversão do Sistema Decimal para Sistema Octal. 11 Para se converter um número decimal em um número octal deveremos realizar sucessivas divisões do número decimal pela base 8. Ao final, basta escrevermos os restos das divisões como nos mostra o exemplo abaixo. Esta é a metodologia ordináriamente utilizada e mais adiante veremos outra possibilidade mais eficaz e rápida. Exemplo: Converter o número decimal 1752 em octal 1752 8 15 219 8 72 59 27 0 3 3 se n ti do da es c ri 8 3 3 ta Assim, teremos como resultado o número 1752(10) sendo representado pelo octal 3330(8). Exercício: Realizar a conversão do número 230(10) para o sistema octal. 3.3.2. Conversão do Sistema Octal para o Sistema decimal A conversão do número octal para número decimal é realizada multiplicando-se o algarismo pelo respectivo peso de sua posição e somando-se com os outros produtos dos algarismos pelo peso dos mesmos. Podemos ver o procedimento no exemplo que segue. Exemplo: Converter o octal 300 em decimal. 82 81 80 3 0 0 Após colocar os pesos de cada posição do número, basta multiplicar o algarismo pelo peso e somarmos aos outros produtos, ou seja; 3 x 82 + 0 x 81 + 0 x 80 = 3 x 64 + 0 x 8 + 0 x 1 = 192(10) 3.4. Sistema de Numeração Hexadecimal 12 Esse será um sistema de numeração extensivamente utilizado conjuntamente com o decimal e o binário nos programas para microcontroladores já que números de linhas de programação e os números são expressos em hexadecimal. Neste sistema teremos: Base: 16 Algarismos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F. (10) (11) (12) (13) (14) (15) Pode parecer estranho um sistema de numeração utilizar letras como algarismos, mas isto é apenas uma estratégia para facilitar as conversões e evitar erros, como veremos a seguir. Mais uma vez o processo de formação é fundamentado na base do sistema. Assim, no sistema hexadecimal, da mesma forma que no sistema decimal, o valor de um determinado número depende da posição de seus dígitos. No sistema hexadecimal as posições são obtidas elevando-se a base a expoentes que vão de 0 até n. 16n ......... 164 163 162 161 160 ......... Cada uma das posições acima representa um peso para o numero hexadecimal, sendo que a posição 160 representa o dígito menos significativo e a posição 16n representa o dígito mais significativo. Por que são utilizadas letras no lugar dos algarismos que têm dois dígitos ? A resposta é simples! Como iríamos saber se o número hexadecimal 110(16), por exemplo, é 1-10 (um-dez) ou 11-0 (onze-zero) ou ainda 1-1-0 (um-um-zero) ?!?!?!?!?!? Você poderia fazer nova pergunta: E qual é a diferença ?????? É simples: a) Se o número for 1-10, quando formos colocar os pesos ele ficaria 161 160 1 10 dando um resultado. b) Se o número fosse 11-0 , quando formos colocar os pesos ele ficaria 13 161 160 11 0 dando outro resultado. c) Se o número fosse 1-1-0, quando formos colocar os pesos ele ficaria 162 161 160 1 1 0 dando um resultado ainda diferente. Como solucionar o problema? Arbitraram-se letras no lugar dos algarismos com dois dígitos, eliminando assim a questão. Assim, quando queremos escrever o hexadecimal 1-10(16) escrevemos 1A(16). Quando queremos escrever o hexadecimal 11-0(16) escrevemos B0(16); e, para escrevermos o hexadecimal 1-1-0(16) escrevemos 110(16). 3.4.1. Conversão do Sistema Decimal para o Sistema Hexadecimal. Para converter um número decimal em hexadecimal deve-se realizar sucessivas divisões,pela base 16, no número decimal. Ao final, basta escrevermos os restos das divisões como nos mostra o exemplo abaixo. Exemplo: Converter o número decimal 34 em hexadecimal 34 sen 2 tido 16 2 2 da e 16 0 scr ita Assim o decimal 34(10) é o hexadecimal 22(16). Realize como exercício a conversão do decimal 100(10) para hexadecimal. 14 3.4.2. Conversão do Sistema Hexadecimal para o Sistema Decimal A conversão do número hexadecimal para número decimal é realizada multiplicando-se o dígito pelo respectivo peso de sua posição e somando-se com os outros produtos dos algarismos pelo peso dos mesmos. Podemos ver o procedimento no exemplo que segue. Exemplo: Converter o hexadecimal 300(16) em decimal. 162 161 160 3 0 0 Após colocar os pesos de cada posição do número, basta multiplicar o algarismo pelo peso e somarmos aos outros produtos, ou seja; 3 x 162 + 0 x 161 + 0 x 160 = 3 x 256 + 0 x 8 + 0 x 1 =768 (10) Como exercício, converter o hexadecimal ABC(16) em decimal. Exercícios 1. Converter para os sistemas de numeração solicitados. a) 100(10) para N(2) b) 100(10) para N(8) c) 100(10) para N(16) 2. Converter os seguintes números para o sistema decimal. a) 100101(2) 15 b) 1001100(2) c) 9F(16) d) FFA(16) e) 18(8) 3.5. Conversão entre os Sistemas Octal/Hexadecimal e Hexadecimal/Octal As conversões, entre os diversos sistemas vistos até o momento, poderão ser realizadas de duas formas: uma delas utiliza o sistema decimal como intermediário: N(16) N(10) N(8) Outra forma utiliza o sistema binário como ferramenta. N(16) N(2) N(8) Conversão de Hexadecimal para Octal: 3.5.1. Conversão Hexadecimal/Octal utilizando o sistema decimal como intermediário. Como exemplo, utilizaremos o número hexadecimal 1FA para realizar a conversão para octal. 162 161 160 1 F A 1º passo: Converte-se o número para o sistema decimal, utilizando-se a cerca. 16 1x16²+15x16¹+10x160=256+240+10=506(10) 2º passo: Toma-se o número obtido e converte-se o mesmo para o sistema octal dividindo-o sucessivamente pela base oito. 506 8 026 63 8 2 7 7 8 7 0 Assim chega-se ao valor do octal 772, equivalente ao hexadecimal 1FA. 3.5.2. Conversão Octal/Hexadecimal utilizando o sistema decimal como intermediário. Como exemplo, utilizaremos o número octal 772 para realizar a conversão para hexadecimal. 82 81 80 7 7 2 1º passo: Converte-se o número para o sistema decimal, utilizando-se a cerca. 7x8²+7x8¹+2x80=448+56+2=506(10) 2º passo: Toma-se o número obtido e converte-se o mesmo para o sistema hexadecimal dividindo-o sucessivamente pela base 16. 506 16 026 31 16 (10) (15) 1 16 A F 1 0 Assim chega-se ao valor do hexadecimal 1FA equivalente ao octal 772. 17 3.5.3. Conversão Hexadecimal/Octal utilizando o sistema Binário como intermediário. Para facilitar as conversões podemos utilizar tabelas como as que são apresentadas a seguir. C B A OCTAL 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 1 1 1 7 D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 A HEXA 0 0 1 1 0 2 1 3 0 4 1 5 0 6 1 7 0 8 1 9 0 A 1 B 0 C 1 D 0 E 1 F 1º passo: Representa-se o numero hexadecimal em um número binário, fazendo-se com que cada algarismo do hexadecimal seja representando por um binário de 4 bits (dígitos). Por exemplo, converter o hexadecimal 1FA para octal utilizando o decimal como intermediário e depois utilizando o binário. Assim você poderá tirar suas conclusões de qual metodologia você irá utilizar. Farei aqui a conversão utilizando o binário como ferramenta. 1 F A(16) 0 0 0 1 1 1 1 1 1 0 1 0(2) 18 2º passo: Agrupa-se, de 3 em 3 bits, o número binário encontrado. Fazendo-se a conversão de cada grupo de 3 bits para o sistema decimal. O número encontrado será o número octal desejado. 4 2 1 4 2 1 4 2 1 4 2 1 0 0 0 1 1 1 1 1 1 0 1 0 0 3.5.4. Conversão 7 Octal/Hexadecimal 7 2(8) utilizando o sistema Binário como intermediário. Primeiramente converte-se o octal em binário, fazendo-se com que cada algarismo do úmero octal seja representado por um binário de 3 bits. Tomemos como exemplo a conversão do octal 772 para hexadecimal. 7 7 2(8) 1 1 1 1 1 1 0 1 0 2º Passo – Agrupe-se 4 em 4 bits, e faz-se a conversão de cada grupo de 4 bits para o sistema decimal. O número encontrado é o hexadecimal. 0 0 0 1 1 1 1 1 1 0 1 0 1 F A(16) EXERCÍCIOS: 1) - Converter os hexadecimais para decimais: a)AF b)B01 c)CA1 d)110 19 2) - Converter os octais para decimais: a)10 b)70 c)101 d)110 3) - Converter de octal para hexadecimais. a)106 b)107 c)201 d)777 e)681 4) - Converter de hexadecimal para octal. a)105 b)AF c)B01 d)CAF e)110A 3.6. Códigos A representação de símbolos ordinários em grupos especiais são chamadas de códigos. Exemplos corriqueiros de códigos diferentes são as diversas línguas existentes. Embora muitas delas sejam escritas com as mesmas letras produzem resultados diferentes e, às vezes, não inteligíveis para a maioria das pessoas de outros países. 20 Até este momento vimos que qualquer número binário poderá ser representado por um binário equivalente, porém a conversão que foi mostrada anteriormente é considerada uma “codificação em binário puro”. Uma conversão em binário poderá gerar um número binário extenso em termos de bits, dependendo da grandeza do número decimal. Assim são adotadas codificações,especificamente, para agregar características dos sistemas de numeração binário e decimal. 3.6.1. Código BCD (Binary Coded Decimal) ou Decimal Codificado em binário Este código irá representar, individualmente, cada algarismo decimal com 3 bits. Ora, se o sistema decimal utiliza como símbolos os algarismos 0,1, 2, 3, 4, 5, 6, 7, 8 e 9; basta que tenhamos a cerca para vermos quantos bits serão necessários para representá-los. 8 4 2 1 Sabe-se que 4 bits permitem escrever até o decimal 15 (8 + 4 + 2 + 1 = 15) portanto, para se escrever até o 9 necessitaremos os 4 bits. Vejamos na tabela abaixo. 8 4 2 1 Decimal 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 0 0 8 1 0 0 1 9 21 Esta será a tabela de conversão entre o sistema de numeração decimal e o código BCD. Como exemplo vejamos a conversão do decimal 874 em BCD. 8 7 4 0 1 0 0 0 1 1 1 0 1 0 0 Assim, o número 874(10) será representado pelo BCD 010001110100. Qual diferença entre a representação em binário puro e no código BCD? Tomemos como exemplo a representação do número decimal 127 em binário puro e em BCD. 137(10)= 10001001(2) (binário “puro”) 137(10)= 0001 0011 0111(BCD) 3.6.2. Código GRAY Com a operação em altas velocidades dos sistemas digitais e as variações das entradas simultâneamente existe a necessidade de garantir a redução da probabilidade de interpretações errôneas pelo sistema. O código Gray foi desenvolvido com a finalidade de representar uma sequência de números em que apenas um bit irá mudar de estado na contagem sucessiva. A tabela seguinte mostra os equivalentes do código Gray aos binários. Para se conseguir o código Gray deve-se proceder o seguinte algoritmo: • Toma-se o bit mais significativo do binário (MSB) como MSB do código Gray. • Compare o MSB do nº binário com o o bit de posição adjacente (B1). Se forem iguais faça G1=0 . Se diferentes faça G1=1. • Repita o procedimento comparando B1 com B0 para obter G0. O fluxograma seguinte expressa de forma gráfica o algorítimo da conversão Binário-Gray. 22 Binário B2 B1 Diferente? G2 B0 Diferente? G1 G0 Gray O fluxograma seguinte expressa de forma gráfica o algorítimo da conversão Gray-Binário Gray G2 G1 Diferente? B2 G0 Diferente? B1 B0 Binário Teremos como resultado a tabela seguinte com a equivalência entre númerosbinários de três bits e o código Gray. 23 B 2 B 1 B 0 G2 G1 G 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 Com a finalidade ilustrativa vejamos a tabela com a representação dos números decimais em todas as formas vista anteriormente. Decimal Binário Octal Hexa BCD Gray 0 0 0 0 0000 0000 1 1 1 1 0001 0001 2 10 2 2 0010 0011 3 11 3 3 0011 0010 4 100 4 4 0100 0110 5 101 5 5 0101 0111 6 110 6 6 0110 0101 7 111 7 7 0111 0100 8 1000 10 8 1000 1100 9 1001 11 9 1001 1101 10 1010 12 A 0001 0000 1111 11 1011 13 B 0001 0001 1110 12 1100 14 C 0001 0010 1010 13 1101 15 D 0001 0011 1011 14 1110 16 E 0001 0100 1001 15 1111 17 F 0001 0101 1000 3.7. Códigos Alfanuméricos 24 Os computadores necessitarão não só das variáveis numéricas mas também as alfanuméricas. Assim abordaremos o código mais significativo que é o ASCII. 3.7.1. Código ASCII – American Standard Code for Information Interchange Este códigop foi proposto ao American National Standards Institute com a finalidade de padronizar a troca de informações nos computadores. A proposta foi de Robert W. Bemer e sua equipe. O ASCII é “entendido pela quase totalidade de computadores, impressoras e programas; é baseado no alfabeto romano. Somente 95 caracteres podem ser impressos e ocupam a faixa de números de 32 a 126. Os códigos pertencentes à faixa de 0 a 31 são reservados para caracteres de controle de funções e equipamentos tais como o comando FEED para avanço de papel existente nas impressoras matriciais. Tabela ASCII: Códigos de Controle (0 - 31): Cód Caractere Cód Caractere SOH (Start of Heading / Início de cabeçalho) 0 NULL (nulo) 1 2 STX (Start of TeXt / Início de Texto) 3 ETX (End of TeXt / fim de texto) 5 ENQ (ENQuiry / inquirição, consulta) 7 BEL (BELL, BEEP / Campainha) 9 HT (Horizontal Tab / Tabulação horizontal) 11 VT (Vertical Tab / Tabulação vertical) 13 CR (Carriage Return / retorno ao inicio da linha) 15 SI (Serial In / Entrada Serial) (Shift In / deslocamento para dentro) 4 6 8 10 12 14 16 18 20 22 EOT (End Of Transmission / fim de transmissão) ACK (ACKnowledge / confirmação, entendido) BS (Backspace / retorno de 1 caractere) LF (Line Feed / alimentação, mudança de linha) FF (Form Feed / Alimentação de formulário) SO (Serial Out / Saída Serial) (Shift Out / deslocamento para fora) DLE (Data Link Escape / escape de conexão) DC2 (Device Control 2 / controle de dispositivo2) DC4 (Device Control 4 / controle de dispositivo4) SYN (SYNchronous Idle / espera síncrona) 17 19 21 23 DC1/XON (Device Control1/controle de dispositivo1) DC3/XOFF (Device Control3/controle de dispositivo3) NAK (Negative AcKnowledge / confirmação negativa) ETB (End Transm. Block/bloco de fim de transmissão) 24 CAN (Cancel / cancelamento) 25 EM (End of Media / Fim do meio ou mídia) 26 SUB (SUBstitute, substituir) 27 ESC (ESCape / escape) 28 FS (File Separator / Separador de arquivo) 29 GS (Group Separator / separador de grupo) 25 30 RS (Request to Send, Record Separator / requisição de envio, separador de registro) 31 US (Unit Separator / separador de unidade) 26 D 32 33 34 35 36 37 38 39 40 41 42 43 Binário 0010 0000 0010 0001 0010 0010 0010 0011 0010 0100 0010 0101 0010 0110 0010 0111 0010 1000 0010 1001 0010 1010 0010 1011 Tabela ASCII 2B 2A 29 28 27 26 25 24 23 22 21 20 H Binário + * ) ( ' & % $ # " ! 0100 1011 0100 1010 0100 1001 0100 1000 0100 0111 0100 0110 0100 0101 0100 0100 0100 0011 0100 0010 0100 0001 vazio 0100 0000 G H 75 4B 74 4A 73 49 72 48 71 47 70 46 69 45 68 44 67 43 66 42 65 41 64 40 D Binário 0110 1001 K 0110 1011 J 0110 1010 I H 0110 1000 G 0110 0111 F 0110 0110 E 0110 0101 D 0110 0100 C 0110 0011 B 0110 0010 A 0110 0001 @ 0110 0000 G 63 62 61 60 H 107 6B 106 6A 105 69 104 68 103 67 102 66 101 65 100 64 99 98 97 96 D Binário k 0011 1011 j 0011 1010 i 0011 1001 h 0011 1000 g 0011 0111 f 0011 0110 e 0011 0101 d 0011 0100 c 0011 0011 b 0011 0010 a 0011 0001 ` 0011 0000 G 39 38 37 36 35 34 33 32 31 30 H 59 3B 58 3A 57 56 55 54 53 52 51 50 49 48 D Binário D ; 0101 1011 91 : 0101 1010 90 9 0101 1001 89 8 0101 1000 88 7 0101 0111 87 6 0101 0110 86 5 0101 0101 85 4 0101 0100 84 3 0101 0011 83 2 0101 0010 82 1 0101 0001 81 0 0101 0000 80 G 5B 5A 59 58 57 56 55 54 53 52 51 50 H Binário D [ 0111 1011 123 Z 0111 1010 122 Y 0111 1001 121 X 0111 1000 120 W 0111 0111 119 V 0111 0110 118 U 0111 0101 117 T 0111 0100 116 S 0111 0011 115 R 0111 0010 114 Q 0111 0001 113 P 0111 0000 112 G 7B 7A 79 78 77 76 75 74 73 72 71 70 H { z y x w v u t s r q p G 27 45 46 47 0010 1101 0010 1110 0010 1111 2F 2E 2D 2C / . - , Tabela ASCII extendida 44 0010 1100 79 4F 78 4E 77 4D 76 4C O 0110 1111 N 0110 1110 M 0110 1101 L 0110 1100 111 6F 110 6E 109 6D 108 6C o 0011 1111 n 0011 1110 m 0011 1101 l 0011 1100 63 3F 62 3E 61 3D 60 3C ? 0101 1111 95 > 0101 1110 94 = 0101 1101 93 < 0101 1100 92 Caracteres ASCII Extendidos Dec Char Dec Char Dec Char Dec Char Dec Char Dec Char Dec Char Dec Char 128 Ç 144 É 160 á 176 ░ 192 └ 208 ð 224 Ó 240 129 ü 145 æ 161 í 177 ▒ 193 ┴ 209 Ð 225 ß 241 ± 130 é 146 Æ 162 ó 178 ▓ 194 ┬ 210 Ê 226 Ô 242 ‗ 131 â 147 ô 163 ú 179 │ 195 ├ 211 Ë 227 Ò 243 ¾ 132 ä 148 ö 164 ñ 180 ┤ 196 ─ 212 È 228 õ 244 ¶ 133 à ┼ 213 ı 149 ò 165 Ñ 181 Á 197 229 Õ 245 § 134 å 150 û 166 ª 182 Â 198 ã 214 Í 230 µ 246 ÷ 135 ç 151 ù 167 º 183 À 199 Ã 215 Î 231 þ 247 ¸ 136 ê 152 ÿ 168 ¿ 184 © 200 ╚ 216 Ï 232 Þ 248 ° 137 ë 153 Ö 169 ® 185 ╣ 201 ╔ 217 ┘ 233 Ú 249 ¨ 138 è 154 Ü 170 ¬ 186 ║ 202 ╩ 218 ┌ 234 Û 250 139 ï 155 ø 171 ½ 187 ╗ 203 ╦ 219 █ 235 Ù 251 ¹ 140 î 156 £ 172 ¼ 188 ╝ 204 ╠ 220 ▄ 236 ý 252 ³ 141 ì 157 Ø 173 ¡ 189 ¢ 205 ═ 221 ¦ 237 Ý 253 ² 142 Ä 158 × 174 « 190 ¥ 206 ╬ 222 Ì 238 ‾ 254 ■ 143 Å 159 ƒ 175 » 191 ┐ 207 ¤ 223 ▀ 239 ´ 255 0100 1111 0100 1110 0100 1101 0100 1100 5F 5E 5D 5C _ ^ 0111 1110 126 ] 0111 1101 125 \ 0111 1100 124 7E 7D 7C ~ } | 28 Exercícios 1. Converter 0110100000111001BCD em 2. Idem para 011111000001 BCD decimal. 3. Representar o número binário e em BCD. 178(10) em 4. Qual a quantidade de bits necessária para representar um nímero decimal de oito dígitos? 5. Converter o número 0101(2) em seu 6. Converter o número 0101Gray em seu código Gray equivalente. equivalente binário. 29 3.8. Palavras Binárias As palavras binárias são compostas pelos já conhecidos Bits (Binary digit = Algarismo binário) e são agrupadas em sequências de 8 bits que representarão dados ou informações. Esses grupos de 8 bits são denominados Bytes. As palavras binárias poderão ainda ser divididas em grupos de 4 bits e serão denominadas NIBBLES. Estas serão úteis em sistemas ou códigos que envolvem agrupamentos de 4 bits tais como o código BCD e a numeração hexadecimal. Palavra com 8 bits 1 0 1 0 1 1 1 0 nibble nibble byte Outra consideração a ser destacada é sobre o prefixo de grandeza de unidades [k], normalmente utilizado para denotar a capacidade de armazenamento de informações nos sistemas digitais. É muito comum vermos informações de memórias, por exemplo, quanto à sua capacidade da ordem de Kb ou kbits ou maiores. O alerta vai para que não confundamos o prefixo k (quilo...)do SI utilizado , por exemplo, nos valores de resistores e o k (quilo...) dos sistemas digitais. Por que? Pelo fato de que no SI o prefixo quilo [k] é uma potência de 10 com peso 103 ou 1000 vezes, enquanto que nos sistemas digitais o prefixo quilo [k] é uma potência de 2 com peso 210 ou 1024 vezes. Então dizer que uma memória fictícia possui 1 kbyte ou 1kB de capacidade significa dizer que a mesma pode armazenar 1024 palavras binárias de oito bits cada! 3.9. Detecção de erros. A transmissão de dados de um local para outro é uma operação muito freqüente pois após se digitalizar um determinado sinal o mesmo deverá ser “entregue”! a seu destinatário com a maior fidelidade possível, sem erros que comprometam a qualidade da informação. 30 Pode-se citar exemplos como: • Voz digitalizada em transmissão de telefonia celular • Leitura de dados armazenados em mídias magnéticas tais como HD • Transmissão de dados pela internet A interferência de ruídos em sinais digitais pode ocorrer devido a distúrbios elétricos tais como flutuações de tensão de rede, corrente elétrica, descargas atmosféricas etc. Transmissor Meio Receptor O ruíd,o grosseiramente representado, na figura acima poderá causar um interpretação errada pois o nível a ser recebido seria o zero mas o ruído impulsivo poderá causar a interpretação de nível 1. Todo sistema digital é projetado de forma a evitar o tipo de situação visualizada na figura anterior mas a maioria dos sistemas em operação fazem trocas de até milhões de bits por segundo. Assim, mesmo com uma taxa muito baixa de erros, a taxa poderá ser inaceitável mediante a quantidade eleveda de bits. Alguns métodos de detecção de erros ou correção são utilizados para minimizar o problema. A técnica mais simples e muito utilizada para a detecção de erros é o método da paridade. 3.9.1. Bit de Paridade Esta metodologia consiste em anexar um bit extra ao conjunto de bits do código a ser transmitido de um ponto a outro. O bit de paridade poderá ser 0 ou 1 e isto irá depender da quantidade de bits iguais a 1 presentes na palavra. Duas metodologias diferentes são utilizadas que são a paridade par e a paridade impar. Por ser a mais utilizada veremos a seguir o método da paridade par. 31 3.9.2. Paridade Par O valor do bit de paridade será determinado para que o número total de bits 1 no conjunto de bits do código, incluindo o bit de paridade, seja um número par. Suponha que a palavra ou código a ser enviado seja o caractere “E” no código ACII que é 100 0101 (despreza-se o zero à esquerda pois na tabela consta 0100 0101). Nota-se que o conjunto de bits possui um número impar de 1’s; assim deve-se anexar um bit de paridade 1 para que o numero de BITS 1 seja par. Assim: 1100 0101 Bit de paridade O bit de paridade poderá ser anexado tanto no início como no final do grupo do código. Normalmente é colocado à esquerda do número. Quando o número já possuir um número par de bits 1, o bit de paridade será o 0 (zero), suponha o número 1000001 que corresponde ao caractere A no código ASCII, com o bit de paridade será: 0100001 Ao ser recebido no destino será feita a verificação se o mesmo possui um número ímpar de bits 1 no número, caso positivo será considerado que o código foi recebido corretamente. Fica claro que , em caso de erro em dois bits a detecção não ocorrerá! A paridade ímpar é análoga à paridade par onde a quantidade final de bits deverá ser ímpar. Exemplo Dois computadores se comunicam remotamente e, em determinado momento, o transmissor envia a palavra Oi em código ASCII. Determinar as cadeias de bits a ser enviadas com paridade par. 32 O 1 1001111 i 0 1101001 Bit de paridade 33 34 Exercícios 1. Quantos bytes existem em uma sequência (cadei de caracteres) de 32 bits? 2. Se um número binário possui 2 bytes qual será o maior número decimal que poderá ser representadso pelo mesmo? 3. Quantos bytes são necessários para representar, em código BCD, o valor decimal 846569? 4. Quantos nibbles existem em um byte? 5. Qual o valor do nibble menos significativo (LSB) no número 1001 0101(2)? 6. Quantos algarismos hexadecimais um nibble pode representar? 7. Quantos nibbles existem em um dígito BCD? 8. Anexe um bit de paridade ímpar ao código ASCII do símbolo $ e escreva o resultado em hexadecimal. 9. Anexar o bit de paridade par ao código BCD relativo ao decimal 66. 10. Um CD-ROM típico pode armazenar 650 megabytes de dados digitais. Sendo 1 mega = 220 (lembre-se que 1k = 210), qual a quantidade de bits de dados que um cdrom poderá armazenar? 11. Quando um microcontrolador é programado, em vários modelos as instruções são armazenadas em uma forma conhecida como Intel-Hex. A informação hexadecimal é codificada em ASCII para ser exibida no monitor do computador, ser impressa ou ser transmitida a um caractere por vez por uma porta serial COM. Vejamos uma linha: 10002000F7CFFFCF1FEF2FEF22A95F1F71A95D9F7EA Sabendo-se que os primeiros caracteres a ser enviados serão os dois ponto seguidos do número 1, com bits de paridade par anexados: (a) Qual será a aparência do padrão binário, incluindo o bit de paridade, na ordem MSB-LSB para os dois pontos e o número 1? 35 (b) O número 10, após os dois pontos, representa o número de bytes total que deverá ser carregado na memória do micro. Qual é o número decimal de bytes que será carregado? (c) O número 020 é um valor hexadecimal de 4 algarismos que representa o endereço no qual o primeiro byte será armazenado. Qual o maior endereço possível? Quantos bits seriam necessários para representar tal endereço? (d) O valor do primeiro byte de dados é F7. Qual será o valor, em binário, do nibble menos significativo desse byte? 12. Um computador de pequeno porte utiliza código hexadecimal para representar endereços de memória de 16 bits. Pergunta-se: (a) Quantos dígitos hexadecimais serão necessários? (b) Qual a faixa de endereços em hexadecimal (início e fim)? (c) Quantas posições de memória existirão? 13. Certos números são fornecidos em BCD para um sistema baseado em microcontroladores, mas são armazenados em binários puros. Como programador você deverá decidir se precisa de um ou dois bytes na posição de armazenamento. (a) Quantos bytes serão necessários se o sistema contiver uma entrada decimal de dois algarismos? (b) E se forem necessários 3 algarismos? 14. Em toda transmissão de caracteres ASCII, entre modem e PC por exemplo, existe a necessidade de “avisar” o receptor quando um novo caractere está entrando; além da necessidade da detecção de possíveis erros. O estado normal de repouso da linha de Tx é em nível lógico 1. Quando o transmisso enviar um caractere ASCII este deverá ser “enquadrado” (framed) para que o receptor “saiba” onde começam e terminam os dados. 36 Após o enquadramento o código ASCII é enviado na ordem de primeiro o LSB e por último o MSB. Após o MSB é inserido um bit de parada (stop bit = nível lógico 1). Na figura seguinte é possível ver uma transmissão assíncrona típica de um código ASCII de 7 bits para o símbolo # (Hexa 23) com paridade par. S/ Informação. D0 D1 D2 D3 D4 D5 D6 I N L M S Í S B C B I O P A R I D A D E P A R A D A 37