Circuitos Digitais Notas de Aula - 02 INSTITUTO: CURSO: DISCIPLINA: Instituto de Ciências Exatas e Tecnologia Ciência da Computação e Sistemas de Informação Circuitos Digitais 144L
1.0 Circuitos Combinacionais. Circuitos lógicos podem ser de dois tipos básicos: combinacionais ou seqüenciais. Um circuito combinacional nada mais é que um conjunto de portas lógicas que determinam o valor das saídas unicamente a partir dos valores das entradas. Basicamente o circuito realiza um processamento de sinais, descrito por um conjunto de equações booleanas. Genericamente temos: n entradas...... m saídas Fig.01 Circuito Combinacional Já em um circuito seqüencial, temos uma retro-alimentação do sinal de saída, denominado estado interno. Dessa maneira, a condição atual de entrada e saída determinam a saída futura do circuito. Na verdade, internamente a todo circuito seqüencial temos um circuito combinacional, residindo a diferença na retro-alimentação (estado interno). Graficamente temos: Fig.02 Circuito Seqüencial 2.0 Circuitos Combinacionais Dedicados. Qualquer combinação de portas lógicas (anteriormente estudadas) em um circuito gera, por definição, um circuito combinacional. Entretanto existem combinações de circuitos constantemente utilizadas em projetos, chamados blocos construtores básicos devido às funções lógicas que executam, denominados circuitos combinacionais dedicados. Estes são circuitos encontrados no mercado já encapsulados em circuitos integrados comerciais. Os tipos mais comuns encontrados são: Codificadores Decodificadores Multiplexadores Demultiplexadores Somadores Subtratores Conexão Aritméticos
Os quatro primeiros são circuitos dedicados de conexão, trabalham com a seleção e orientação de sinais (conexão). Os dois últimos são aritméticos, efetuam operações matemáticas com os sinais (álgebra booleana). 3.0 Comportamento Dinâmico. Durante o funcionamento de um circuito, entradas se alteram devido a diferentes conjuntos de dados, gerando variações nos valores de saída. A variação de uma variável boolena é algo rotineiro, assumindo valores no intervalo [0;1]. Podemos ver este comportamento de forma mais fácil graficamente, assumindo uma onda variável no tempo para descrever o comportamento de entradas e saídas: Fig.03 Variação dos sinais de Entrada e Saída no tempo. Basicamente podemos imaginar um sistema cartesiano (xoy) onde o eixo x representa o tempo e o eixo y o valor lógico da variável boolena (0 ou 1). Esse tipo de análise temporal é chamado de análise de timing e ocorre devido a que circuitos não podem responder de forma imediata a alterações de sinais, sempre ocorrendo o que se denomina atraso (da porta lógica). Embora o material de que são feitos (semicondutores = silício) e as dimensões reduzidas que a tecnologia atual permite, não existem respostas instantâneas, o que gera variações nas saídas. Mesmo portas de mesma função e fabricante podem apresentar variações, já que o valor do atraso de uma porta é dependente de vários fatores como dimensão, temperatura de operação, tecnologia de fabricação, pureza de componebtes, etc. Fisicamente, uma porta lógica demora um determinado tempo para responder à variação num dos sinais de entrada. Por exemplo, um inversor TTL tem um tempo de resposta de cerca de 10ns, enquanto que uma porta AND tem um atraso de aproximadamente 20ns. Isto pode causar a ocorrência de pulsos espúrios ou pulsos transientes na saída da porta lógica. Analise o circuito a seguir e verifique a ocorrência de pulsos transientes. Fig.04 Circuito AND e inversor Na ótica da álgebra booleana, a saída B seria sempre igual a 0. Contudo, devido ao retardo de resposta do inversor, é possível que, quando A variar de 0 para 1, momentaneamente a porta AND receba duas entradas iguais a 1, como no diagrama abaixo. Isto significa que haverá um transiente (pulso espúrio), cuja duração é igual ao atraso do inversor.
Fig.05 Diferença dos sinais ഥ no tempo e saída do circuito. Numa análise de timing, é recomendável seguir os seguintes passos: identificar com uma linha vertical cada mudança no valor (transição) dos sinais das entradas. A forma de onda das entrada sempre é fornecidas, fazendo parte dos dados do problema; para cada intervalo de tempo delimitado por duas linhas verticais adjacentes, identificar o sinal resultante usando a tabela verdade da porta em questão; Considerar um pequeno intervalo de tempo após cada transição de entrada, referente ao atraso de propagação da porta. 4.0 Códigos. Sistemas digitais trabalham com os níveis lógicos representando informações que são codificadas em bits, sendo necessário transformar as informações que manejamos a nível de usuários em códigos binários. Devido à diversidade de informações e ao desenvolvimento da eletrônica digital, vários códigos foram criados e consequentemente vários circuitos para a codificação e decodificação destas informações. Código BCD 8421 Conhecido como código BCD Binary Coded Decimal (Decimal Codificado em Binário), composto por quatro bits, tendo cada bit um peso equivalente ao do sistema numérico binário: 1 para o primeiro bit à direita, que é chamado de bit menos significativo (LSB Least Significant Bit); 2 para o segundo bit à direita; 4 para o terceiro; 8 para o quarto bit à direita, que é chamado de bit mais significativo (MSB Most Significant Bit); Desta forma este código representa os números decimais de 0 a 9 no sistema binário. BCD Decimal 8 4 2 1 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 Tab.01 Conversão de valores decimais a BCD.
Ao invés de converter um número formado por diversos dígitos para o sistema binário diretamente, os sistemas digitais que utilizam este código podem converter cada dígito do número para o BCD. 1.973.428 ሺଵሻ = 1.1110.0001.1100.1011.0100 ሺଶሻ 1.973.428 ሺଵሻ = 0001.1001.0111.0011.0100.0010.1000 ሺሻ Uma vantagem do código BCD é que as dez combinações do código são fáceis de lembrar, o quê, com uso regular, os torna tão fáceis e automáticos de identificar como números decimais. Por esta razão, por simples inspeção da representação BCD de um número decimal, pode-se efetuar a conversão quase tão rápido como se já estivesse na forma decimal. O BCD simplifica a interface homem-máquina, mas é menos eficiente que o código binário puro: usam-se mais bits para representar um dado número decimal em BCD que em notação binária pura. Código BCH O código Binary Coded Hexadecimal (Hexadecimal Codificado em Binário) segue a mesma lógica dao código BCD, apenas representando os algarismos do sistema hexadecimal através das combinações possíveis com quatro bits. BCH Hexa 8 4 2 1 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 A 1 0 1 0 B 1 0 1 1 C 1 1 0 0 D 1 1 0 1 E 1 1 1 0 F 1 1 1 1 Tab.02 Conversão de valores decimais a BCH. 1.973.428 ሺଵሻ ͶܤܥͳǤܧͳ ሺଵሻ ͶܤܥͳǤܧͳ ሺଵሻ = 0001.1110.0001.1100.1011.0100 ሺ ሻ Código ASCII O código utilizado pelos computadores na troca de informação com seus periféricos e em algumas comunicações é o ASCII = American Standard Code for Information Interchange (Código Americano Padrão para a Troca de Informações). Ele é composto por sete bits, utilizados para codificar caracteres alfa-numérico, especiais e de controle. Como exemplo de caracteres especiais temos: NUL (Null) = caractere nulo; SP (Space) = espaço. Como exemplo de caracteres de controle temos: EOT (End of Transmission) = fim da transmissão;
RS (Request to Send) = solicitação de envio Como exemplo, ao pressionar a tecla F no teclado, internamente geramos o código: ܤ ܤ ܤ ହ ܤ ସ ܤ ଷ ܤ ଶ ܤ ଵ ܤ = 0100.0110 Tab.03 Tabela ASCII. Código de Paridade Em virtude de transientes, ruídos e outras perturbações, erros ocorrem durante a transmissão por linhas telefônicas ou outros meios sujeitos a ruído. Uma maneira de detectar erros é incluir um ou mais bits com os bits dos dados a serem transmitidos, gerados a partir de uma combinação / operação com os dados. Uma maneira de executar esta verificação é adicionar um bit de paridade - bit adicional que indicará se o número de bits 1 dos dados será par ou ímpar. O circuito transmissor deve possuir um gerador de paridade e o circuito receptor um verificador de paridade, ambos compatíveis / complementares, funcionando como um par codificador / decodificador. Lembre-se que o bit de paridade não faz parte da informação transmitida, sendo parte somente do processo de controle da transmissão. O gerador de paridade pode criar um bit de paridade de valor 0 para um número par e 1 para um número ímpar de bits 1 da informação, respectivamente. Este tipo de geração de paridade é chamada de geração de paridade par. No caso contrário, quando é gerado 1 para um número par e 0 para um número ímpar de bits 1, é chamada geração de paridade ímpar. Como exemplo: Bit de paridade: 0 - número par de bits 1 Paridade Informação 0 1001 1 1000 0 1100 1 - número ímpar de bits 1 Um circuito verificador simples é o XOR (Exclusive OR). Necessitamos uma porta XOR na origem, para determinar ଵ, o mesmo tipo de porta no destino para determinação de ଶ e uma terceira porta XOR (destino) para análise de ଵ e ଶ. Caso os sinais sejam iguais, temos 0 como resultado.
Fig.06 Circuito verificador de paridade. 5.0 Codificadores e Decodificadores. Como já comentado, sistemas digitais trabalham com níveis lógicos (bits) representado informações. Estas informações são codificadas, não tratadas no mesmo nível a que estamos acostumados em nosso dia a dia. Devido às muitas necessidades e diversidade de informação, vários códigos foram desenvolvidos e, consequentemente, circuitos codificadores e decodificadores associados. Codificadores e Decodificadores são circuitos combinacionais dedicados, comuns em qualquer projeto digital devido à função que executam e encontrados comercialmente no mercado. Decodificadores Decodificadores são circuitos lógicos utilizados para converter um código binário de n bits na entrada em m linhas de saída, onde cada linha de saída é ativada por uma, e somente uma, combinação de entrada. Utilizado para habilitar uma das portas de saída, enumeradas de 0 a m-1 e representadas por um endereço binário único. A nomenclatura utilizada é a de Decodificador n:m, onde se lê n por m, indicando um circuito com n entradas e m saídas, onde a relação entre portas e saídas é dada por: Tomemos como exemplo um decodificador 3:8 (2 = 2 ଷ = 8), Fig.07 Decodificador 3:8, 3 entradas e 8 saídas. A tabela verdade que descreve este circuito é dada abaixo, onde temos a ativação de apenas uma saída para cada valor de entrada.
Codificadores Porta Entradas Saídas a 0 a 1 a 2 d 0 d 1 d 2 d 3 d 4 d 5 d 6 d 7 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 3 0 1 1 0 0 0 1 0 0 0 0 4 1 0 0 0 0 0 0 1 0 0 0 5 1 0 1 0 0 0 0 0 1 0 0 6 1 1 0 0 0 0 0 0 0 1 0 7 1 1 1 0 0 0 0 0 0 0 1 Tab.03 Tabela verdade de um Codificador 3:8. Circuito lógico que (como o nome indica) codifica um sinal entrante, utilizando um código binário. Com função oposta à do Decodificador, possui n entradas e m saídas. Utilizado quando temos uma única entrada ativada (valor 1). Codificadores e Decodificadores trabalham aos pares.