Fundamentos de Sistemas Digitais 5/abril/29 CIRCUITOS COMBINACIONAIS Circuitos Combinacionais Um circuito combinacional consiste em portas lógicas cujas saídas, em qualquer momento, são determinadas pela combinação dos valores das entradas Para n variáveis de entrada, existem 2 n combinações de entrada binária possíveis Para cada combinação binária das variáveis de entrada, existe uma saída possível profs. Alexandre M. Amory e Fernando G. Moraes 2 Circuitos Combinacionais (cont) Portanto, um circuito combinacional pode ser descrito por:. Uma tabela de verdade que lista os valores de saída para cada combinação das variáveis de entrada, ou 2. m funções booleanas, uma para cada variável de saída. Circuitos Combinacionais versus Sequenciais Os circuitos combinacionais não possuem memória interna O valor de saída depende apenas dos valores atuais de entrada Os circuitos sequenciais contêm lógica combinacional, e elementos de memória (usados para armazenar estados de circuito) As saídas dependem dos valores de entrada atuais e dos valores de entrada anteriores (mantidos nos elementos de memória) 3 4
Circuitos Combinacionais versus Sequenciais (cont) Circuitos básicos n-entradas n-entradas Circuito Combinacional Circuito Combinacional Circuito Combinacional Next state Circuito Sequencial m-saídas (depende apenas das entradas) Elementos de memória m-saídas Present state q Exemplos de circuitos combinacionais. Codificador/decodificador 2. Comparadores 3. Geradores de paridade 4. Multiplexador/demux 5. PLAs 6. Memórias ROM 7. Somador / Subtrator. ULA 9. Multiplicadores / Divisores q Exemplos de circuitos seqüenciais. Registradores (deslocamento, carga paralela, acumulador, serialparalelo) 2. Contadores (binário, BCD, Johnson, Gray / up, down, updown) 3. Máquina de Estados 4. Geradores de clock 5. Memória RAM 6. Sequenciadores 5 6 () (DE)CODIFICADOR DECODIFICADOR - The 4-Bit Decoder (nà2 n ) Codificador é um circuito que mapeia um conjunto de entradas em um conjunto de saídas segundo uma função de codificação Em outras palavras, é um circuito que transforma uma informação de um formato para outro Um codificador é normalmente implementado de forma combinacional Representação gráfica de codificador genérico E E Codificador S S E N S M Decodificador n à 2 n Codificador 2 n FIGURE 6-2 Logic symbol for a 4-line-to-6-line (-of-6) decoder. à n 7
DECODIFICADOR - The 4-Bit Decoder (nà2 n ) DECODIFICADOR - The 4-Bit Decoder (nà2 n ) Apenas uma saída ativa para cada valor binário de entrada A A A2 A3 EN OUT <= not(not A and not A and not A2 and not A3 and EN); OUT <= not(a and not A and not A2 and not A3 and EN); OUT2 <= not(not A and A and not A2 and not A3 and EN); OUT3 <= not(a and A and not A2 and not A3 and EN); OUT4 <= not(not A and not A and A2 and not A3 and EN); OUT5 <= not(a and not A and A2 and not A3 and EN); OUT6 <= not(not A and A and A2 and not A3 and EN); OUT7 <= not(a and A and A2 and not A3 and EN); OUT <= not(not A and not A and not A2 and A3 and EN); OUT9 <= not(a and not A and not A2 and A3 and EN); OUT <= not(not A and A and not A2 and A3 and EN); OUT <= not(a and A and not A2 and A3 and EN); OUT2 <= not(not A and not A and A2 and A3 and EN); OUT3 <= not(a and not A and A2 and A3 and EN); OUT4 <= not(not A and A and A2 and A3 and EN); OUT5 <= not(a and A and A2 and A3 and EN); EN: enable sinal adicional que habilita o codificador 9 DECODIFICADOR portas lógicas (nà2 n ) DECODIFICADOR portas lógicas (nà2 n ) Ativo alto ou ativo baixo I I Y 3 Y 2 Y Y I I Y 3 Y 2 Y Y Y 3 Y 2 I() I() Y(3) Y(2) Y() Y() I() I() Y(3) Y(2) Y() Y() I I Y Y 2
DECODIFICADOR com sinal de habilitação Conforme indicado pela tabela de verdade, apenas uma saída pode ser igual a a qualquer momento, todas as outras saídas são iguais a. CODIFICADOR portas lógicas (2 n à n) Neste exemplo temos entradas, correspondendo a sinais que representam um valor decimal 4 bits com a codificação decimal 3 FIGURE 6-36 Logic symbol for a decimal-to-bcd encoder. 4 CODIFICADOR hexa para sete-segmentos Display 7 segmentos Este exemplo ilustra um codificador que tem por entrada um valor hexadecimal (-F) para sete segmentos. Entrada em 4 bits: A3 / A2 / A / A Saída em 7 bits: a, b, c, d, e,f, g HEA f e a g d f e b c a g d b c Entrada C () e saída: A3 A2 A A a b c... A Ativo em,2,3,5,6,7, AB'C' A'BD B'D' A'C AD' BC E B F C G D a 7 mapas de Karnaugh, um para cada dígito 5 6
VHDL: conteúdo após Prova P Display 7 segmentos simplificando com VHDL CODIFICADOR decimal para sete-segmentos with vetorent select Saida <= "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when "", "" when ""; vetorent: valor hexa a 7 As entradas só variam entre e 9 (código BCD) Entrada em 4 bits: A3 / A2 / A / A Saída em 7 bits: a, b, c, d, e,f, g A3 A2 A A a b c... 7 mapas de Karnaugh, um para cada dígito http://www.sj.ifsc.edu.br/~odilson/eld/display%2de%27%2segmentos.pdf x x x x x x CODIFICADOR decimal para sete-segmentos CODIFICADOR COM PRIORIDADE (2 n à n) Codificador com prioridade Em um codificador com prioridade se o bit menos significativo for a saída é, se o bit seguinte for, independentemente do anterior, a saída é ; e assim sucessivamente. Exemplo - I3 tem maior prioridade (todos bits em não ocorre) : I3 I2 I I S S x x x x x x x x! = $3 + $2! = $3 + )$2. $ Desenhar e circuito http://www.sj.ifsc.edu.br/~odilson/eld/display%2de%27%2segmentos.pdf 9 2
DECODIFICADOR - exercício Decodificador utilizado como gerador de mintermos EERCÍCIOS: Faça a codificação do display de elevador ilustrado abaixo S(2) S() S() E(... ) n n Pode-se utilizar um decodificador para realizar funções de n variáveis Exemplo para o somador: S(x, y, z) = (, 2, 4, 7) C(x, y, z) = (3, 5, 6, 7) FAZER A TABELA VERDADE S(3) S(4) Este tem como entrada um vetor de 2 bits que recebe a seguinte codificação parado - subindo /\ descendo \/ defeito todos segmentos acesos 2 22 Decodificador Decodificador: SOLUÇÃO Considere o decodificador abaixo e sua correspondente tabela verdade. Determine as funções lógicas a seguir: FA FB FC A B A B 2 AB 3 AB F or 2 F2 ( or or 3) F3 xor 2 xor 3 FA FB FC 23 OR AND OR 24
n Exercício Supondo que desejamos realizar o acesso a uma linha de dados de uma memória de 64 palavras, mas possuímos decodificadores 4à6 e 2à4. Como podemos construir um decodificador 6à64 utilizado estes decodificadores? (2) COMPARADOR Dois números hexadecimal como entradas, 3 saídas Circuito para detectar igualdade: A B A A A2 A3 A 2 B 2 A 3 B 3 A 4 B 4 Output EN FIGURE 6-2 Logic symbol for a 4-bit comparator with inequality indication. 25 26 COMPARADOR DE BIT COMPARADOR Fazer a tabela verdade para as saídas C / D / E : A = B A < B nor = Logo? A > B 27 a>b e demais bits iguais 2
2 3 4 5 6 7 9 2 3 4 5 6 7 9 2 2 22 COMPARADOR com VHDL (simplifica a modelagem) library IEEE; use IEEE.std_logic_64.all; use ieee.std_logic_unsigned.all; --****--- entity comparador is generic(n : integer := 4); port( A, B : in std_logic_vector(n- downto ); igual : out std_logic; maior : out std_logic; ); end entity; Time a[3:]=d b[3:]= igual= maior= menor= igual <= '' when A = B else '' ; maior <= '' when A > B else '' ; menor <= '' when A < B else '' ; 2 us 2 ns 22 ns B C D B C D E F 2 3 4 5 6 7 9 A B C D E F 2 3 4 a[3:]=3 2 3 b[3:]= menor : out std_logic architecture a of comparador is begin igual <= '' when A = B else '' ; maior <= '' when A > B else '' ; menor <= '' when A < B else '' ; end architecture a; VHDL: conteúdo após Prova P 2 3 4 5 2 3 4 5 6 7 9 2 3 4 5 2 3 4 29 (3) Gerador de paridade e verificação de paridade Gerador de paridade - cria o bit de partiy necessário para adicionado a dada palavra Verificador de paridade calcula e verifica a paridade para garantir que a não haja erro na palavra recebida Paridade negada 3 Gerador de paridade e verificação de paridade Gerador de paridade e verificação de paridade Para verificar ou gerar a paridade adequada em um determinado código, um princípio básico pode ser usado: A soma (sem carry-out) de um número par de s é sempre, e a soma de um número ímpar de s é sempre Portanto, para determinar se um determinado código tem paridade ou paridade ímpar, todos os bits desse código são somados Uso de portas OR D-D6 4 s p= OK D-D6 5 s p= erro FIGURE 6-59 Example of data transmission with and without error for the system in Figure 6 5. FIGURE 6-57 3 32
(4) MULTIPLEADOR (4) MULTIPLEADOR É um circuito que permite selecionar uma dentre várias entradas em função de uma variável de controle 2-to- MU I 2-to- MU I I Y I Y I I Y 4-to- MU S I S S I I Y I I 2 Y EQUIVALENTE EM SOFTWARE: if then else VHDL: Y <= I when S = ' else I; VHDL: conteúdo após Prova P 33 S 34 S I 2 I 3 S S I 3 Multiplexadores (2x - 4 bits com enable) Construindo multiplexadores maiores a partir de multiplexadores menores A 3 Y 3 A 2 Y 2 A B 4 4 4 Y A A B 3 Y Y Mux 6 x usando muxes 4x S E B 2 B B S E 35 36
Demultiplexador É um circuito que opera de forma inversa ao multiplexador. Ou seja, recebe uma entrada e distribui esta em uma de várias saídas conforme um sinal de seleção Exemplo de um multiplexador x4: Y 3 Exemplo de aplicação com Mux/Demux Multiplexação do meio físico para enviar diferentes sinais Y I Y Y 2 I Y 2 Y 3 Y S S Y FIGURE -24 Illustration of a basic multiplexing/demultiplexing application. S S 37 3 Multiplexadores O circuito abaixo é composto por 4 multiplexadores. As entradas são: uma palavra de dados (w3-w) e dois bits de controle (s-s2). A saída é o vetor y (y3-y). Preencha a tabela verdade correspondente a este circuito, e interprete o que este circuito realiza. No preenchimento da tabela verdade utilizar os valores w3/w2/w/w. Multiplexadores Determine a saída d em função de c e c. 2 3 c c d S S Y3 Y2 Y Y Conclusão? 39 4
Multiplexador para gerar funções de n entradas Multiplexador para gerar função booleanas A tabela verdade da função é armazenada em uma memória F ( A, B, C, D) = ABCD... + ACD.. + AD. å F( A, B, C, D) = (,3,7,,,2,4) 5 As entradas (variáveis Booleanas) controlam um multiplexador 2 n : A B C D Digital Design and Computer Architecture p. 6 4 42 Multiplexador para gerar funções booleanas estrutura conhecida como gerador universal de funções lógicas - ULG não implementa todas as funções lógicas de n entradas funções lógicas mais complexas requerem diversos ULGs EERCÍCIO. Os circuitos multiplexadores são também utilizados para a geração de funções booleanas. Considerando a conexão dos multiplexadores 2: abaixo. Qual a função resultante no sinal F? Expressar a resposta na forma de soma de produtos (conforme o formato apresentado na expressão da questão 2). B A B C D C C3 Saída D A c F ( A, B, C, D) = CD. + ABC.. A D A D F C2 b C 43 44
EERCÍCIO (POSCOMP 24, Questão 47) Analise o diagrama a seguir. Observe o diagrama do circuito lógico e sua respectiva tabela verdade a seguir. (5) PLA Matrizes Lógicas Programáveis Matrizes lógicas programáveis são tipos de circuitos que têm hardware prédefinido (parte estática) que implementa diversas funcionalidades conforme este for programado (parte dinâmica) Normalmente a programação é compreendida como uma camada de software de baixo nível programada em memórias do tipo RAM Muitas vezes, este tipo de circuito permite rapidamente criar nvas funcionalidades de hardware, seja em tempo de projeto, seja em tempo de operação Com base nesse diagrama e nessa tabela verdade, é correto afirmar que se trata de um circuito lógico a) codificador. b) comparador. c) decodificador. d) demultiplexador. e) multiplexador. 45 Exemplos de matrizes lógicas programáveis são PLAs, PLDs, e até circuitos mais complexos como FPGAs podem ser percebidos de forma análoga Exemplo de um PLA (contendo um plano E e outro OU) 46 Programmable Logic Array (PLA) O conjunto de funções a serem implementadas é primeiro transformado em somas de produto Exemplo de Programmable Logic Array Implementar: F = A B C+A BC +AB C =(AB+AC+BC+A B C ) F2 = AB+AC+BC Uma vez que a inversão de saída está disponível, as funções podem ser implementadas com o seu complemento A B C 2 3 Fuse intact Fuse blown 4 C C B B A A F 47 F2 4
PLA EERCÍCIO (/2) PLA EERCÍCIO ( solução) (POSCOMP 2-4) Considere o circuito digital apresentado no diagrama a seguir. Ressalte-se que, por convenção, chaves representadas por círculos escuros representam conexões fechadas e chaves representadas por círculos vazados representam conexões abertas. A.B.C B.C.D A.B.C Determine a função F. Gabarito com erro (b=c) F = A.B.C + B.C.D + A.B.C Gabarito com erro (b=c) 49 5 (ENADE 24, Questão 23) PLA EERCÍCIO (2) (ENADE 24, Questão 23) PLA EERCÍCIO (2 solução) M= J.K.L + J.K.L + J.K.L + J.K.L N= J.K.L + J.K.L O= J.K.L + J.K.L 5 52
(6) Memória ROM (7) Soma e subtração Memória de apenas leitura na prática um vetor de constantes Utilizada em hardware para constantes em determinado circuito (por exemplo: em código para boot em um processador) FIGURE 6-2 Half-adder logic diagram. 53 54 Somadores de bit Somador Completo - FA Inputs Outputs x y c s ---------------- HA Half-adder (HA): Truth table and block diagram c x s y Co A B FA soma Ci Soma: a\bc Co: a\bc Inputs Outputs x y c c s in out ---------------------- x y c out FA s Full-adder (FA): Truth table and block diagram c in 55 A B C i S C o! = #. )%. )& ' + )#. %. )& ' + )#. )%. & ' + #. %. & '! = # % & ' & + = #. % + %. & ' + #. & ' 56
FIGURE 6-9 A 4-bit ripple adder Somador ripple Overflow Å Somador ripple Cin Somador completo (FA) Cout Meio-somador (HA) + Somar [E 6 + B 6 ] escrevendo os valores de saída dos FAs Cout Hexadecimal: FF + 55 = () 54 Unsigned: 255 + 5 = 4 (errado, Cout=) 2 s comp: - + 5 = 4 (certo Overflow=) 57 5 Somador / subtrator Somador geração do carry M = à subtrator M = à somador Subtrair [E 6-6 6 ] escrevendo os valores de saída dos FAs 59 6
Somador geração do carry () ULA - UNIDADE LÓGICO E ARITMÉTICA Unidade Lógica e Aritmética (ULA) é um circuito que realiza funções lógicas e aritméticas É um dos componentes de transformação de dados principais de um processador Normalmente implementado de forma combinacional Representação: Vetor de entrada A Seleção (comando) Vetor de saída Técnica denominada CLA (Carry Look-Ahead) Vetor de entrada B Qualificadores (flags) 6 62 ULA Funções Lógicas ULA Funções Aritméticas Diversas são as funcionalidades lógicas. Dentre as mais comuns estão: E lógico das entradas Ou lógico das entradas Ou exclusivo lógico das entradas Not - Negação de uma dada entrada A seleção de qual operação será realizada é obtida pela porta de comando Normalmente controlada pela unidade de controle do processador onde se encontra a ULA Operações lógicas usam normalmente apenas os qualificadores Z (zero) e N (negativo) Qualificadores de V (overflow) e C (carry) não são considerados, pois operações lógicas não alteram o valor dos mesmos 63 Dentre as funcionalidades aritméticas mais comuns estão: Soma das entradas Subtração das entradas Deslocamento de uma das entrada Rotação de uma das entradas Complemento de dois de uma das entradas E variações das funcionalidades acima utilizando a flag C/OV A seleção de qual operação será realizada é obtida pela porta de comando Operações aritméticas fazem uso dos quatro qualificadores: (Z, N, V, C) 64
Exemplo operações: ULA - comandos op_alu: AND, OR, OR, SLL, SRL, ADD, SUB, INC, NEG opmode Instanciação do somador (soma/sub/inc/neg) cout ov op default aa x uneg x op uinc uneg default bb SOMA / SUB op2 mode uadd, uinc default O somador realiza 4 operações aritméticas op_alu op op2 ULA outalu cout ov z soma opmode opmode Ação uinc op + + uadd op+ op2 + usub op+ not(op2) + uneg (2 s comp) + not(op) + 65 Obs: o not do segundo operando deve-se ao mode= 66 Instanciação do somador operações Como integrar com as demais operações? opmode op default x uneg x op op2 uinc uneg default opmode op default x uneg x op op2 uinc uneg default Utilização de multiplexadores cout ov SOMA / SUB soma Inc: op + + mode default uadd, uinc cout ov SOMA / SUB soma mode ADD: op + op2 + default uadd, uinc op x x op op2 op x x op op2 opmode default uneg uinc uneg default opmode default uneg uinc uneg default cout ov SOMA / SUB soma mode default uadd, uinc cout ov SOMA / SUB mode default uadd, uinc soma Sub: op + not(op2) + NEG (2 s com): + not(op) + 67 6
Outro exemplo de circuito aritmético Entradas: A e B de bits, C e D controles de 4 bits, modo (Cin) Saída: bits (9) MULTIPLICADOR Dois números de n bits quando multiplicados, geram 2n bits not B B A not A B not B A not A 2 sd D(3) D(2) D() D() 2 sc Mux 4x C(3) C(2) C() C() op op modo B A Cin Somador Ripple ( bits) Cod. com prioridade (4à2) S Cout 9 Saída Determinar C / D / modo para: saída ß 6 saída ß A + B saída ß A - B saída ß 2.B 69 Exemplo: multiplicand multiplier Partial products (3) * () (43) 7 MULTIPLICAÇÃO MULTIPLICAÇÃO arquitetura array S7 A3 B3 A2 B A2 B2 A2 B A B A B A B A B A3 B A2 B A B A B A3 B2 A2 B2 A B2 A B2 um carry propagado A3 B3 A2 B3 A B3 A B3 dois carrys propagados S6 S5 S4 S3 S2 S S B 3 B 2 B B A B 3 B 2 B B A HA FA FA C HA A 2 B 3 B 2 B B S P FA FA FA HA P Quanto maior o número de produtos parciais a somar maior o número de bits de vai-um gerados B 3 B 2 B B A 3 P 2 FA FA FA HA 7 P 7 P 6 P 5 P 4 P 3 72
B 3 B 2 B B A 2 P B 3 B 2 B B A 3 P 2 MULTIPLICAÇÃO arquitetura array Multiplique [F 6 * A 6 ] escrevendo os valores de saída das ands, HAs e FAs B 3 B 2 B B A B 3 B 2 B B A P Mux 4- Exercício Determine a saída Y HA FA FA HA FA FA FA HA FA FA FA HA P 7 P 6 P 5 P 4 P 3 73 74 Exercício Exercício Determine o valor da soma 75 76
Exercício Exercício 77 7 Exercício Exercício 79