·
Engenharia Elétrica ·
Circuitos Elétricos 2
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
13
Exercícios - Capítulo 10 2022-1
Circuitos Elétricos 2
UNESP
23
Memória Rom - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
18
Memórias Rams - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
20
Dynamic Ram - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
4
Exercícios - Circuitos Elétricos 2 2022 1
Circuitos Elétricos 2
UNESP
4
Exercícios - Circuitos Elétricos 2 2022-1
Circuitos Elétricos 2
UNESP
7
Expansão de Memórias Ram Ou Rom - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
2
Lista 1 - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
23
Memórias - Terminologias - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
2
Lista 2 - Memórias Semicondutoras - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
Texto de pré-visualização
Campus de Ilha Solteira Faculdade de Engenharia de Ilha Solteira - Departamento de Engenharia Elétrica Circuitos Digitais II - Profa. Suely Cunha Amaro Mantovani - 2osem-2021 CIRCUITOS DIGITAIS II Aritmética Digital: Operações e Circuitos (Livro texto-TOCCI – cap. 6) Objetivos Executar adição, subtração, multiplicação e divisão de 2 números binários; Comparar as vantagens e desvantagens entre 3 diferentes sistemas de representação de números binários com sinal; Executar operações com números em BCD e números em hexadecimal; Descrever a operação básica da Unidade Lógica e Aritmética - ULA. Sumário 1. Introdução 2. Adição Binária 3. Representação de números com sinal 4. Overflow aritmético 5. Multiplicação e divisão 6. Adição binária em BCD 7. Aritmética hexadecimal 8. Circuitos Aritméticos 9. Unidade Lógica e Aritmética. Campus de Ilha Solteira 2 1. Introdução Os computadores e todo tipo de processador aritmético executam várias operações aritméticas numéricas que são representadas na forma binária. Por isso, neste primeiro tópico estudam-se os princípios básicos que são necessários para o entendimento de como as máquinas digitais executam suas operações aritméticas. Além das operações aritméticas, estudam-se os circuitos lógicos reais (básicos) que executam estas operações nos sistemas digitais. 2. Adição Binária A adição de dois números binários é executada da mesma forma que a adição de números decimais: Adição decimal 637 362 75 2 1 MSD- Most Significant Digit LSD- Least Significant Digit Adição binária Na adição binária, considerando 2 (dois) dígitos binários (bits) A e B , podem ocorrer 4 casos, em qualquer posição: sendo S - soma , Ci+1 - carry Campus de Ilha Solteira 3 Formalizando para dois números binários A e B de n dígitos cada, tem-se: 0 2 1 0 2 1 0 2 1 ..... .......... __________ __________ ......... .......... ....... .......... S S S S S B B B B A A A A n n n n n n n A soma S, portanto, terá um dígito a mais que os dois números que estão sendo somados. Cada dígito Si da soma é determinado pelos dígitos Ai e Bi. Ex. soma binária: 1001 110 11 0 1 1 Nota-se que: 1. Não é necessário considerar a adição de mais de dois números por vez, porque em todos os sistemas digitais os circuitos que executam a adição manuseiam sempre dois números de cada vez. Aos modernos computadores, que executam as operações em alguns nano segundos, isto não constitui um problema; 2. A adição é a mais importante operação aritmética em sistemas digitais. As operações de subtração, multiplicação e divisão são executadas pelos computadores atuais (e calculadoras) usando somente adição em suas operações básicas; 3. Subtração Binária 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 Ci1 SUB B A sendo SUB- resultado da subtração e Ci-1- pedido de empréstimo ou borrow. Campus de Ilha Solteira 4 3. Representação de números com sinal Em computadores digitais os números binários são representados por um conjunto de dispositivos armazenadores binários, por ex. flip -flops, onde cada dispositivo representa um bit. Um registrador (formado por um conjunto de flip - flops) de 4-bits pode armazenar números de 0 a 15, conforme a tabela verdade, Tabela 1 a seguir, representando a magnitude do número (números sem sinal). Tabela 1 - Tabela com números sem sinal Dec Binário s/sinal 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 Para representação de números com sinais existem três esquemas: Representação de números por Sinal-Magnitude Números com sinal em Complemento de Um Representação de números com sinal em Complemento de Dois. Campus de Ilha Solteira 5 A representação de números em registradores usa os estados SET e RESET dos flip- flops para representar os numerais 0 e 1, respectivamente. A representação da Figura 1 está na forma circular para lembrar que o registrador de 4 bits tem um número finito de estados e após passar por cada estado, volta para o estado inicial. O registrador pode ser designado como um registrador de módulo 16 (2n), onde n é o número de bits do contador. Figura 1- Representação circular para um registrador de 4 bits. Fonte: Tocci, Widmer, Moss (2019) Este modo de representar o registrador indica que o ponteiro que representa a propriedade do registrador de 'girar' pelos seus estados em resposta ao pulso de relógio, pode ser usado para efetuar operações aritméticas de soma e subtração avançando ou recuando o ponteiro uma posição, para indicar uma contagem: Operação Somar: limpar o registrador (resetar, o ponteiro aponta para 0000); avançar o ponteiro para a posição da primeira parcela e, em seguida, avançar o ponteiro um número de estados igual à segunda parcela; a posição final do ponteiro indicará o resultado da operação. Operação Subtrair: limpar o registrador (ponteiro em 0000); em seguida, o ponteiro é deslocado para a posição da primeira parcela (minuendo); depois o ponteiro deve recuar o número de posições igual ao valor da segunda parcela (subtraendo). Assim, o ponteiro indicará a posição igual ao valor da subtração. Observe que as operações são válidas somente dentro do módulo do registrador, isto é, operações no intervalo de 0 a 15. 3.1 Representação de números com sinal por Sinal-Magnitude Campus de Ilha Solteira 6 Para utilizar números com sinal na representação de números por Sinal-Magnitude usa-se o flip-flop da posição mais significativa (MSB) do registrador, para indicar o sinal do número. Por convenção adota-se: 0 representa o bit de sinal para números positivos 1 representa o bit de sinal para números negativos Exemplo de representação de sinal-magnitude para o número 52, representado com 7 bits, sendo seis bits para magnitude e um bit do sinal (MSB): : Fonte: Tocci, Widmer, Moss (2019) Mostra-se na Figura 2 o registrador circular módulo 16 com números positivos e negativos. Observe que existem na representação sinal-magnitude dois ‘0s’(zeros), -0=1000 e +0=0000. A existência de dois ‘0s’ torna a representação sinal-magnitude difícil de ser usada para operações no registrador, simplesmente avançando ou recuando o ponteiro. Figura 2- Representação circular de números com sinal, por sinal-magnitude (com 4 bits). Campus de Ilha Solteira 7 Fonte: Tocci, Widmer, Moss (2019) 3.2 Representação de números com sinal em Complemento de Um Seja N um número binário qualquer positivo, então o complemento de um de N, N(1) é o equivalente negativo definido por, N(1)=(M-1)-N sendo M=2n (módulo) e n o número de bits de N. Caso o módulo seja M=3210=100000, então, N(1)=(100000-1)-00101=11111- 00101=11010. A representação em complemento de um para um registrador de quatro casas ou bits é mostrada na Figura 3. Observa-se também, a existência de dois ‘0s’ (zeros), 0000 e 1111, tornando os circuitos mais complexos. Figura 3- Representação circular para o complemento de um Campus de Ilha Solteira 8 Fonte: Tocci, Widmer, Moss (2019) A determinação do complemento de um de um número é obtida por meio de sucessivas subtrações, dígito a dígito, do número 1. O complemento de um pode ser calculado complementando bit a bit o número original, como mostram os exemplos anteriores. Exemplo de soma em binário para a representação em complemento de um. Usar os números 7 e 5 para executar todas as combinações possíveis de dois números com sinal: +7+5=.. ; +7-5=...; -7+5=...; -7-5=.... Resposta: para a realização destas operações em complemento de um é necessário usar um registrador de 5 bits (no mínimo). +7=00111.............. => -7= 11000 +5=00101............. .=> -5= 11010 12 5) ( 7 01100 00101 00111 com correção com correção. 2 5) ( 7) ( 11101 00101 11000 Obs. Para corrigir a existência, dos dois zeros, se houver vai-um (carry) na posição mais significativa, devemos somar um ao resultado e isto feito, ignora-se o vai-um. Na Tabela 2 têm-se as duas representações explicadas até o momento, sinal – magnitude e complemento de 1. Campus de Ilha Solteira 9 Tabela 2- Representação de números s/ sinal e com sinal Portanto, a faixa de valores que pode ser representada em C1 tendo n-1 bits de magnitude é ±(2n-1 -1), assim como em magnitude – sinal. 3.3 Representação de números com sinal em Complemento de Dois Seja N um número binário qualquer positivo, então o complemento de dois de N, N(2) é definido por, N(2)=M-N sendo M=2n (módulo) e n o número de bits de N. Observa-se que o valor do complemento de dois de um número depende do módulo do registrador, isto é, de quantos bits são usados para escrever o número. Então, o mesmo número tem complemento de dois diferentes se está em um registrador de 4-bits (M=16) ou em registrador de 5bits (M=32). Seja N=0101, o módulo M=1610=10000, então, Campus de Ilha Solteira 10 Caso o módulo seja M=3210=100000, então N(2)=100000-00101=11011(acrescenta- se uns a esquerda do número) O complemento de dois de um número não pode ser especificado com certeza, a não ser que o módulo seja especificado (ou o registrador). A avaliação do complemento de dois de um número envolve uma sucessão de subtrações, bit a bit, do número binário 10 (210). Para obter o complemento de dois de um número tem-se então: Método por definição: o complemento de dois de um número binário é formado tomando-se o complemento de um do número, depois se adiciona um, à posição LSB (Least Significative Bit ) Método prático: 1. Escrever o número com tantos bits quantos forem os do registrador onde for armazenado o número; 2. Começando com o bit menos significativo, percorrer o número da direita para esquerda, deixando inalterados os bits iguais a 0 até encontrar o primeiro 1, deixar este um (1) inalterado; 3. Complementar os demais bits do número. Assim, o sistema de representação por complemento de dois de números com sinal estabelece que o negativo de um número qualquer N é dado pelo complemento de dois do número N. Então, dado N qualquer, -N=N(2)=M-N. Campus de Ilha Solteira 11 Figura 4- Representação circular para o complemento de dois Ex: seja a operação 3-7 a ser realizada no registrador de quatro bits da Figura 4. ajustar o ponteiro em 0000 ( resetar o registrador ); avançar três posições e o ponteiro indica o minuendo 3(0011); recuar sete posições ( valor do subtraendo 7) ; o ponteiro indicará 1100 que é igual a - 4 na representação em complemento de dois. O registrador de módulo 16 (Figura 4) tem apenas um único 0 e fornecerá os números no intervalo -8 até +7. O bit mais a esquerda (MSB) indica o sinal do número: se for igual a ‘0’, o número é positivo; se o MSB é igual a ‘1’, o número é negativo. Esta representação permite que a soma seja feita pelo avanço e a subtração pelo retardo do ponteiro. O resultado da operação encontra-se dentro do intervalo do registrador. Pode-se obter o complemento de dois pela representação por complemento de um de um número, adicionando 1 ao complemento de um. N(2)=M-N e N(1)=(M-1)-N, então N(1)=(M-N)-1=N(2)-1, ou N(2)=N(1)+1 Em outras palavras, para se obter o complemento de dois de um número binário, deve-se escrever o número com a quantidade de bits do registrador, complementar o número bit a bit e somar 1 ao resultado. A representação de números binários em complemento de dois torna possível transformar a operação de subtração em uma operação de soma. Sejam N1 e N2 números binários quaisquer, então, N1-N2=N1+(-N2)=N1+N2 (2) Assim, a subtração de dois números binários pode ser obtida fazendo a soma do minuendo com o complemento de dois do subtraendo. No registrador circular sempre Campus de Ilha Solteira 12 serão realizadas operações de soma, avançando o ponteiro*, eliminando o problema de recuar o ponteiro do registrador. *Ex : 3-5 => 3+(-5) = 3+(1110) => -5 em complemento de dois é 0101=>1011.O resultado vai ser -2 (1110). São resumidas na Tabela 3, as representações de números com sinal abordadas. Tabela 3- Registrador de 4 bits com as representações s/sinal e c/sinal. Dec Binário s/sinal Dec Sinal magnitude N0 de n bits +/- (2n-1 - 1) Dec Complemento de um N0 de n bits +/- (2n-1 - 1) Dec Complemento de dois N0 de n bits -2n-1 a + 2n-1 - 1 0 0000 +0 0000 +0 0000 +0 0000 1 0001 +1 0001 +1 0001 +1 0001 2 0010 +2 0010 +2 0010 +2 0010 3 0011 +3 0011 +3 0011 +3 0011 4 0100 +4 0100 +4 0100 +4 0100 5 0101 +5 0101 +5 0101 +5 0101 6 0110 +6 0110 +6 0110 +6 0110 7 0111 +7 0111 +7 0111 +7 0111 8 1000 -0 1000 -7 1000 -8 1000 9 1001 -1 1001 -6 1001 -7 1001 10 1010 -2 1010 -5 1010 -6 1010 11 1011 -3 1011 -4 1011 -5 1011 12 1100 -4 1100 -3 1100 -4 1100 13 1101 -5 1101 -2 1101 -3 1101 14 1110 -6 1110 -1 1110 -2 1110 15 1111 -7 1111 -0 1111 -1 1111 Fonte: Própria do autor Campus de Ilha Solteira 13 O sistema em complemento de dois é frequentemente usado para representar números com sinal porque permite executar as operações de subtração por meio da adição, ou seja, usa o mesmo circuito para adicionar e subtrair, significando uma economia de hardware. Obs. 1- Negação é a operação de converter um número positivo no equivalente negativo ou um número negativo em seu equivalente positivo, basta para isso fazer o complemento de 2 do número, se o número é representado em complemento de 2. 2- Caso especial na representação em complemento de dois: 1000 ====== 23 = -8 10000 ======= 24 = -16 100000 ====== 25 = -32, ou o seu equivalente decimal é -2n-1 , sendo (n-1) o número de bits da magnitude. Portanto, a faixa de valores que pode ser representada em C2 tendo n-1 bits de magnitude é -2n-1 a + 2n-1 -1, ou seja, há um total de 2n diferentes valores incluindo o zero . Exemplos de adição e subtração em complemento de dois. Efetuar: +9+5= ;+9-5=; -9+5=; -9-5=. Resposta: Para a realização destas operações é necessário um registrador de 5 bits, no mínimo: +9=01001=> -9= 10111, +5=00101=> -5= 11011 Campus de Ilha Solteira 14 4. Overflow Aritmético Ao se utilizar um número fixo de bits em um registrador, por exemplo, pode haver uma operação de soma (ou subtração) que leve a um resultado que está fora das possibilidades de representação daquele conjunto de bits, a esta situação diz-se que ocorreu overflow. Ex: -9 +-8 10111 + 11000 O overflow (ou estouro) ocorre quando adiciona-se dois números positivos ou dois números negativos, produzindo um resultado incorreto. Esta ocorrência é detectada verificando o bit do sinal dos números que estão sendo adicionados. Em um computador, um circuito especial é usado para detectar qualquer erro de overflow e o erro do bit do sinal. 5. Multiplicação e Divisão A multiplicação de números binários sem sinal é feita da mesma maneira como a multiplicação de números decimais. Números binários sem sinal (forma binária verdadeira), ex. (dado em sala) 1001(multiplicando) x1011(multiplicador) => 0910 x 1110 A maioria das máquinas digitais adicionam dois números por vez. Por esta razão os produtos parciais, formados durante a multiplicação são adicionados dois de cada vez. Para multiplicar números com sinal usando a representação em complemento de dois, têm-se as seguintes regras: - Se os dois números multiplicados são positivos, eles são multiplicados conforme visto anteriormente. O resultado é positivo com o bit do sinal igual a zero; Campus de Ilha Solteira 15 - Quando os dois números são negativos eles estarão na forma do complemento de dois. Obtém-se o complemento dois de cada um, convertendo-os para números + (negação), só então são multiplicados (na forma verdadeira). O produto é positivo e o bit do sinal é igual a zero; - Quando os números têm sinais diferentes, o número negativo é convertido para uma magnitude positiva, tomando-se seu complemento de dois. O resultado do produto estará na forma magnitude verdadeira (direta), contudo o produto é negativo, uma vez que os números originais são de sinais opostos. Assim, o complemento de dois é aplicado ao produto e o bit do sinal deve ser ‘1’. Ex. 710 x(-2 10): na verdade faz-se 7x2, em binário, depois o resultado é convertido para um número binário negativo. 0111 e 1110, => 0111 e 0010 (feito em sala de aula) Divisão binária. Mesmo processo que é seguido para divisão decimal (sem sinal). Para números com sinal, vale a mesma regra da multiplicação binária. 6. Adição em BCD Muitos computadores e calculadoras usam o código BCD ( Binary coded Decimal) para representar números decimais. O código BCD para a representação decimal de números de zero a 9 usando 4 bits é dado por : 0000 (0), 0001(1),0010(2),0011(3),0100(4), .....1001(9). A adição de números decimais na forma BCD tem as seguintes regras: Soma ≤ 9 . A adição é realizada com adição normal e a soma está dentro do campo dos números da forma BCD. 09 4) ( 05 1001 0100 0101 78 32 046 0111 0011 0100 1000 0010 0110 Soma > 9. Campus de Ilha Solteira 16 Sempre que ocorrer um código que não representa um dígito em BCD, deve-se fazer a correção somando 6 (0110), onde 6 representa as restantes combinações do código para 4 dígitos binários (1010,1011,1100, 1101,1110, 1111) que não fazem parte do código, portanto, fazendo a correção. Resumindo: o processo de soma de números codificados em BCD faz-se como a soma normal dos números binários diretos. Se o resultado não for um número BCD, isto é, não for de 0 a 9 ou um vai-um ocorrer, então 6 , em binário, é somado ao número. Ex: 59+38 , somar em BCD. 7. Aritmética hexadecimal Números hexadecimais são usados em linguagem de máquina de programação de computador: 0,1,2,.......9,A,B,C,D,E,F. A adição é feita do mesmo modo que a adição decimal, e portanto, pode-se adotar o procedimento a seguir: 1. Somar os dois dígitos hexadecimais em decimal, mentalmente inserindo o decimal equivalente para os dígitos >9; 2. Se a soma ≤ 15 pode-se expressar a soma em dígitos hexadecimais; 3. Se a soma ≥16 subtrair 16 e transportar o 1 para a posição do próximo dígito; Campus de Ilha Solteira 17 7C 24 58 10 10 10 124 36 88 16 16 16 3 4 58 A B 8+B=19-16= 3 e vai – um (1) A subtração pode ser realizada através do método usado para números binários, ou seja, o complemento de dois. Para encontrar o complemento de dois do número hexadecimal têm-se dois métodos: 1. Converter o número em binário tomar o complemento de dois do equivalente binário e então convertê-lo de volta para a forma hexadecimal, e somente depois fazer a operação de soma com o resultado. Por exemplo: 3A = 0011 1010 tomando o complemento de dois tem-se: 11000110 =C6 2. Procedimento rápido para encontrar o complemento de dois: subtrair cada dígito de F, então adicionar 1 . Por exemplo: 3A = 0011 1010 Fazendo a operação 40 -3A= 7.1 Representação de números hexadecimais com sinal Os dados em um computador (memória, HD, etc.) são armazenados em bytes (8 bits). O byte é armazenado em uma determinada localização na memória e frequentemente é expresso em hexadecimal pela eficiência e sujeito a menos erros . Quando o dado é um número com sinal tem-se a seguinte convenção: Qualquer valor binário negativo terá ‘1’ no bit do sinal (MSB) , ou seja , o número em hexadecimal será ≥ 8 (8,9,A,B,C,D,E,F); Campus de Ilha Solteira 18 Qualquer valor binário positivo terá ‘0’ no bit do sinal (MSB), ou seja, o número em hexadecimal será < 8(7,6,.. ...,0). Ex . Memória (fictícia) iniciando no endereço 4000 com a seguinte lista de dados armazenados: Hex Adress Dado binário arm. Valor em hex Valor decimal 4000 00111010 3A +58 4001 11100101 E5 -27 4002 01010111 57 +87 4003 10000000 80 -128 8. Circuitos Aritméticos As operações em computadores e calculadoras digitais são executadas em Unidades lógicas e Aritméticas, Figura 5, onde portas lógicas e flip-flops são combinados, tal que, realizem somas, subtrações, multiplicação e divisão binária, de acordo com as instruções da unidade de controle. Esses circuitos executam operações aritméticas com velocidade cada vez maiores (nanossegundos). Figura 5- Blocos Funcionais de uma ULA Campus de Ilha Solteira 19 Fonte: Tocci, Widmer, Moss (2019) Obs: Curiosidades sobre os circuitos aritméticos : (https://gizmodo.uol.com.br/chips- computador/) e https://www.topgadget.com.br/howto/tech/como-o-processador-e-projetado-e- construido.htm ) Neste tópico são estudados alguns dos circuitos aritméticos básicos que são usados para executar as operações discutidas anteriormente. Em alguns casos será visto o projeto do processo real, com o objetivo de treinar o uso das técnicas de Álgebra Booleana, embora sabendo que os circuitos podem estar comercialmente disponíveis na forma de CIs. 8.1 Soma de números binários Sejam A e B números binários de n dígitos cada e S é a soma de A mais B que é um número binário de n+1 dígitos. Então, o dígito Si é determinado unicamente pelos dígitos Ai e Bi de A e B. Circuito Meio-Somador Os métodos de soma de números binários envolvem a soma de dígitos coluna a coluna. Então, a adição de dois números binários Ai e Bi podem ser calculados conforme mostrado a seguir, Figura 6. Figura 6- (a) Exemplo de soma (b) Tabela Verdade Campus de Ilha Solteira 20 Fonte: Própria do autor Na Figura 6(a) mostra-se a adição de dois dígitos binários. A soma gera um dígito soma Si na mesma i-ésima coluna que tem a mesma significância numérica que Ai e Bi. A soma pode gerar um dígito de vai-um Ci+1 que tem significância numérica maior que as parcelas Ai e Bi. Na Figura 6(b) mostra-se a tabela verdade para as somas feitas na Figura7(a); uma linha para cada operação e as saídas Si e Ci+1. Para realizar essas somas e fornecer as saídas Si e Ci+1 , o circuito pode ser derivado da tabela verdade da Figura 6(b). A parcela soma Si pode ser obtida pela XOR de Ai e Bi. O dígito vai-um Ci+1 é dado por uma porta AND de Ai e Bi. Mostra-se na Figura 7(a) o circuito lógico com portas e na Figura 7(b) o símbolo. A estrutura que soma dois dígitos binários é designada como Meio-Somador, e abreviada como HA (Half -Adder). Figura 7. a) circuito lógico. b) símbolo para o meio-somador Fonte: Própria do autor Circuito Somador Inteiro A soma coluna por coluna de dois números binários de n dígitos produz um vai-um Ci+1 que deve ser somado na próxima coluna de maior significância: Campus de Ilha Solteira 21 O meio-somador só pode realizar a primeira operação de A0 mais B0, nas outras colunas são necessárias à adição de três bits Ai, Bi e Ci (vai-um da coluna i-1).O dígito mais significativo da soma é o dígito vai-um para coluna n, ou seja Cn. Assim, na soma de Ai, Bi e o vai-um Ci são gerados Si e o vai-um Ci+1. Na tabela verdade, Tabela 4, mostra-se a geração dos bits soma Si e vai-um Ci+1. O circuito lógico para a geração dos bits soma, Si e de vai-um Ci+1, visto na Figura 8 podem ser obtidos diretamente dos mapas K, para cada saída da tabela verdade, Tabela 4. Tabela 4-Tabela Verdade para o somador inteiro Campus de Ilha Solteira 22 Figura 8- Circuito para o Somador Inteiro ou Completo Soma Si Vai-Um Ci+1 Fonte: Própria do autor Por meio de simplificações algébricas pode-se mostrar que o bit soma Si é igual ao XOR ou EX- OR das entradas Ai, Bi, e Ci. Então, o circuito de portas lógicas para somar três bits chama-se Somador Inteiro (ou Full – Adder do inglês ), designado FA, e tem a estrutura e símbolos mostrados na Figura 9. Figura 9 - Somador Inteiro. (a) Circuito Lógico com portas EX -|OR. (b) Símbolo Lógico. Campus de Ilha Solteira 23 (a) (b) obs: CIs somadores completos de 4 bits encontrados no mercado de componentes: 74HC283 ou 7483. Somador Série Síncrono O somador série, mostrado na Figura 10, soma uma coluna de cada vez em sincronismo com o sinal de relógio. As parcelas são carregadas em registradores de deslocamento de n bits e um registrador de deslocamento de n+1 bits receberá a soma. Depois de cada pulso de relógio, os bits das parcelas são colocados na entrada do somador juntamente com o bit de vai-um e, o bit da soma é registrado no registrador de deslocamento da soma. O flip-flop tipo D atrasa o bit de vai-um em um período de relógio, de modo que seja somado na próxima coluna de maior significância. Para análise de seu funcionamento supõe-se que o atraso de propagação através do somador inteiro é pequeno em relação ao período do relógio. Campus de Ilha Solteira 24 Figura 10 - Somador Série síncrono Fonte: Taub (1984) Inicialmente, antes da primeira borda de gatilho do sinal de relógio, os bits A0 e B0 estarão presentes às entradas do FA e Ci=C0=0. S0 e C1 são gerados. Na primeira borda de gatilho do clock , S0 é armazenado. A1 e B1 se deslocarão para a entrada do somador, gerando S1 e C2 e assim por diante. Para somar dois números de n bits cada, o somador série necessita de n+1 pulsos de relógio. Embora seja econômico em termos de circuitos, o somador série é lento. Somador Binário Paralelo O circuito da Figura 11 a seguir, embora gaste mais somadores, um para cada coluna das parcelas, é mais rápido, pois soma todos os bits simultaneamente. É necessário que todos os bits Ai e Bi estejam disponíveis em registradores, para serem aplicados nas entradas dos somadores ao mesmo tempo. A soma estará pronta na saída em um ciclo de relógio, desconsiderando os atrasos de propagação nos somadores. Campus de Ilha Solteira 25 Figura 11 - Somador paralelo Fonte: Taub (1984) Na realidade, é necessário esperar um determinado intervalo de tempo para que os bits de vai-um se propaguem através de cada somador, antes de considerar válido o resultado da soma na saída. O tempo de propagação do vai-um torna o somador paralelo inaplicável em várias situações. Considerando que cada porta lógica tem um atraso de propagação igual a um tap, então, um bloco somador, tendo em vista a porta lógica OR - EX como um circuito de 2 níveis , tem na sua soma um atraso de 4tap . Sabendo que para somar duas parcelas de n bits cada, são necessários n somadores, então o resultado da soma somente está disponível na saída em um intervalo de tempo igual a n(2tap). O atraso do somador paralelo aumenta com o número de bits das parcelas a serem somadas, tornando-o inaplicável para soma de palavras com vários bits de comprimento. Faixa de valores para Ai e Bi nos modernos computadores vai até 64 bits. Quando comparado ao somador série síncrono diz- se ser extremamente rápido. Atrasos (retardo) de propagação A velocidade das portas lógicas é controlada pelo tempo que gasta para comutar de um nível lógico para outro. O tempo que leva para comutar os níveis lógicos é o atraso de propagação (tP) ou atraso da porta(tap). As portas lógicas geralmente tem diferentes tempos Campus de Ilha Solteira 26 para chavear de um nível lógico ALTO para BAIXO (tPHL), e comutar do nível lógico BAIXO para ALTO (tPLH). Em geral, se usa um tempo médio igual a média dos tempos de comutação ALTO para BAIXO (tPHL) e BAIXO para ALTO (tPLH). Para uma porta AND TTL padrão, tPHL=7ns e tPLH=11ns, resultando um atraso de propagação médio tP=9ns. Em outras palavras o atraso de propagação é o intervalo de tempo entre pontos pré- definidos ( em geral, 50% do valor da tensão) do sinal de saída em resposta a uma transição do sinal de entrada, Figura 12. Figura 12 - Resposta de um inversor mostrando o atraso de propagação. Fonte: Tocci, Widmer, Moss (2019) Propagação do Carry A velocidade dos somadores paralelos é relativamente alta, desde que a adição dos bits seja simultânea. Contudo, esta velocidade é limitada pela propagação do carry ou Campus de Ilha Solteira 27 ripple (ondulação) carry. Na Figura 11, se cada FA tem um atraso de propagação de 40ns, então S3 atingirá o nível correto em até 120ns depois que C1 é gerado. 8.2 Somadores Rápidos Implementação do Lookahead Carry - Vai-um Antecipado. Esta lógica gera vai - uns individuais, através da definição da variável geração, Gi e da variável propagação Pi . Este circuito utiliza portas lógicas, mas com atraso de propagação menor. Este esquema requer uma quantidade de circuitos extras, mas produz somadores com alta velocidade. Muitos somadores rápidos disponíveis na forma de CIs utilizam a técnica de lookahead carry ou uma técnica similar para redução dos atrasos de propagação. O somador paralelo é mais rápido que o somador série , mas no somador paralelo é necessário esperar-se os resultados de todos os outros bits menos significativos, no pior caso. O resultado somente aparece na saída do somador completo após um tempo que pode corresponder no pior caso, aos atrasos de todos os outros somadores completos anteriores. Nos Somadores com transporte antecipado procura-se por um circuito onde se obtenha os bits de carry mais rápidos, do que no somador paralelo. Isto pode ser feito em todas as ordens, desde 20 até 2n ou então em algumas ordens pré-escolhidas. Portanto, considerando Ai e Bi bits de entrada na i-ésima coluna da soma de um número com diversos dígitos, define-se as quantidades Gi e Pi como, Gi = Ai . Bi e Pi =Ai Bi , sendo Gi a variável geração e Pi a variável propagação. Se Gi =1 Ai =Bi=1. Neste caso há um vai-um de saída Ci+1, independente de um vai –um de entrada Ci . O vai-um é gerado pelos valores dos bits na coluna i. De modo similar, se Pi =1 , é porque Ai =1 ou Bi=1 (mas não ambos ) e só haverá um vai-um de saída Ci+1, se existir um vai-um de entrada Ci . Portanto, Ci+1 não é gerado na coluna, mas se existir um vai-um de entrada, será propagado através da coluna. Inicialmente tem-se que, Si=Ai Bi Ci, então usando a definição anterior, pode- se escrever o Si como, Si= Pi Ci para o C i+1=AiBi+AiCi+BiCi, , em função de Gi e Pi , tem-se , C i+1=AiBi +AiCi( iB +Bi)+ BiCi( iA +Ai) Campus de Ilha Solteira 28 C i+1= AiBi + Ci( Ai iB + iA Bi)+ AiBiCi+AiBiCi C i+1= AiBi + Ci (Ai Bi) +AiBiCi C i+1= AiBi(1+Ci) + Ci (Ai Bi) C i+1= Gi+ CiPi Aplicando esta ideia a cada estágio do somador paralelo visto anteriormente, tem-se o somador com transporte antecipado da Figura 13, somador com transporte antecipado (carry lookahead) ou vai-um antecipado. Figura 13- (a) Unidade somadora. (b) Geradora de vai-um. Fonte: Taub (1984) Para dois números binários de quatro bits, as unidades somadoras permanecem iguais para todas as colunas, enquanto a estrutura geradora do vai-um modifica-se de coluna para coluna de acordo com a equação, Ci+1= Gi + PiCi , i=0 => C1=G0+P0C0 i=1 => C2=G1+P1C1=G1+P1 (G0+P0C0) =G1+P1G0+P1P0C0 i=2 => C3=G2+P2C2=G2+P2 (G1+P1G0+P1P0C0) =G2+P2G1+P2P1G0+P2P1P0C0 i=3 => C4=G3+P3C3=G3+P3 (G2+P2G1+P2P1G0+P2P1P0C0) =G3+P3G2+P3P2G1+P3P2P1G0+ P3P2P1P0C0 Campus de Ilha Solteira 29 Colocando em palavras a equação de C4 diz que, o vai-um aparece na saída do estágio três se for gerado naquele estágio OU , se for gerado no estágio dois E propagado através do estágio três , OU se for gerado no estágio um e propagado através do estágio 3 E 2, e assim por diante. Mostra-se na Figura 14, a estrutura do somador com vai-um antecipado para dois números binários de 4-bits. Figura14-Somador com vai-um antecipado com a unidade somadora e geradora de vai-um. Campus de Ilha Solteira 30 Fonte: Taub (1984) Cascata para 4 bits do Carry Lookahead - a soma se torna mais rápida do que os somadores de ripple carry (oscilação do carry ou transporte). Campus de Ilha Solteira 31 No caso de um somador com vai-um antecipado, considerando que uma porta XOR tem dois atrasos de propagação (2tap) e que no instante t=0 todos os bits das parcelas a serem somadas são aplicados nas entradas do somador, Para t= 2tap, tem-se P0 e G0 , e para t= 4tap, tem-se S0 Para t= 4tap, tem-se C1, C2, C3 e C4, e para t=6tap, tem-se os bits de soma S1, S2, S3. Depois de ultrapassado o primeiro estágio do somador, não há mais atrasos na geração dos bits da soma, independente do número de bits das parcelas a serem somadas, como mostrado pela figura anterior. Portanto, o somador com vai-um antecipado fornece um atraso constante, que não depende do tamanho das parcelas somadas. A desvantagem do somador com vai-um antecipado é o circuito gerador do vai-um, que cresce com a quantidade de bits somados. CIs MSI (número de portas de 20 a 200) somadores com vai-um antecipado: 7483A, 74LS83A, 74LS283, etc. Estes dispositivos (chips) são do tipo TTL, somadores paralelos de 4 bits. Os 283s são idênticos aos 83s (pequenas diferenças, Vcc e terra). O circuito integrado somador paralelo de quatro bits com circuitos somadores completos e um circuito de vai - um antecipado disponível comercialmente é o CI SN74F283. Mostram-se nas Figuras 15 e 16 o símbolo IEEE/ANSI (Institute of Electrical and Electronic Engineers)/ (American National Standards Institute) e o diagrama lógico para o somador SN74F283, respectivamente, onde as letras P, Q designam as entradas e as saídas do CI e devem ser usadas dentro do símbolo. Figura 15-CI SN74F283 Símbolo Lógico Fonte : Datasheet 74283 (2019) Campus de Ilha Solteira 32 Figura 16-CI SN74F283 Diagrama Lógico Fonte : Datasheet 74283 (2019) Somador de dois números A e B em blocos de 4 bits cada, usando uma Unidade de Carry Antecipado-UCA ( ou CLU da sigla em inglês), para gerar os vai-uns mais rápidos, C4 , C8 e C12 e C16, a partir dos P e G de cada bloco de 4 bits , Figura 17. Campus de Ilha Solteira 33 Figura 17- Cascata de somadores para 16 bits com UCA C4 *= G(3-0) + P(3-0) .C0 e assim por diante para C8 * e C12 * Fonte: Taub (1984) 9. Unidade Lógica e Aritmética A Unidade Lógica e Aritmética (ULA) é um circuito combinacional que recebe duas palavras de entrada de n bits A=An-1An-2 ...A1A0 e B=Bn-1Bn-2....B1B0. Essas entradas podem ser números ou uma informação codificada em binário. A ULA gera, então, uma função de saída F=Fn-1Fn-2... F1F0 que pode relacionar as entradas por lógica ou aritmética. Uma entrada de modo M determina se a função de saída F é lógica ou aritmética. Entradas seletoras de função S0, S1, S2,... determinam qual função específica será F. Uma ULA pode ser construída como uma cascata de vários estágios idênticos. Não existem regras de como projetar cada estágio da ULA, em geral, a aplicação determina o circuito de cada estágio. Uma ULA poderia ter a configuração da Figura 18, a seguir. Campus de Ilha Solteira 34 Figura 18 - Blocos ULA cascateados Fonte: Taub (1984) Neste circuito têm-se duas entradas A e B de 4 bits, uma entrada de modo M, duas entradas seletoras de função S1S0 e a função de saída F. Cada estágio da ULA poderia ter o circuito mostrado a seguir, Figura 19. Figura 19-Um exemplo de estágio para a ULA Campus de Ilha Solteira 35 Fonte: Taub (1984). Quando a operação lógica for desejada, então M=0, bloqueando o vai-um de cada estágio. E a saída F em cada estágio depende somente dos valores dos bits das entradas A e B (e dos bits seletores de função S1S0). No modo aritmético M=1, as portas que recebem o vai-um são habilitadas. Neste caso, a saída F, em cada estágio, depende também do vai-um de entrada nesse estágio. As funções lógicas e aritméticas geradas pela ULA são dadas pela Tabela 5 a seguir. Tabela 5-Tabela Verdade para o estágio de ULA Campus de Ilha Solteira 36 Fonte: Taub (1984). Existem diversos CIs disponíveis comercialmente que são classificados e vendidos como Unidades Lógicas Aritméticas, mesmo que não apresentem a capacidade lógica e aritmética de uma ULA de computadores atuais. Esses CIs ULAs são capazes de realizar várias operações lógicas e aritméticas diferentes, com dados binários de entrada. A operação específica que um CI ULA executa é determinada pelo código binário específico que é aplicado nas entradas dos bits seletores de função. E cada CI ULA possui um conjunto específico de funções que pode executar. O chip SN74LS181 é uma ULA e gerador de funções, que possui o equivalente a 75 portas, conforme mostrado em seu diagrama lógico na Figura 20. Figura 20- ULA 74LS181- Diagrama Lógico Campus de Ilha Solteira 37 Fonte: Electronic Components Datasheet Search (2019) Esse circuito realiza 16 operações aritméticas com duas palavras de 4-bits e todas as entradas e saídas podem ser ativas em nível ALTO ou nível BAIXO, por isto as designações dos pinos do CI estão indicadas complementadas e não complementadas. As operações são selecionadas pelos 4-bits seletores de função (S0, S1, S2, S3) e inclui adição, subtração, decremento e transferência direta, entre outras. Quando executa operações aritméticas, os vai-um internos devem ser habilitados aplicando um nível BAIXO na entrada de controle de modo (M), Tabela 6 Campus de Ilha Solteira 38 Um circuito de vai-um antecipado está disponível na ULA SN74LS181 para a geração rápida de vai-um através das variáveis P (PROPAGAÇÃO) e G (GERAÇÃO) simultâneas, em duas saídas para cascateamento (pinos 15 e 17). Essa ULA pode ser usada em combinação com o CI comercial SN54S182, uma unidade de geração de vai-um antecipado (VUA), para realizar operações aritméticas de alta velocidade. Tabela 6-ULA SN74LS181 Operações Lógicas e Aritméticas. Fonte: Taub (1984). Se a velocidade não é um fator crítico nas operações, então uma entrada de vai-um propagado (Cn) e uma saída de vai-um propagado (Cn+4) são disponíveis no chip. O atraso causado pelo vai-um propagado é minimizado pelos circuitos internos, de modo que as operações aritméticas com palavras de pequeno comprimento podem ser realizadas sem circuitos externos de vai-um. A ULA 74LS181 pode também ser aplicada como circuito comparador. A saída (A=B) é decodificada internamente a partir das saídas de função (F0, F1, F2, F3), de modo que quando duas palavras de iguais magnitudes são aplicadas nas entradas A e B, o pino (A=B) assumirá o nível ALTO para indicar a igualdade entre as duas entradas. A ULA deve estar no modo subtração, Cn=H e os bits seletores de função S3, S2, S1, S0 em L, H, H, L, respectivamente, quando realizar esta operação. Observe que a saída (A=B) é tipo coletor aberto e pode ser usada para fazer AND com fios. A saída de vai-um (Cn+4 ) pode também ser usada para fornecer informação da magnitude relativa. Campus de Ilha Solteira 39 Essa ULA fornece também 16 funções booleanas de duas variáveis, sem necessidade de circuitos externos. Essas funções lógicas são selecionadas pelas entradas dos bits seletores de função (S0, S1, S2, S3) com a entrada de controle de modo (M) no nível ALTO, para desabilitar o vai-um interno. Na Figura 21 têm-se a ULA TTL 74181 e o gerador de carry antecipado e na Figura 22 faz-se uma expansão de bits de ULA usando quatro 74181 em conjunto com o CI 74182 que antecipa o carry. Figura 21- ULA 74181 e o Gerador de carry antecipado ( Carry Lookahead Generator) Fonte: Taub (1984). Figura 22- 16-bit ALU com Carry Lookahead 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3 S2 S1 S0 F3 F2 F1 F0 A=B G P Cn+4 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 182 P3 P2 P1 P0 G3 G2 G1 G0 Cn Cn+z Cn+x P G Cn+y 13 3 1 14 5 4 2 15 6 12 11 9 10 7 Campus de Ilha Solteira 40 Fonte: Taub (1984). Referências Bibliográficas Datasheet 74F283. Disponível em: https://pdf1.alldatasheet.com/datasheet- pdf/view/15410/PHILIPS/74F283.html. Acesso em: 05 mar 2019 Electronic Components Datasheet Search. Disponível em: <http://html.alldatasheet.com/html-pdf/27999/TI/74LS181/21/1/74LS181.html>. Acesso em: 05 mar 2019. 182 P3 P2 P1 P0 G3 G2 G1 G0 Cn Cn+z Cn+x PG Cn+y 13 31 145 42 156 12 11 9 10 7 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 910 11 13 14 15 16 17 18 19 20 21 22 23 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 910 11 13 14 15 16 17 18 19 20 21 22 23 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 9 10 11 13 14 15 16 17 18 19 20 21 22 23 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 9 10 11 13 14 15 16 17 18 19 20 21 22 23 C0 C16 Campus de Ilha Solteira 41 TAUB, H. – Circuitos Digitais e Microprocessadores, 1a edição, São Paulo: McGraw-Hill do Brasil, 1984, 510p. TOCCI, R.J., WIDMER, N. S., MOSS, G.L. Sistemas Digitais, Princípios e Aplicações. 12ª edição, Editora Pearson , 2019, 817p.
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
13
Exercícios - Capítulo 10 2022-1
Circuitos Elétricos 2
UNESP
23
Memória Rom - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
18
Memórias Rams - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
20
Dynamic Ram - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
4
Exercícios - Circuitos Elétricos 2 2022 1
Circuitos Elétricos 2
UNESP
4
Exercícios - Circuitos Elétricos 2 2022-1
Circuitos Elétricos 2
UNESP
7
Expansão de Memórias Ram Ou Rom - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
2
Lista 1 - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
23
Memórias - Terminologias - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
2
Lista 2 - Memórias Semicondutoras - Circuitos Elétricos 2 2021-2
Circuitos Elétricos 2
UNESP
Texto de pré-visualização
Campus de Ilha Solteira Faculdade de Engenharia de Ilha Solteira - Departamento de Engenharia Elétrica Circuitos Digitais II - Profa. Suely Cunha Amaro Mantovani - 2osem-2021 CIRCUITOS DIGITAIS II Aritmética Digital: Operações e Circuitos (Livro texto-TOCCI – cap. 6) Objetivos Executar adição, subtração, multiplicação e divisão de 2 números binários; Comparar as vantagens e desvantagens entre 3 diferentes sistemas de representação de números binários com sinal; Executar operações com números em BCD e números em hexadecimal; Descrever a operação básica da Unidade Lógica e Aritmética - ULA. Sumário 1. Introdução 2. Adição Binária 3. Representação de números com sinal 4. Overflow aritmético 5. Multiplicação e divisão 6. Adição binária em BCD 7. Aritmética hexadecimal 8. Circuitos Aritméticos 9. Unidade Lógica e Aritmética. Campus de Ilha Solteira 2 1. Introdução Os computadores e todo tipo de processador aritmético executam várias operações aritméticas numéricas que são representadas na forma binária. Por isso, neste primeiro tópico estudam-se os princípios básicos que são necessários para o entendimento de como as máquinas digitais executam suas operações aritméticas. Além das operações aritméticas, estudam-se os circuitos lógicos reais (básicos) que executam estas operações nos sistemas digitais. 2. Adição Binária A adição de dois números binários é executada da mesma forma que a adição de números decimais: Adição decimal 637 362 75 2 1 MSD- Most Significant Digit LSD- Least Significant Digit Adição binária Na adição binária, considerando 2 (dois) dígitos binários (bits) A e B , podem ocorrer 4 casos, em qualquer posição: sendo S - soma , Ci+1 - carry Campus de Ilha Solteira 3 Formalizando para dois números binários A e B de n dígitos cada, tem-se: 0 2 1 0 2 1 0 2 1 ..... .......... __________ __________ ......... .......... ....... .......... S S S S S B B B B A A A A n n n n n n n A soma S, portanto, terá um dígito a mais que os dois números que estão sendo somados. Cada dígito Si da soma é determinado pelos dígitos Ai e Bi. Ex. soma binária: 1001 110 11 0 1 1 Nota-se que: 1. Não é necessário considerar a adição de mais de dois números por vez, porque em todos os sistemas digitais os circuitos que executam a adição manuseiam sempre dois números de cada vez. Aos modernos computadores, que executam as operações em alguns nano segundos, isto não constitui um problema; 2. A adição é a mais importante operação aritmética em sistemas digitais. As operações de subtração, multiplicação e divisão são executadas pelos computadores atuais (e calculadoras) usando somente adição em suas operações básicas; 3. Subtração Binária 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 Ci1 SUB B A sendo SUB- resultado da subtração e Ci-1- pedido de empréstimo ou borrow. Campus de Ilha Solteira 4 3. Representação de números com sinal Em computadores digitais os números binários são representados por um conjunto de dispositivos armazenadores binários, por ex. flip -flops, onde cada dispositivo representa um bit. Um registrador (formado por um conjunto de flip - flops) de 4-bits pode armazenar números de 0 a 15, conforme a tabela verdade, Tabela 1 a seguir, representando a magnitude do número (números sem sinal). Tabela 1 - Tabela com números sem sinal Dec Binário s/sinal 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 Para representação de números com sinais existem três esquemas: Representação de números por Sinal-Magnitude Números com sinal em Complemento de Um Representação de números com sinal em Complemento de Dois. Campus de Ilha Solteira 5 A representação de números em registradores usa os estados SET e RESET dos flip- flops para representar os numerais 0 e 1, respectivamente. A representação da Figura 1 está na forma circular para lembrar que o registrador de 4 bits tem um número finito de estados e após passar por cada estado, volta para o estado inicial. O registrador pode ser designado como um registrador de módulo 16 (2n), onde n é o número de bits do contador. Figura 1- Representação circular para um registrador de 4 bits. Fonte: Tocci, Widmer, Moss (2019) Este modo de representar o registrador indica que o ponteiro que representa a propriedade do registrador de 'girar' pelos seus estados em resposta ao pulso de relógio, pode ser usado para efetuar operações aritméticas de soma e subtração avançando ou recuando o ponteiro uma posição, para indicar uma contagem: Operação Somar: limpar o registrador (resetar, o ponteiro aponta para 0000); avançar o ponteiro para a posição da primeira parcela e, em seguida, avançar o ponteiro um número de estados igual à segunda parcela; a posição final do ponteiro indicará o resultado da operação. Operação Subtrair: limpar o registrador (ponteiro em 0000); em seguida, o ponteiro é deslocado para a posição da primeira parcela (minuendo); depois o ponteiro deve recuar o número de posições igual ao valor da segunda parcela (subtraendo). Assim, o ponteiro indicará a posição igual ao valor da subtração. Observe que as operações são válidas somente dentro do módulo do registrador, isto é, operações no intervalo de 0 a 15. 3.1 Representação de números com sinal por Sinal-Magnitude Campus de Ilha Solteira 6 Para utilizar números com sinal na representação de números por Sinal-Magnitude usa-se o flip-flop da posição mais significativa (MSB) do registrador, para indicar o sinal do número. Por convenção adota-se: 0 representa o bit de sinal para números positivos 1 representa o bit de sinal para números negativos Exemplo de representação de sinal-magnitude para o número 52, representado com 7 bits, sendo seis bits para magnitude e um bit do sinal (MSB): : Fonte: Tocci, Widmer, Moss (2019) Mostra-se na Figura 2 o registrador circular módulo 16 com números positivos e negativos. Observe que existem na representação sinal-magnitude dois ‘0s’(zeros), -0=1000 e +0=0000. A existência de dois ‘0s’ torna a representação sinal-magnitude difícil de ser usada para operações no registrador, simplesmente avançando ou recuando o ponteiro. Figura 2- Representação circular de números com sinal, por sinal-magnitude (com 4 bits). Campus de Ilha Solteira 7 Fonte: Tocci, Widmer, Moss (2019) 3.2 Representação de números com sinal em Complemento de Um Seja N um número binário qualquer positivo, então o complemento de um de N, N(1) é o equivalente negativo definido por, N(1)=(M-1)-N sendo M=2n (módulo) e n o número de bits de N. Caso o módulo seja M=3210=100000, então, N(1)=(100000-1)-00101=11111- 00101=11010. A representação em complemento de um para um registrador de quatro casas ou bits é mostrada na Figura 3. Observa-se também, a existência de dois ‘0s’ (zeros), 0000 e 1111, tornando os circuitos mais complexos. Figura 3- Representação circular para o complemento de um Campus de Ilha Solteira 8 Fonte: Tocci, Widmer, Moss (2019) A determinação do complemento de um de um número é obtida por meio de sucessivas subtrações, dígito a dígito, do número 1. O complemento de um pode ser calculado complementando bit a bit o número original, como mostram os exemplos anteriores. Exemplo de soma em binário para a representação em complemento de um. Usar os números 7 e 5 para executar todas as combinações possíveis de dois números com sinal: +7+5=.. ; +7-5=...; -7+5=...; -7-5=.... Resposta: para a realização destas operações em complemento de um é necessário usar um registrador de 5 bits (no mínimo). +7=00111.............. => -7= 11000 +5=00101............. .=> -5= 11010 12 5) ( 7 01100 00101 00111 com correção com correção. 2 5) ( 7) ( 11101 00101 11000 Obs. Para corrigir a existência, dos dois zeros, se houver vai-um (carry) na posição mais significativa, devemos somar um ao resultado e isto feito, ignora-se o vai-um. Na Tabela 2 têm-se as duas representações explicadas até o momento, sinal – magnitude e complemento de 1. Campus de Ilha Solteira 9 Tabela 2- Representação de números s/ sinal e com sinal Portanto, a faixa de valores que pode ser representada em C1 tendo n-1 bits de magnitude é ±(2n-1 -1), assim como em magnitude – sinal. 3.3 Representação de números com sinal em Complemento de Dois Seja N um número binário qualquer positivo, então o complemento de dois de N, N(2) é definido por, N(2)=M-N sendo M=2n (módulo) e n o número de bits de N. Observa-se que o valor do complemento de dois de um número depende do módulo do registrador, isto é, de quantos bits são usados para escrever o número. Então, o mesmo número tem complemento de dois diferentes se está em um registrador de 4-bits (M=16) ou em registrador de 5bits (M=32). Seja N=0101, o módulo M=1610=10000, então, Campus de Ilha Solteira 10 Caso o módulo seja M=3210=100000, então N(2)=100000-00101=11011(acrescenta- se uns a esquerda do número) O complemento de dois de um número não pode ser especificado com certeza, a não ser que o módulo seja especificado (ou o registrador). A avaliação do complemento de dois de um número envolve uma sucessão de subtrações, bit a bit, do número binário 10 (210). Para obter o complemento de dois de um número tem-se então: Método por definição: o complemento de dois de um número binário é formado tomando-se o complemento de um do número, depois se adiciona um, à posição LSB (Least Significative Bit ) Método prático: 1. Escrever o número com tantos bits quantos forem os do registrador onde for armazenado o número; 2. Começando com o bit menos significativo, percorrer o número da direita para esquerda, deixando inalterados os bits iguais a 0 até encontrar o primeiro 1, deixar este um (1) inalterado; 3. Complementar os demais bits do número. Assim, o sistema de representação por complemento de dois de números com sinal estabelece que o negativo de um número qualquer N é dado pelo complemento de dois do número N. Então, dado N qualquer, -N=N(2)=M-N. Campus de Ilha Solteira 11 Figura 4- Representação circular para o complemento de dois Ex: seja a operação 3-7 a ser realizada no registrador de quatro bits da Figura 4. ajustar o ponteiro em 0000 ( resetar o registrador ); avançar três posições e o ponteiro indica o minuendo 3(0011); recuar sete posições ( valor do subtraendo 7) ; o ponteiro indicará 1100 que é igual a - 4 na representação em complemento de dois. O registrador de módulo 16 (Figura 4) tem apenas um único 0 e fornecerá os números no intervalo -8 até +7. O bit mais a esquerda (MSB) indica o sinal do número: se for igual a ‘0’, o número é positivo; se o MSB é igual a ‘1’, o número é negativo. Esta representação permite que a soma seja feita pelo avanço e a subtração pelo retardo do ponteiro. O resultado da operação encontra-se dentro do intervalo do registrador. Pode-se obter o complemento de dois pela representação por complemento de um de um número, adicionando 1 ao complemento de um. N(2)=M-N e N(1)=(M-1)-N, então N(1)=(M-N)-1=N(2)-1, ou N(2)=N(1)+1 Em outras palavras, para se obter o complemento de dois de um número binário, deve-se escrever o número com a quantidade de bits do registrador, complementar o número bit a bit e somar 1 ao resultado. A representação de números binários em complemento de dois torna possível transformar a operação de subtração em uma operação de soma. Sejam N1 e N2 números binários quaisquer, então, N1-N2=N1+(-N2)=N1+N2 (2) Assim, a subtração de dois números binários pode ser obtida fazendo a soma do minuendo com o complemento de dois do subtraendo. No registrador circular sempre Campus de Ilha Solteira 12 serão realizadas operações de soma, avançando o ponteiro*, eliminando o problema de recuar o ponteiro do registrador. *Ex : 3-5 => 3+(-5) = 3+(1110) => -5 em complemento de dois é 0101=>1011.O resultado vai ser -2 (1110). São resumidas na Tabela 3, as representações de números com sinal abordadas. Tabela 3- Registrador de 4 bits com as representações s/sinal e c/sinal. Dec Binário s/sinal Dec Sinal magnitude N0 de n bits +/- (2n-1 - 1) Dec Complemento de um N0 de n bits +/- (2n-1 - 1) Dec Complemento de dois N0 de n bits -2n-1 a + 2n-1 - 1 0 0000 +0 0000 +0 0000 +0 0000 1 0001 +1 0001 +1 0001 +1 0001 2 0010 +2 0010 +2 0010 +2 0010 3 0011 +3 0011 +3 0011 +3 0011 4 0100 +4 0100 +4 0100 +4 0100 5 0101 +5 0101 +5 0101 +5 0101 6 0110 +6 0110 +6 0110 +6 0110 7 0111 +7 0111 +7 0111 +7 0111 8 1000 -0 1000 -7 1000 -8 1000 9 1001 -1 1001 -6 1001 -7 1001 10 1010 -2 1010 -5 1010 -6 1010 11 1011 -3 1011 -4 1011 -5 1011 12 1100 -4 1100 -3 1100 -4 1100 13 1101 -5 1101 -2 1101 -3 1101 14 1110 -6 1110 -1 1110 -2 1110 15 1111 -7 1111 -0 1111 -1 1111 Fonte: Própria do autor Campus de Ilha Solteira 13 O sistema em complemento de dois é frequentemente usado para representar números com sinal porque permite executar as operações de subtração por meio da adição, ou seja, usa o mesmo circuito para adicionar e subtrair, significando uma economia de hardware. Obs. 1- Negação é a operação de converter um número positivo no equivalente negativo ou um número negativo em seu equivalente positivo, basta para isso fazer o complemento de 2 do número, se o número é representado em complemento de 2. 2- Caso especial na representação em complemento de dois: 1000 ====== 23 = -8 10000 ======= 24 = -16 100000 ====== 25 = -32, ou o seu equivalente decimal é -2n-1 , sendo (n-1) o número de bits da magnitude. Portanto, a faixa de valores que pode ser representada em C2 tendo n-1 bits de magnitude é -2n-1 a + 2n-1 -1, ou seja, há um total de 2n diferentes valores incluindo o zero . Exemplos de adição e subtração em complemento de dois. Efetuar: +9+5= ;+9-5=; -9+5=; -9-5=. Resposta: Para a realização destas operações é necessário um registrador de 5 bits, no mínimo: +9=01001=> -9= 10111, +5=00101=> -5= 11011 Campus de Ilha Solteira 14 4. Overflow Aritmético Ao se utilizar um número fixo de bits em um registrador, por exemplo, pode haver uma operação de soma (ou subtração) que leve a um resultado que está fora das possibilidades de representação daquele conjunto de bits, a esta situação diz-se que ocorreu overflow. Ex: -9 +-8 10111 + 11000 O overflow (ou estouro) ocorre quando adiciona-se dois números positivos ou dois números negativos, produzindo um resultado incorreto. Esta ocorrência é detectada verificando o bit do sinal dos números que estão sendo adicionados. Em um computador, um circuito especial é usado para detectar qualquer erro de overflow e o erro do bit do sinal. 5. Multiplicação e Divisão A multiplicação de números binários sem sinal é feita da mesma maneira como a multiplicação de números decimais. Números binários sem sinal (forma binária verdadeira), ex. (dado em sala) 1001(multiplicando) x1011(multiplicador) => 0910 x 1110 A maioria das máquinas digitais adicionam dois números por vez. Por esta razão os produtos parciais, formados durante a multiplicação são adicionados dois de cada vez. Para multiplicar números com sinal usando a representação em complemento de dois, têm-se as seguintes regras: - Se os dois números multiplicados são positivos, eles são multiplicados conforme visto anteriormente. O resultado é positivo com o bit do sinal igual a zero; Campus de Ilha Solteira 15 - Quando os dois números são negativos eles estarão na forma do complemento de dois. Obtém-se o complemento dois de cada um, convertendo-os para números + (negação), só então são multiplicados (na forma verdadeira). O produto é positivo e o bit do sinal é igual a zero; - Quando os números têm sinais diferentes, o número negativo é convertido para uma magnitude positiva, tomando-se seu complemento de dois. O resultado do produto estará na forma magnitude verdadeira (direta), contudo o produto é negativo, uma vez que os números originais são de sinais opostos. Assim, o complemento de dois é aplicado ao produto e o bit do sinal deve ser ‘1’. Ex. 710 x(-2 10): na verdade faz-se 7x2, em binário, depois o resultado é convertido para um número binário negativo. 0111 e 1110, => 0111 e 0010 (feito em sala de aula) Divisão binária. Mesmo processo que é seguido para divisão decimal (sem sinal). Para números com sinal, vale a mesma regra da multiplicação binária. 6. Adição em BCD Muitos computadores e calculadoras usam o código BCD ( Binary coded Decimal) para representar números decimais. O código BCD para a representação decimal de números de zero a 9 usando 4 bits é dado por : 0000 (0), 0001(1),0010(2),0011(3),0100(4), .....1001(9). A adição de números decimais na forma BCD tem as seguintes regras: Soma ≤ 9 . A adição é realizada com adição normal e a soma está dentro do campo dos números da forma BCD. 09 4) ( 05 1001 0100 0101 78 32 046 0111 0011 0100 1000 0010 0110 Soma > 9. Campus de Ilha Solteira 16 Sempre que ocorrer um código que não representa um dígito em BCD, deve-se fazer a correção somando 6 (0110), onde 6 representa as restantes combinações do código para 4 dígitos binários (1010,1011,1100, 1101,1110, 1111) que não fazem parte do código, portanto, fazendo a correção. Resumindo: o processo de soma de números codificados em BCD faz-se como a soma normal dos números binários diretos. Se o resultado não for um número BCD, isto é, não for de 0 a 9 ou um vai-um ocorrer, então 6 , em binário, é somado ao número. Ex: 59+38 , somar em BCD. 7. Aritmética hexadecimal Números hexadecimais são usados em linguagem de máquina de programação de computador: 0,1,2,.......9,A,B,C,D,E,F. A adição é feita do mesmo modo que a adição decimal, e portanto, pode-se adotar o procedimento a seguir: 1. Somar os dois dígitos hexadecimais em decimal, mentalmente inserindo o decimal equivalente para os dígitos >9; 2. Se a soma ≤ 15 pode-se expressar a soma em dígitos hexadecimais; 3. Se a soma ≥16 subtrair 16 e transportar o 1 para a posição do próximo dígito; Campus de Ilha Solteira 17 7C 24 58 10 10 10 124 36 88 16 16 16 3 4 58 A B 8+B=19-16= 3 e vai – um (1) A subtração pode ser realizada através do método usado para números binários, ou seja, o complemento de dois. Para encontrar o complemento de dois do número hexadecimal têm-se dois métodos: 1. Converter o número em binário tomar o complemento de dois do equivalente binário e então convertê-lo de volta para a forma hexadecimal, e somente depois fazer a operação de soma com o resultado. Por exemplo: 3A = 0011 1010 tomando o complemento de dois tem-se: 11000110 =C6 2. Procedimento rápido para encontrar o complemento de dois: subtrair cada dígito de F, então adicionar 1 . Por exemplo: 3A = 0011 1010 Fazendo a operação 40 -3A= 7.1 Representação de números hexadecimais com sinal Os dados em um computador (memória, HD, etc.) são armazenados em bytes (8 bits). O byte é armazenado em uma determinada localização na memória e frequentemente é expresso em hexadecimal pela eficiência e sujeito a menos erros . Quando o dado é um número com sinal tem-se a seguinte convenção: Qualquer valor binário negativo terá ‘1’ no bit do sinal (MSB) , ou seja , o número em hexadecimal será ≥ 8 (8,9,A,B,C,D,E,F); Campus de Ilha Solteira 18 Qualquer valor binário positivo terá ‘0’ no bit do sinal (MSB), ou seja, o número em hexadecimal será < 8(7,6,.. ...,0). Ex . Memória (fictícia) iniciando no endereço 4000 com a seguinte lista de dados armazenados: Hex Adress Dado binário arm. Valor em hex Valor decimal 4000 00111010 3A +58 4001 11100101 E5 -27 4002 01010111 57 +87 4003 10000000 80 -128 8. Circuitos Aritméticos As operações em computadores e calculadoras digitais são executadas em Unidades lógicas e Aritméticas, Figura 5, onde portas lógicas e flip-flops são combinados, tal que, realizem somas, subtrações, multiplicação e divisão binária, de acordo com as instruções da unidade de controle. Esses circuitos executam operações aritméticas com velocidade cada vez maiores (nanossegundos). Figura 5- Blocos Funcionais de uma ULA Campus de Ilha Solteira 19 Fonte: Tocci, Widmer, Moss (2019) Obs: Curiosidades sobre os circuitos aritméticos : (https://gizmodo.uol.com.br/chips- computador/) e https://www.topgadget.com.br/howto/tech/como-o-processador-e-projetado-e- construido.htm ) Neste tópico são estudados alguns dos circuitos aritméticos básicos que são usados para executar as operações discutidas anteriormente. Em alguns casos será visto o projeto do processo real, com o objetivo de treinar o uso das técnicas de Álgebra Booleana, embora sabendo que os circuitos podem estar comercialmente disponíveis na forma de CIs. 8.1 Soma de números binários Sejam A e B números binários de n dígitos cada e S é a soma de A mais B que é um número binário de n+1 dígitos. Então, o dígito Si é determinado unicamente pelos dígitos Ai e Bi de A e B. Circuito Meio-Somador Os métodos de soma de números binários envolvem a soma de dígitos coluna a coluna. Então, a adição de dois números binários Ai e Bi podem ser calculados conforme mostrado a seguir, Figura 6. Figura 6- (a) Exemplo de soma (b) Tabela Verdade Campus de Ilha Solteira 20 Fonte: Própria do autor Na Figura 6(a) mostra-se a adição de dois dígitos binários. A soma gera um dígito soma Si na mesma i-ésima coluna que tem a mesma significância numérica que Ai e Bi. A soma pode gerar um dígito de vai-um Ci+1 que tem significância numérica maior que as parcelas Ai e Bi. Na Figura 6(b) mostra-se a tabela verdade para as somas feitas na Figura7(a); uma linha para cada operação e as saídas Si e Ci+1. Para realizar essas somas e fornecer as saídas Si e Ci+1 , o circuito pode ser derivado da tabela verdade da Figura 6(b). A parcela soma Si pode ser obtida pela XOR de Ai e Bi. O dígito vai-um Ci+1 é dado por uma porta AND de Ai e Bi. Mostra-se na Figura 7(a) o circuito lógico com portas e na Figura 7(b) o símbolo. A estrutura que soma dois dígitos binários é designada como Meio-Somador, e abreviada como HA (Half -Adder). Figura 7. a) circuito lógico. b) símbolo para o meio-somador Fonte: Própria do autor Circuito Somador Inteiro A soma coluna por coluna de dois números binários de n dígitos produz um vai-um Ci+1 que deve ser somado na próxima coluna de maior significância: Campus de Ilha Solteira 21 O meio-somador só pode realizar a primeira operação de A0 mais B0, nas outras colunas são necessárias à adição de três bits Ai, Bi e Ci (vai-um da coluna i-1).O dígito mais significativo da soma é o dígito vai-um para coluna n, ou seja Cn. Assim, na soma de Ai, Bi e o vai-um Ci são gerados Si e o vai-um Ci+1. Na tabela verdade, Tabela 4, mostra-se a geração dos bits soma Si e vai-um Ci+1. O circuito lógico para a geração dos bits soma, Si e de vai-um Ci+1, visto na Figura 8 podem ser obtidos diretamente dos mapas K, para cada saída da tabela verdade, Tabela 4. Tabela 4-Tabela Verdade para o somador inteiro Campus de Ilha Solteira 22 Figura 8- Circuito para o Somador Inteiro ou Completo Soma Si Vai-Um Ci+1 Fonte: Própria do autor Por meio de simplificações algébricas pode-se mostrar que o bit soma Si é igual ao XOR ou EX- OR das entradas Ai, Bi, e Ci. Então, o circuito de portas lógicas para somar três bits chama-se Somador Inteiro (ou Full – Adder do inglês ), designado FA, e tem a estrutura e símbolos mostrados na Figura 9. Figura 9 - Somador Inteiro. (a) Circuito Lógico com portas EX -|OR. (b) Símbolo Lógico. Campus de Ilha Solteira 23 (a) (b) obs: CIs somadores completos de 4 bits encontrados no mercado de componentes: 74HC283 ou 7483. Somador Série Síncrono O somador série, mostrado na Figura 10, soma uma coluna de cada vez em sincronismo com o sinal de relógio. As parcelas são carregadas em registradores de deslocamento de n bits e um registrador de deslocamento de n+1 bits receberá a soma. Depois de cada pulso de relógio, os bits das parcelas são colocados na entrada do somador juntamente com o bit de vai-um e, o bit da soma é registrado no registrador de deslocamento da soma. O flip-flop tipo D atrasa o bit de vai-um em um período de relógio, de modo que seja somado na próxima coluna de maior significância. Para análise de seu funcionamento supõe-se que o atraso de propagação através do somador inteiro é pequeno em relação ao período do relógio. Campus de Ilha Solteira 24 Figura 10 - Somador Série síncrono Fonte: Taub (1984) Inicialmente, antes da primeira borda de gatilho do sinal de relógio, os bits A0 e B0 estarão presentes às entradas do FA e Ci=C0=0. S0 e C1 são gerados. Na primeira borda de gatilho do clock , S0 é armazenado. A1 e B1 se deslocarão para a entrada do somador, gerando S1 e C2 e assim por diante. Para somar dois números de n bits cada, o somador série necessita de n+1 pulsos de relógio. Embora seja econômico em termos de circuitos, o somador série é lento. Somador Binário Paralelo O circuito da Figura 11 a seguir, embora gaste mais somadores, um para cada coluna das parcelas, é mais rápido, pois soma todos os bits simultaneamente. É necessário que todos os bits Ai e Bi estejam disponíveis em registradores, para serem aplicados nas entradas dos somadores ao mesmo tempo. A soma estará pronta na saída em um ciclo de relógio, desconsiderando os atrasos de propagação nos somadores. Campus de Ilha Solteira 25 Figura 11 - Somador paralelo Fonte: Taub (1984) Na realidade, é necessário esperar um determinado intervalo de tempo para que os bits de vai-um se propaguem através de cada somador, antes de considerar válido o resultado da soma na saída. O tempo de propagação do vai-um torna o somador paralelo inaplicável em várias situações. Considerando que cada porta lógica tem um atraso de propagação igual a um tap, então, um bloco somador, tendo em vista a porta lógica OR - EX como um circuito de 2 níveis , tem na sua soma um atraso de 4tap . Sabendo que para somar duas parcelas de n bits cada, são necessários n somadores, então o resultado da soma somente está disponível na saída em um intervalo de tempo igual a n(2tap). O atraso do somador paralelo aumenta com o número de bits das parcelas a serem somadas, tornando-o inaplicável para soma de palavras com vários bits de comprimento. Faixa de valores para Ai e Bi nos modernos computadores vai até 64 bits. Quando comparado ao somador série síncrono diz- se ser extremamente rápido. Atrasos (retardo) de propagação A velocidade das portas lógicas é controlada pelo tempo que gasta para comutar de um nível lógico para outro. O tempo que leva para comutar os níveis lógicos é o atraso de propagação (tP) ou atraso da porta(tap). As portas lógicas geralmente tem diferentes tempos Campus de Ilha Solteira 26 para chavear de um nível lógico ALTO para BAIXO (tPHL), e comutar do nível lógico BAIXO para ALTO (tPLH). Em geral, se usa um tempo médio igual a média dos tempos de comutação ALTO para BAIXO (tPHL) e BAIXO para ALTO (tPLH). Para uma porta AND TTL padrão, tPHL=7ns e tPLH=11ns, resultando um atraso de propagação médio tP=9ns. Em outras palavras o atraso de propagação é o intervalo de tempo entre pontos pré- definidos ( em geral, 50% do valor da tensão) do sinal de saída em resposta a uma transição do sinal de entrada, Figura 12. Figura 12 - Resposta de um inversor mostrando o atraso de propagação. Fonte: Tocci, Widmer, Moss (2019) Propagação do Carry A velocidade dos somadores paralelos é relativamente alta, desde que a adição dos bits seja simultânea. Contudo, esta velocidade é limitada pela propagação do carry ou Campus de Ilha Solteira 27 ripple (ondulação) carry. Na Figura 11, se cada FA tem um atraso de propagação de 40ns, então S3 atingirá o nível correto em até 120ns depois que C1 é gerado. 8.2 Somadores Rápidos Implementação do Lookahead Carry - Vai-um Antecipado. Esta lógica gera vai - uns individuais, através da definição da variável geração, Gi e da variável propagação Pi . Este circuito utiliza portas lógicas, mas com atraso de propagação menor. Este esquema requer uma quantidade de circuitos extras, mas produz somadores com alta velocidade. Muitos somadores rápidos disponíveis na forma de CIs utilizam a técnica de lookahead carry ou uma técnica similar para redução dos atrasos de propagação. O somador paralelo é mais rápido que o somador série , mas no somador paralelo é necessário esperar-se os resultados de todos os outros bits menos significativos, no pior caso. O resultado somente aparece na saída do somador completo após um tempo que pode corresponder no pior caso, aos atrasos de todos os outros somadores completos anteriores. Nos Somadores com transporte antecipado procura-se por um circuito onde se obtenha os bits de carry mais rápidos, do que no somador paralelo. Isto pode ser feito em todas as ordens, desde 20 até 2n ou então em algumas ordens pré-escolhidas. Portanto, considerando Ai e Bi bits de entrada na i-ésima coluna da soma de um número com diversos dígitos, define-se as quantidades Gi e Pi como, Gi = Ai . Bi e Pi =Ai Bi , sendo Gi a variável geração e Pi a variável propagação. Se Gi =1 Ai =Bi=1. Neste caso há um vai-um de saída Ci+1, independente de um vai –um de entrada Ci . O vai-um é gerado pelos valores dos bits na coluna i. De modo similar, se Pi =1 , é porque Ai =1 ou Bi=1 (mas não ambos ) e só haverá um vai-um de saída Ci+1, se existir um vai-um de entrada Ci . Portanto, Ci+1 não é gerado na coluna, mas se existir um vai-um de entrada, será propagado através da coluna. Inicialmente tem-se que, Si=Ai Bi Ci, então usando a definição anterior, pode- se escrever o Si como, Si= Pi Ci para o C i+1=AiBi+AiCi+BiCi, , em função de Gi e Pi , tem-se , C i+1=AiBi +AiCi( iB +Bi)+ BiCi( iA +Ai) Campus de Ilha Solteira 28 C i+1= AiBi + Ci( Ai iB + iA Bi)+ AiBiCi+AiBiCi C i+1= AiBi + Ci (Ai Bi) +AiBiCi C i+1= AiBi(1+Ci) + Ci (Ai Bi) C i+1= Gi+ CiPi Aplicando esta ideia a cada estágio do somador paralelo visto anteriormente, tem-se o somador com transporte antecipado da Figura 13, somador com transporte antecipado (carry lookahead) ou vai-um antecipado. Figura 13- (a) Unidade somadora. (b) Geradora de vai-um. Fonte: Taub (1984) Para dois números binários de quatro bits, as unidades somadoras permanecem iguais para todas as colunas, enquanto a estrutura geradora do vai-um modifica-se de coluna para coluna de acordo com a equação, Ci+1= Gi + PiCi , i=0 => C1=G0+P0C0 i=1 => C2=G1+P1C1=G1+P1 (G0+P0C0) =G1+P1G0+P1P0C0 i=2 => C3=G2+P2C2=G2+P2 (G1+P1G0+P1P0C0) =G2+P2G1+P2P1G0+P2P1P0C0 i=3 => C4=G3+P3C3=G3+P3 (G2+P2G1+P2P1G0+P2P1P0C0) =G3+P3G2+P3P2G1+P3P2P1G0+ P3P2P1P0C0 Campus de Ilha Solteira 29 Colocando em palavras a equação de C4 diz que, o vai-um aparece na saída do estágio três se for gerado naquele estágio OU , se for gerado no estágio dois E propagado através do estágio três , OU se for gerado no estágio um e propagado através do estágio 3 E 2, e assim por diante. Mostra-se na Figura 14, a estrutura do somador com vai-um antecipado para dois números binários de 4-bits. Figura14-Somador com vai-um antecipado com a unidade somadora e geradora de vai-um. Campus de Ilha Solteira 30 Fonte: Taub (1984) Cascata para 4 bits do Carry Lookahead - a soma se torna mais rápida do que os somadores de ripple carry (oscilação do carry ou transporte). Campus de Ilha Solteira 31 No caso de um somador com vai-um antecipado, considerando que uma porta XOR tem dois atrasos de propagação (2tap) e que no instante t=0 todos os bits das parcelas a serem somadas são aplicados nas entradas do somador, Para t= 2tap, tem-se P0 e G0 , e para t= 4tap, tem-se S0 Para t= 4tap, tem-se C1, C2, C3 e C4, e para t=6tap, tem-se os bits de soma S1, S2, S3. Depois de ultrapassado o primeiro estágio do somador, não há mais atrasos na geração dos bits da soma, independente do número de bits das parcelas a serem somadas, como mostrado pela figura anterior. Portanto, o somador com vai-um antecipado fornece um atraso constante, que não depende do tamanho das parcelas somadas. A desvantagem do somador com vai-um antecipado é o circuito gerador do vai-um, que cresce com a quantidade de bits somados. CIs MSI (número de portas de 20 a 200) somadores com vai-um antecipado: 7483A, 74LS83A, 74LS283, etc. Estes dispositivos (chips) são do tipo TTL, somadores paralelos de 4 bits. Os 283s são idênticos aos 83s (pequenas diferenças, Vcc e terra). O circuito integrado somador paralelo de quatro bits com circuitos somadores completos e um circuito de vai - um antecipado disponível comercialmente é o CI SN74F283. Mostram-se nas Figuras 15 e 16 o símbolo IEEE/ANSI (Institute of Electrical and Electronic Engineers)/ (American National Standards Institute) e o diagrama lógico para o somador SN74F283, respectivamente, onde as letras P, Q designam as entradas e as saídas do CI e devem ser usadas dentro do símbolo. Figura 15-CI SN74F283 Símbolo Lógico Fonte : Datasheet 74283 (2019) Campus de Ilha Solteira 32 Figura 16-CI SN74F283 Diagrama Lógico Fonte : Datasheet 74283 (2019) Somador de dois números A e B em blocos de 4 bits cada, usando uma Unidade de Carry Antecipado-UCA ( ou CLU da sigla em inglês), para gerar os vai-uns mais rápidos, C4 , C8 e C12 e C16, a partir dos P e G de cada bloco de 4 bits , Figura 17. Campus de Ilha Solteira 33 Figura 17- Cascata de somadores para 16 bits com UCA C4 *= G(3-0) + P(3-0) .C0 e assim por diante para C8 * e C12 * Fonte: Taub (1984) 9. Unidade Lógica e Aritmética A Unidade Lógica e Aritmética (ULA) é um circuito combinacional que recebe duas palavras de entrada de n bits A=An-1An-2 ...A1A0 e B=Bn-1Bn-2....B1B0. Essas entradas podem ser números ou uma informação codificada em binário. A ULA gera, então, uma função de saída F=Fn-1Fn-2... F1F0 que pode relacionar as entradas por lógica ou aritmética. Uma entrada de modo M determina se a função de saída F é lógica ou aritmética. Entradas seletoras de função S0, S1, S2,... determinam qual função específica será F. Uma ULA pode ser construída como uma cascata de vários estágios idênticos. Não existem regras de como projetar cada estágio da ULA, em geral, a aplicação determina o circuito de cada estágio. Uma ULA poderia ter a configuração da Figura 18, a seguir. Campus de Ilha Solteira 34 Figura 18 - Blocos ULA cascateados Fonte: Taub (1984) Neste circuito têm-se duas entradas A e B de 4 bits, uma entrada de modo M, duas entradas seletoras de função S1S0 e a função de saída F. Cada estágio da ULA poderia ter o circuito mostrado a seguir, Figura 19. Figura 19-Um exemplo de estágio para a ULA Campus de Ilha Solteira 35 Fonte: Taub (1984). Quando a operação lógica for desejada, então M=0, bloqueando o vai-um de cada estágio. E a saída F em cada estágio depende somente dos valores dos bits das entradas A e B (e dos bits seletores de função S1S0). No modo aritmético M=1, as portas que recebem o vai-um são habilitadas. Neste caso, a saída F, em cada estágio, depende também do vai-um de entrada nesse estágio. As funções lógicas e aritméticas geradas pela ULA são dadas pela Tabela 5 a seguir. Tabela 5-Tabela Verdade para o estágio de ULA Campus de Ilha Solteira 36 Fonte: Taub (1984). Existem diversos CIs disponíveis comercialmente que são classificados e vendidos como Unidades Lógicas Aritméticas, mesmo que não apresentem a capacidade lógica e aritmética de uma ULA de computadores atuais. Esses CIs ULAs são capazes de realizar várias operações lógicas e aritméticas diferentes, com dados binários de entrada. A operação específica que um CI ULA executa é determinada pelo código binário específico que é aplicado nas entradas dos bits seletores de função. E cada CI ULA possui um conjunto específico de funções que pode executar. O chip SN74LS181 é uma ULA e gerador de funções, que possui o equivalente a 75 portas, conforme mostrado em seu diagrama lógico na Figura 20. Figura 20- ULA 74LS181- Diagrama Lógico Campus de Ilha Solteira 37 Fonte: Electronic Components Datasheet Search (2019) Esse circuito realiza 16 operações aritméticas com duas palavras de 4-bits e todas as entradas e saídas podem ser ativas em nível ALTO ou nível BAIXO, por isto as designações dos pinos do CI estão indicadas complementadas e não complementadas. As operações são selecionadas pelos 4-bits seletores de função (S0, S1, S2, S3) e inclui adição, subtração, decremento e transferência direta, entre outras. Quando executa operações aritméticas, os vai-um internos devem ser habilitados aplicando um nível BAIXO na entrada de controle de modo (M), Tabela 6 Campus de Ilha Solteira 38 Um circuito de vai-um antecipado está disponível na ULA SN74LS181 para a geração rápida de vai-um através das variáveis P (PROPAGAÇÃO) e G (GERAÇÃO) simultâneas, em duas saídas para cascateamento (pinos 15 e 17). Essa ULA pode ser usada em combinação com o CI comercial SN54S182, uma unidade de geração de vai-um antecipado (VUA), para realizar operações aritméticas de alta velocidade. Tabela 6-ULA SN74LS181 Operações Lógicas e Aritméticas. Fonte: Taub (1984). Se a velocidade não é um fator crítico nas operações, então uma entrada de vai-um propagado (Cn) e uma saída de vai-um propagado (Cn+4) são disponíveis no chip. O atraso causado pelo vai-um propagado é minimizado pelos circuitos internos, de modo que as operações aritméticas com palavras de pequeno comprimento podem ser realizadas sem circuitos externos de vai-um. A ULA 74LS181 pode também ser aplicada como circuito comparador. A saída (A=B) é decodificada internamente a partir das saídas de função (F0, F1, F2, F3), de modo que quando duas palavras de iguais magnitudes são aplicadas nas entradas A e B, o pino (A=B) assumirá o nível ALTO para indicar a igualdade entre as duas entradas. A ULA deve estar no modo subtração, Cn=H e os bits seletores de função S3, S2, S1, S0 em L, H, H, L, respectivamente, quando realizar esta operação. Observe que a saída (A=B) é tipo coletor aberto e pode ser usada para fazer AND com fios. A saída de vai-um (Cn+4 ) pode também ser usada para fornecer informação da magnitude relativa. Campus de Ilha Solteira 39 Essa ULA fornece também 16 funções booleanas de duas variáveis, sem necessidade de circuitos externos. Essas funções lógicas são selecionadas pelas entradas dos bits seletores de função (S0, S1, S2, S3) com a entrada de controle de modo (M) no nível ALTO, para desabilitar o vai-um interno. Na Figura 21 têm-se a ULA TTL 74181 e o gerador de carry antecipado e na Figura 22 faz-se uma expansão de bits de ULA usando quatro 74181 em conjunto com o CI 74182 que antecipa o carry. Figura 21- ULA 74181 e o Gerador de carry antecipado ( Carry Lookahead Generator) Fonte: Taub (1984). Figura 22- 16-bit ALU com Carry Lookahead 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3 S2 S1 S0 F3 F2 F1 F0 A=B G P Cn+4 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 182 P3 P2 P1 P0 G3 G2 G1 G0 Cn Cn+z Cn+x P G Cn+y 13 3 1 14 5 4 2 15 6 12 11 9 10 7 Campus de Ilha Solteira 40 Fonte: Taub (1984). Referências Bibliográficas Datasheet 74F283. Disponível em: https://pdf1.alldatasheet.com/datasheet- pdf/view/15410/PHILIPS/74F283.html. Acesso em: 05 mar 2019 Electronic Components Datasheet Search. Disponível em: <http://html.alldatasheet.com/html-pdf/27999/TI/74LS181/21/1/74LS181.html>. Acesso em: 05 mar 2019. 182 P3 P2 P1 P0 G3 G2 G1 G0 Cn Cn+z Cn+x PG Cn+y 13 31 145 42 156 12 11 9 10 7 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 910 11 13 14 15 16 17 18 19 20 21 22 23 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 910 11 13 14 15 16 17 18 19 20 21 22 23 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 9 10 11 13 14 15 16 17 18 19 20 21 22 23 181 A3 A2 A1 A0 B3 B2 B1 B0 Cn M S3S2S1S0 F3 F2 F1 F0 A=B GP Cn+4 1 2 3 4 5 6 78 9 10 11 13 14 15 16 17 18 19 20 21 22 23 C0 C16 Campus de Ilha Solteira 41 TAUB, H. – Circuitos Digitais e Microprocessadores, 1a edição, São Paulo: McGraw-Hill do Brasil, 1984, 510p. TOCCI, R.J., WIDMER, N. S., MOSS, G.L. Sistemas Digitais, Princípios e Aplicações. 12ª edição, Editora Pearson , 2019, 817p.