************************************** ********** CDG1 - Resumo P2 ********** ************************************** Data : 08/06/2003 a 16/12/2003 Versão : 04/07/2007 Professor: Ricardo Caneloi dos Santos Autor : Leandro Salvador ( leandrosalvador.com.br ) * Meio Somador - portas lógicas A --> entrada B --> entrada S --> saída Co --> carry out (vai um) - tabela da verdade A B S Co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 - equações S = A'.B + A.B' = A (+) B Co = A.B * Somador Completo - portas lógicas A --> entrada B --> entrada Ci --> carry in S --> saída Co --> carry out - tabela da verdade A B Ci S Co 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 - equações S = A (+) B (+) Ci Co = A.B + A.Ci + B.Ci * Meio Subtrator - portas lógicas A --> entrada B --> entrada S --> saída Bo --> borrow out (empresta um) - tabela da verdade A B S Co 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 - equações S = A'.B + A.B' = A (+) B Co = A'.B * Subtrator Completo - portas lógicas A --> entrada B --> entrada Bi --> borrow in S --> saída Bo --> borrow out - tabela da verdade A B Bi S Bo 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 - equações S = A (+) B (+) Bi Co = A'.B + A'.Bi + B.Bi * Subtração Binária em Complemento de 2 - realiza subtração usando somadores - a subtração A - B pode ser reescrita por A * (-B) - o número -B pode ser representado como seu complemento acrescido por uma unidade --> -B = B' + 1 - portanto podemos escrever A - B = A + (-B) = A + (B' + 1) = A + B' + 1 - essa operação é denominada --> subtração em complemento de 2 - exemplo 1) 12 - 7 - normal 1 1 0 0 -0 1 1 1 -------- 0 1 0 1 --> Bo = 0 - complemento de 2 1 1 0 0 +1 0 0 0 + 1 -------- 0 1 0 1 --> Co = 1 2) 4 - 9 - normal 0 1 0 0 -1 0 0 1 -------- 1 0 1 1 --> Bo = 1 - complemento de 2 0 1 0 0 +0 1 1 0 + 1 -------- 1 0 1 1 --> Co = 0 - no sistema normal Bo = 0 --> positivo Bo = 1 --> negativo - no complemento de 2 Co = 0 --> negativo Co = 1 --> positivo - quando o resultado da operação é negativo, este encontra-se em complemento de 2 - ou seja, se o resultado for negativo, precisamos invertê-lo e somar 1 para descobrir o valor correto "com sinal de menos" - exemplo 3) 19 - 30 - normal 1 0 0 1 1 -1 1 1 1 0 ---------- 1 0 1 0 1 --> Bo = 1 0 1 0 1 0 + 1 ---------- 0 1 0 1 1 = -11 - complemento de 2 1 0 0 1 1 +0 0 0 0 1 + 1 ---------- 1 0 1 0 1 --> Co = 0 0 1 0 1 0 + 1 ---------- 0 1 0 1 1 = -11 * 7483 (Somador Binário de 4 Bits) - bloco lógico |¯¯¯¯¯¯¯¯¯¯¯¯¯¯| m *----*------------|Ci | | | | A0 *----|------------|A0 S0|---- | | | A1 *----|------------|A1 S1|---- | | | A2 *----|------------|A2 S2|---- | | | A3 *----|------------|A3 7483 S3|---- | | | B0 *----|----\\¯¯\___|B0 | *----//__/ | | B1 *----|----\\¯¯\___|B1 | *----//__/ | | B2 *----|----\\¯¯\___|B2 | *----//__/ | | B3 *----|----\\¯¯\___|B3 Co|---- *----//__/ | | |______________| - se m = 0 - adição - não importa Ci (carry in) - se m = 1 - subtração - verificar Co (carry out) - se Co = 1 - positivo - se Co = 0 - negativo --> complemento de 2 - exemplo A A -B = +B +1 --- --- S S X----\\¯¯\__X 0----//__/ X----\\¯¯\__X' 1----//__/ * Codificadores / Decodificadores - código BCD 8421 - BCD = Binary Coded Decimal - representa números de 0 a 9 no sistema binário - código Excesso 3 - corresponde ao BCD acrescido de 3 - criado para facilitar a subtração no sistema binário - deixou de ter utilidade com o avanço dos microprocessadores - tabela da verdade decimal BCD Excesso 3 binário 0 0000 0011 0000 1 0001 0100 0001 2 0010 0101 0010 3 0011 0110 0011 4 0100 0111 0100 5 0101 1000 0101 6 0110 1001 0110 7 0111 1010 0111 8 1000 1011 1000 9 1001 1100 1001 10 ---- ---- 1010 11 ---- ---- 1011 12 ---- ---- 1100 - decodificador - dispositivo com n entradas e 2^n saídas - a cada instante uma única saída é ativada - recebe em suas entradas um código binário e identifica o código recebido na saída - codificador - dispositivo com 2^n entradas e n saídas - a cada instante várias saídas podem ser ativadas - ativa uma de suas entradas e apresenta na saída o código binário correspondente ao seu valor - exemplo |¯¯¯¯¯¯¯¯¯|----0----|¯¯¯¯¯¯¯¯¯| 1 *----| DECODER |----0----| CODER |----* 1 1 *----| |----0----| |----* 1 |_________|----1----|_________| * 74138 (Decodificador 3x8) - possui 3 entradas e 2^3 = 8 saídas - ativa uma única saída de 8 linhas - saídas invertidas (ativam em baixa) - uma entrada G1 (enable) direta e duas invertidas (G2A', G2B') - facilita a interligação de pastilhas, sem lógica adicional - saídas ativam em baixa S = 0 --> saída ativa S = 1 --> saída inativa - o uso mais comum de um decodificador é selecionar um entre vários dispositivos, a partir de um endereço associado a cada um deles - variando-se o endereço de entrada pode-se selecionar o dispositivo da saída - assim são selecionadas as pastilhas de memória - tabela da verdade |-entrada-| |-------------saída-------------| |4 2 1| | 7 6 5 4 3 2 1 0 | G1 G2A' G2B' C B A Y7' Y6' Y5' Y4' Y3' Y2' Y1' Y0' 0 x x x x x 1 1 1 1 1 1 1 1 x 1 x x x x 1 1 1 1 1 1 1 1 x x 1 x x x 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 [0] 1 0 0 0 0 1 1 1 1 1 1 1 [0] 1 1 0 0 0 1 0 1 1 1 1 1 [0] 1 1 1 0 0 0 1 1 1 1 1 1 [0] 1 1 1 1 0 0 1 0 0 1 1 1 [0] 1 1 1 1 1 0 0 1 0 1 1 1 [0] 1 1 1 1 1 1 0 0 1 1 0 1 [0] 1 1 1 1 1 1 1 0 0 1 1 1 [0] 1 1 1 1 1 1 1 * 74148 (Codificador de Prioridade) - possui 2^3 = 8 entradas e 3 saídas - a saída apresenta um código binário correspondente à entrada ativa de mais alta ordem - caso haja mais de uma entrada ativa, apenas a de mais alta ordem será ativa - entrada de enable Ei' = 0 --> pastilha livre Ei' = 1 --> pastilha travada - indicador de entrada ativa Gs' = 0 --> há entrada ativa Gs' = 1 --> não há entrada ativa - tabela da verdade |-----------entrada-------------| |---saída---| | 7 6 5 4 3 2 1 0 | | 4 2 1 | Ei' I7' I6' I5' I4' I3' I2' I1' I0' A2' A1' A0' Eo' Gs' pastilha 1 x x x x x x x x 1 1 1 1 1 travada 0 1 1 1 1 1 1 1 1 1 1 1 0 1 livre inativa 0 1 1 1 1 1 1 1 [0] 1 1 1 1 0 livre ativa 0 1 1 1 1 1 1 [0] x 1 1 0 1 0 livre ativa 0 1 1 1 1 1 [0] x x 1 0 1 1 0 livre ativa 0 1 1 1 1 [0] x x x 1 0 0 1 0 livre ativa 0 1 1 1 [0] x x x x 0 1 1 1 0 livre ativa 0 1 1 [0] x x x x x 0 1 0 1 0 livre ativa 0 1 [0] x x x x x x 0 0 1 1 0 livre ativa 0 [0] x x x x x x x 0 0 0 1 0 livre ativa * 74280 (Gerador de Paridade) - forma mais simples para conferir erro simples - adiciona-se um bit de paridade ao conjunto de bits de um código - esse bit de paridade é ajustado de acordo com os demais bits - I = 1 --> paridade ímpar - I = 0 --> paridade par - bloco lógico |¯¯¯¯¯¯¯¯¯¯¯| D0 *----|A 74280 | D1 *----|B | D2 *----|C | D3 *----|D ODD|---- (ímpar) D4 *----|E | D5 *----|F EVEN|---- (par) D6 *----|G | D7 *----|H | bit *----|I | de |___________| paridade - tabela funcional |---------entrada A-I----------| |------------saída------------| ODD (ímpar) EVEN (par) quantidade EVEN (par) de 1's 0 1 quantidade ODD (ímpar) de 1's 1 0 * Multiplexador / Demultiplexador - multiplexador - possui 2^n entradas, 1 saída, n entradas de seleção - seleciona apenas uma das entradas, a qualquer instante, para ser saída - as entradas de seleção controlam o roteamento da entrada de dados selecionada para a saída - seletor (roteador) de dados - demultiplexador - possui 1 entrada, 2^n saídas, n entradas de seleção - seleciona apenas uma das saídas, a qualquer instante, para repassar os dados da entrada - as entradas de seleção controlam o roteamento da entrada de dados para a saída selecionada - distribuidor de dados - exemplo |¯¯¯¯¯¯¯¯¯| |¯¯¯¯¯¯¯¯¯| D0 *----| MUX |---------| DEMUX |----* O0 D1 *----| | | |----* O1 |_________| |_________| | | S *---------*-------------------* * 74151 (Multiplexador) - possui 2^3 = 8 entradas, 1 saída, 3 entradas de seleção - a saída apresenta o valor da entrada selecionada - uma entrada G' (enable) invertida - G' = 0 --> entradas de seleção (C, B, A) selecionarão uma entrada (D7-D0) que será transmitida para a saída Y - G' = 1 --> multiplexador desabilitado, então a saída Y envia "0" ou fica em alta impedância (tri-state), conforme o CI - tabela da verdade G' C B A Y 1 x x x 0 0 0 0 0 D0 0 0 0 1 D1 0 0 1 0 D2 0 0 1 1 D3 0 1 0 0 D4 0 1 0 1 D5 0 1 1 0 D6 0 1 1 1 D7 - interligação de multiplexadores - os multiplexadores podem ser interligados para aumentar a capacidade do número de entradas que podem ser transferidas para uma única saída - apenas um MUX ficará ativo, transferindo dados para a saída em qualquer instante - quando mais de um MUX é interligado, a entrada de enable deve ser usada como entrada de seleção (endereço) para selecionar o MUX que deve ser ativo * 74138 (Demultiplexador) - possui 1 entrada, 2^3 = 8 saídas, 3 entradas de seleção - ativa uma única saída de 8 linhas - saídas invertidas (ativam em baixa) - demultiplexador e decodificador possuem estrutura semelhante - a diferença está na entrada de dados em cada porta - as entradas de seleção (C, B, A) determinam que saída (Y7'-70') receberá os dados da entrada - se os dados da entrada utilizam a entrada G1 - os dados se apresentam invertidos na saída - se os dados da entrada utilizam a entrada G2' (G2A' ou G2B') - os dados não se apresentam invertidos na saída - decofificador - seleciona a saída em função da variável de seleção (G1, G2A', G2B') - demultiplexador - transmite os dados da entrada (G1, G2A', G2B') através da saída selecionada - tabela da verdade |---------------MUX---------------| |-------------------DEMUX-------------------| |-seleção-| |--------entrada--------| |-saída-| |-entrada-| |-------------saída-------------| C B A D7 D6 D5 D4 D3 D2 D1 D0 Y G2' Y7' Y6' Y5' Y4' Y3' Y2' Y1' Y0' 0 0 0 x x x x x x x 0 0 0 1 1 1 1 1 1 1 [0] 0 0 0 x x x x x x x 1 1 1 1 1 1 1 1 1 1 [1] . . . 1 1 1 0 x x x x x x x 0 0 [0] 1 1 1 1 1 1 1 1 1 1 1 x x x x x x x 1 1 [1] 1 1 1 1 1 1 1 * Gerador de Funções Lógicas (Multiplexador) - os multiplexadores podem ser usados para gerar funções lógicas diretamente da tabela verdade, sem simplificações com Mapa de Karnaugh - as entradas de seleção são usadas para as variáveis lógicas - as entradas de dados são conectadas permanentemente aos níveis lógicos "0" ou "1", de acordo com a tabela da verdade - vantagem - conexão das entradas é direta, sem lógica externa - desvantagem - uma única saída é possível - conexão - antes - tabela da verdade C B A Y S (exemplo) 0 0 0 D0 0 0 0 1 D1 1 0 1 0 D2 0 0 1 1 D3 1 1 0 0 D4 0 1 0 1 D5 1 1 1 0 D6 0 1 1 1 D7 1 - bloco lógico 0 1 * * | | |¯¯¯¯¯¯¯¯¯¯¯| *---+----|D0 74151 | | *----|D1 | *---+----|D2 | | *----|D3 | *---+----|D4 Y|----* S = 01010101 = _|¯|_|¯|_|¯|_|¯ | *----|D5 | *---+----|D6 | *----|D7 | | A B C | |___________| | | | * Gerador de Funções Lógicas (Decodificador) - vantagem - diversas saídas são possíveis - desvantagem - necessidade de lógica externa - conexão - depois - tabela da verdade C B A S 0 0 0 0 = Y0' 0 0 1 1 = Y1' 0 1 0 0 = Y2' 0 1 1 1 = Y3' 1 0 0 0 = Y4' 1 0 1 1 = Y5' 1 1 0 0 = Y6' 1 1 1 1 = Y7' - bloco lógico 0 1 * * | | |¯¯¯¯¯¯¯¯¯¯¯| | *----|G1 74138 | | | | | | YO'|o *-------o|G2A' Y1'|o----|¯¯¯¯\ *-------o|G2B' Y2'|o | \ | Y3'|o----| | | Y4'|o | |o----* S = 01010101 = _|¯|_|¯|_|¯|_|¯ | Y5'|o----| | | Y6'|o | / | Y7'|o----|____/ | | | A B C | |___________| | | | ----------//----------