Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Ciências da Computação & Engenharia Eletrônica Aula 1-T 1. Projeto de unidade lógico-aritmética (ULA). Representação de números inteiros em binário. Convenções do nível RT. Adição de números sem e com sinal, o somador paralelo carry-ripple e overflow. O subtrator e o somador-subtrator, overflow. Estrutura de uma ULA simples. Outras operações lógicas e aritméticas. Unidades funcionais para mais de dois. Circuitos Digitais e Níveis de Abstração. Prof. José Luís Güntzel [email protected] www.inf.ufsc.br/~guntzel/ine5406/ine5406.html 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros sem Sinal (Naturais) • assumindo-se números com 4 bits binário decimal Menor número 0000 0 Maior número 1111 15 Intervalo de representação: [ 0 , 15 ] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.2 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros sem Sinal (naturais) • assumindo-se números com 8 bits binário decimal Menor número 00000000 0 Maior número 11111111 255 Intervalo de representação: [ 0 , 255 ] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.3 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros sem Sinal (Naturais) Observe que: 111111112 = = 1x20 + 1x21 + 1x22 + 1x23 + 1x24 + 1x25 + 1x26 + 1x27= = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 Observe também que: 1000000002 = = 0x20 + 0x21 + 0x22 + 0x23 + 0x24 + 0x25 + 0x26 + 0x27 + 1x28 = = 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 256 = 256 (= 255 + 1) Então, podemos nos referir ao 255 como “28 - 1”, para efeitos de generalização. INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.4 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros sem Sinal (naturais) • Generalizando-se para n bits binário decimal Menor número 0000...0 0 Maior número 1111...1 2n-1 Intervalo de representação: [ 0 , 2n-1] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.5 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representando Dados em Circuitos Digitais Algumas Convenções Indicando como um número de n+1 bits é composto (outro exemplo) “0” “Decompondo” um número de n+1 bits em um número de n bits e mais um sinal n n+1 overflow n+1 n S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.6 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos São Circuitos Combinacionais que operam sobre dados numéricos. Exercício 1: Projetar um circuito combinacional capaz de testar se um número de 8 bits vale zero ou não. Este circuito deve operar conforme descrito na tabela abaixo. Tabela de funcionamento: Interfaces: S 8 zero significado 0 S≠0 1 S=0 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 =0? zero Slide1T.7 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos Exercício 2: Projetar um circuito combinacional que compara dois números de 4 bits cada. Este circuito deve operar conforme descrito na tabela abaixo. Tabela de funcionamento: iguais significado 0 A≠B 1 A=B Interfaces: B A 4 4 =? iguais INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.8 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos Exercício 2: solução... Função XOR (Exclusive OR, “OU” Exclusivo) • Resulta “1” se as duas entradas forem iguais... X Y X⊕Y 0 0 0 0 1 1 1 0 1 1 1 0 X⊕Y = X·Y + X·Y Circuito em soma de produtos Porta lógica X X Y Y INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.9 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos Exercício 3: Projetar um circuito combinacional que compara dois números de 4 bits cada. Este circuito deve operar conforme descrito na tabela abaixo. Tabela de funcionamento: Interfaces: B A maior significado 0 A <= B 1 A>B 4 4 A>B? maior INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.10 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos Qual é a operação aritmética mais importante? Resposta: a adição! Por quê? Porque ela serve de base para outras operações aritméticas mais frequentes nos sistemas digitais. INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.11 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Revisão de Adição Binária Adição de Números Sem Sinal Exemplo 1: Notação genérica Análise supondo A e B com 4 bits transportes (carries) 0100 A + B S + 0110 0100 (6) (4) 1010 (10) resultado Supondo um somador que trabalhe com operandos de 4 bits, então o resultado S deverá pertencer ao intervalo [ 0, 15 ] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.12 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Revisão de Adição Binária Adição de Números Sem Sinal Exemplo 2: Cout = overflow A + B S transportes (carries) 1100 + 1100 0110 (12) (6) 0010 (18) resultado Caso o resultado não puder ser representado com 4 bits, o sinal “Cout” indicará que houve um “estouro de representação” (em inglês, overflow). INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.13 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Esquema da Adição Paralela Considerando dois números (A e B) com 4 bits cada a3 b3 a2 b2 c3 c4 (=cout) s3 a1 b1 c2 s2 a0 b0 c1 s1 s0 • Há um elemento para cada coluna da soma. • O sinal de transporte mais à esquerda (c4, neste caso), também recebe o nome de cout. • Se este somador operar sobre inteiros sem sinal, então cout também servirá para indicar a ocorrência de overflow INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.14 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Meio Somador Redesenhando, usando porta XOR a0 a0 b0 c1 b0 MS s0 c1 s0 = a0·b0 + a0·b0 = a0 ⊕ b0 c1 = a0·b0 s0 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.15 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Somador Para as Demais Colunas Projetando um tipo de circuito para as demais colunas: c4 a3 b3 a2 c3 + ai + a0 b0 c1 s1 s0 carry Slide1T.16 adição de 3 bits bi ci+1 si … s3 s2 s1 s0 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 b1 ci Generalizando… … b3 b2 b1 b0 a1 c2 s2 s3 … c4 c3 c2 c1 … a3 a2 a1 a0 b2 resultado resultado em 2 bits Com i >= 1 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Completo ai ai bi MS gi bi ci+1 SC ci pi ci+1 ci xi si MS si = ci ⊕ ai ⊕ bi si INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 ci+1 = ai·bi+ ai·ci+ bi·ci Slide1T.17 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Paralelo Carry-Ripple (de 4 Bits) Diagrama de Blocos (Nível Lógico) a3 c4 (=cout) b3 SC a2 c3 s3 b2 SC a1 c2 b1 SC s2 s1 A Símbolo no Nível RT c1 b0 MS s0 B 4 cout a0 4 + Indicação do número de bits 4 S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.18 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Paralelo Carry-Ripple (de 4 Bits) Diagrama de Blocos (Nível Lógico): versão 2 a3 c4 (=cout) b3 SC a2 c3 s3 b2 SC a1 c2 b1 a0 c1 SC s2 s1 B 4 cout SC c0 s0 A Símbolo no Nível RT b0 4 + 4 S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.19 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Paralelo Carry-Ripple (de 4 Bits) Diagrama de Blocos (Nível Lógico): versão 3 a3 c4 (=cout) b3 SC a2 c3 s3 b2 SC a1 c2 b1 a0 c1 SC s2 SC s1 B 4 cout c0 = cin s0 A Símbolo no Nível RT b0 4 cin + 4 S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.20 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representando Dados em Circuitos Digitais Mais Convenções Somador-subtrator para operandos com n bits cada n overflow Indicando como um número de n+1 bits é composto n n overflow +/- +/- n n n+1 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 n Slide1T.21 Convenção para indicar que o bit menos significativo está mais à direita Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Somador Carry-Ripple: Custo x Desempenho • A estrutura do somador carry-ripple baseia-se na fatoração da expressão do carry. A consequência disto é: • Redução do custo (i.e., menor número de portas lógicas) • Aumento do atraso (o cálculo de c4 depende de c3, que depende de c2, que depende de c1, que depende apenas das entradas c0, a0 e b0). a3 c4 (=cout) b3 SC s3 a2 c3 b2 SC a1 c2 s2 b1 SC s1 a0 c1 b0 SC c0 = cin s0 Os slides complementares “somadores rápidos” mostra outros tipos de somadores. INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.22 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Como Representar Inteiros Negativos? Sinal-magnitude Complemento de 1 sinal sinal +3 = 0 0 1 1 -3 = 1 0 1 1 +3 = 0 0 1 1 -3 = 1 1 0 0 Obtido a partir do +3, aplicando-se a inversão bit a bit Complemento de 2 sinal +3 = 0 0 1 1 -3 = 1 1 0 1 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Obtido a partir do +3, aplicando -se a inversão bit a bit e após, somando-se 1 (uma unidade) Slide1T.23 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros com Sinal • Para facilitar a construção de circuitos aritméticos, os negativos são representados em complemento de dois • Assumindo-se números com 4 bits binário decimal Menor número 1000 -8 Zero 0000 0 Maior número 0111 +7 Intervalo de representação: [ -8 , +7 ] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.24 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros com Sinal Observe que: 01112 = 1x20 + 1x21 + 1x22 + 0x23 = =1+2+4+0 = = +7 Observe também que: 11112 = 1x20 + 1x21 + 1x22 - 1x23 = =1+2+4-8= = -1 O bit mais à esquerda representa o sinal: se ele valer 1, o número é negativo. Caso contrário, o número é positivo ou zero. INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.25 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros com Sinal • assumindo-se números com 8 bits binário decimal Menor número 10000000 -128 Zero 00000000 0 Maior número 01111111 +127 Intervalo de representação: [ -128 , +127 ] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.26 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Representação de Inteiros em Binário Números Inteiros com Sinal • Generalizando-se para n bits binário decimal Menor número 1000...0 -2n-1 Zero 0000...0 0 Maior número 0111...1 +(2n-1-1) Intervalo de representação: [ -2n-1 , +(2n-1-1) ] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.27 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal Assumindo: • Negativos são representados em complemento de dois • Números com 4 bits binário decimal Menor número 1000 -8 Zero 0000 0 Maior número 0111 +7 Intervalo de representação: [ -8 , +7 ] INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.28 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Exemplo 3: dois números positivos, cuja soma ∈ [-8,+7] transporte (carry) 0000 + 0010 0100 (+2) (+4) 0110 (+6) resultado correto INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.29 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Exemplo 4: dois números negativos, cuja soma seja ≥ -8 transporte (carry) 1100 + Apesar deste último carry valer 1, não houve overflow INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 1110 1100 (-2) (-4) 1010 (-6) Slide1T.30 resultado correto Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Exemplo 5: um número positivo e um número negativo, tais que o resultado é positivo transporte (carry) 1111 + 0111 1111 (+7) (-1) 0110 (+6) Novamente… INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.31 resultado correto Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Exemplo 6: um número positivo e um número negativo, tais que o resultado é negativo transporte (carry) 0001 + 1001 0001 (-7) (+1) 1010 (-6) INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 resultado correto Slide1T.32 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Exemplo 7: um positivo e um negativo, iguais em módulo transporte (carry) 1111 + E novamente… INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 0101 1011 (+5) (-5) 0000 (0) Slide1T.33 resultado correto Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Exemplo 8: 2 números positivos transporte (carry) 0100 + ocorre overflow quando esses 2 bits são diferentes 0100 0101 (+4) (+5) 1001 (-7) Resultado errado ! o resultado excede o intervalo de representação = overflow INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.34 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Exemplo 9: 2 números negativos transporte (carry) 1000 + ocorre overflow quando esses 2 bits são diferentes 1100 1011 (-4) (-5) 0111 (+7) Resultado errado ! o resultado excede o intervalo de representação = overflow INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.35 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Adição de Inteiros com Sinal (Assumindo Negativos em Complemento de 2) Conclusões: • Números binários em complemento de 2 podem ser adicionados como se fossem números binários sem sinal! • Neste caso, a detecção de overflow se dá comparando-se os dois últimos sinais de carry INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide1T.36 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Paralelo Carry-Ripple (de 4 Bits) Modificado para Operar Sobre Números com Sinal (Assumindo negativos em complemento de 2) Diagrama de Blocos (Nível Lógico) a3 c4 (=cout) overflow b3 SC s3 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 a2 c3 b2 SC a1 c2 s2 Slide1T.37 b1 SC s1 a0 c1 b0 MS s0 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Paralelo Carry-Ripple (de 4 Bits) Modificado para Operar Sobre Números com Sinal (Assumindo negativos em complemento de 2) Diagrama de Blocos (Nível Lógico): versão 2 a3 c4 (=cout) overflow b3 SC a2 c3 s3 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 b2 SC a1 c2 s2 b1 SC s1 Slide1T.38 a0 c1 b0 SC c0 s0 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Paralelo Carry-Ripple (de 4 Bits) Modificado para Operar Sobre Números com Sinal (Assumindo negativos em complemento de 2) Diagrama de Blocos (Nível Lógico): versão 3 a3 c4 (=cout) overflow b3 SC a2 c3 s3 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 b2 SC a1 c2 s2 b1 SC s1 Slide1T.39 a0 c1 b0 SC c0 = cin s0 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética O Somador Paralelo Carry-Ripple (de 4 Bits) Símbolos no Nível RT A A B 4 cout overflow B 4 4 cout overflow + 4 4 4 S S A A B 4 overflow cin + 4 4 overflow + B 4 4 4 S S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 cin + Slide1T.40 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos Exercício 4: Usando o somador carry-ripple, projetar um circuito combinacional que troca o sinal de um número inteiro de 4 bit. Interfaces: B 4 Troca sinal –B INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.41 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos Exercício 4: Solução Trocar o sinal significa aplicar as regras do complemento de dois ao número, ou seja: 1. Negar (“NOT”) bit a bit o número 2. Somar uma unidade ao resultado do passo anterior INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.42 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Circuitos Aritméticos Exercício 4: Solução b3 b2 0 c4 = cout b1 0 SC c3 r3 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 b0 0 SC r2 c2 B 0 SC r1 Slide 2T.43 c1 SC r0 c0 = cin = 1 -B Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Subtração de Números Inteiros em Binário Princípio A − B = A + (− B ) Onde −B é o número B de sinal trocado! Ora, que coincidência!! (Ou não?) INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.44 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Subtrator Paralelo (de 4 bits) A − B = A + (− B ) b3 b2 a3 0 c4 (=cout) overflow b1 a2 0 SC s3 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 c3 b0 a1 0 SC c2 s2 Slide 2T.45 a0 0 SC s1 c1 SC c0 = cin = 1 s0 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Subtrator Paralelo (de 4 bits) Diagrama de Blocos (Nível Lógico) b3 b2 a3 c4 (=cout) a2 SC c3 Símbolos no Nível RT cout overflow b0 a1 c2 SC s3 overflow b1 s2 a0 SC c1 SC s1 A B 4 4 − s0 A B 4 overflow 4 − 4 4 S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.46 c0 = cin = 1 S Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Subtrator/Subtrator Paralelo (de 4 bits) b3 a3 b2 a2 b1 a1 b0 a0 Somador c4 = cout b3 b2 a3 c4 = cout a2 SC s3 c3 c3 SC s3 s2 b1 b0 a1 SC c2 s2 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 SC c2 s1 s1 c1 c1 SC c0 = cin = 0 s0 Subtrator a0 SC SC SC c0 = cin = 1 s0 Slide 2T.47 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Subtrator/Subtrator Paralelo (de 4 bits) Como uni-los em um único circuito, configurável? b3 a3 a3 c4c4 == cout cout b2 a2 a2 b3 SC SC c3 c3 s3 s3 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 b1 a1 a1 b2 SC SC s2 s2 c2 c2 b0 a0 a0 b1 SC SC s1 s1 Slide 2T.48 c1 c1 b0 SC SC c0==cin cin==01 c0 s0 s0 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Subtrator/Subtrator Paralelo (de 4 bits) Resposta!!! b3 b2 a3 b1 a2 b0 a1 a0 c3 c4 (=cout) SC overflow c3 s3 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 SC c2 s2 SC s1 Slide 2T.49 c1 c0 = cin = controle SC s0 controle operação 0 S=A+B 1 S=A-B Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Subtrator/Subtrator Paralelo (de 4 bits) Símbolo no Nível RT A B 4 cout overflow A 4 4 +/− B controle overflow 4 +/− 4 controle 4 S S Tabela de Operação INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 controle operação 0 S=A+B 1 S=A−B Slide 2T.50 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética ULA Simples Suponha que se necessite de uma Unidade Lógico-Aritmética (ULA) capaz de realizar as seguintes operações Símbolo no nível RT C1 C0 operação comentário 0 0 S=A+B adição 0 1 S=A-B subtração 1 0 S = A AND B “E” bit a bit 1 1 S = A OR B “OU” bit a bit A B n overflow n ULA 2 C n S Obs: o sinal de overflow pode ou não ser necessário… INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.51 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética ULA Simples Visão Geral desta ULA A n B AND/OR bit a bit n operação 0 S=A+B 1 S=A-B C0 operação 0 0 S=A+B 0 1 S=A-B 1 0 S = A AND B 1 1 S = A OR B n +/- C0 C1 C0 n 0 1 n C1 C0 operação 0 S=A AND B 1 S=A OR B S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.52 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética ULA Simples a0 Visão de um bit desta ULA (os demais bits serão similares) C1 C0 operação 0 0 S=A+B 0 1 S=A-B 1 0 S = A AND B 1 1 S = A OR B c1 b0 0 1 SC 0 1 C1 s0 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.53 Prof. José Luís Güntzel C0 1. Projeto de Unidade Lógico-Aritmética ULA Simples Multiplexador no Nível RT... 0 n n 0 1 C1 0 1 0 1 0 1 0 1 0 n Todos os n muxes 2:1 são controlados pelo mesmo sinal C1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 n muxes 2:1 C1 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.54 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética ULA Simples Mas onde foi parar o overflow? Voltando ao projeto do todo… A n overflow B n n n AND/OR bit a bit +/- n “0” n+1 C0 n n+1 0 1 C1 n+1 overflow n S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.55 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Deslocador Combinacional Um deslocador (shifter) com uso de multiplexadores 2:1 A3 A2 A1 A0 entrada serial desloca 0 1 S3 0 1 S2 0 1 S1 0 1 S0 • Se desloca=1, este circuito desloca cada bit uma posição para a esquerda • Qual é o significado desta operação? INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.56 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Deslocador Combinacional Outro deslocador (shifter) com uso de multiplexadores 2:1 A3 A2 A1 A0 entrada serial desloca 1 0 S3 1 0 1 S2 0 S1 1 0 S0 • Se desloca=1, este circuito desloca cada bit uma posição para a direita • Qual é o significado desta operação? INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.57 Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Multiplicação com Circuito Combinacional O Multiplicador Matricial • É uma implementação direta do esquema ao lado • Cada bit dos produtos parciais é gerado por meio de um “E” lógico 1001 multiplicando 1011 multiplicador 1001 1001 + 0000 - 1001 - - - produtos parciais x 1100011 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.58 resultado Prof. José Luís Güntzel 1. Projeto de Unidade Lógico-Aritmética Multiplicação com Circuito Combinacional O Multiplicador Matricial (p/ Números s/ Sinal) A0 B2 • Para multiplicar dois números de n bits são necessários n-1 somadores de n bits • Problemas: A2 B2 – Custo – Atraso crítico! Carry out A1 B2 A1 B1 A0 B1 A0 B0 A1 B0 0 A2 B1 A2 B0 Carry out Somador de 3 bits Somador de 3 bits caminho crítico M5 INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 M4 M3 Slide 2T.59 M2 M1 Prof. José Luís Güntzel M0 1. Projeto de Unidade Lógico-Aritmética Multiplicação com Circuito Combinacional O Multiplicador Matricial (p/ Números s/ Sinal) O Símbolo no Nível RT X Y 3 3 * 6 S INE/CTC/UFSC Sistemas Digitais - semestre 2012/2 Slide 2T.60 Prof. José Luís Güntzel