Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DA BAHIA ESCOLA POLITÉCNICA DEPARTAMENTO DE ENGENHARIA ELÉTRICA ENGC26 Sistemas Lógicos LIGIA SOUZA PALMA 2007 1 1. INTRODUÇÃO Quando Claude Elwood Shannon (1916 - 2001), em 1936, por intermédio de seu trabalho intitulado "A Symbolic Analysis of Relay and Switching Circuits", sistematizou e adaptou o trabalho teórico de George Boole (1815-1864) intitulado "An Investigation of the Laws of Thought" (1854) aos circuitos chaveados, se quer suspeitava estar iniciando uma verdadeira revolução tecnológica aplicada ao projeto de circuitos elétricos, introduzindo uma categoria de circuitos até então não existente, os circuitos chaveados ou circuitos digitais. A partir de então, observou-se um crescimento nas aplicações dos conceitos de circuitos digitais para solução de problemas que até então só poderiam ser resolvidos utilizando-se circuitos analógicos. A história dos circuitos digitais é uma história longa, porém passada em um curto espaço de tempo. Senão observe-se alguns fatos marcantes que determinaram o desenvolvimento de toda tecnologia baseada na informação, que só foi possível devido ao surgimento dessa modalidade de circuito elétrico. 1947 – Descobrimento do transistor bipolar de junção. 1959 – Descoberta de um processo planar de fabricação de circuito integrado. 1960 - Desenvolvimento primeiro do transistor MOSFET funcional. 1962 – Surgimento dos primeiros circuitos integrados comerciais. Então, o transistor tem 60 anos de idade e o primeiro CI tem 45 anos de idade, entretanto, o desenvolvimento da tecnologia digital, iniciada por Shannon, possibilitou à implementação dos mais diversos tipos de circuitos lógicos utilizados nas mais diversas áreas do conhecimento e seus reflexos nos dias atuais são muito marcantes, senão vejamos: 1. Crescimento incomparável na evolução tecnológica e no mercado: 16% anual 2. Mercado global de eletrônica é maior que US$ 1 trilhão, maior do mundo! 3. Revolução econômica e social baseada na tecnologia da informação: Internet, Internet sem fio, Bluetooth (internet sem fio e barata para curtas distâncias), Telefonia celular, Navegação e Carro inteligentes, Realidade virtual, Jogos eletrônicos, Equipamentos para diagnóstico médico de precisão, etc. Toda esta tecnologia foi possível graças ao progresso em tecnologia de semicondutores e de circuitos integrados. Pode-se dizer que hoje se vive a “IDADE DO SILICIO”. 2 1.2 BREVE HISTÓRIA Tudo começou com matemático inglês George Boole, que em 1854 publicou seu trabalho intitulado "An Investigation of the Laws of Thought". Neste trabalho, Boole desenvolve uma teoria algébrica que tenta explicar a lógica dos pensamentos humanos. Seu trabalho foi ignorado pelos matemáticos da época que não souberam vislumbrar o que estava por trás de toda aquela teoria. Em 1928, o austro-húngaro Julius Edgar Lilienfeld (1881-1963), registra a patente de um dos seus inventos, o transistor de efeito de campo FET, porém sua descoberta não foi levada em consideração pelo fato de que seu transistor não obteve sucesso experimentalmente. Em 1936, o engenheiro eletricista americano Claude Elwood Shannon sistematizou a teoria de Boole. Ele conseguiu mostrar que álgebra de Boole e a aritmética binária poderiam ser utilizadas para simplificar arranjos de relés eletromecânicos utilizados em circuitos aplicados à comunicação telefonônica. Ele também provou que era possível utilizar configuração de circuitos com esses relés para resolver problemas da álgebra booleana e explorar as propriedades das chaves elétricas, para fazer lógica booleana, é o conceito básico que rege o funcionamento de todos os computadores eletrônicos. Claude Shannon Lilienfeld 3 Em 1940, R. Ohi trabalha com um semicondutor importante para o desenvolvimentos dos circuitos integrados, que é o silício Si, e descobre que realizando dopagem com impurezas tipo p e tipo n poderia aumentar muito a capacidade de condução desse material. O silício dopado é a base para a construção da maioria dos transistores que conhecemos hoje em dia. Em dezembro de 1947, o engenheiro eletricista americano John Bardeen e o físico americano Walter Houser Brattain descobrem o efeito transistor bipolar de junção. O transistor bipolar de junção veio substituir o triodo, uma válvula eletrônica, descoberta em 1906 por Lee De Forest, que era utilizada nos circuitos eletrônicos dessa época para realizar funções de amplificação e chaveamento. Logo depois, entre 1948 e 1950, o inglês, William B. Schockley, que trabalhava com Bardeen e Bratain nos Laboratórios da Bell, desenvolveu a teoria matemática que explicava o funcionamento do transistor bipolar de junção e em 1956, os três pesquisadores receberam o prêmio Nobel de Física pela publicação do artigo "Investigations on Semiconductors and the Discovery of the Transistor Effect,". Em 1958, o americano J. Kilby que trabalhava na Texas Instruments registra a patente do primeiro circuito integrado, utilizando um processo de fabricação ainda rudimentar e com o germânio como elemento semicondutor. Ele também foi um dos inventores da calculadora de bolso alguns anos depois. Pastilha de Silício Transistor Bipolar de Junção Bratain, Bardeen e Shockley T i Bi l d J ã Primeiro circuito integrado de germânio J. Kilby 4 Entre 1957 e 1958, J. Hoerni, que trabalhava na Fairchild, descobriu que ao aquecer uma lâmina de silício na presença de vapor d’agua, crescia sobre a lâmina uma fina camada de óxido de silício que protegia a lâmina. Essa camada de óxido poderia ser destruída seletivamente por processo de foto-gravação e nas regiões descobertas do silício se implantariam regiões dopadas tipo p e tipo n que permitiriam a fabricação de componentes eletrônicos na superfície do silício. Esse foi o primeiro passo para o desenvolvimento de circuitos integrados sobre um plano. Em 1959, Robert N. Noyce, da Fairchild, inventa o primeiro circuito Integrado em tecnologia planar. O princípio de fabricação desenvolvido por ele é utilizado até hoje, com incorporação de forte evolução nas técnicas de fabricação. Em 1960, no Laboratório da Bell, D. Kahng and M. Atalla apresentam o primeiro transistor de efeito de campo feito com metal, óxido e silício, o MOSFET (Metal Oxide Semiconductor Field Effect Transistor). No ano seguinte, M. Atalla deixa o laboratório da Bell para tornar-se co-fundador da Hewllet & Packard. Primeiro circuito integrado planar Robert Noyce Primeiro MOSFET Atalla 5 Em 1961, a Fairchild, empresa criada por Robert N. Noyce, G. Moore entre outros, lança o primeiro circuito integrado. A comercialização dos circuitos integrados inicia-se a partir de 1962. Portanto, até os anos de 1960, os circuitos lógicos eram construídos com componentes discretos como transistores e resistores. Com o advento do circuito integrado, foi possível implantar certo número de transistores numa única pastilha. No início, os circuitos integrados possuíam poucos transistores e esses circuitos realizavam funções lógicas simples. Em 1964, a Fairchild lança o primeiro circuito analógicointegrado. O amplificador operacional µA702. Em 1965 a Fairchild também lança o amplificador operacional µA709, agregando um pouco mais de complexidade na tecnologia de fabricação do CI. Com o desenvolvimento tecnológico, nos anos de 1970 tornou-se possível a implementação de circuitos digitais, ainda mais complexos. Em 1970, a Fairchild, já sem Noyce e Moore, lança a memória estática de 256 bits. Nesse mesmo ano a Intel, criada por Noyce, Moore e Grove, em 1968, lança a memória dinâmica de 1024 bits. Primeiro circuito integrado Primeiro CI analógico µA702 Amplificador operacional µA709 6 Em 1971, a Intel lança o microcomputador 4004. Embora esse primeiro microprocessador tivesse baixa capacidade de processamento, foi por meio da utilização dele que se pode desenvolver os primeiros microcomputadores pessoais, e por conseqüência, a revolução que se observa hoje no processamento das informações. Nos anos de 1990 já era possível fabricar CIs com até 100 milhões de transistores uma única pastilha de silício. Isto foi possível devido à invenção dos transistores com comprimento de canal cada vez mais curtos, e, portanto, ocupando menos espaço na pastilha de silício e, por ser menores, propagando o sinal elétrico com mais rapidez e confiabilidade. No início dos anos de 1970 os CIs eram chips padrões, ou seja, continham até 100 transistores e executavam funções lógicas simples. Para construir um determinado circuito lógico, o projetista escolhia os Fairchild- Memória estática 256 bits Intel - Memória dinâmica 1024 bits Intel – Microprocessador 4004 7 chips, definia como eles se conectariam para executar as funções lógicas de seu projeto. Essa técnica tornou-se ineficiente à medida que a tecnologia avançou e os motivos são fáceis de deduzir: a) Chips eram de baixa funcionalidade (poucos transistores) ocupavam muito espaço na placa de circuito impresso, o que impedia a miniaturização do produto final, e eram muito lentos devido ao tamanho dos transistores integrados da época. b) A funcionalidade de cada chip padrão era fixa e não podia ser modificada, o que dificultava a fase de projeto pois, qualquer alteração no circuito que se fizesse necessária implicaria na substituição de um conjunto de chips por outros. Atualmente é possível fabricar CIs que contém circuitos internos que podem ser programados pelo projetista para implementar uma grande quantidade de diferentes circuitos lógicos. Esses chips têm uma estrutura geral e incluem uma coleção de chaves programáveis que permitem a configuração interna de seus circuitos de muitas formas diferentes. Tais chips são chamados de PLDs (dispositivos de lógica programável). Muitos deles permitem a reprogramação por um número muito grande de vezes. Nesta categoria estão as FPGA’s (Field Programmable Gate Array) e as CPLD’s (Complex Programmable Logic Device) que contém mais de 100 milhões de transistores. Hoje é possível, em nossa própria casa, desenvolver nosso próprio circuito digital integrado. Basta para isso, possuir um computador, software adequado e chips como a FPGA (Field Programmable Gate Array). É possível também desenvolver sistemas digitais com chips microprocessados, tais como microcontrolador ou DSP(Digital Signal Processor). Para assimilar mudanças tão radicais de desenvolvimento tecnológico é fundamental adquirir os conhecimentos básicos da eletrônica digital sem os quais nenhuma tecnologia pode ser absorvida. Sendo Estrutura interna de uma FPGA. ©Xilinx Inc. CPLD – circuito interno 8 assim, nosso curso se propõe a fornecer esses conhecimentos básicos e introduzir o aluno às técnicas de projeto de circuito digital. 9 UNIDADE I - SISTEMAS NUMÉRICOS E CÓDIGOS 1.1 INTRODUÇÃO O mundo físico fornece informações que, na sua grande maioria, tem um comportamento contínuo ao longo do tempo; (temperatura, pressão, velocidade de fluídos, etc). Os circuitos digitais, por sua vez, possuem a característica de operarem por estados discretos, (ligado ou desligado). Para que as informações do mundo físico possam ser processadas pelos circuitos digitais, torna-se necessária uma adaptação dessas informações. Circuitos especiais conhecidos como conversores analógico/digital e digital/analógico providenciam a transformação das informações de características contínuas no tempo, ou seja, analógico, em informações que possam ser processadas dentro dos circuitos digitais, transformando-as em uma linguagem de "0’s" e "1’s". Neste capítulo introduziremos o conceito de sistemas numéricos dando ênfase ao sistema binário, que é a base de representação dos circuitos digitais, suas operações e alguns códigos para processamento dessas informações. 1.2 SISTEMAS NUMÉRICOS É uma linguagem de símbolos consistindo de um conjunto ordenado de dígitos com regras definidas para adição, multiplicação e outras operações matemáticas. A base ou raiz desse sistema numérico especifica o número de dígitos do sistema e seu ordenamento. Os sistemas numéricos permitem que um número possua uma parte inteira e uma parte fracionária separada por um "ponto base". (N)R = (parte inteira , parte fracionária)R 1.2.1 REPRESENTAÇÃO DE UM NÚMERO a) Justaposicional → Dígitos são posicionados lado à lado Exemplo: (N) R = (an-1, an-2, ..., a1, a0.a-1,a-2,...,a-m) R (N) R = (1011,1001) 2 R → base numérica n → número de dígitos da parte inteira m → número de dígitos da parte fracionária a → dígitos an-1 mais significativo (MSB) a-m menos significativo (LSB) 0 ≤ a ≤ (R - 1) b) Notação Polinomial → Dígitos representados na forma de um polinômio n-1 (N) R = Σ ajRj = an-1R n-1 + an-2 R n-2 + ...+ a1R 1 + a0R 0 + a -1R –1 + a -2R –2 +...+ a--mR -m j = -m (N) R = ( 11,101) 2 = 1 x 2 1 + 1 x 2 0 + 1 x 2 -1 + 0 x 2 -2 + 1 x 2 -3 10 1.2.2 OPERAÇÕES ARITMÉTICAS BÁSICAS COM SISTEMA BINÁRIO a) Soma 1010 + 1100 10110 b) Subtração 10101 - 01011 01010 c) Multiplicação 1010 x 101 1010 1010 - 110010 d) Divisão 1010' 1'0' ⏐ 111 111 110 0011 1 11 1 00 0 0 0 0 0 0 1.3 CONVERSÃO DE BASES a) Base binária para base decimal Aplica-se a regra do polimônio (1101,101) 2 → ( ? ) 10 (1 x 2 3 + 1 x 2 2 + 0 x 2 1 + 1 x 2 0 + 1 x 2 -1 + 0 x 2 -2 + 1 x 2 -3) 10 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ( 8 + 4 + 0 + 1 + 0.5 + 0 + 0,125 ) 10 = (13,625) 10 b) Base decimal para base binária • Parte inteira do número em decimal → Divide-se sucessivamente, o número escrito na base decimal, pela base 2 até que o quociente seja igual a zero. Tomam-se os restos sucessivos. O bit MSB é o último resto obtido da divisão sucessiva e o bit LSB é o primeiro resto. • Parte fracionária do número decimal → Multiplica-se, a parte fracionária do número escrito na base 10, sucessivamente pela base 2. A parte inteira resultante de cada multiplicação é o bit procurado da conversão. O MSB fracionário é a primeira parte inteira obtidada multiplicação e o LSB fracionário é a última parte inteira. A multiplicação acontece sucessivamente até que o resto torne-se zero. Se isso não ocorrer é porque o resultado da conversão fracionária não é exata. 11 (35,25) 10 → ( ? ) 2 Parte inteira Parte fracionária 35 ⏐ 2 0,25 x LSB → 1 17 ⏐ 2 2 1 8 ⏐ 2 MSB → 0,50 x 0 4 ⏐ 2 2 0 2 ⏐ 2 LSB → 1,00 0 1 ⏐ 2 MSB → 1 0 (35,25) 10 → ( 100011,01 ) 2 c) Base A para base binária e vice-versa • Para tratar esse tipo de conversão utilizaremos a base 10 como base intermediária, convertendo o número na base A para a base 10 e posteriormente para a base 2 e vice-versa. Exceção se fará para as base múltiplas de 2 Digitos base 8 = 23 Correspondência base 2 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 Exemplo 1: Base 2 para base 8: Toma-se, como referência, o ponto base e separa-se o número de 3 em 3 bits em cada sentido (direita e esquerda). Depois, transforma-se o conjunto de 3 bits em um dos dígitos da base 8, conforme tabela acima. ( 10111,1101 ) 2 → ( ? ) 8 = ( 010 111 , 110 100 ) 2 ↓ ↓ ↓ ↓ ( 2 7 , 6 4 )8 Exemplo 2: Base 8 para base 2: É ainda mais simples pois cada dígito da base 8 corresponde a 3 dígitos da base 2 conforme a tabela acima. Os pontos base são coincidentes. ( 723, 54 )8 → ( ? ) 2 = ( 7 2 3 , 5 4 ) 8 ↓ ↓ ↓ ↓ ↓ ( 111 010 011 , 101 100 ) 2 12 Digitos base 16 = 24 Correspondência base 2 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 Exemplo 3: Base 2 para base 16: Toma-se, como referência, o ponto base e separa-se o número de 4 em 4 bits em cada sentido (direita e esquerda). Depois, transforma-se o conjunto de 4 bits em um dos dígitos da base 16, conforme tabela acima. ( 101011101,101101111 ) 2 → ( ? ) 16 = ( 0001 0101 1101 , 1011 0111 1000 ) 2 ↓ ↓ ↓ ↓ ↓ ↓ ( 1 5 D , B 7 8 )16 Exemplo 4: Base 16 para base 2: Cada dígito da base 16 corresponde a 4 dígitos da base 2 conforme a tabela acima. Os pontos base são coincidentes ( A E F , C 5 )16 → ( ? ) 2 = ( A E F , C 5 ) 16 ↓ ↓ ↓ ↓ ↓ ( 1010 1110 1111 , 1100 0101 ) 2 1.4 COMPLEMENTO DE NÚMEROS (Complemento da base R) Na matemática, a técnica do complemento de um número permite realizar operações de subtração através de operações de adição. Esta é a técnica utilizada pelos computadores digitais. Por definição (N)R,C = R n - N se N ≠ 0 e 0 se N = 0 n → número de dígitos da parte inteira do número N R → base do número 13 Exemplos: a) ( 147 ) 10,c = 103 - 147 = 853 b) ( 0,53 ) 10,c = 1 - 0,53 = 0,47 c) ( 147, 53 ) 10,c = 852,47 d) ( 1010 ) 2,c = 24 - 1010 = 10000 - 1010 = 00110 e) ( 0,101 ) 2,c = 1 - 0,101 = 0,011 f) ( 1010,101 ) 2,c = 101,011 1.4.1 COMPLEMENTO BINÁRIO Para encontrar o complemento de 2 de um número binário aplica-se a seguinte técnica: • Inverta cada dígito do número, ( complemento lógico) • Some 1 ao bit menos significativo Exemplo: ( 001011,110 ) 2,c = 110100,001 + 1 110100,010 1.4.2 SUBTRAÇÃO COM COMPLEMENTO DA BASE 2 A subtração entre dois números positivos (A - B), na base 2, segue a seguinte técnica: • Some A ao complemento de 2 de B • Verifique, no resultado, se houve o “vai 1” (overflow) a) Se houver overflow, descarte-o. O restante é o resultado esperado. b) Se não houver overflow, o resultado é negativo. Então tome o complemento de 2 do resultado e adicione o sinal negativo ao complemento. Exemplo 1: (1010 - 0111)2 1010 + 1001 (complemento de 2 de 0111) overflow → 1 0011 ↓ resultado Exemplo 2: (0111 - 1010)2 0111 + 0110 (complemento de 2 de 1010) sem overflow → 1101 sinal negativo → - 0011 (complemento de 2 de 1101) ↓ resultado 14 Exemplo 3: (1010,101000 - 0111,01)2 1010,101000 + 1000,110000 (complemento de 2 de B) overflow → 1 0011,011000 ↓ resultado 1.5 COMPLEMENTO DE NÚMEROS (Complemento da base R-1) Por definição (N)R-1,C = R n - R -m - N n → número de dígitos da parte inteira do número N m → número de dígitos da parte fracionária do número N R → base do número Exemplo: a) ( 147 ) 9,c = 103 - 1 - 147 = 852 b) ( 0,53 ) 9,c = 1 - 0,01 - 0,53 = 0,46 c) ( 147, 53 ) 9,c = 852,46 d) ( 1010 ) 1,c = 10000 - 1 - 1010 = 1111 - 1010 = 0101 e) ( 0,101 ) 1,c = 1 - 0,001 - 0,101 = 0,111 - 0,101 = 0,010 f) ( 1010,101 ) 1,c = 10000,000 - 0,001 - 1010,101 = 1111,111 - 1010,101 = 0101,010 1.5.1 COMPLEMENTO DE UM DE UM NÚMERO EM BINÁRIO Para encontrar o complemento de 1 de um número binário aplica-se a seguinte técnica: • Inverta cada dígito do número ( complemento lógico) Exemplo: ( 001011,110 ) 1,c = 110100,001 1.5.2 SUBTRAÇÃO EM BINÁRIO COM COMPLEMENTO DE 1. A subtração entre dois números positivos (A - B) na base 2, com complemento de um, segue a seguinte técnica: • Some A ao complemento de um de B • Verifique, no resultado, se houve o “vai 1” (overflow) a) Se houver overflow, some um ao bit menos significativo. Este então é o resultado esperado. 15 b) Se não houver overflow, o resultado é negativo. Então tome o complemento de 1 do resultado e adicione o sinal negativo. Exemplo 1: (1010 - 0111)2 1010 + 1000 (complemento de 1 de 0111) overflow → 1 0010 1 0011 ↓ resultado Exemplo 2: (0111 - 1010)2 0111 + 0101 (complemento de 1 de 1010) sem overflow → 1100 sinal negativo → - 0011 (complemento de 1 de 1100) ↓ resultado Exemplo 3: (1010,101000 - 0111,01)2 1010,101000 + 1000,101111 (complemento de 1 de B) overflow → 1 0011,010111 1 0011,011000 ↓ resultado 1.6 CÓDIGOS PARA REPRESENTAÇÃO DA INFORMAÇÃO Os códigos são formatos internos de representação da informação no computador.Muitas vezes, deseja-se armazenar no computador informações como: nome, endereço, CPF, etc, mas o computador só consegue armazenar "0s" e "1s". Daí a necessidade de criar alguns tipos de códigos para armazenamento de símbolos diferentes de números. Internamente, o computador armazena esses "0’s" e "1’s" em grupos de bits. Costuma-se dizer em linguagem computacional que: • Bit → um dígito binário • Nibble → um grupo de 4 bits ou 1/2 byte • Byte → usualmente um grupo de 8 bits • Palavra → um grupo de bytes • ½ Palavra → metade de bytes de uma palavra • Palavra dupla → dobro de bytes de uma palavra Existem muitos tipos de códigos, cada qual com suas vantagens e características. Eles são utilizados com fins de padronização e também por questões de segurança. Alguns tipos de códigos são: • Código binário • Código binário codificado em decimal • Código reflexivo • Código de unidade de distância • Código detector de erros Vejamos então alguns desses códigos: 16 1.6.1 CÓDIGO BCD (DECIMAL CODIFICADO EM BINÁRIO) Este sistema utiliza 4 bits para codificar um dígito decimal. O mais comum deles é o NBCD (Natural BCD) ou 8421 BCD. É utilizado para dar saída em displays numéricos, como daqueles encontrados em voltímetros digitais, relógios digitais, etc. Dígito 0 1 2 3 4 5 6 7 8 9 NBCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1.6.2. CÓDIGO ASCII (American Standard Code for Information Interchange) O código ASCII é um código de 7 bits, largamente utilizado na representação de caracteres alfanuméricos e símbolos. É o código utilizado para representar os caracteres do teclado do computador. Por ser um código de 7 bits, pode representar até 27 símbolos diferentes. MSB 000 001 010 011 100 101 110 111 LSB 0000 NUL DLE SP 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 BEL ETB ' 7 G W g w 1000 BS 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 ACK Acknowledge FS Form separator BEL Bell GS Group separation BS Back space HT Horizontal tab CAN Cancel NAK Negative acknowledge CR Carriage return NUL Null DC1 - DC4 Direct control RS Record separator DEL Delete idle SI Shift in DLE Data link escape SO Shift out EM End of medium SOH Start of heading ENQ Enquiry SP Space EOT End of transmission STX Start text ESC Escape SUB Substitute ETB End of transmission back SYN Synchronous idle ETX End text US Unit separator FF Form feed VT Vertical tab 17 1.7 ÁLGEBRA DE BOOLE A álgebra de Boole reune um conjunto de regras que obedecem a determinados postulados, conhecidos como postulados de Huntington, e que são aplicáveis a um conjunto de elementos. POSTULADOS DE HUNTINGTON 1. Um conjunto de elementos S é fechado com respeito a um operador se, para cada par de elementos de S, o operador especifica um único resultado que também pertence a S. 2. Deve existir um elemento 0 em S tal que para cada A em S, A + 0 = A 3. Deve existir um elemento 1 em S tal que para cada A em S, A . 1 = A 4. A + B = B + A 5. A . B = B . A 6. A + ( B . C ) = ( A + B ) . ( A + C ) 7. A . ( B + C ) = ( A . B ) + ( A . C ) 8. Para cada elemento de S, existe um elemento A tal que A .⎯A = 0 e A +⎯A = 1 9. Existem pelo menos dois elementos A e B, em S, tal que A não é equivalente a B Na álgebra de Boole, o conjunto de elementos definidos é: S = { 0 , 1 } E as regras prescritas para os operadores ( . + e inversão) são: AND OR INVERSÃO ' . 0 1 A B A.B + 0 1 A B A+B A ⎯A 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 Uma vez que a álgebra de Boole atende aos postulados, podemos deduzir então algumas identidades: 1. A . 0 = 0 e A + 1 = 1 Absorção 2. A . 1 = A e A + 0 = A Neutralidade 3. A . A = A e A + A = A Dualidade 4. A . ⎯A = 0 e A + ⎯A = 1 5. AA = 18 A partir das identidades acima, desenvolveu-se os seguintes teoremas que podem ser provados: 1. A + AB = A Absorção 2. A +⎯AB = A + B 3. AB + A⎯B = A Adjacência lógica 4. AC + ⎯A B C = AC + BC 5. AB + AC + ⎯B C = AB +⎯BC 6. A . B . C . ... = ⎯A +⎯B +⎯C + .... DeMorgan 7. A + B + C + ... = ⎯A . ⎯B . ⎯C . ... DeMorgan PROVA DOS TEOREMAS: 1. A + AB = A ( 1 + B ) = A . 1 = A 2. A +⎯AB = A . ( B +⎯B ) + ⎯A B = AB + A⎯B +⎯AB = AB + AB + A⎯B +⎯AB = = AB + A⎯B + AB +⎯AB = A (B +⎯B ) + B ( A +⎯A ) = A + B 3. AB + A⎯B = A ( B +⎯B ) = A 4. AC + ⎯A B C = C (A +⎯AB ) = A C + C B 5. AB + AC + ⎯B C = AB ( C +⎯C ) + AC ( B +⎯B ) + ⎯B C ( A +⎯A ) = = AB C + AB⎯C + ABC + A⎯BC + A⎯B C +⎯ABC = = AB C + AB⎯C + A⎯BC +⎯ABC = AB (C +⎯C ) + ⎯BC ( A +⎯A) = AB +⎯BC " " 6. A . B . C . ... = ⎯A +⎯B +⎯C + ... De Morgan Usando a tabela verdade ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' A B C A . B A . B . C A B C A + B A . B . C A + B + C 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 " " 7. A + B + C + ... = ⎯A . ⎯B . ⎯C . ... DeMorgan Usando a tabela verdade ' ' ' ' ' ' ' ' ' ' '' ' ' ' ' ' A B C A + B A + B + C A B C A . B A . B . C A + B + C 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 19 1.8 GATES LÓGICOS As operações definidas por Boole, em sua álgebra, foram simbolizadas pela sua adaptação aos circuitos eletrônicos chaveados para os seguintes símbolos lógicos e considerando: Chave aberta → nível lógico 0 Chave fechada → nível lógico 1 OPERAÇÃO ( - ) → Gate INVERSOR ' ' A A 0 1 1 0 OPERAÇÃO ( . ) → Gate AND OPERAÇÃO ( + ) → Gate OR A B A + B 0 0 0 0 1 1 1 0 1 1 1 1 A B A . B 0 0 0 0 1 0 1 0 0 1 1 1 A L1 Vcc A L1 Vcc BAVcc L1 L1 A B Vcc 20 1.9 OUTROS GATES A partir desses três operadores, gerou-se mais dois gates resultantes do processo de inversão dos gates AND e OR. São eles, então, os gates NAND e NOR. Gate NAND ' ' A B A . B 0 0 1 0 1 1 1 0 1 1 1 0 Gate NOR ' ' A B A + B 0 0 1 0 1 0 1 0 0 1 1 0 Ainda mais duas expressões booleanas, resultantes da operação entre os gates básicos, também são consideradas como gates. São conhecidos como OR-Exclusivo e NOR-Exclusivo. OR-Exclusivo ou (EX-OR) NOR-Exclusivo ou (EX-NOR) ' ' ' ' ' ' ' A B A.B + A.B A B A.B + A.B 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 21 1.10 PORTAS LÓGICAS BÁSICAS COM PORTAS NAND E PORTAS NOR Em circuitos integrados programáveis, como as FPGAs, todas as funções lógicas são realizadas com um único tipo de portalógica. Em geral a porta NAND é escolhida para tal função. Observe abaixo que tanto a operação inversão quanto a operação AND e a operação OR, da álgebra de Boole, podem ser implementadas exclusivamente com portas NAND ou portas NOR. Portas NAND Portas NOR 1.11 EQUIVALÊNCIA DE FUNÇÕES: Aplicação do teorema de DeMorgan Observe os dois circuitos abaixo: Os circuitos são constituídos apenas de portas NANDs. CDABCDABCD.ABX +=+== A substituição de última porta Nand pelo equivalente, obtido da aplicação do teorema de DeMorgan, permite a melhor visualização da função que o circuito realiza, visto que se agrupam, portas ANDs, porta inversoras e depois porta OR. Em adição, permite implemantar expressões do tipo AND/OR mais facilmente. ⎯A A+B B A B A A ⎯B ⎯A BA + AB ⎯A A B A B A AB ⎯B ⎯A AB A+B ← Inversão → ← AND → ← OR → 22 1.12 SIMPLIFICAÇÕES DE FUNÇÕES BOOLEANAS Exemplo 1: Dado o circuito abaixo, encontrar uma expressão mais simples e sintetizar o circuito simplificado. X = A + ( B C ( A + B ) ) = A + ( ABC + BBC ) → postulado 7 X = A + ( ABC + BBC ) → identidade 3 X = A + ABC + BC → teorema 1 X = A + BC Exemplo 2: Dado o circuito abaixo, encontrar uma expressão mais simples e sintetizar o circuito simplificado X = A + ABC + ⎯AC → teorema 1 X = A +⎯AC → teorema 2 X = A + C 23 UNIDADE II - ANÁLISE E SÍNTESE DE CIRCUITOS COMBINACIONAIS 2.1 INTRODUÇÃO Neste capítulo serão apresentadas algumas técnicas de minimização de funções booleanas. A seguir utilizaremos essas técnicas nos projetos de circuitos combinacionais dos mais diversos tipos e com larga aplicação prática. Essas técnicas de análise e síntese de circuitos também serão estendidas aos circuitos seqüenciais. 2.2 MINIMIZAÇÃO DE FUNÇÕES BOOLEANAS O segredo da minimização de funções booleanas está na utilização dos teoremas previamente introduzidos . Os de maior interesse são: Teorema 1: 1a) A + AB = A 1b) A(A + B) = A (absorção) Teorema 2: 2a) A + ⎯AB = A + B 2b) A(⎯A + B) = A B Teorema 3: 3a) AB + Α⎯B = A 3b) (A+ B) . (A +⎯B) = A (adjacência lógica) Os teoremas 1 e 2 têm especial relevância quando aplicados a expressões na forma padrão1 , enquanto o teorema 3 é relevante na simplificação de expressões na forma canônica. Exemplo 1: X = CD + A⎯BC + AB⎯C + BCD → Teorema 1 → (termos 1 e 4) X = CD + A⎯BC + AB⎯C = CD + A (B xor C) Exemplo 2: Y = AB + BEF + ⎯ACD + ⎯BCD ' ' Y = AB + BEF + CD(⎯A +⎯B) por DeMorgan → (⎯A +⎯B) = AB ' ' Y = AB + BEF + CDAB → teorema 2 → (termos 1 e 3) Y = AB + BEF + CD Exemplo 3: Z = ⎯A⎯B⎯C + ⎯A⎯BC + AB⎯C + A⎯B⎯C → teorema 3 → (termos 1 com 2; 3 com 4) Z = ⎯A⎯B + A⎯C A aplicação do teorema 3 é praticamente automática em expressões na forma canônica, entretanto deve-se aplicá-lo com bastante cautela. Imagine que os termos da expressão anterior estivessem arrumados da seguinte maneira: Z = ⎯A⎯B⎯C + A⎯B⎯C + AB⎯C + ⎯A⎯BC Se, a primeira vista, você reconhecesse que os termos (⎯A⎯B⎯C) e ( A⎯B⎯C ) eram adjacentes e agrupasse- os logo, a expressão resultante seria: Z = ⎯B⎯C + AB⎯C + ⎯A⎯BC Z = ⎯C( ⎯B + AB) + ⎯A⎯BC → aplicando o teorema 2 1 Quando a expressão booleana possui pelo menos um dos termos que não é mínimo 24 Z = ⎯B⎯C + A⎯C + ⎯A⎯BC Z = ⎯B(⎯C + ⎯AC) + A⎯C → aplicando o teorema 2 Z = ⎯B⎯C + ⎯A⎯B + A⎯C Que não é a mais simples como vimos anteriormente! O termo ⎯B⎯C, na expressão, é redundante. Observe que os termos (⎯A⎯BC ) e ( AB⎯C ) só se agruparão uma vez enquanto os termos (⎯A⎯B⎯C ) e ( A⎯B⎯C ) possuem duas possibilidades de agrupamento. Para obter uma melhor eficiência do teorema precisamos agrupar primeiro os termos que só podem ser agrupados de uma única maneira. Deduz-se então que: 1. Termos que não se agruparão com outros termos devem ser extraídos primeiro. 2. Termos que se agruparão com apenas um outro termo devem ser extraídos em seguida. 3. Termos que se agruparão com outros termos de mais que uma forma deverão ser analisados com mais atenção para prevenir redundâncias. 2.3 MAPAS DE KARNAUGH M. Karnaugh, em seu artigo, "The Map Method for Synthesis of Combinational Logic Circuits", de 1953, ordenou e dispôs os termos mínimos de uma função booleana num padrão geométrico tal que a aplicação do teorema da adjacência lógica tornou-se imediata. Considere as figuras e as tabelas de adjacências abaixo: MAPAS DE KARNAUGH 4 variáveis 2 variáveis 3 variáveis CD \ AB 00 01 11 10 00 0 4 12 8 B \ A 0 1 C \ AB 00 01 11 10 01 1 5 13 9 0 0 2 0 0 2 6 4 11 3 7 15 11 1 1 3 1 1 3 7 5 10 2 6 14 10 A → MSB A → MSB A → MSB B → LSB C → LSB D → LSB 2 Variáveis 3 Variáveis 4 Variáveis Termo mínimo Adjacência Termo mínimo Adjacência Termo mínimo Adjacência 0 1,2 0 1,2,4 0 1,2,4,8 1 0,3 1 0,3,5 1 0,3,5,9 2 0,3 2 0,3,6 2 0,3,6,10 3 1,2 3 1,2,7 3 1,2,7,11 4 0,5,6 4 0,5,6,12 5 1,4,7 5 1,4,7,13 6 2,4,7 6 2,4,7,14 7 3,5,6 7 3,5,6,15 8 0,9,10,12 9 1,8,11,13 10 2,8,11,14 11 3,9,10,15 12 4,8,13,14 13 5,9,12,15 14 6,10,12,15 15 7,11,13,14 Para cada um dos mapas acima, Karnaugh estabeleceu uma tabela de adjacência relacionada a cada termo mínimo da expressão booleana na forma canônica. As tabelas acima mostram essa correspondência em que, cada termo adjacente é calculado a partir do termo mínimo de referência (M) pela seguinte expressão: 25 M/(2(i-1) ) Si = M + [2 (i-1)][(-1) ] 2.3.1 PLOTAGEM DO MAPA DE KARNAUGH O mapa de Karnaugh pode ser construído a partir da tabela verdade ou a partir da forma canônica de uma função booleana, conforme mostrado abaixo: 2 Variáveis 3 Variáveis 4 Variáveis AB X ABC Y ABCD Z 00 1 000 0 0000 1 01 0 001 1 0001 1 10 1 010 1 0010 0 11 0 011 1 0011 1 100 0 0100 1 101 1 0101 0 X = ∑ 0,2 110 1 0110 1 111 0 0111 1 1000 1 1001 0 Y = ∑ 1,2,3,5,6 1010 1 1011 1 1100 1 1101 1 1110 0 1111 1 Z = ∑0,1,3,4,6,7,8,10,11,12,13,15 MAPAS DE KARNAUGH 4 variáveis 2 variáveis 3 variáveis CD \ AB 00 01 11 10 00 1 1 1 1 B \ A 0 1 C \ AB 00 01 11 10 01 1 0 1 0 0 1 1 0 0 1 1 0 11 1 1 1 1 1 0 0 1 1 1 0 1 10 0 1 0 1 2.3.2 IDENTIFICANDO AS REGIÕES NO MAPA DE KARNAUGH ⎯A em comum ⎯B em comum A em comum B em comum M = termo mínimo de referência Si = termos mínimos adjacentes i = 1, 2, 3, ..., n onde: n = no de variáveis M/2(i-1) é definida como divisão inteira B \ A 0 1 0 ⎯A⎯B A⎯B 1 ⎯AB AB B \ A 0 1 1 B \ A 0 1 0 1 C \ AB 00 01 11 10 0 1 C \ AB 00 01 11 10 0 1 C\ AB 00 01 11 10 0 ⎯A⎯B⎯C ⎯AB⎯C AB⎯C A⎯B⎯C 1 ⎯A⎯BC ⎯ABC ABC A⎯BC C \ AB 00 01 11 10 0 1 ⎯A em comum A em comum ⎯B em comum B em comum ⎯B em comum B em comum 26 2.3.3 LENDO O MAPA DE KARNAUGH Para realizar a leitura correta da expressão minimizada, através do mapa de Karnaugh, procede-se da seguinte maneira. Inicialmente consideraremos como entradas no mapa apenas os 1’s da função booleana de cada célula. Agrupando essas células, segundo as regras abaixo descritas, obteremos a função booleana na forma de soma de produtos. a) Pesquise, circule e extraia do mapa aquelas entradas isoladas (ilhas) b) Procure, circule e extraia aquelas entradas que só formarão par com apenas uma outra entrada. c) Procure no mapa aquelas entradas, ainda não foram cobertas, e que formam par com mais de uma entrada, mas não podem formar um grupo maior. Aquelas entradas que formarão grupos com entradas ainda não cobertas deverão ser extraídas em primeiro lugar. Depois extraia aquelas entradas que formarão pares com entradas já cobertas. d) Procure, circule e extraia aquelas entradas, não cobertas, que formarão quadras de uma única maneira com outras 3 entradas ainda não cobertas mas não formam grupos maiores. Depois pesquise, circule e extraia entradas, não cobertas, que formarão quadras de uma única maneira com entradas já cobertas. e) Procure aquelas entradas que formarão quadras, de mais de uma maneira, mas não formarão grupos maiores. Estude-as e agrupe de forma idêntica as realizadas no passo c mas, nesse caso, procure por quadras. f) Continue pesquisando seu mapa de forma similar aos passos de b até e, procurando agora grupos de 8, 16, etc até que todas as entradas estejam agrupadas. g) Revise sua pesquisa para verificar se não houve algum erro. Exemplos: C \ AB 00 01 11 10 0 1 1 0 0 1 0 0 0 1 1 ilha (a) 2 pares isolados (b) 1 par isolado (b) 2 pares opcionais (c) f(A,B,C) = A⎯BC + ⎯A⎯C g(A,B,C) = ⎯BC + B⎯C +⎯AC ou g(A,B,C) = ⎯BC + B⎯C +⎯AB C \ AB 00 01 11 10 0 0 1 1 0 1 1 1 0 1 CD \ AB 00 01 11 10 00 01 11 10 CD \ AB 00 01 11 10 01 11 10 CD \ AB 00 01 11 10 00 01 11 10 CD \ AB 00 01 11 10 00 01 11 10 ⎯A em comum A em comum ⎯C em comum C em comum ⎯B em comum B em comum ⎯D em comum D em comum 27 C \ AB 00 01 11 10 0 1 1 1 0 1 0 1 1 1 2 pares isolados (b) 1 quadra (d) h(A,B,C) = ⎯A⎯C + AC + B CD \ AB 00 01 11 10 00 0 1 0 1 01 1 0 1 0 11 1 0 1 1 10 1 0 0 1 1 ilha (a) 3 pares isolados (b) 1 quadra isolada (d) j(A,B,C,D) =⎯AB⎯C⎯D +⎯A⎯BD + ABD + A⎯B⎯D +⎯BC 1 par essencial (b) 2 pares opcionais (c) 1 quadra essencial (d) p(A,B,C,D) =⎯A⎯BC + B⎯CD + ABC +⎯A⎯D Nesse exemplo observa-se a diversidade de possibilidades para minimização da mesma função devido à quantidade de grupos opcionais. f(A,B,C,D) =⎯A⎯B + BD + CD + A⎯D f(A,B,C,D) =⎯B⎯D + AB +⎯AD + CD f(A,B,C,D) =⎯BD +⎯AD + AB + ⎯BC f(A,B,C,D) =⎯A⎯B + BD +A⎯D + ⎯BC CD \ AB 00 01 11 10 00 1 1 1 1 01 1 0 0 1 11 1 0 0 1 10 1 0 0 1 1 quadra (d) 1 óctupla (f) k(A,B,C,D) = ⎯C⎯D +⎯B CD \ AB 00 01 11 10 00 1 0 1 1 01 1 1 1 0 11 1 1 1 1 10 1 0 1 1 CD \ AB 00 01 11 10 00 1 1 0 0 01 0 1 1 0 11 1 0 1 0 10 1 1 1 0 CD \ AB 00 01 11 10 00 1 0 1 1 01 1 1 1 0 11 1 1 1 1 10 1 0 1 1 CD \ AB 00 01 11 10 00 1 0 1 1 01 1 1 1 0 11 1 1 1 1 10 1 0 1 1 CD \ AB 00 01 11 10 00 1 0 1 1 01 1 1 1 0 11 1 1 1 1 10 1 0 1 1 28 2.3.4 MAPA DE KARNAUGH DE 5 E 6 VARIÁVEIS Para encontrar adjacências lógicas, no mapa de Karnaugh de 5 variáveis, deve-se imaginar que os dois mapas estão um sobre o outro, então exemplificando, a célula 0 é adjacente à célula 16. Observe a figura abaixo: A = 0 A = 1 A = 0 A = 1 F(A,B,C,D,E) = =⎯A⎯BC⎯DE +⎯A⎯BCD⎯E + A⎯B⎯D⎯E + ⎯C⎯D⎯E + ABE + B⎯C ↓ ↓ ↓ ↓ ↓ ↓ ilha ilha par quadra quadra óctupla Regras: (a) (a) (b) (d) (d) (f) O mapa de Karnaugh de seis variáveis possui 4 células construídas a partir do mapa de Karnaugh de 4 variáveis. A adjacência entre as células de cada mapa pode ser visualizada de forma idêntica aquela utilizada para o mapa de 4 variáveis. Entretanto, as adjacências entre as células em mapas diferentes funcionam como num agrupamento de um mapa de 2 variáveis. Por exemplo, agrupamento na vertical elimina a variável A e, na horizontal, a variável B. MAPA DE KARNAUGH DE 6 VARIÁVEIS B = 0 B = 1 A = 0 A = 1 DE \ BC 00 01 11 10 00 1 0 0 1 01 0 1 0 1 11 0 0 0 1 10 0 1 0 1 DE \ BC 00 01 11 10 00 1 1 0 1 01 0 0 1 1 11 0 0 1 1 10 0 0 0 1 EF \ CD 00 01 11 10 00 0 4 12 8 01 1 5 13 9 11 3 7 15 11 10 2 6 14 10 DE \ BC 00 01 11 10 00 0 4 12 8 01 1 5 13 9 11 3 7 15 11 10 2 6 14 10 DE \ BC 00 01 11 10 00 16 20 28 24 01 17 21 29 24 11 19 23 31 27 10 18 22 30 26 EF \ CD 00 01 11 10 00 16 20 28 24 01 17 21 29 24 11 19 23 31 27 10 18 22 30 26 EF \ CD 00 01 11 10 00 32 36 44 40 01 33 37 45 41 11 35 39 47 43 10 34 38 46 42 EF \ CD 00 01 11 10 00 48 52 60 56 01 49 53 61 57 11 51 55 63 59 10 50 54 62 58 29 Exemplo: B = 0 B = 1 A = 0 A = 1 H(A,B,C,D,E,F) = ⎯A⎯B⎯D⎯E⎯F + B⎯CDEF +⎯A⎯B⎯CDF + ⎯B⎯CD⎯EF + A⎯BC⎯F + BC⎯E + ⎯AC⎯E ↓ ↓ ↓ ↓ ↓ ↓ ↓ par par par par quadra óctuplas Regras: (b) (b) (b) (b) (d) (f) 2.3.5 IMPLICANTES PRIMITIVOS IMPLICANTES PRIMITIVOS são todas as possibilidades de agrupamento de uma função booleana no mapa de Karnaugh sempre levando em consideração a possibilidade de se obter grupos maiores, quando isso for possível. Entretanto, observa-se que nem todos os agrupamentos são úteis para obtenção da expressão booleana em sua forma mais simples. Assim, no agrupamento abaixo, podemos identificar quatro categorias de grupos: A = 0 A = 1 No agrupamento acima podemos identificar 4 categorias de grupos: a) IMPLICANTES ESSENCIAIS → Aqueles grupos obtidos da única possibilidade de agrupamento de uma célula. Exemplo: células agrupadas em vermelho ( 1, 6, 18 e 29 ) b) IMPLICANTES NECESSÁRIOS → Aqueles grupos que representam a única opção para algumas células, depois que os essenciais foram retirados. Exemplo: grupo das células ( 15 com 11 ) em rosa c) IMPLICANTES OPCIONAIS → Oriundos de células que apresentam mais de uma opção de agrupamentos e um deles deve ser escolhido como necessário. Exemplo: Célula marcadas com azul. {célula 23 grupos (21,23) e (23,25)} d) GRUPOS REDUNDANTES→ grupos que não devem ser inclusos na expressão minimizada por serem desnecessários. Exemplo: Grupos envolvendo as células (14,15), (9,11) e (0,4,8,12) em verde EF \ CD 00 01 11 10 00 1 0 1 1 01 0 1 1 1 11 0 1 0 0 10 0 0 0 0 EF \ CD 00 01 11 10 00 0 0 1 1 01 0 0 1 1 11 0 1 0 0 10 0 0 0 0 EF \ CD 00 01 11 10 00 0 0 1 1 01 0 1 0 0 11 0 0 0 0 10 0 0 1 1 EF \ CD 00 01 11 10 00 0 0 1 1 01 0 0 1 1 11 0 1 0 0 10 0 0 0 0 DE \ BC 00 01 11 10 00 1 1 1 1 01 1 0 0 1 11 0 0 1 1 10 0 1 1 0 DE \ BC 00 01 11 10 00 0 0 0 0 01 0 1 1 0 11 1 1 0 0 10 1 0 0 0 30 Do exemplo acima, pode-se concluir que a busca no mapa de Karnaugh se resume em, agrupar células procurando inicialmente pelos implicantes essenciais, depois os implicantes necessários e finalmente os implicantes opcionais. 2.3.6 TRATAMENTO PARA ENTRADAS DON'T CARE Entradas don't care são combinações de bits que, ao acontecerem num sistema, não causarão efeito algum. Por exemplo, um contador BCD de 4 bits possui 16 possíveis combinações de bits porém somente 10 são utilizadas como ação na saída do circuito. Nesse caso, as 6 combinações restantes não devem ser geradas pelo contador. Essas entradas resultam em saídas don't care da função booleana em questão. Quando se lê um mapa de Karnaugh, onde existem entradas don't care, utiliza-se a seguinte regra: Só agrupe 1's, com entradas don't care, se e somente se esse agrupamento resultar numa razoável simplificação do circuito. Caso contrário, trate-os como se fossem zeros na tabela verdade. Exemplo: F = ∑0,1,4,8,10,11,12, Φ (2,3,6,9,15) Onde Φ representa a entrada don't care Lendo sem considerar as saídas don't care F =⎯A⎯B⎯C + ⎯C⎯D + A⎯BC Considerando as saídas don’t care F = ⎯B + ⎯C⎯D 2.3.6 EXPRESSÕES EM POS UTILIZANDO MAPAS DE KARNAUGH Uma vez sedimentado o conhecimento de como se obtém a expressão minimizada em forma de soma de produtos SOP, utilizando mapa de Karnaugh, encontrar a função equivalente, expressa na forma de produto de somas POS, é imediato. Se F é uma função booleana de A, B, C,... utiliza-se a seguinte técnica. 1. Plota-se o mapa de Karnaugh da função booleana incluindo as entradas "0". 2. Agrupam-se as entradas "0", de forma semelhante a aquela utilizada para as entradas "1", obtendo-se a expressão SOP correspondente da função ⎯F. 3. Utilize o teorema de DeMorgan e obtenha a função F em termos de POS Exemplo: Seja a função booleana dada pela tabela verdade abaixo: Lendo a função utilizando produto de somas, (POS) tem-se: F = (⎯A+⎯B + D) . (⎯B + C +⎯D ) . (⎯A + B +⎯D) . (⎯C + D) Opcionalmente pode-se ler o mapa utilizando soma de produtos (SOP) ⎯F(A,B,C,D) = AB⎯D + B⎯CD + A⎯BD + C⎯D Para encontrar a expressão de F, deve-se aplicar o teorema de DeMorgan. CD \ AB 00 01 11 10 00 1 1 1 1 01 1 0 0 Φ 11 Φ Φ Φ 1 10 Φ Φ 0 1 CD \ AB 00 01 11 10 00 1 1 0 1 01 1 0 0 0 11 1 1 1 0 10 0 0 0 0 CD \ AB 00 01 11 10 00 1 1 1 1 01 1 0 0 Φ 11 Φ 0 Φ 1 10 Φ Φ 0 1 31 Por DeMorgan ⎯F = AB⎯D + B⎯CD + A⎯BD + C⎯D ' ' ' ' ' ' ' F = (AB⎯D ). ( B⎯CD) . (A⎯BD) . (C⎯D ) F = (⎯A+⎯B + D) . (⎯B + C +⎯D ) . (⎯A + B +⎯D) . (⎯C + D) 32 2.4 VARIABLE - ENTERED MAPPING ( TÉCNICA VEM ) A técnica VEM é uma extensão da técnica de Karnaugh para leitura de mapas contendo acima de 6 variáveis de entrada. Essa técnica, além de aceitar as entradas tradicionais do mapa de Karnaugh ( 0 1 e φ ), também aceita variáveis e expressões booleanas como entradas do mapa VEM. Seja a tabela verdade de 3 variáveis para a função F. F = ⎯A⎯B⎯C + ⎯A⎯BC + ⎯AB⎯C + ⎯ABC + A⎯B⎯C + A⎯BC + AB⎯C + ABC O processo de gerar uma expressão booleana específica para F, é o de selecionar os termos mínimos apropriados da expressão booleana geral. Isto pode ser pensado como o processo de associar o valor da função para um termo mínimo específico e operá-lo utilizando uma função AND com cada o termo mínimo equivalente da função em questão. Por exemplo: F. F = F F.F = ⎯A⎯B⎯C. F + ⎯A⎯BC.F + ⎯AB⎯C.F + ⎯ABC.F + A⎯B⎯C.F + A⎯BC.F + AB⎯C.F + ABC.F Aqui ambos os lados da expressão são logicamente operados pela função AND e portanto, não viola nenhuma regra algébrica. Para gerar a função específica para F precisamos prescrever o valor de F para cada termo mínimo. Fazemos então F ser: • 1 para os termos mínimos desejados. • 0 para os termos mínimos indesejados. • φ para os termos que não têm significado no circuito desejado (don’t care). F.F = ⎯A⎯B⎯C. 0 + ⎯A⎯BC. 0 + ⎯AB⎯C. 1 + ⎯ABC . 1 + A⎯B⎯C. 1 + A⎯BC. 0 + AB⎯C. φ + ABC. φ Temos então a função definida para F conforme mostra a tabela verdade e o mapa de Karnaugh. Para determinar a expressão mínima, nesse caso, ou aplica-se o teorema da adjacência lógica na expressão F ou aplica-se o mesmo teorema no mapa de Karnaugh. F = A⎯C + B F = ⎯A⎯B⎯C. 0 + ⎯A⎯BC. 0 + ⎯AB⎯C. 1 + ⎯ABC . 1 + A⎯B⎯C. 1 + A⎯BC. 0 + AB⎯C. φ + ABC. φ F = A⎯C + B ABC F 000 0 001 0 010 1 011 1 100 1 101 0 110 φ 111 φ C \ AB 00 01 11 10 0 0 1 φ 1 1 0 1 φ 0 B A⎯C 33 Para desenvolver a técnica VEM, precisamos apenas estender essa idéia de plotar o valor dado da variável associada com cada termo mínimo, para aquela de plotar o valor dado de alguma expressão associada com cada termo mínimo. Para ilustrar a idéia, vamos operar logicamente a variável menos significativa da tabela verdade com a variável F conforme abaixo: F.F = ⎯A⎯B(⎯C.F) +⎯A⎯B(C.F) +⎯AB(⎯C.F) +⎯AB(C.F) + A⎯B(⎯C.F) + A⎯B(C.F) + AB(⎯C.F) + + AB(C.F) F.F = ⎯A⎯B (⎯C.F + C.F) +⎯AB (⎯C.F + C.F) + A⎯B (⎯C.F + C.F) + AB (⎯C.F + C.F) Vamos agora definir como subtermos mínimos os termos resultantes de todas as possíveis combinações entre as variáveis (A e B) , ou seja ( ⎯A⎯B, ⎯AB, A⎯B, AB ) Agora vamos subdividir a tabela verdade de acordo com os subtermos mínimos e observar o desenvolvimento algébrico da expressão acima. F.F = ⎯A⎯B (⎯C F + CF) +⎯AB (⎯CF + CF) + A⎯B (⎯CF + CF) + AB (⎯CF + CF) F.F = ⎯A⎯B (⎯C 0+C0) +⎯AB (⎯C1+C1) + A⎯B (⎯C1+C0) + AB (⎯Cφ+Cφ ) F.F = ⎯A⎯B ( 0 ) +⎯AB (⎯C + C) + A⎯B (⎯C ) + AB (φ ) Então podemos plotar o mapa com o valor DADO de cada termo, (⎯CF + CF), também chamado de Map- Entered Variable (MEV), só que agora em um mapa de Karnaugh de 2 variáveis. Nota: (⎯C + C ) = 1 Uma vez construído o mapa pela técnica VEM, sua leitura deve ser feita seguindo as seguintes regras. 2.4 LEITURA DO MAPA VEM Considere que as variáveis escolhidas, para serem entradas do mapa, serão chamadas de MEV (Map-Entered Variable) daqui para frente. Para fazer a leitura de um mapa VEM deve-se seguir os seguintes passos: Passo1: Primeiro imagine que todas as entradas 1, no mapa, foram substituídas pelas variáveis do mapa VEM somada com seu complemento, ou seja, 1 = D+⎯D. Então circule sobre todas as entradas MEV de acordo com as regras: a) Primeiro circule e extraia todos os MEVs isolados que não se agrupam com outro MEV idêntico nas células adjacentes ou com um 1 ou com um φ (don't care). Lembre-se que um C e um ⎯C em células adjacentes não podem ser agrupados por não serem idênticos. b) Circule e extraia todos os MEVs que formam pares apenas com outro MEV idêntico em células adjacentes c) Circule e extraia todos os MEVs que formarão pares com apenas um 1 AB C F 00 0 0 00 1 0 01 0 1 01 1 1 10 0 1 10 1 0 11 0 φ 11 1 φ B \ A 0 1 0 0 ⎯C 1 1 φ 34 d) Circule e extraia todos os MEVs que formarão pares com apenas um φ (don't care) e) Qualquer MEV que se agrupará de 2 maneiras com outro MEV idêntico, 1 ou φ, mas não formarão quadras deve ser deixado para depois f) Continue agrupando e extraindo, de forma similar, quadras, óctuplas, etc até que cada MEV tenha sido coberto pelo menos 1 vez. Isto completa o passo 1. Passo 2: Uma vez que todos os MEVs foram cobertos, transforme o mapa da seguinte forma; ' ' ' ' a) Substitua o MEV e o MEV por 0, ou seja MEV e MEV → 0 b) Substitua 0 → 0 e φ → φ c) Substitua 1 → 1 se não foi totalmente coberto _____ → φ se totalmente coberto, isto é, circulado com MEV e MEV ' d) MEVφ e MEVφ → 0 ' ' ' e) ( MEV + MEV φ ) e ( MEV + MEVφ) → 1 se não foi coberto de forma alguma ou se apenas φ foi coberto. ↑ ↑ termos necessários → φ se totalmente coberto ou se apenas o termo necessário foi coberto. Então proceda a leitura do mapa como se estivesse lendo um mapa de Karnaugh. Isto completa o passo 2. Exemplo 1: Passo 1: Passo 2: CA B BCAF += B \ A 0 1 0 0 ⎯C 1 1 φ B \ A 0 1 0 0 ⎯C 1 1 φ B \ A 0 1 0 0 0 1 1 φ 35 Exemplo 2: F = BC + A⎯B Exemplo 3: F = ⎯A⎯D + B⎯CD + A⎯BC Exemplo 4: F = A⎯D + B⎯C +⎯BC Exemplo 5: F = ⎯A⎯BE + B⎯D⎯E + A⎯C⎯D⎯E + AB⎯C⎯E + ⎯AC⎯D + ⎯BCD B \ A 0 1 0 0 1 1 ⎯Cφ+C C B \ A 0 1 0 0 ⎯C+C 1 ⎯Cφ+C C Passo 1: BC B \ A 0 1 0 0 1 1 φ 0 Passo 2: A⎯B C/AB 00 01 11 10 0 Dφ+⎯Dφ D+⎯D D 0 1 ⎯D ⎯Dφ Dφ D+⎯D Passo 1: ⎯A⎯D + B⎯CD C/AB 00 01 11 10 0 Dφ 1 D+⎯Dφ φ 1 ⎯D+Dφ 0 ⎯D 1 Passo 1: A⎯D C/AB 00 01 11 10 0 0 1 1 φ 1 1 0 0 1 Passo 2: B⎯C + ⎯BC CD \ AB 00 01 11 10 00 E φ 1 ⎯E 01 E+⎯Eφ 0 E 0 11 1 Eφ Eφ 1 10 Eφ+⎯E 1 ⎯E 0 Passo 1: ⎯A⎯BE + B⎯D⎯E + A⎯C⎯D⎯E + AB⎯CE CD\AB 00 01 11 10 00 0 φ φ 0 01 φ 0 0 0 11 1 0 0 1 10 1 1 0 0 Passo 2: ⎯AC⎯D + ⎯BCD AB C F1 0 0 0 0 0 0 1 0 0 1 0 φ 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 C/AB 00 01 11 10 0 φ φ 0 0 1 0 0 0 1 Passo 2: A⎯BC 36 2.5 ANÁLISE E SÍNTESE DE CIRCUITOS COMBINACIONAIS A partir de agora vamos utilizar as técnicas de manipulação de expressões booleanas nos projetos de circuitos combinacionais bem como, aos poucos, adquirir alguma experiência na análise desses circuitos. Existem muitas categorias de circuitos combinacionais dos quais veremos as seguintes: • Circuitos Aritméticos • Comparadores • Geradores de Paridade • Multiplexadores e Demultiplexadores • Decodificadores e Codificadores 2.5.1 CIRCUITOS ARITMÉTICOS Os computadores digitais são projetados para realizar uma gama de instruções aritméticas e lógicas com dados codificados em binário. A parte do computador que realiza tais operações chama-se Unidade Aritmética e Lógica (ALU). Uma das operações aritméticas básicas é a adição entre dois números. No computador, todas as operações aritméticas básicas são realizadas fazendo uso da operação de adição e de deslocamento de bits. Um dos circuitos que realiza a adição entre dois bits é conhecido como meio- somador, o outro é o somador completo. 2.5.1.1 MEIO SOMADOR O meio somador realiza a soma algébrica entre dois dígitos binários conforme mostra a tabela verdade abaixo. SOMA = A⎯B +⎯AB CARRY = AB SOMA = A xor B 2.5.1.2 SOMADOR COMPLETO O somador completo difere do meio somador pelo fato de possuir mais uma entrada chamada de CARRY- IN, ou seja, a soma entre dois bits binários mais o vai um resultante da soma dos termos anteriores. A tabela verdade do circuito é apresentada abaixo: A B SOMA CARRY 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 B \ A 0 1 0 0 1 1 1 0 B \ A 0 1 0 0 0 1 0 1 37 SOMA = ⎯A⎯BCin + ⎯AB⎯Cin + ABCin + A⎯B⎯Cin SOMA = ⎯A(⎯BCin +B⎯Cin ) + A( BCin + ⎯B⎯Cin ) SOMA = ⎯A ( B xor Cin ) + A ( B xnor Cin ) SOMA = ⎯A ( B xor Cin ) + A ( B xor Cin ) SOMA = A xor B xor Cin Cout = AB + BCin + ACin Outra maneira de implementar o somador completo: Cout = AB + ⎯ABCin + A⎯BCin Cout = AB + Cin (⎯AB + A⎯B ) Cout = AB + Cin (A xor B) A B Cin SOMA Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 A B Cin Somador Completo Cout Soma Cin \ AB 00 01 11 10 0 0 1 0 1 1 1 0 1 0 Cin \ AB 00 01 11 10 0 0 0 1 0 1 0 1 1 1 A B Meio Somador CARRY Cin Meio Somador CARRY SOMA Cout Cin \ AB 00 01 11 10 0 0 0 1 0 1 0 1 1 1 38 Para gerar uma soma entre 2 números binários de N bits, tem-se o seguinte esquema de conexão dos dois módulos vistos anteriormente. Essa configuração de somador é conhecida com o nome de somador paralelo. Apresenta-se aqui os circuitos integrados que realizam a soma binária entre dois números de 4 bits das famílias TTL e CMOS que são duas das famílias de dispositivos eletrônicos utilizadas na implementação de circuitos digitais. TTL 7483 CMOS 4008 2.5.1.3 COMPARADOR O circuito comparador é projetado para comparar a magnitude relativa de dois números binários. A estrutura geral do comparador e sua tabela verdade são mostradas à seguir. No caso, trata-se de um comparador de 2 bits. An Bn Cin n A2 B2 Cin 2 A1 B1 Cin 1 A0 B0 Somador Somador Somador Meio Completo CompletoCompleto Somador Cout n Sn Cout2 S2 Cout1 S1 Cout0 S0 10 11 8 7 3 4 1 16 13 A1 B1 A2 B2 A3 B3 A4 B4 14 Cin Cout Vcc ∑1 ∑2 ∑3 ∑4 Gnd 5 9 6 2 15 12 A4 B4 A3 B3 A2 B2 A1 B1 Cin Cout Vcc ∑4 ∑3 ∑2 ∑1 Gnd A1 A0 B1 B0 A>B A+B A<B 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 1 0 A1 A0 B1 B0 A>B A=B A<B B1B0 \ A1A0 00 01 11 10 00 0 1 1 1 01 0 0 1 1 11 0 0 0 0 10 0 0 1 0 A>B = A1⎯B1 + A1A0⎯B0 + A0⎯B1⎯B0 39 Observe que " " " " " " A < B = ( A>B ) + ( A=B ) = ( A>B ) . ( A=B ) Logo, algum hardware pode ser economizado. 2.5.2 GERADORES DE PARIDADE Os geradores de paridade são circuitos utilizados principalmente na transmissão assíncrona entre terminais remotos. O propósito desses circuitos é o de garantir confiabilidade na transmissão e na recepção das informações que circulam entre eles. Um gerador de paridade bastante conhecido é aquele que gera paridade par, ou seja, fornece saída 1 se a quantidade de bits iguais a 1 for um número par, incluindo o bit de paridade. Tomemos como exemplo um gerador de paridade para um conjunto de 4 bits. B1B0 \ A1A0 00 01 11 10 00 0 0 0 0 01 1 0 0 0 11 1 1 0 1 10 1 1 0 0 A<B = ⎯A1B1 + ⎯A1⎯A0B0 + ⎯A0B1B0 B1B0 \ A1A0 00 01 11 10 00 1 0 0 0 01 0 1 0 0 11 0 0 1 0 10 0 0 0 1 (A=B) = ⎯A1⎯A0⎯B1⎯B0 + ⎯A1A0⎯B1B0 + + A1⎯A0B1⎯B0 + A1A0B1B0 (A=B) = (A1 xnor B1) (A0 xnor B0) Vcc A3 B3 A>B A<B B0 A0 B1 16 15 14 1 3 12 11 10 9 TTL 7485 1 2 3 4 5 6 7 8 B2 A2 A=B A>B A<B A=B A1 Gnd Comparador de 4 bits B1 B0 A1 A0 (A>B) (A<B) (A=B) 40 PAR = ⎯AB⎯C⎯D + ⎯A⎯B⎯CD + A⎯B⎯C⎯D + AB⎯CD + ⎯ABCD + ⎯A⎯B C⎯D + A⎯BCD + ABC⎯D PAR = ⎯AB (⎯C⎯D + CD ) + A⎯B (⎯C⎯D +CD ) + + C⎯D (⎯A ⎯B + AB ) +⎯CD (⎯A⎯B + AB ) PAR = ⎯AB (C xnor D ) + A⎯B (C xnor D ) + + C⎯D (A xnor B ) +⎯CD (A xnor B) PAR = ((C xnor D ) (A xor B)) + ((C xor D ) (A xnor B)) PAR = A xor B xor C xor D Implementação 2.5.3 MULTIPLEXADORES E DEMULTIPLEXADORES 2.5.3.1 MULTIPLEXADORES Os multiplexadores são algumas vezes chamados de seletores de dados e é um dos circuitos combinacionais mais utilizados em projetos digitais. Por definição, um multiplexador é um circuito projetado para selecionar uma de muitas entradas para ser ativada como saída do circuito num determinado instante. No exemplo abaixo, vemos um multiplexador 4x1 cujo formato geral é dado por: Saída = ⎯S1⎯S0 I0 + ⎯S1S0 I1 + S1⎯S0 I2 + S1S0I3 Forma genérica: Saída = m0. I0 + m1.I1 + m2 . I2 + ... + mk . Ik em que k = 2n -1 n = número de bits da seleção mj = termos mímimos obtidos com as entradas de seleção Ij = variável ou expressão conectada à entrada j A B C D PAR 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 CD \ AB 00 01 11 10 00 0 1 0 1 01 1 0 1 0 11 0 1 0 1 10 1 0 1 0 S1S0 I3 I2 I1 I0 Saída 0 0 X X X X I0 0 1 X X X X I1 1 0 X X X X I2 1 1 X X X X I3 S0 \ S1 0 1 0 I0 I2 1 I1 I3 41 Implementação: Os multiplexadores são também utilizados para implementar funções booleanas como mostrado abaixo. A função, neste caso, é de 4 variáveis e pode ser implementada utilizando mux 8x1 e seguido os seguintes passos: Mapa VEM da função Mapa VEM do MUX • Utilizando a técnica VEM separe a variável D, uma vez que A, B e C serão as entradas de seleção do mux respectivamente (S2, S1, S0) • Como o mux é de 8x1 seu mapa VEM está mostrado juntamente com o mapa VEM da função. • Logo vai existir uma equivalência direta entre células idênticas de ambos os mapas, ou seja: a) A célula 000 (D+⎯D) do mapa VEM é igual à célula ⎯S2⎯S1⎯S0(I0) do mapa do MUX. No mux, (D+⎯D) significa 1, logo a entrada I0 deve ser conectada ao nível lógico 1 (Vcc). b) A célula 001(D) é igual a célula ⎯S2⎯S1S0(I1). No mux, D deve ser conectado à entrada I1. Idem para a célula 010(D) em I2 e 110(D) em I6 c) A célula 100(⎯D) é igual a S2⎯S1⎯S0(I4). No mux,⎯D deve ser conectado à entrada I4. Idem para a célula 111(⎯D) em I7 d) A célula 011( 0 ) é igual a célula ⎯S2S1S0(I3). No mux, I3 deve ser conectado nível lógico zero, significando que esse termo mínimo não faz parte da função desejada. Idem para a célula 101( 0 ) que leva a entrada I5 ser conectada também em nível lógico zero. ABC D F 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 C \ AB 00 01 11 10 0 D+⎯D D D ⎯D 1 D 0 ⎯D 0 S0 \ S2S1 00 01 11 10 0 I0 I2 I6 I4 1 I1 I3 I7 I5 42 Implementação Agora podemos listar os termos mínimos da tabela verdade que formam a função F no mux F = ∑ m0, m1, m3, m5, m13, m8, m14) (⎯D + D ) D D D ⎯D ⎯D (a) (b) (b) (b) (c) (c) 2.5.3.2 DEMULTIPLEXADORES Os demultiplexadores realizam a função inversa da multiplexação. O circuito seleciona uma das várias saídas para receber a informação que está chegando em sua única entrada. Verifiquemos o caso de um demultiplexador de 1 entrada para 4 saídas (1x4 ), cuja tabela verdade está expressa abaixo. Observe que os demultiplexadores comerciais fornecem saída em nível lógico zero quando seleciona a linha, ou seja, fornece, à saída selecionada, o inverso da entrada. Mapa de Karnaugh para a função G0 ⎯G0 = ⎯S1⎯S0 E _______ G0 = ⎯S1⎯S0 E Expressão geral : ⎯Gk = mk . E sendo k =0, ..., 2n - 1 _____ n = número de bits de seleção do demultiplexadorGk = mk . E mk = termo mínimo referente às entradas seletoras Implementação: S1S0 E G3 G2 G1 G0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 E \ S1S0 00 01 11 10 0 1 1 1 1 1 0 1 1 1 G0 E Demux G1 G2 2 (1x4) G3 TTL 74155 S1 S0 43 2.5.4 DECODIFICADORES E CODIFICADORES São circuitos combinacionais com vasta aplicação em projetos digitais. Na categoria dos decodificadores encontramos alguns exemplos como: a) Decodificadores 4x16, 3x8, 2x4, etc b) BCD - Decimal c) BCD - 7 segmentos Na categoria dos codificadores temos: a) Codificadores de prioridades b) Decimal - BCD c) Octal - Binário 2.5.4.1 DECODIFICADORES 2.5.4.1.1 DECODIFICADORES n x2n Os decodificadores do tipo 2n são particularmente importantes devido a sua utilização na decodificação de endereço de memória em computadores, possibilitando o acesso a uma locação de memória com objetivo de leitura ou escrita da mesma. São conhecidos como circuito reconhecedor de termo mínimo, uma vez que para cada combinação das variáveis de entrada apenas uma saída difere das demais, é a saída equivalente ao termo mínimo representado pela combinação das entradas naquele momento. Os decodificadores comerciais desse tipo, como os demultiplexadores, também fornecem a saída ativa em nível lógico zero. Veremos um exemplo desse tipo de decodificador com o 3x8 cujo TTL comercial disponível é o 74138. ⎯S0 = ⎯A⎯B⎯C ⎯S1 = ⎯A⎯BC ⎯S2 = ⎯AB⎯C ⎯S3 = ⎯ABC ⎯S4 = A⎯B⎯C ⎯S5 = A⎯BC ⎯S6 = AB⎯C ⎯S7 = ABC A B C S0 S1 S2 S3 S4 S5 S6 S7 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 A B C S0 S1 S2 S3 S4 S5 S6 S7 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 C \ AB 00 01 11 10 0 0 1 1 1 1 1 1 1 1 ⎯S0 = ⎯A⎯B⎯C ________________ S0 = ⎯A⎯B⎯C _______________ S0 = ⎯A⎯B⎯C ______________ S1 = ⎯A⎯BC ______________ S2 = ⎯AB⎯C ____________ S3 = ⎯ABC ______________ S4 = A⎯B⎯C ____________ S5 = A⎯BC __________ S6 = AB⎯C _________ S7 = ABC 44 Uma outra aplicação desses tipos de decodificadores é a geração de funções booleanas na forma de SOP. F = ∑m1,m3, m4, m7 Inverte-se a saída do decodificador referente aos termos da função que se deseja implementar e soma esses termos já invertidos. 2.5.4.1.2 DECODIFICADOR BCD - DECIMAL Recebe como entrada 4 bits contendo o código BCD e gera na saída equivalente ao valor decimal desse código o nível lógico zero e nas demais saídas o nível lógico 1. Para a saída 2, por exemplo, a expressão booleana pode ser descrita como: Implementação em crcuito integrado: A B C D 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 φ φ φ φ φ φ φ φ φ φ 1 0 1 1 φ φ φ φ φ φ φ φ φ φ 1 1 0 0 φ φ φ φ φ φ φ φ φ φ 1 1 0 1 φ φ φ φ φ φ φ φ φ φ 1 1 1 0 φ φ φ φ φ φ φ φ φ φ 1 1 1 1 φ φ φ φ φ φ φ φ φ φ _______ _____ _________ _______________ _________ _____________ _________ _______________ _________ F = ⎯A⎯BC +⎯ABC + A⎯B⎯C + ABC F = ⎯A⎯BC +⎯ABC + A⎯B⎯C + ABC CD \ AB 00 01 11 10 00 1 1 φ 1 01 1 1 φ 1 11 1 1 φ φ 10 0 1 φ φ DCBA2 = DCBA2 = 45 2.5.4.1.3 DECODIFICADOR BCD - 7 SEGMENTOS É utilizado na conversão do código BCD para o display de 7 segmentos com a finalidade de fazer o display acender mostrando o dígito decimal que o código BCD representa. a = A⎯B⎯C + ⎯A⎯B⎯D + ⎯ACD + ⎯ABD 2.5.4.2 CODIFICADORES Os codificadores são circuitos combinacionais projetados para gerar um código de saída diferente para cada combinação de bits à entrada. A quantidade de bits do código na saída deve satisfazer a relação abaixo 2m ≥ n onde m é o número de bits de código n é o número de elementos a serem codificados Entretanto esse código gerado deve ser único para cada entrada. No problema a seguir observa-se que uma combinação de C1 C0 está relacionada a 4 entradas distintas e é por causa desse problema que os codificadores não são considerados circuitos gerais. Entretanto existe o codificador de prioridades que é extremamente útil e deve ser discutido. 2.5.4.2.1 CODIFICADOR DE PRIORIDADES O codificador de prioridades é um circuito combinacional capaz de selecionar uma determinada entrada, dentre várias outras entradas, tentando conectar-se, com certo equipamento, ao mesmo tempo. Aquela entrada com maior prioridade vai ser selecionada. A filosofia do circuito é atribuir uma prioridade maior a uma entrada em relação às demais. É um circuito muito utilizado na seleção de dispositivos de entrada e saída, que estão tentando se comunicar com a unidade central de processamento em computadores digitais. O codificador de prioridades a seguir estabelece que a entrada E2 é de alta prioridade, a entrada E1é de média prioridade e a entrada E0 é de baixa prioridade. E2 é codificado com 01 E1 é codificado com 10 E0 é codificado com 11 E o código 00 está relacionado com o estado inativo do circuito. A B C D a b c d e f g 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 1 0 φ φ φ φ φ φ φ 1 0 1 1 φ φ φ φ φ φ φ 1 1 0 0 φ φ φ φ φ φ φ 1 1 0 1 φ φ φ φ φ φ φ 1 1 1 0 φ φ φ φ φ φ φ 1 1 1 1 φ φ φ φ φ φ φ CD \ AB 00 01 11 10 00 1 0 φ 1 01 0 1 φ 1 11 1 1
Compartilhar