Prévia do material em texto
Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 1 MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS A maioria dos computadores modernos consiste de dois ou mais níveis. Existem máquinas com até seis níveis, conforme mostra a Figura de hierarquia. O nível 0, na parte inferior, é o hardware verdadeiro da máquina. Seus circuitos executam os programas em linguagem de máquina do nível 1. Por razões de precisão, temos que mencionar a existência de outro nível abaixo do nosso nível 0. Esse nível, que não aparece na Figura de hierarquia por entrar no domínio da engenharia elétrica (e, portanto, estar fora do escopo), é chamado de nível de dispositivo. Nele, o projetista vê transistores individuais, que são os primitivos de mais baixo nível para projetistas de computador. Se alguém quiser saber como os transistores funcionam no interior, isso nos levará para o campo da física no estado sólido. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 2 NÍVEL LÓGICO DIGITAL Na parte inferior da hierarquia encontramos o nível lógico digital, o real hardware do computador. Examinaremos muitos aspectos da lógica digital, como um fundamento para o estudo de níveis mais altos em capítulos subsequentes. Esse assunto está no limiar entre a ciência da computação e a engenharia elétrica, mas o material é independente, portanto, não há necessidade de experiência prévia de hardware nem de engenharia para entendê-lo. Os elementos básicos que fazem parte de todos os computadores digitais são surpreendentemente simples. Iniciaremos nosso estudo examinando esses elementos básicos e também a álgebra especial de dois valores (álgebra booleana) usada para analisá-los. Em seguida, examinaremos alguns circuitos fundamentais que podem ser construídos usando simples combinações de portas, entre eles os circuitos que efetuam a aritmética. O tópico que vem depois desse é o modo como essas portas podem ser combinadas para armazenar informações, isto é, como as memórias são organizadas. Logo após, chegamos à questão das CPUs e, em especial, de como é a interface entre CPUs de um só chip, a memória e os dispositivos periféricos. Mais adiante serão estudados diversos exemplos da indústria de computadores. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 3 1. Portas e álgebra booleana 1.1. Portas 1.2. Álgebra booleana 1.3. Execução de funções booleanas 1.4. Equivalência de circuito 2. Circuitos lógicos digitais básicos 2.1. Circuitos integrados 2.2. Circuitos combinatórios • Multiplexadores • Decodificadores • Comparadores 2.3. Circuitos aritméticos • Deslocadores • Somadores • Unidades lógica e aritmética 2.4. Clocks 3. Memória 3.1. Memórias de 1 bit 3.2. Flip-flops 3.3. Registradores 3.4. Organização da memória 3.5. Chips de memória 3.6. RAMs e ROMs • Chips de memória não volátil http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 4 1. PORTAS E ÁLGEBRA BOOLEANA Circuitos digitais podem ser construídos com um pequeno número de elementos primitivos combinando-os de inúmeras maneiras. Nas seções seguintes, descreveremos tais elementos, mostraremos como eles podem ser combinados e introduziremos uma poderosa técnica matemática que pode ser usada para analisar seu comportamento. 1.1. PORTAS Um circuito digital é aquele em que estão presentes somente dois valores lógicos. O normal é que um sinal entre 0 e 0,5 volt represente um valor (por exemplo, 0 binário) e um sinal entre 1 e 1,5 volt represente o outro valor (por exemplo, 1 binário). Não são permitidas tensões fora dessas duas faixas. Minúsculos dispositivos eletrônicos, denominados portas (gates), podem calcular várias funções desses sinais de dois valores. Essas portas formam a base do hardware sobre a qual todos os computadores digitais são construídos. Os detalhes do funcionamento interno das portas estão fora do escopo, pois pertencem ao nível de dispositivo, que está abaixo do nível 0. Não obstante, agora vamos divagar um pouco e examinar rapidamente a ideia básica, que não é difícil. No fundo, toda a lógica digital moderna se apoia no fato de que um transistor pode funcionar como um comutador binário muito rápido. Na Figura 1(a), mostramos um transistor bipolar (representado pelo círculo) inserido em um circuito simples. Esse transistor tem três conexões com o mundo exterior: o coletor, a base e o emissor. Quando a voltagem de entrada, Vin, está abaixo de certo valor crítico, o transistor desliga e age como uma resistência infinita, isso faz com que a saída do circuito, Vout, assuma um valor próximo a Vcc, uma voltagem regulada externamente, em geral +1,5 volt para esse tipo de transistor. Quando Vin excede o valor crítico, o transistor liga e age como um fio, fazendo Vout ficar conectado com a terra (por convenção, 0 volt). O importante é notar que, quando Vin é baixa, Vout é alta, e vice-versa. Assim, esse circuito é um inversor, que converte um 0 lógico em um 1 lógico e um 1 lógico em um 0 lógico. O resistor (linha serrilhada) é necessário para limitar a quantidade de corrente http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 5 drenada pelo transistor, de modo que ele não queime. O tempo típico exigido para passar de um estado para outro é tipicamente de um nanossegundo ou menos. Na Figura 1.1(b), dois transistores estão ligados em série. Se ambas, V1 e V2, forem altas, ambos os transistores conduzirão e Vout cairá. Se qualquer das entradas for baixa, o transistor correspondente se desligará e a saída será alta. Em outras palavras, Vout será baixa se, e somente se, ambas, V1 e V2, forem altas. Na Figura 1.1(c), os dois transistores estão ligados em paralelo em vez de em série. Nessa configuração, se qualquer das entradas for alta, o transistor correspondente ligará e conectará a saída com a terra. Se ambas as entradas forem baixas, a saída permanecerá alta. Esses três circuitos, ou seus equivalentes, formam as três portas mais simples e são denominadas portas NOT, NAND e NOR, respectivamente. Portas NOT costumam ser denominadas inversoras; usaremos os dois termos indiferentemente. Se agora adotarmos a convenção de que “alta” (Vcc volts) é um 1 lógico e “baixa” (terra) é um 0 lógico, podemos expressar o valor de saída como uma função dos valores de entrada. Os símbolos usados para representar essas portas são mostrados nas figuras 1.2(a)-(c) junto com o comportamento funcional de cada circuito. Nessas figuras, A e B são entradas e X é a saída. Cada linha especifica a saída para uma combinação diferente das entradas. Figura 1.1: (a) Inversor de transistor, porta NOT. (b) Porta NAND. (c) Porta NOR. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 6 Se o sinal de saída da Figura 1.1(b) for alimentado em um circuito inversor, obtemos outro circuito com o inverso exato da porta NAND, a saber, um cuja saída é 1 se, e somente se, ambas as entradas forem 1. Esse circuito é denominado uma porta AND; seu símbolo e descrição funcional são dados na Figura 1.2(d). De modo semelhante, a porta NOR pode ser conectada a um inversor para produzir um circuito cuja saída é 1 se quaisquer das saídas, ou ambas, for um 1, mas 0 se ambas asentradas forem 0. O símbolo e a descrição funcional desse circuito, denominado uma porta OR, são dados na Figura 1.2(e). Os pequenos círculos usados como parte dos símbolos para o inversor, porta NAND e porta NOR, são denominados bolhas de inversão. Também são usadas em outros contextos para indicar um sinal invertido. As cinco portas da Figura 1.2 são os principais elementos de construção do nível lógico digital. A discussão precedente deve ter deixado claro que as portas NAND e NOR requerem dois transistores cada, ao passo que as portas AND e OR requerem três cada. Por essa razão, muitos computadores são baseados em portas NAD e NOR em vez das portas mais conhecidas, AND e OR. (Na prática, todas as portas são executadas de modo um pouco diferente, mas as NAND e NOR ainda são mais simples do que as AND e OR) A propósito, vale a pena observar que as portas podem perfeitamente ter mais de duas entradas. Em princípio, uma porta NAD, por exemplo, pode ter, arbitrariamente, muitas entradas, mas na prática não é comum encontrar mais de oito. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 7 Embora a questão do modo como são construídas as portas pertença ao nível do dispositivo, gostaríamos de mencionar as principais famílias de tecnologia de fabricação porque elas são citadas com muita frequência. As duas tecnologias principais são bipolar e MOS (Metal Oxide Semiconductor – semicondutor de óxido metálico). Os dois principais tipos bipolares são: • TTL (transistor-transistor Logic – lógica transistor-transistor), que há muitos anos é o burro de carga da eletrônica digital; • ECL (Emitter-Coupled Logic – lógica de emissor acoplado), que era usada quando se requeria uma operação de velocidade muito alta. Para circuitos de computador, o que predomina agora é a tecnologia MOS. Portas MOS são mais lentas do que as TTL e ECL, mas exigem bem menos energia elétrica e ocupam um espaço muito menor, portanto, um grande número delas pode ser compactado e empacotado. Há muitas variedades de MOS, entre as quais PMOS, NMOS e CMOS. Embora os modos de construção dos transistores MOS e dos transistores bipolares sejam diferentes, sua capacidade de funcionar como comutadores eletrônicos é a mesma. A maioria das CPUs e memórias modernas usa tecnologia CMOS, que funciona a +1,5 volt. E isso é tudo o que diremos sobre o nível de dispositivo. 1.2. ÁLGEBRA BOOLENA Para descrever os circuitos que podem ser construídos combinando portas, é necessário um novo tipo de álgebra, no qual variáveis e funções podem assumir somente os valores 0 e 1. Essa álgebra é denominada álgebra booleana, nome que se deve a seu descobridor, o matemático inglês George Boole (1815–1864). http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 8 Figura 1.2: Símbolos e comportamento funcional das cinco portas básicas. Em termos estritos, estamos nos referindo a um tipo específico de álgebra booleana, uma álgebra de comutação, mas o termo “álgebra booleana” é tão utilizado no lugar de “álgebra de comutação” que não faremos a distinção. Assim como há funções na álgebra “ordinária” (isto é, a álgebra do colegial), também há funções na álgebra booleana. Uma função booleana tem uma ou mais variáveis de entrada e produz um resultado que depende somente dos valores dessas variáveis. Uma função simples, f, pode ser definida ao se dizer que f(A) é 1 se A for 0 e f(A) é 0 se A for 1. Essa função é a função NOT da Figura 1.2(a). Como uma função booleana de n variáveis só tem 2𝑛 combinações possíveis de valores de entrada, ela pode ser completamente descrita por uma tabela com 2𝑛 linhas, na qual cada linha informa o valor da função para uma combinação diferente de valores de entrada. Ela é denominada tabela verdade. As tabelas da Figura 1.2 são todos exemplos de tabelas verdade. Se concordarmos em sempre listar as linhas de uma tabela verdade em ordem numérica (base 2), isto é, para duas variáveis na ordem 00, 01, 10 e 11, a função pode ser completamente descrita pelo número binário de 2𝑛 bits obtido pela leitura vertical da coluna de resultado da tabela verdade. Assim, NAD é 1110, NOR é 1000, AND é 0001 e OR é 0111. É óbvio que só existem 16 funções booleanas de duas variáveis, correspondentes às 16 possíveis sequências de 4 bits resultantes. Por outro lado, a álgebra ordinária tem um número infinito de funções de duas variáveis, nenhuma das quais pode ser descrita por meio de uma tabela de http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 9 saídas para todas as entradas possíveis, porque cada variável pode assumir qualquer valor de um número infinito de valores possíveis. A Figura 1.3(a) mostra a tabela verdade para uma função booleana de três variáveis: M = f(A, B, C). Essa função é a de lógica majoritária, isto é, ela é 0 se a maioria de suas entradas for 0, e 1 se a maioria de suas entradas for 1. Embora qualquer função booleana possa ser completamente especificada dada sua tabela verdade, à medida que aumenta o número de variáveis, essa notação fica cada vez mais trabalhosa. Portanto, costuma-se usar outra notação no lugar dela. FIGURA 1.3: (a) Tabela verdade para a função majoritária de três variáveis. (b) Circuito para (a). Para ver como ocorre essa outra notação, observe que qualquer função booleana pode ser especificada ao se dizer quais combinações de variáveis de entrada dão um valor de saída igual a 1. Para a função da Figura 1.3(a), há quatro combinações de variáveis de entrada que fazem com que M seja 1. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 10 Por convenção, marcaremos a variável de entrada com uma barra para indicar que seu valor é invertido. A ausência de uma barra significa que o valor não é invertido. Além disso, usaremos a multiplicação implícita ou um ponto para representar a função booleana AND e + para representar a função booleana OR. Assim, por exemplo, 𝐴�̅�𝐶 assume o valor 1 somente quando A = 1 e B = 0 e C = 1. Além disso, 𝐴�̅� + 𝐵𝐶̅ é 1 somente quando (A = 1 e B = 0) ou (B = 1 e C = 0). As quatro linhas da Figura 3(a) que produzem bits 1 na saída são �̅�𝐵𝐶, 𝐴�̅�𝐶, 𝐴𝐵𝐶̅ 𝑒 𝐴𝐵𝐶. A função, M, é verdadeira (isto é, 1) se qualquer uma dessas quatro condições for verdadeira; daí, podemos escrever 𝑀 = �̅�𝐵𝐶 + 𝐴�̅�𝐶 + 𝐴𝐵𝐶̅ + 𝐴𝐵𝐶 como um modo compacto de dar a tabela verdade. Assim, uma função de n variáveis pode ser descrita como se desse uma “soma” de no máximo 2𝑛 termos de “produtos” de n variáveis. Essa formulação é de especial importância, como veremos em breve, pois leva diretamente a uma execução da função que usa portas padronizadas. É importante ter em mente a distinção entre uma função booleana abstrata e sua execução por um circuito eletrônico. Uma função booleana consiste em variáveis, como A, B e C, e operadores booleanos, como AND, OR e NOT. Ela é descrita por uma tabela verdade ou por uma função booleana como http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 11 𝐹 = 𝐴�̅�𝐶 + 𝐴𝐵𝐶̅ Uma função booleana pode ser executada por um circuito eletrônico (muitas vezes de vários modos diferentes) usando sinais que representam as variáveis de entrada e saída e portas como AND, OR e NOT. 1.3. Execução de funções booleanas Como já mencionamos, a formulaçãode uma função booleana como uma soma de até 2𝑛 termos produtos leva a uma possível implementação. Usando a Figura 1.4 como exemplo, podemos ver como essa implementação é efetuada. Na Figura 1.4(b), as entradas, A, B e C, aparecem na extremidade esquerda, e a função de saída, M, na extremidade direita. Como são necessários complementos (inversos) das variáveis de entrada, eles são gerados tomando as entradas e passando-as pelos inversores rotulados 1, 2 e 3. Para evitar atravancar a figura, desenhamos seis linhas verticais, três das quais conectadas às variáveis de entrada e três aos complementos dessas variáveis. Tais linhas oferecem uma fonte conveniente para as entradas das portas subsequentes. Por exemplo, as portas 5, 6 e 7 usam A como uma entrada. Em um circuito real, essas portas provavelmente estariam ligadas direto a A sem usar nenhum fio “vertical” intermediário. O circuito contém quatro portas AND, uma para cada termo da equação para M (isto é, uma para cada linha da tabela verdade que tenha um bit 1 na coluna de resultado). Cada porta AND calcula uma linha da tabela verdade, como indicado. Por fim, todos os termos produtos alimentam a porta lógica OR para obter o resultado final. O circuito da Figura 1.4(b) usa uma convenção que utilizaremos repetidas vezes neste livro: quando duas linhas se cruzam, não há nenhuma ligação implícita a menos que haja um ponto negro bem visível na intersecção. Por exemplo, a saída da porta 3 cruza todas as seis linhas verticais, mas está ligada apenas a C. É bom lembrar que alguns autores usam outras convenções. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 12 Pelo exemplo da Figura 1.4 deve ficar claro como colocar em prática um circuito para qualquer função booleana: 1. Escreva a tabela verdade para a função. 2. Providencie inversores para gerar o complemento de cada entrada. 3. Desenhe uma porta AND para cada termo que tenha um 1 na coluna de resultado. 4. Ligue as portas AND às entradas adequadas. 5. Alimente a saída de todas as portas AND a uma porta OR. Embora tenhamos mostrado como qualquer função booleana pode ser executada usando portas NOT, AND e OR, muitas vezes é conveniente realizar circuitos usando só um tipo de porta. Felizmente, converter circuitos gerados pelo algoritmo precedente à forma NAND pura ou NOR pura é uma operação direta. Para fazer essa conversão, basta que tenhamos um modo de implementar NOT, AND e OR usando um único tipo de porta. A linha superior da Figura 1.4 mostra como todas essas três podem ser implementadas usando apenas portas NAND; a fileira de baixo mostra como isso pode ser feito usando apenas portas NOR. (Essas operações são diretas, mas também há outras maneiras.) Um modo de implementar uma função booleana usando somente portas NAND ou somente portas NOR é primeiro seguir o procedimento dado anteriormente para construí-la com NOT, AND e OR. Em seguida, substituir as portas de múltiplas entradas por circuitos equivalentes usando portas de duas entradas. Por exemplo, A + B + C + D pode ser computada como (A + B) + (C + D), empregando três portas OR de duas entradas. Por fim, as portas NOT, AND e OR são substituídas pelos circuitos da Figura 1.4. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 13 Figura 1.4 Construção de portas (a) NOT, (b) AND e (c) OR usando somente portas NAND ou somente portas NOR. Embora esse procedimento não resulte em circuitos ótimos, no sentido do número mínimo de portas, ele mostra que sempre há uma solução viável. Ambas as portas, NAND e NOR, são denominadas completas porque qualquer função booleana pode ser calculada usando quaisquer das duas. Nenhuma outra porta tem essa propriedade, o que é outra razão para elas serem preferidas como blocos de construção de circuitos. 1.4. 3.1.4 Equivalência de circuito Projetistas de circuitos muitas vezes tentam reduzir o número de portas em seus produtos para reduzir a área da placa de circuito interno necessária para executá-las, diminuir o consumo de potência e aumentar a velocidade. Para reduzir a complexidade de um circuito, o projetista tem de encontrar outro circuito que calcule a mesma função que o original, mas efetue essa operação com um número menor de portas (ou talvez com portas mais simples, por exemplo, com http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 14 duas em vez de com quatro entradas). A álgebra booleana pode ser uma ferramenta valiosa na busca de circuitos equivalentes. Como exemplo de como a álgebra booleana pode ser usada, considere o circuito e a tabela verdade para AB + AC mostrados na Figura 1.5(a). Embora ainda não as tenhamos discutido, muitas das regras da álgebra comum também são válidas para a booleana. Em particular, a expressão AB + AC pode ser fatorada para A(B + C) usando a lei distributiva. A Figura 1.5(b) mostra o circuito e a tabela verdade para A(B + C). Como duas funções são equivalentes se, e somente se, elas tiverem a mesma saída para todas as entradas possíveis, é fácil ver pelas tabelas verdade da Figura 1.5 que A(B + C) é equivalente a AB + AC. Apesar dessa equivalência, o circuito da Figura 1.5(b) é claramente melhor do que o da Figura 1.5(a), pois contém menos portas. Figura 1.5: Duas funções equivalentes. (a) AB + AC. (b) A(B + C). http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 15 2. CIRCUITOS LÓGICO DIGITAIS BÁSICOS Na prática, poucos circuitos são construídos porta por porta, embora tenha havido uma época em que isso era comum. Hoje, os blocos de construção mais comuns são módulos que contêm várias portas. Examinaremos esses blocos de construção mais de perto e veremos como eles podem ser construídos com base em portas individuais. 2.1. CIRCUITOS INTEGRADOS Portas não são fabricadas nem vendidas individualmente, mas em unidades denominadas circuitos integrados, muitas vezes denominados ICs ou chips. Um IC é um pedaço quadrado de silício de tamanho variado, dependendo de quantas portas são necessárias para executar os componentes do chip. Substratos pequenos medirão cerca de 2 × 2 mm, enquanto os maiores podem ter até 18 × 18 mm. ICs costumam ser montados em pacotes retangulares de plástico ou cerâmica, que podem ser muito maiores que os substratos que eles abrigam, se forem necessários muitos pinos para conectar o chip ao mundo exterior. Cada pino se conecta com a entrada ou saída de alguma porta no chip ou à fonte de energia, ou ao terra. A Figura 4.1 mostra uma série de pacotes de IC comuns, usados para os chips de hoje. Chips menores, como os usados para microcontroladores domésticos ou chips de RAM, usarão pacotes duplos em linha (DIPs – Dual Inline Packages). Um DIP é um pacote com duas fileiras de pinos que se encaixam em um soquete correspondente na placa-mãe. Os pacotes mais comuns têm 14, 16, 18, 20, 22, 24, 28, 40, 64 ou 68 pinos. Para chips grandes costumam ser usados pacotes quadrados com pinos nos quatro lados ou na parte de baixo. Dois pacotes comuns para chips maiores são Pin Grid Arrays, ou PGAs, e Land Grid Arrays, ou LGAs. PGAs possuem pinos na parte inferior do pacote, que se encaixam em um soquete correspondente na placa-mãe. Soquetes PGA normalmente utilizam um mecanismo com força de inserção nula, onde uma alavanca aplica pressão lateral sobre todos os pinos do PGA, mantendo-o firmemente no soquete PGA. LGAs, por outro lado, possuempequenas plataformas planas na parte inferior do chip, e um soquete LGA terá uma capa que se encaixa sobre o LGA e aplica http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 16 uma força para baixo no chip, garantindo que todas as plataformas do LGA façam contato com as plataformas do soquete LGA. FIGURA 4.1: Tipos comuns de pacotes de circuito integrado, incluindo um pacote dual-in-line, ou DIP (a), PGA (b) e LGA (c). Como muitos pacotes de IC têm forma simétrica, descobrir a orientação correta é um problema constante com a instalação de IC. • DIPs normalmente têm um entalhe em uma ponta, que combina com uma marca corresponde no soquete DIP. • PGAs, em geral, possuem um pino faltando, de modo que, se você tentar inserir o PGA no soquete incorretamente, o PGA não se encaixará. • Como os LGAs não possuem pinos, a instalação correta é imposta colocando-se um entalhe em um ou dois lados do LGA, que corresponde a um entalhe no soquete LGA. O LGA não entrará no soquete a menos que os dois entalhes combinem. Para todos os efeitos, todas as portas são ideais no sentido de que a saída aparece logo que a entrada é aplicada. Na realidade, os chips têm um atraso de porta finito que inclui o tempo de propagação de sinal pelo chip e o tempo de comutação. Atrasos típicos são de centésimos de picossegundos a alguns nanossegundos. A tecnologia moderna vigente permite colocar mais de 1 bilhão de transistores em um chip. Como qualquer circuito pode ser construído com base em portas http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 17 NAND, você bem poderia imaginar que um fabricante poderia produzir um chip muito geral que contivesse 500 milhões de portas NAND. Infelizmente, um chip como esse necessitaria de 1.500.000.000 pinos. Como o espaço-padrão entre pinos é 1 milímetro, um chip LGA teria 38 metros de comprimento para acomodar todos esses pinos, o que talvez tivesse um efeito negativo sobre as vendas. É claro que a única maneira de tirar proveito da tecnologia é projetar circuitos com uma alta relação porta/pino. 2.2. CIRCUITOS COMBINATÓRIOS Muitas aplicações de lógica digital requerem um circuito com múltiplas entradas e múltiplas saídas, no qual as saídas são determinadas exclusivamente pelas entradas em questão. Esses circuitos são denominados circuitos combinatórios. Nem todos os circuitos têm essa propriedade. Por exemplo, um circuito que contenha elementos de memória pode perfeitamente gerar saídas que dependem de valores armazenados, bem como de variáveis de entrada. Um circuito que esteja executando uma tabela verdade como a da Figura 3(a) é um exemplo típico de um circuito combinatório. Nesta seção, examinaremos alguns circuitos combinatórios de uso frequente. • Multiplexadores No nível lógico, um multiplexador é um circuito com 2𝑛 entradas de dados, uma saída de dados e 𝑛 entradas de controle que selecionam uma das entradas de dados. Essa entrada selecionada é dirigida (isto é, roteada) até a saída. A Figura 4.1 é um diagrama esquemático de um multiplexador de oito entradas. As três linhas de controle, A, B e C, codificam um número de 3 bits que especifica qual das oito linhas de entrada é direcionada até a porta OR e dali até a saída. Não importa qual valor esteja nas linhas de controle, sete das portas AND sempre produzirão saída 0; a outra pode produzir ou um 0 ou um 1, dependendo do valor da linha de entrada selecionada. Cada porta AND é habilitada por uma combinação diferente das entradas de controle. O circuito do multiplexador é mostrado na Figura 4.1. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 18 FIGURA 4.1: Circuito multiplexador de oito entradas. Usando o multiplexador, podemos executar a função majoritária da Figura 3(a), como mostrado na Figura 4.2(b). Para cada combinação de A, B e C, uma das linhas de dados é selecionada. Cada entrada é ligada ou a Vcc (1 lógico) ou ao terra (0 lógico). O algoritmo para ligar as entradas é simples: a entrada 𝐷𝑖 é a que tem o mesmo valor da linha 𝑖 da tabela verdade. Na Figura 3(a), as linhas 0, 1, 2 e 4 são 0, portanto, as entradas correspondentes estão aterradas; as linhas restantes são 1, portanto, estão ligadas a 1 lógico. Dessa maneira, qualquer tabela verdade de três variáveis pode ser executada usando o chip da Figura 4.1(a). http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 19 FIGURA 4.2: (a) Multiplexador com oito entradas. (b) O mesmo multiplexador ligado para calcular a função majoritária. Acabamos de ver como um chip multiplexador pode ser usado para selecionar uma das diversas entradas e como ele pode implementar uma tabela verdade. Outra de suas muitas aplicações é como um conversor de dados paralelo para serial. Colocando 8 bits de dados nas linhas de entrada e então escalonando as linhas em sequência de 000 a 111 (binário), os 8 bits são colocados em série na linha de saída. Uma utilização típica da conversão paralela para serial é um teclado, onde cada acionamento de uma tecla define implicitamente um número de 7 ou 8 bits que deve ser enviado por um enlace serial, como USB. O inverso de um multiplexador é um demultiplexador, que dirige sua única entrada até uma das 2𝑛 saídas, dependendo dos valores das 𝑛 linhas de controle. Se o valor binário das linhas de controle for k, é selecionada a saída k. • Decodificadores Como um segundo exemplo, agora vamos examinar um circuito que toma um número de 𝑛 bits como entrada e o usa para selecionar (isto é, definir em 1) exatamente uma das 2𝑛 linhas de saída. Tal circuito, ilustrado para 𝑛 = 3 na Figura 4.3, é denominado decodificador. Para ver como um decodificador pode ser útil, imagine uma pequena memória que consiste em oito chips, cada um http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 20 contendo 256 MB. O chip 0 tem endereços de 0 a 256 MB, o chip 1 tem endereços de 256 MB a 512 MB e assim por diante. Quando um endereço é apresentado à memória, os 3 bits de ordem alta são usados para selecionar um dos oito chips. Usando o circuito da Figura 4.3, esses 3 bits são as três entradas, A, B e C. Dependendo das entradas, exatamente uma das oito linhas de saída, 𝐷0, ..., 𝐷7, é 1; o resto é 0. Cada linha de saída habilita um dos oito chips de memória. Como só uma linha de saída é colocada em 1, apenas um chip é habilitado. FIGURA 4.3: Circuito decodificador 3 para 8. A operação do circuito da Figura 4.3 é direta. Cada porta AND tem três entradas, das quais a primeira é 𝐴 ou �̅�, a segunda é 𝐵 ou �̅� e a terceira é 𝐶 ou 𝐶̅. Cada porta é habilitada por uma combinação diferente de entradas: 𝐷0 por �̅� �̅� 𝐶̅, 𝐷1 por �̅� �̅� 𝐶, e assim por diante. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 21 • Comparadores Outro circuito útil é o comparador, que compara duas palavras de entrada. O comparador simples da Figura 4.4 toma duas entradas, A e B, cada uma de 4 bits de comprimento e produz um 1 se elas forem iguais e um 0 se elas não o forem. O circuito é baseado na porta XOR (EXCLUSIVE OR), que produz um 0 se suas entradas forem iguais e um 1 se elas forem diferentes. Se as duas palavras deentrada forem iguais, todas as quatro portas xor devem produzir 0. Então, pode-se efetuar uma operação OR nesses quatro sinais; se o resultado for 0, as palavras de entrada são iguais; caso contrário, não. Em nosso exemplo, usamos uma porta NOR como o estágio final para reverter o sentido do teste: 𝐴 𝐵 𝐴 𝑋𝑂𝑅 𝐵 0 0 0 0 1 1 1 0 1 1 1 0 1 significa igual, 0 significa diferente. 𝐴 ⟹ 𝐴0, 𝐴1, 𝐴2, 𝐴3 𝐴3 𝐴2 𝐴1 𝐴0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 𝐵 ⟹ 𝐵0, 𝐵1, 𝐵2, 𝐵3 𝐵3 𝐵2 𝐵1 𝐵0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 Figura 4.4: Comparador simples de 4 bits. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 22 2.3. CIRCUITOS ARITMÉTICOS Começaremos com um simples deslocador de 8 bits e em seguida veremos como são construídos os somadores e, por fim, estudaremos as unidades de lógica e aritmética, que desempenham um papel fundamental em qualquer computador. • Deslocadores Nosso primeiro circuito aritmético é um deslocador de oito entradas e oito saídas (veja a Figura 2.3.1). Oito bits de entrada são apresentados nas linhas D0, ..., D7. A saída, que é apenas a entrada deslocada de 1 bit, está nas linhas S0, ..., S7. A linha de controle, C, determina a direção do deslocamento, 0 para a esquerda e 1 para a direita. Quando o deslocamento for para a esquerda, um 0 é inserido no bit 7. De modo semelhante, quando o deslocamento for para a direita, um 1 é inserido no bit 0. FIGURA 2.3.1: Deslocador esquerda/direita de 1 bit. Para ver como o circuito funciona, observe os pares de portas AND para todos os bits, exceto as portas na extremidade. Quando C = 1, o membro da direita de cada par é ligado, passando o bit de entrada correspondente para a saída. Como a porta AND da direita está ligada à entrada da porta OR à sua direita, é executado um deslocamento para a direita. Quando C = 0, o membro da esquerda do par da porta AND é ligado, o que provoca um deslocamento para a esquerda. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 23 • Somadores Um computador que não possa somar números inteiros é quase inimaginável. Por consequência, um circuito de hardware para efetuar adição é uma parte essencial de toda CPU. A tabela verdade para adição de inteiros de 1 bit é mostrada na Figura 2.3.2(a). Há duas saídas presentes: a soma das entradas, A e B, e o transporte (vai-um) para a posição seguinte (à esquerda). Um circuito para calcular o bit de soma e o de transporte é ilustrado na Figura 2.3.2 (b). Esse circuito simples é conhecido como um meio-somador. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 24 Figura 2.3.2: (a) Tabela verdade para adição de 1 bit. (b) Circuito para um meio-somador. Embora um meio-somador seja adequado para somar os bits de ordem baixa de duas palavras de entrada de múltiplos bits, ele não servirá para uma posição de bit no meio da palavra porque não trata o transporte de bit da posição à direita (vem-um). Em seu lugar, precisamos do somador completo da Figura 2.3.2. Pela inspeção do circuito, deve ficar claro que um somador completo é composto de dois meios-somadores. A linha de saída Soma é 1 se um número ímpar A, B e o vem-um (carry in) forem 1. O vai-um (carry out) é 1 se A e B forem ambos 1 (entrada esquerda para a porta or) ou se exatamente um deles for 1 e o bit de vem-um (carry in) também é 1. Juntos, os dois meios-somadores geram a soma e também os bits de transporte. Para construir um somador para palavras de 16 bits, por exemplo, basta repetir o circuito da Figura 2.3.2(b) 16 vezes. O vai-um de um bit é usado como vem- um para seu vizinho da esquerda. O vem-um do bit da extrema direita está ligado a 0. Esse tipo de somador é denominado somador de transporte encadeado porque, na pior das hipóteses, somando 1 a 111...111 (binário), a adição não pode ser concluída até que o vai-um tenha percorrido todo o caminho do bit da extrema direita até o da extrema esquerda. Também existem somadores que não têm esse atraso e, portanto, são mais rápidos – em geral, são os preferidos. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 25 Como exemplo simples de um somador mais rápido, considere subdividir um somador de 32 bits em uma metade inferior e uma metade superior de 16 bits cada. Quando a adição começa, o somador superior ainda não pode trabalhar porque não sabe qual é o vem-um por 16 tempos de adição. Figura 2.3.2: Tabela verdade para somador completo. (b) Circuito para um somador completo. Contudo, considere essa modificação no circuito. Em vez de uma única metade superior, vamos dar ao somador duas metades superiores em paralelo duplicando o hardware da metade superior. Desse modo, agora o circuito consiste em três somadores de 16 bits: uma metade inferior e duas metades superiores, U0 e U1 que funcionam em paralelo. Um 0 é alimentado em U0 como vai-um; um 1 é alimentado em U1 como vai-um. Agora, ambos podem iniciar ao mesmo tempo do que a metade inferior, mas somente um estará correto. Após 16 tempos de adição de bits, já se saberá qual é o vem-um que deve ir para a metade superior, portanto, agora já se pode selecionar a metade superior correta com base em duas respostas disponíveis. Esse estratagema reduz o tempo de adição por um fator de dois. Um somador como esse é denominado somador de seleção de transporte. Então, o estratagema pode ser repetido para construir cada somador de 16 bits com base em somadores de 8 bits repetidos e assim por diante. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 26 • Unidades lógica e aritmética Grande parte dos computadores contém um único circuito para efetuar AND, OR e soma de duas palavras de máquina. No caso típico, tal circuito para palavras de n bits é composto de n circuitos idênticos para as posições individuais de bits. A Figura Figura 2.3.3 é um exemplo simples de um circuito desses, denominado unidade lógica e aritmética (ULA) (Arithmetic Logic Unit – ALU). Ela pode calcular qualquer uma das quatro funções: 𝐴 and 𝐵, 𝐴 or 𝐵, �̅� ou 𝐴 + 𝐵, dependendo de as linhas de entrada de seleção de função 𝐹0 e 𝐹1 conterem 00, 01, 10 ou 11 (binário). Note que, aqui, 𝐴 + 𝐵 significa a soma aritmética de 𝐴 e 𝐵, e não a operação booleana OR. O canto inferior esquerdo de nossa ULA contém um decodificador de 2 bits para gerar sinais de enable (habilitação) para as quatro operações, com base nos sinais de controle 𝐹0 e 𝐹1. Dependendo dos valores de 𝐹0 e 𝐹1, exatamente uma das quatro linhas de habilitação é selecionada. Ativar essa linha permite que a saída para a função selecionada passe por ela até a porta OR final, para saída. O canto superior esquerdo contém a lógica para calcular 𝑨 AND 𝑩, 𝑨 OR, 𝑩 e �̅�, mas no máximo um desses resultados é passado para a porta or final, dependendo das linhas de habilitação que saem do decodificador. Como exatamente uma das saídas do decodificador será 1, exatamente uma das quatro portas AND que comandam a porta OR será habilitada; as outras três resultarão em 0, independente de 𝐴 e 𝐵. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. RicardoTadeu Ferracioli 27 Figura 2.3.3: ULA de 1 bit. Além de poder usar A e B como entradas para operações lógicas ou aritméticas, também é possível forçar quaisquer delas para 0 negando ENA ou ENB, respectivamente. Também é possível obter �̅� ativando INVA. Em condições normais, ENA e ENB são ambas 1 para habilitar ambas as entradas e INVA é 0. Nesse caso, A e B são apenas alimentados na unidade lógica, sem modificação. O canto direito inferior da ULA contém um somador completo para calcular a soma de A e B, incluindo manipulação de transportes (vai-um e vem-um), porque é provável que, em seu devido tempo, vários desses circuitos serão ligados juntos para efetuar operações de palavra inteira. Na verdade, existem circuitos como o da Figura 2.3.3 que são conhecidos como segmentos de bits (bit slices). Eles permitem que o projetista do computador monte uma ULA da http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 28 largura que quiser. A Figura 2.3.4 mostra uma ULA de 8 bits montada com 8 segmentos (slices) de ULA de 1 bit. O sinal inc só é útil para operações de adição. Quando presente, aumenta o resultado (isto é, soma 1 a ele), possibilitando o cálculo de somas como A + 1 e A + B + 1. Figura 2.3.4: Oito segmentos (slices) de ULA de 1 bit conectados para formar uma ULA de 8 bits. Os sinais de habilitação e inversão não são mostrados por simplicidade. 2.4. Clocks Em muitos circuitos digitais, a ordem em que os eventos ocorrem é crítica. Às vezes um evento deve preceder outro, às vezes dois eventos devem ocorrer simultaneamente. Para permitir que os projetistas consigam as relações de temporização requeridas, muitos circuitos digitais usam clocks para prover sincronização. Nesse contexto, um clock é um circuito que emite uma série de pulsos com uma largura de pulso precisa e intervalos precisos entre pulsos consecutivos. O intervalo de tempo entre as arestas correspondentes de dois pulsos consecutivos é denominado tempo de ciclo de clock. Em geral, as frequências de pulso estão entre 100 MHz e 4 GHz, correspondendo a ciclos de clock de 10 nanossegundos a 250 picossegundos. Para conseguir alta precisão, a frequência de clock normalmente é controlada por um oscilador de cristal. Muitos eventos podem ocorrer dentro de um computador durante um único ciclo de clock. Se eles devem ocorrer em uma ordem específica, o ciclo de clock deve ser dividido em subciclos. Uma maneira comum de prover resolução superior à do clock básico é aproveitar a linha de clock primária e inserir um circuito com um atraso conhecido, gerando assim um sinal de clock secundário deslocado em certa fase em relação ao primeiro, conforme mostra a Figura 2.4.1 (a). O http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 29 diagrama de temporização da Figura 2.4.1(b) dá quatro referências de tempo para eventos discretos: 1. Fase ascendente de C1. 2. Fase descendente de C1. 3. Fase ascendente de C2. 4. Fase descendente de C2. Vinculando diferentes eventos às várias fases, pode-se conseguir a sequência requerida. Se forem necessárias mais do que quatro referências de tempo dentro de um ciclo de clock, podem-se puxar mais linhas da linha primária, com diferentes atrasos, se for preciso. Em alguns circuitos, estamos interessados em intervalos de tempo em vez de instantes discretos de tempo. Por exemplo, pode-se permitir que algum evento aconteça toda vez que C1 estiver alto, em vez de exatamente na fase ascendente. Outro evento só poderá acontecer quando C2 estiver alto. Se forem necessários mais de dois intervalos diferentes, podem ser instaladas mais linhas de clock ou pode-se fazer com que os estados altos dos dois clocks se sobreponham parcialmente no tempo. No último caso, podem-se distinguir quatro intervalos distintos: 𝐶1̅̅̅̅ AND 𝐶2̅̅̅̅ , 𝐶1̅̅̅̅ AND 𝐶2, C1 AND 𝐶2̅̅̅̅ e C1 AND 𝐶2. A propósito, clocks são simétricos, com o tempo gasto no estado alto igual ao tempo gasto no estado baixo, como mostra a Figura 3.20(b). Para gerar um trem de pulsos assimétrico, o clock básico é deslocado usando um circuito de atraso e efetuando uma operação AND com o sinal original, como mostra a Figura 2.4.1 abaixo como C. Figura 2.4.1: (a) Um clock. (b) Diagrama de temporização para o clock. (c) Geração de um clock assimétrico. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 30 3. MEMÓRIAS 3.1. Memórias de 1 bit Para criar uma memória de 1 bit (“latch”), precisamos de um circuito que “se lembre”, de algum modo, de valores de entrada anteriores. Tal circuito pode ser construído com base em duas portas NOR, como ilustrado na Figura 3.1(a). Circuitos análogos podem ser construídos com portas NAND, porém, não vamos mais mencioná-los porque são conceitualmente idênticos às versões nor. O circuito da Figura 3.1(a) é denominado latch SR. Ele tem duas entradas, S, para ativar (setting) o latch, e R, para restaurá-lo (resetting), isto é, liberá-lo. O circuito também tem duas saídas, 𝑄 e �̅�, que são complementares, como veremos em breve. Ao contrário de um circuito combinacional, as saídas do latch não são exclusivamente determinadas pelas entradas atuais. Figura 3.1: (a) Latch nor no estado 0. (b) Latch nor no estado 1. (c) Tabela verdade para nor. Para ver como isso ocorre, vamos supor que ambos, S e R, sejam 0, o que é verdade na maior parte do tempo. Apenas para polemizar, vamos supor que 𝑄 = 0. Como Q é realimentado para a porta NOR superior, ambas as suas entradas são 0, portanto, sua saída, �̅�, é 1. O 1 é realimentado para a porta inferior que, então, tem entradas 1 e 0, resultando em Q = 0. Esse estado é no mínimo coerente e está retratado na Figura 3.1(a). http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 31 Agora, vamos imaginar que Q não seja 0, mas 1, com R e S ainda 0. A porta superior tem entradas de 0 e 1, e uma saída, �̅�, de 0, que é realimentada para a porta inferior. Esse estado, mostrado na Figura 3.21(b), também é coerente. Um estado com as duas saídas iguais a 0 é incoerente, porque força ambas as portas a ter dois 0 como entrada, o que, se fosse verdade, produziria 1, não 0, como saída. De modo semelhante, é impossível ter ambas as saídas iguais a 1, porque isso forçaria as entradas a 0 e 1, o que resultaria 0, não 1. Nossa conclusão é simples: para R = S = 0, o latch tem dois estados estáveis, que denominaremos 0 e 1, dependendo de Q. Agora, vamos examinar o efeito das entradas sobre o estado do latch. Suponha que S se torna 1 enquanto Q = 0. Então, as entradas para a porta superior são 1 e 0, forçando a saída �̅� a 0. Essa mudança faz ambas as entradas para a porta inferior serem 0, forçando a saída para 1. Portanto, ativar S (isto é, fazer com que seja 1) muda o estado de 0 para 1. Definir R em 1 quando o latch está no estado 0 não tem efeito algum porque a saída da porta NOR inferior é 0 para entradas de 10 e entradas de 11. Usando raciocínio semelhante, é fácil ver que definir S em 1 quando em estado Q = 1 não tem efeito algum, mas definir R leva o latch ao estado Q = 0. Resumindo, quando S é definido em 1 momentaneamente, o latch acaba no estado Q = 1, pouco importando seu estado anterior. Da mesma maneira, definir R em 1 momentaneamente força o latch ao estado Q = 0. O circuito “se lembra” se foi S ou R definido por último. Usando essa propriedade podemos construir memórias de computadores.• Latches SR com clock Muitas vezes é conveniente impedir que o latch mude de estado, a não ser em certos momentos especificados. Para atingir esse objetivo, fazemos uma ligeira modificação no circuito básico, conforme mostra a Figura 3.2, para obter um latch SR com clock. http://www.portaleletronica.com.br/ Arquitetura de Computadores Nível 0: Lógico Digital – Rev1 www.portaleletronica.com.br Prof. Ricardo Tadeu Ferracioli 32 Figura 3.2: Latch SR com clock. Esse circuito tem uma entrada adicional, o clock, que em geral é 0. Com o clock em 0, ambas as portas AND geram saída 0, independentemente de ser S e R, e o latch não muda de estado. Quando o clock é 1, o efeito das portas AND desaparece e o latch se torna sensível a S e R. Apesar de seu nome, o sinal do clock não precisa ser gerado por um clock. Os termos enable e strobe também são muito usados para indicar que a entrada do clock é 1; isto é, o circuito é sensível ao estado de S e R. Até aqui evitamos falar no que acontece quando ambos, S e R, são 1, por uma boa razão: o circuito se torna não determinístico quando ambos, R e S, finalmente retornam a 0. O único estado coerente para S = R = 1 é 𝑄 = �̅� = 0; porém, assim que ambas as entradas voltam para 0, o latch deve saltar para um de seus dois estados estáveis. Se quaisquer das entradas cair para 0 antes da outra, a que permanecer em 1 por mais tempo vence, porque, quando apenas uma entrada for 1, ela força o estado. Se ambas as entradas voltarem a 0 ao mesmo tempo (o que é muito improvável), o latch salta aleatoriamente para um de seus estados estáveis. http://www.portaleletronica.com.br/