16
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
4
Sistemas Digitais
CEFET/MG
2
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
9
Sistemas Digitais
CEFET/MG
Texto de pré-visualização
Digital Design Copyright 2006 Frank Vahid 1 Sistemas Digitais Capítulo 4 Componentes de Caminhos de Dados Slides to accompany the textbook Digital Design First Edition by Frank Vahid John Wiley and Sons Publishers 2007 httpwwwddvahidcom Copyright 2007 Frank Vahid Instructors of courses requiring Vahids Digital Design textbook published by John Wiley and Sons have permission to modify and use these slides for customary courserelated activities subject to keeping this copyright notice in place and unmodified These slides may be posted as unanimated pdf versions on publiclyaccessible course websites PowerPoint source or pdf with animations may not be posted to publiclyaccessible websites but may be posted for students on internal protected sites or distributed directly to students by other electronic means Instructors may make printouts of the slides available to students for a reasonable photocopying charge without incurring royalties Any other use requires explicit permission Instructors may obtain PowerPoint source or obtain special use permissions from Wiley see httpwwwddvahidcom for information Prof Luciano C A Pimenta Tradução e Adaptação para o Português Prof Ricardo de Oliveira Duarte DELT EE UFMG Digital Design Copyright 2006 Frank Vahid 2 Introdução Capítulos 2 e 3 Projeto de circuitos combinacionais e sequenciais Portas lógicas multiplexadores decodificadores registradores e controladores Nesse capítulo circuitos mais complexos que poderão ser integrados na formação de microprocessadores microcontroladores dedicados ou não Componentes de um Caminho de Dados componentes responsáveis por modificar transformar dados ou então armázenalos de diversas formas Poderemos combinar tais blocos operacionais de forma a montar um datapath caminho de dados No próximo capítulo combinaremos controladores e datapaths para construir pequenos processadores seguindo uma forma de projeto conhecida como projeto RTL 41 Note Slides with animation are denoted with a small red a near the animated items Digital Design Copyright 2006 Frank Vahid 3 Registradores Armazenam dados Encontrados em qualquer caminho de dados Registrador do Cap 3 Carregados a cada ciclo de CLK Úteis na implementação de FSM armazena o estado codificado Outros usos podemos querer que ele carregue somente em certos ciclos 42 Combinational logic State register s1 s0 n1 n0 x b clk I3 I2 I1 I0 Q3 Q2 Q1 Q0 reg4 Registrador simples faz a carga a cada ciclo de Clk carga Como modificálo para fazer a carga somente em certos Ciclos de Clk a D Q D Q D Q D Q I2 I3 Q2 Q3 Q1 Q0 I1 I0 clk 4bit register Digital Design Copyright 2006 Frank Vahid 4 Registrador com Carga Paralela Adicione MUXs 21 antes de cada entrada D de cada Flipflop do registrador A entrada Load do Registrador seleciona qual a entrada do MUX O próximo estado receberá o estado atual ou então uma nova palavra nova carga 1 0 D Q Q3 I3 1 0 D Q Q2 I2 1 0 Q Q1 I1 1 0 D Q Q0 I0 load 0 1 0 2 1 D Q Q3 I3 load load 1 0 D Q Q2 I2 1 0 D Q Q1 I1 1 0 D Q Q3 I3 1 0 D Q Q2 I2 1 0 D Q Q1 I1 1 0 D Q Q0 I0 load 1 b c a 1 0 D Q Q0 I0 I3 I2 I1 I0 Q3 Q2 Q1 Q0 D Digital Design Copyright 2006 Frank Vahid 5 Exemplo de uso de Registradores Esse exemplo mostra como registradores carregam dados simultaneamente em um mesmo ciclo de clock Observe que todas entradas de carga ld estão em 1 não necessariamente deveriam estar isso é só um exemplo Q3 Q2 Q1 Q0 a3 a2 a1 a0 I3 I2 I1 I0 Q3 Q2 Q1 Q0 I3 ld 1 I2 I1 I0 ld 1 ld 1 Q3 Q2 Q1 Q0 I3 I2 I1 I0 R1 R0 R2 clk Digital Design Copyright 2006 Frank Vahid 6 Exemplo do uso de Registradores Q3 Q2 Q1 Q0 a3 a2 a1 a0 I3 I2 I1 I0 Q3 Q2 Q1 Q0 ld I3 1 I2 I1 I0 ld 1 ld 1 Q3 Q2 Q1 Q0 I3 I2 I1 I0 R1 R0 R2 clk R1 R2 1111 R0 clk a3a0 R0 R1 R2 given 1111 R1 R2 11110001 R0 1111 0001 R1 0000 R2 00011010 R0 0001 1010 R1 1110 R2 1010 R0 1010 1010 R1 0101 R2 1010 R0 1010 1010 R1 0101 R2 1010 R0 a b 1111 0001 1111 1111 0000 0001 0001 1110 1010 1010 0101 1010 1010 0101 1010 1010 1 2 3 4 5 Digital Design Copyright 2006 Frank Vahid 7 Exemplo de uso de Registradores com Entrada Load Balança Eletrônica A balança tem dois mostradores Peso atual Peso gravado Útil para se comparar o peso de um item com o peso de outro item Usaremos o registrador para armazenar o peso Pressionando o botão faz com que o peso atual seja gravado no registrador O peso armazenado fica sempre mostrado no display peso gravado mesmo quando apresentam peso novo aparece no display peso atual Balança Peso gravado Armazenador de pesos Peso atual clk b Armazenar I3 I2 I1 I0 Q3 Q2 Q1 Q0 load 3 pounds 0 0 1 1 0 0 1 1 3 pounds 0 0 1 0 2 pounds 1 a Digital Design Copyright 2006 Frank Vahid 8 Exemplo de uso de registrador Display de histórico de temperaturas Exemplo dado no capítulo 3 Um temporizador gera um pulso a cada hora Anteriormente usado com um clock Uma melhor alternativa de projeto seria usar um oscilador como sinal de clock e usar registradores com entradas ld ligados a um circuito gerador de pulsos temporizadores Q4 C x4 x3 x2 x1 x0 Q3 Q2 Q1 Q0 Ra Rb I4 I3 I2 I1 I0 Q4 a4 a3 a2 a1 a0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 Rc Q4 b4 b3 b2 b1 b0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 c4 c3 c2 c1 c0 TemperatureHistoryStorage Q4 Clk C t4 t3 t2 t1 t0 Q3 Q2 Q1 Q0 ld Ra Rb Rc ld I4 I3 I2 I1 I0 Q4 a4 a3 a2 a1 a0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 ld Q4 b4 b3 b2 b1 b0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 c4 c3 c2 c1 c0 TemperatureHistoryStorage timer osc Nova linha a Digital Design Copyright 2006 Frank Vahid 9 Exemplo de uso de Registrador Display de painel de carro C d0 d1 d2 d3 e i0 i0 i1 i2 i3 a0 a1 load i1 2 4 8 8 8 8 8 D d 8 x y s1s0 8bit 41 load load load load reg0 reg1 reg2 reg3 T A I M Exemplo apresentado no cap2 Quatro funções valores diferentes Para reduzir o no de fios Computador de bordo escreve somente 1 valor por cada vez carregado de uma só vez nos 4 registradores No cap 2 precisávamos de 8888 32 fios Agora 8 21 11 fios 0 1 00001010 1 1 00001010 Carregada no evento De Clock 8 Notação simplificada a Digital Design Copyright 2006 Frank Vahid 10 Exemplo de uso de Registradores Tabuleiro de Damas Computadorizado Cada registrador retém valores para uma coluna de LEDs Nível lógico 1 acende o LED Um Microprocessor carrega um registrador por vez Ocorre rápido o suficiente que um ser humano vê o tabuleiro se modificando por inteiro como se fosse de uma só vez LED R7 R6 d6 d5 d4 d3 d2 d1 d0 d7 8 D R5 R4 R3 R2 R1 R0 e i2 i1 i0 3 8 decoder microprocessor lit LED 1 1 0 0 0 0 0 1 Q I R0 load 10100010 from decoder from microprocessor b a Digital Design Copyright 2006 Frank Vahid 11 Exemplo de uso de Registradores Tabuleiro de Damas Computadorizado 010000101 10100010 10100010 10100010 10100010 010000101 010000101 010000101 001 R1 100 R4 010 R2 000 R0 110 R6 011 R3 101 R5 111 R7 clk e i2i1i0 D LED lit LED 10100010 10100010 10100010 10100010 01000101 01000101 01000101 01000101 R7 R6 R5 R4 R3 R2 R1 R0 Digital Design Copyright 2006 Frank Vahid 12 Registradores de Deslocamento Shift Registers Deslocamento para a Direita Shift right Move cada bit uma posição para a direita Introduz um 0 no bit FlipFlop mais a esquerda mesmo que o bit mais significativo 1 1 0 1 Conteúdo do Registrador Antes do deslocamento Para a direita 0 1 1 0 0 Conteúdo do Registrador Depois do deslocamento Para a direita a Q Faça um shift para a direita em 1001 mostrando o valor no registrador após a cada shift a A 1001 original 0100 0010 0001 0000 shrin Implementação Conecte cada saída de um flipflop a entrada do flipflop vizinho a Shift Lógico para a Direita Digital Design Copyright 2006 Frank Vahid 13 Registradores de Deslocamento Shift Registers Para permitir que um registrador desloque shift ou não retenha o dado armazenado necessitamos de MUXs 21 shr igual a 0 significa reter 1significa deslocar shift shrin valor a ser deslocado shift in Pode ser 0 ou 1 Obs Poderíamos facilmente projetar registradores de deslocamento capazes de deslocarem um bit para esquerda 1 0 2 1 D Q Q3 1 0 D Q Q2 1 0 D Q Q1 1 0 D Q Q0 shr1 1 0 2 1 D Q Q3 shr shrin shr shrin 1 0 D Q Q2 1 0 D Q Q1 b c a 1 0 D Q Q0 Q3 Q2 Q1 Q0 Digital Design Copyright 2006 Frank Vahid 14 Registradores Circulares Rotate Shifters Rotação para a direita Assim como o deslocamento para a direita entretanto o bit mais a esquerda passará a ser o bit mais a direita no evento de clock 1 1 0 1 1 1 1 0 Conteudo do registrador Antes do shift para a direita Conteudo do registrador Após o shift para a direita Digital Design Copyright 2006 Frank Vahid 15 Exemplo de aplicação do Registrador de Deslocamento Display de Carros Exemplo anterior 8 21 11 fios da CPU do carro para os 4 registradores responsáveis por exibir os valores no display Queremos um número menor de fios Usamos shift registers Fios 1214 A CPU do carro envia um valor bit a cada período de clock C d0 d1 d2 d3 e i0 i0 i1 i2 i3 a0 a1 load i1 2 4 From the cars central computer 8 8 8 8 8 D d 8 x y s1 s0 8bit 4 1 To the above mirror display load load load load reg0 reg1 reg2 reg3 T A I M 11 wires c d0 d1 d2 d3 e i0 i0 s1 s0 x y i1 i2 i3 a0 a1 shift i1 2 4 8 8 8 8 D d 8 41 shr shrin shr shrin shr shrin shr shrin reg0 reg1 reg2 reg3 T A I M Obs essa linha é 1 bit rao invés de 8 bits como antes Digital Design Copyright 2006 Frank Vahid 16 Registradores Multifuncionais Registradores podem ser projetados para serem multifuncionais Carregar Deslocar Zerar Carregar com 0s E reter os valores armazenados Facilmente projetados com o auxílio de MUXs Conecte cada entrada do MUX de forma adequada para implementar a função desejada s1 shrin s0 3 2 1 I3 0 D Q Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 Q2 0 3 2 1 I2 0 D Q 0 Q1 3 2 1 I1 0 D Q 0 Q0 3 2 1 I0 0 D Q 0 4 1 shrin s1 s0 a b Funções Operação Manter o valor atual Carga paralela Deslocar para a direita Carga 0 no registrador s0 0 1 0 1 s1 0 0 1 1 Digital Design Copyright 2006 Frank Vahid 17 Registradores Multifuncionais shrin shlin 3 2 1 I3 0 D Q Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 Q2 3 2 1 I2 0 D Q Q1 3 2 1 I1 0 D Q Q0 3 2 1 I0 0 D Q shlin shrin s1 s0 a b Operação Manter o valor atual Carga paralela Desloca para a Direita Desloca para a Esquerda s0 0 1 0 1 s1 0 0 1 1 Digital Design Copyright 2006 Frank Vahid 18 Manter o valor Shift left Shift right Shift right Carga paralela Carga paralela Carga paralela Carga paralela Operação s0 s1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 Saídas Entradas 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 ld shr shl Tabela verdade do circuito combinacional Registradores Multifuncionais com Entradas de Controle Separadas Manter o valor atual Shift left Shift right Shift right shr has priority over shl Carga paralela Carga paralela ld tem prioridade Carga paralela ld tem prioridade Carga paralela ld tem prioridade Operação shl shr ld 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Q2 Q1 Q0 Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 I2 I1 I0 I3 s1 shrin shrin shr shl ld s0 shlin shlin a a combi national circuit a s1 ldshrshl ldshrshl ldshrshl s0 ldshrshl ld Operação Manter o valor atual Carga paralela Desloca para a Direita Desloca para a Esquerda s0 0 1 0 1 s1 0 0 1 1 Digital Design Copyright 2006 Frank Vahid 19 Tabela de Operações de Registradores As operações que um Registrador é capaz de executar são usualmente exibidas na forma de uma tabela compacta X significa mesma operação se o valor é 0 ou 1 Um X expande a duas linhas Dois Xs expande a quatro linhas Coloque a entrada de controle de maior prioridade à esquerda de forma a se obter uma tabela de operação compacta e simples Mantém o valor Shift left Operação s0 s1 0 1 0 1 Saídas Entradas 0 1 0 0 0 0 Shift right Shift right 1 1 0 0 0 1 1 1 0 0 Carga paralela Carga paralela Carga paralela Carga paralela 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 ld shr shl Shift left Operação r ld shr shl 0 1 0 0 0 0 Carga paralela X X 1 Shift right X 1 0 Mantém o valor Digital Design Copyright 2006 Frank Vahid 20 Processo de Projeto de Registradores Podemos projetar registradores multifuncionais com as operações desejadas executando somente 4 passos Digital Design Copyright 2006 Frank Vahid 21 Exemplo de Projeto de Registradores Projetar registrador com as operações Carga shift left Limpar Zerar síncrono Setar colocar em 1 síncrono Manter Passo 1 Determinar o tamanho do MUX 5 operações Necessitamos de um MUX 81 Passo 2 Montamos a tabela de operações Passo 3 Conectamos as entradas dos MUXs Passo 4 Mapeamos as entradas de controle Operação Manter o valor Carga Paralela Shift left Limpar síncrono Setar síncrono Manter o valor Manter o valor Manter o valor s0 0 1 0 1 0 1 0 1 s1 0 0 1 1 0 0 1 1 s2 0 0 0 0 1 1 1 1 D Q Qn 7 6 3 2 1 In 0 5 4 1 0 s2 s1 s0 Da saída Qn1 Operação Manter o valor Shift left Carga Paralela Set to all 1s Clear to all 0s s0 0 0 1 0 1 s1 0 1 0 0 1 s2 0 0 0 1 0 shl 0 1 X X X ld 0 0 1 X X clr 0 0 0 0 1 Entradas Saídas set 0 0 0 1 X a a s2 clrset s1 clrsetldshl clr s0 clrsetld clr Digital Design Copyright 2006 Frank Vahid 22 Exemplo de Projeto de Registradores Q2 Q1 Q0 Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 I2 I1 I0 I3 s1 ld shl s0 shlin shlin circuito Combina cional set clr s2 22 Passo 4 Mapeamos as entradas de controle Operação Manter o valor Shift left Carga Paralela Set to all 1s Clear to all 0s s0 0 0 1 0 1 s1 0 1 0 0 1 s2 0 0 0 1 0 shl 0 1 X X X ld 0 0 1 X X clr 0 0 0 0 1 Entradas Saídas set 0 0 0 1 X a s2 clrset s1 clrsetldshl clr s0 clrsetld clr Digital Design Copyright 2006 Frank Vahid 23 Somadores Soma dois números binários de Nbits Um somador de 2bits soma dois números de 2bits produzindo como saída um resultado com 3bits Ex 01 11 100 1 3 4 Podemos projetálo usando o processo de projeto de circuitos combinacionais cap 2 entretanto tornase ineficiente para um número elevado de bits Por que 43 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 s0 0 1 0 1 1 0 1 0 s1 0 0 1 1 0 1 1 0 c 0 0 0 0 0 0 0 1 b0 0 1 0 1 0 1 0 1 b1 0 0 1 1 0 0 1 1 a1 0 0 0 0 0 0 0 0 Entradas Saídas a0 0 0 0 0 1 1 1 1 Digital Design Copyright 2006 Frank Vahid 24 Porque Somadores não são projetados usandose o processo de projeto de circ Combinacionais Tabelas verdade gigantes Um somador de 2bits apresenta a tabela verdade mostrada ao lado Possui 222 16 linhas Um somador de 8bits 288 65536 linhas 16bits 21616 4 bilhões de linhas Tabelas verdade enormes com vários 1s0s produzem circuitos enormes O gráfico mostra o crescimento do número de transistores para um somador de Nbits implementado em uma ferramenta de síntese Ex Quartus II 43 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 s0 0 1 0 1 1 0 1 0 s1 0 0 1 1 0 1 1 0 c 0 0 0 0 0 0 0 1 b0 0 1 0 1 0 1 0 1 b1 0 0 1 1 0 0 1 1 a1 0 0 0 0 0 0 0 0 Inputs Outputs a0 0 0 0 0 1 1 1 1 Q Qual seria o número de transistores para um somador de 16 bits A 1000 transistores para N5 para cada incremento de N em uma unidade Logo transistores 10002N5 Portanto para N16 transistores 10002165 10002048 2048000 a 10000 8000 6000 4000 2000 0 1 2 3 4 5 N 6 7 8 t Transistores Digital Design Copyright 2006 Frank Vahid 25 Método alternativo de se projetar um Somador Reproduzir como faríamos uma soma com lápis e papel Somamos uma coluna por vez começando da coluna mais a direita Fazemos a soma dos elementos da coluna e produzimos ou não um transporte carry bit para a coluna seguinte 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 A B a Digital Design Copyright 2006 Frank Vahid 26 Método alternativo de se projetar um Somador Projete um componente para cada coluna Um componente que some os bits daquela coluna e que gere um bit carry bit para a coluna seguinte 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 b co s 0 a ci A B 0 1 1 1 1 1 b co s 1 a ci 1 b co s 0 a ci 1 1 1 0 b co s 1 SOMA a 0 A B 1 Halfadder Fulladders a Digital Design Copyright 2006 Frank Vahid 27 HalfAdder Meio Somador Halfadder Soma 2 bits produz como sinais de saída a soma e o carry bit Projeteo usando o processo de projeto de circuitos combinacionais b co s 0 a ci A B 0 1 1 1 1 1 1 b co s 1 a ci 1 1 b co s 0 a ci 1 0 b co s 1 SOMA a 0 s 0 1 1 0 co 0 0 0 1 b 0 1 0 1 a 0 0 1 1 I Entradas Saídas Passo1 Identifique a função Passo 2 Converta em equações Passo 3 Implemente o circuito co ab s ab ab mesmo que s a xor b a b co co s a b s Halfadder Digital Design Copyright 2006 Frank Vahid 28 FullAdder Somador Completo Fulladder Soma 3 bits produz 2 saídas Soma e o Carrybit Projete usando o processo aprendido no capítulo 2 b co s 0 a ci A B 0 1 1 1 1 1 1 b co s 1 a ci 1 1 b co s 0 a ci 1 0 b co s 1 SOMA a 0 Passo1 Identifique a função s 0 1 1 0 1 0 0 1 co 0 0 0 1 0 1 1 1 ci 0 1 0 1 0 1 0 1 b 0 0 1 1 0 0 1 1 a 0 0 0 0 1 1 1 1 Inputs Outputs Passo 2 Converta em equações co abc abc abc abc co abc abc abc abc abc abc co aabc bbac ccab co bc ac ab s abc abc abc abc s abc bc abc bc s ab xor c ab xor c s a xor b xor c Passo 3 Implemente o circuito co ci b a s Full adder Digital Design Copyright 2006 Frank Vahid 29 RippleCarry Adder Usando como elementos base o meio somador halfadder e o somador completo fulladder podemos construir um somador de N bits como se estivéssemos fazendo uma soma com lápis e papel Esse circuito é chamado ripplecarry adder Abaixo temos um ripplecarry adder de 4bits Soma dois números de 4bits gerando como saída um número binário de 5bits A saída em 5bits é formada pelos 4bits soma mais 1bit propagação ou carryout gerado a partir do FA localizado mais a esquerda da figura abaixo Pode ser facilmente estendido para qualquer tamanho qualquer número de bits a3 co s FA co b3 a2 b2 s3 s2 s1 b ci a co s FA b ci a a1 b1 co s FA b ci a s0 a0 b0 co s HA b a a a3a2 a1a0 b3 s3 s2 s1s0 co b2b1 b0 b 4bit adder Digital Design Copyright 2006 Frank Vahid 30 RippleCarry Adder Usando um fulladder ao invés de um halfhadder para produzir o bit menos significativo da soma nos proporcionará incluir mais um sinal de entrada o bit carry in Será útil futuramante quando conectarmos pequenos somadores para formar somadores maiores a3 co s FA co b3 a2 b2 s3 s2 s1 b ci a co s FA b ci a a1 b1 co s FA b ci a s0 a0 b0 ci co s FA b ci a a a3 a2a1 a0 b3 s3 s2 s1 s0 co ci b2 b1b0 b 4bit adder Digital Design Copyright 2006 Frank Vahid 31 Funcionamento do RippleCarry Adder 0 1 1 1 0 0 0 1 01110001 a resposta deverá ser 01000 0 co s FA 0 0 0 0 0 0 0 0 0 0 0 0 0 b ci a co s FA b ci a 0 0 co s FA b ci a 0 0 0 co s FA b ci a 0 Considere que todas as entradas Inicialmente são todas iguais a 0 Saída após 2 ns 1 FullAdder 0 0 1 1 0 co s FA 0 0 0 0 0 co2 co1 co0 b ci a co s FA b ci a co s FA b ci a co s FA b ci a 0 01 Resposta Errada A soma só fica pronta após o último carrybit propagarse através do FA FullAdder mais à esquerda Tempo de soma proporcional ao número de FAs a Digital Design Copyright 2006 Frank Vahid 32 0 0 0 co s FA 1 1 1 1 1 0 1 0 b ci a co s FA b ci a 1 0 co s FA b ci a 0 0 0 1 1 co s FA b ci a d Saídas após 8ns 4 FA delays Funcionamento do RippleCarry Adder 0 co s FA 0 0 1 co1 0 1 0 b ci a co s FA b ci a 1 0 co s FA b ci a 0 0 1 0 0 1 1 co s FA b ci a b 1 0 1 0 0 0 0 1 0 1 1 Saídas após 4ns 2 FA delays 0 0 co s FA 1 1 0 1 co2 0 1 0 b ci a co s FA b ci a 1 0 co s FA b ci a 0 0 1 1 0 co s FA b ci a c Saídas após 6ns 3 FA delays a 01110001 a resposta deverá ser 01000 1 A saída correta só fica pronta após um tempo de propagação de 4 FA delays Digital Design Copyright 2006 Frank Vahid 33 Cascateando Somadores para produzir Somadores maiores a3a2a1a0 b3 s3s2s1s0 co s7s6s5s4 co ci b2b1b0 a7a6a5a4 b7b6b5b4 a b 4bit adder a3a2a1a0 b3 s3s2s1s0 s3s2s1s0 co ci b2b1b0 a3a2a1a0 b3b2b1b0 4bit adder a7 a0 b7 b0 s7 s0 co ci 8bit adder Digital Design Copyright 2006 Frank Vahid 34 Exemplo de uso de um Somador Uma calculadora que só faz somas construída com dois DIPSwitchs e LEDs Objetivo Projetar uma unidade somadora capaz de somar dois números de 8 bits gerados a partir de DIPSwitchs DIP switch chave que permite a passagem de corrente 1 ou não 0 Solução Um somador ripplecarry de 8bits DIP switches 1 0 a7a0 b7b0 s7s0 8bit carryripple adder co ci 0 CALC LEDs a Digital Design Copyright 2006 Frank Vahid 35 Exemplo de uso de um Somador Uma calculadora que só faz somas construída com dois DIPSwitchs e LEDs A fim de evitar que valores intermediários possam provocar saídas incorretas devemos incluir um registrador na saída do somador Na realidade o que acontece é que os LEDs piscariam muito rapidamente imperceptível para o ser humano detectar mas o princípio de armazenar as saídas para evitar que valores espúrios sejam lidos por dispositivos externos que normalmente perceberão essas mudanças se aplica a essa situação DIP switches 1 0 a7a0 b7b0 s7s0 8bit adder 8bit register co ci 0 CALC LEDs e clk ld Digital Design Copyright 2006 Frank Vahid 36 display register Para o display 1 Ajuste de Pesos clk ld 0 0 0 0 0 0 4 7 5 1 3 6 2 Sensor de peso Exemplo de aplicação de um Somador Balança com compensação de peso pino de tara Valores para compensação variando de 07 Kg Para compensar balanças desreguladas pino de tara Usaremos um somador ripplecarry de 8bits a7a0 b7b0 s7s0 Somador de 8 bits co ci 0 01000010 000 01000010 010 01000100 a Digital Design Copyright 2006 Frank Vahid 37 Deslocadores Shifters Deslocamentos por ex deslocando 0011 para a esquerda resulta em 0110 Isso é útil para Manipular bits Converter dados da forma serial para paralelo lembre do exemplo do circuito de exibição de funções de um carro no painel do veículo Deslocar um bit para esquerda Shift left once é o mesmo que multiplicar por 2 de forma rápida Ex 0011 3 se tornará 0110 6 Shift right once mesmo que dividir por 2 a i2 q3 q2 q1 q0 in i3 i1 i0 Deslocador Para Esquerda 0 1 0 1 0 1 0 1 in sh i3 q3 q2 q1 q0 i2 i1 i0 Shifter with left shift or no shift inL i3 q3 q2 q1 q0 i2 i1 i0 inR 2 0 s0 s1 shL shR 1 2 0 1 2 0 1 2 0 1 Shifter with left shift right shift and no shift 1 Símbolo 44 a Digital Design Copyright 2006 Frank Vahid 38 Exemplo de Aplicação com Shifter Um conversor de temperaturas de graus Celsius para Fahrenheit Aproximado Faça um circuito que converta uma temperatura representada com 8bits em graus Celsius em uma temperatura com 8bits em Fahrenheit F C 95 32 Approximate F C2 32 Usaremos um deslocador para esquerda F leftshiftC 32 C 8 00001100 12 00011000 24 00111000 56 1 0 shift in 0 8 F 8bit adder 8 8 00100000 32 2 a Digital Design Copyright 2006 Frank Vahid 39 Exemplo de Shifters Circuito que calcula média de temperaturas Quatro registradores armazenam um histórico de temperaturas Queremos como saída a média dessas temperaturas Adicionaremos em seguida dividiremos por quatro Mesmo que deslocar para a direita 2 posições Usaremos 3 somadores e um shift right de 2 posições Tavg Ravg ld ld T clk ld Ra Rb Rc Rd 2 0 divido por 4 shift in 0 a 001000 8 001100 12 001111 15 0000111 7 0101010 42 0001010 10 Digital Design Copyright 2006 Frank Vahid 40 Barrel Shifter Um deslocador que pode deslocar os bits de entrada de qualquer quantidade 4bit barrel left shift pode deslocar para a esquerda de 0 1 2 ou 3 posições 8bit barrel left shifter pode deslocar para a esquerda de 0 1 2 3 4 5 6 ou 7 posições Deslocar um número de 8bits 8 posições não tem nenhuma utilidade Poderíamos projetálo com MUXs 81 e fios Geraria um número muito grande de fios Um projeto mais eficiente Uma cadeia de 3 shifters 4 2 e 1 Poderíamos deslocar 07 posições selecionando as entradas corretas dos MUXs 0 1 0 1 0 1 0 1 in sh i3 q3 q2 q1 q0 i2 i1 i0 Deslocador de 1 posição usa MUXs 21 Uma solução com MUXs 81 para implementar um Barrel Shifter de 8 bits necessitaria de muitos fios 1 in sh 0 0 0 x y z 8 Q 2 in sh 8 4 in sh 8 8 I Q xyz Para deslocar 5 bits a 1 0 1 00000110 01100000 por 4 01100000 11000000 por 1 Resultado desloc 5 Digital Design Copyright 2006 Frank Vahid 41 Comparadores Um comparador de Nbits Produz em sua única saída o nível lógico 1 se dois números de Nbits forem idênticos Um comparador de igualdade de 4bits cujas entradas são A e B a3 deverá que ser igual a b3 a2 b2 a1 b1 a0 b0 Dois bits são iguais se ambos forem iguais a 1 ou ambos iguais a 0 eq a3b3 a3b3 a2b2 a2b2 a1b1 a1b1 a0b0 a0b0 Lembre que as saídas de uma XNOR de 2 entradas é igual a 1 se suas entradas forem iguais a3 xnor b3 a2 xnor b2 a1 xnor b1 a0 xnor b0 45 a3 b3 a2 b2 a1 b1 a0 b0 eq a b a3a2 a1a0 b3 eq b2b1 b0 Comparador de 4 bits a 0110 0111 0 1 1 0 0 1 1 1 0 1 1 1 0 Digital Design Copyright 2006 Frank Vahid 42 Comparador de Magnitude Comparador de Magnitude de N bits Indica se AB AB ou AB para as suas entradas A e B de N bits Como projetar Como você compararia usando lápis e papel Primeiro comparo a3 e b3 Se forem iguais comparo a2 e b2 E assim por diante Paro se a comparação der diferente independentemente de qual bit seja o que for igual a 1 é o maior operando Caso não haja nenhuma desigualdade concluise que A B A1011 B1001 1011 1001 a Igual 1011 1001 Igual 1011 1001 Diferente Logo A B Digital Design Copyright 2006 Frank Vahid 43 Comparador de Magnitude Exemplo de execução no lápis e papel segue o mesmo princípio do projeto desse bloco operativo Comece pela esquerda compare cada par de bits passe o resultado para a direita O circuito para cada par de bits chamaremos de estágio Cada estágio tem 3 entradas indicando resultados dos estados de maior ordem passandoos para os de mais baixa ordem Igt Ieq Ilt a3a2a1a0 b3b2b1b0 AgtB AeqB AltB ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Estágio 3 a3 b3 a b ingt ineq inlt outgt outeq outlt Estágio 2 a2 b2 a b ingt ineq inlt outgt outeq outlt Estágio 1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Estágio 0 a0 b0 a b a b 0 0 1 Comparador de Magnitude de 4 bits Digital Design Copyright 2006 Frank Vahid 44 Comparador de Magnitude Cada estágio outgt ingt ineq a b AB se já foi determinado em um estágio de maior ordem ou se estágio de maior ordem for igual e nesse estágio a1 e b0 outlt inlt ineq a b AB se já foi determinado em um estágio de maior ordem ou se estágio de maior ordem for igual e nesse estágio a0 e b1 outeq ineq a XNOR b AB se já foi determinado em um estágio de maior ordem e nesse estágio ab também O circuito que implementa cada estágio é simples algumas portas lógicas ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Estágio 3 a3 b3 a b ingt ineq inlt outgt outeq outlt Estágio 2 a2 b2 a b ingt ineq inlt outgt outeq outlt Estágio 1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Estágio 0 a0 b0 a b Digital Design Copyright 2006 Frank Vahid 45 Comparador de Magnitude Como funciona ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b a 0 1 0 ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b b 0 1 0 0 1 0 1011 1001 0 1 0 Ieq1 força esse estágio a fazer uma comparação a Digital Design Copyright 2006 Frank Vahid 46 Comparador de Magnitude O resultado final aparecerá na saída do bloco mais a direita O resultado ficará pronto depois do atraso de propagação dos 4 blocos 1011 1001 ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b c 0 1 0 1 0 0 ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b d 0 1 0 0 1 0 a Digital Design Copyright 2006 Frank Vahid 47 Exemplo do Comparador de Magnitude Mínimo de dois números Projete um componente operacional circuito combinacional que aponte o menor de dois números de 8 bits Solução Precisaremos de um comparador de magnitude de 8bits e 8 MUXs 21 Se AB faça passar A através do mux Caso contrário passe B MIN Igt Ieq Ilt AgtB AeqB AltB 0 1 0 A A B B Comparador de Magnitude de 8 bits s I1 I0 21 mux 8bit C 8 8 8 8 8 8 8 8 C A B Min a b 11000000 01111111 0 0 1 01111111 a Digital Design Copyright 2006 Frank Vahid 48 Contadores Contador ascendente de Nbits Registrador de Nbits capaz de ser incrementado de uma unidade ao seu próprio valor em cada evento de clock 0000 0001 0010 0011 1110 1111 0000 Observe o que acontece com a contagem na passagem de 1111 para 0000 Uma saída chamada de Terminal count tc fica igual a 1 enquanto 1111 logo antes da virada para 0000 Projeto interno Registrador somador de uma unidade incrementador e uma porta AND de N entradas para sinalizar tc 46 cnt tc C Contador ascendente de 4 bits 4 0000 01 0001 0010 0011 0100 0101 1110 0 1111 10 0000 0001 ld Registrador de 4 bits C tc 4 4 4 4 cnt Contador ascendente de 4 bits 1 a a Digital Design Copyright 2006 Frank Vahid 49 Incrementador Projeto do Incrementador Poderíamos usar um somador ripplecarry com a entrada B inicializada com 00001 Mas quando somamos 00001 a outro número os zeros a esquerda não são levados em consideração portanto só necessitamos de somar 2 bits por coluna Usamos halfadders somam 2 bits ao invés de fulladders somam 3 bits 0 0 1 1 0 1 1 1 carries unused 0 0 0 0 1 a b a3 a2 a1 a0 1 s0 s1 s2 s3 co a b co s HA a b co s HA a b co s HA a b co s HA a3 co s3s2 1 s1 s0 a2 a1 a0 Digital Design Copyright 2006 Frank Vahid 50 Incrementador Podemos construir incrementadores muito mais rápidos usando o processo de projeto de circuitos combinacionais Monte uma tabela verdade Encontre a equação para cada saída c0 a3a2a1a0 s0 a0 Resulta em um circuito menor e mais rápido s2 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 s1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 s0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 s3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 c0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 a0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 a1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 a3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Inputs Outputs a2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Digital Design Copyright 2006 Frank Vahid 51 Exemplo de uso de contadores Relembrando o exemplo do Capítulo 2 Necessitávamos de um componente que incrementasse as entradas xy cada vez que o botão fosse pressionado 00 01 10 11 00 01 10 11 00 Podemos usar um contador ascendente de 2bits Assuma mode1 por somente um ciclo de clock durante cada pressionar do botão Lembre Sincronizador do Pressionar de Botões exemplo do Cap 3 cnt tc c1c0 x y 2bit upcounter mode clk Digital Design Copyright 2006 Frank Vahid 52 Exemplo de aplicação do contador Gerador de clock de 1 Hz a partir de um Oscilador de 256 Hz Suponha que temos um oscilador de 256 Hz mas queremos um sinal de clock de 1 Hz 1 Hz significa 1 pulso por segundo Podemos projetálo com um contador ascendente de 8bits usaremos a saída tc como pulso Conta de 0 a 255 256 vezes logo pulsa tc a cada 256 ciclos cnt tc C não usado Contador ascendente de 8 bits 1 osc 256 Hz 8 p 1 Hz Digital Design Copyright 2006 Frank Vahid 53 Contador Decrescente Contador decrescente de 4 bits 1111 1110 1101 1100 0011 0010 0001 0000 1111 Contagem final 0000 Use uma porta NOR para chegada a 0000 Necessita de um decrementador 1 projeto semelhantre ao incrementador ld Registrador de 4 bits C tc 4 4 4 4 cnt Contador decrescente de 4 bits 1 Digital Design Copyright 2006 Frank Vahid 54 Contador AscendenteDecrescente Pode contar em ambos os sentidos Possuí um incrementador e um decrementador Use a entrada dir para selecionar o sentido de contagem selecionando dir0 no MUX 21 significa ascendente ld 4bit register C tc 4 4 4 4 4 4 cnt clr clr dir 4bit updown counter 4 4 1 1 1 0 2x1 1 0 4bit 2x1 Exemplo de aplicação do contador Sequenciador Luminoso Ilumina 8 leds da direita para a esquerda um por vez um por segundo Use um contador ascendente de 3bits para contar de 0 a 7 Use um decodificador 3x8 para acender o led correto Obs Usamos um contador de 3bits e um decodificador 3x8 Por quê não um contador de 8bits Digital Design Copyright 2006 Frank Vahid 55 Digital Design Copyright 2006 Frank Vahid 61 Multiplicador Podemos construir multiplicadores que imitam o procesos de multiplicação que usamos com lápis e papel Observe que multiplicar o multiplicando por 1 é o mesmo que fazer um AND do multiplicando com 1 47 Digital Design Copyright 2006 Frank Vahid 62 Multiplicador Representação generalizada do processo de multiplicação manual Digital Design Copyright 2006 Frank Vahid 63 Multiplicador Projeto do multiplicador um array de portas lógicas AND A B P Multiplicador 5bit 6bit 7bit 0 0 0 0 0 0 a0 a1 a2 a3 b0 b1 b2 b3 0 p7p0 pp1 pp2 pp3 pp4 Digital Design Copyright 2006 Frank Vahid 64 Subtrator Podemos construir subtratores assim como construímos somadores com o ripplecarry adder Imita o processo manual de subtração Empréstimo de colunas a esquerda Usaremos um componente chamado de fullsubtractor Te é o transporte vindo da coluna da direita Ts é o sinal de pedido de empréstimo feito para a coluna a esquerda 48 1 1 0 0 0 1 1 1 1 1 0 1stcolumn 1 1 0 1 0 10 0 1 1 1 0 1 1 3rd column 1 1 0 0 0 0 1 1 1 0 0 1 1 4th column Ts a3 a b FS Ts s b3 s3 a2 a b FS s b2 s2 a1 a b FS s b1 s1 a0 a3a2 a1a0 b3 s3s2s1s0 Te b2 b1b0 a b FS Te s b0 s0 b c Subtrator de 4 bits a 1 1 0 0 1 1 1 1 1 1 0 2ndcolumn 10 10 S 0 1 1 0 1 0 0 1 Ts 0 1 1 1 0 0 0 1 Te 0 1 0 1 0 1 0 1 b 0 0 1 1 0 0 1 1 a 0 0 0 0 1 1 1 1 Entradas Saidas Ts Ts Ts Ts Te Te Te Te Digital Design Copyright 2006 Frank Vahid 65 Exemplo de aplicação do subtrator Calculadora que somasubtrai usando como entradas DIPSwitches Calculadora Chave f indica se desejamos somar f0 ou subtrair f1 Use além do somador um subtrator e MUXs 21 DIP switches 1 0 8bit register CALC LEDs e f clk ld 8 8 8 0 0 8 8 8 8 8 2x1 0 1 1 0 wi ci A A B B S S co wo 8bit adder 8bit subtractor Digital Design Copyright 2006 Frank Vahid 66 Exemplo de aplicação de subtratores Conversor de RGB para CMY Cor Representada como uma combinação pesos de três cores red green and blue RGB Considerando 8 bits para cada uma cor seria representada com 24 bits Branco R11111111 G11111111 B11111111 Preto R00000000 G00000000 B00000000 Outras cores valores intermediários Ex R00111111 G00000000 B00001111 poderia ser um tom de vermelho Ideal para monitores de computadores que misturam vermelho verde e o azul para formar todas as cores Impressoras adotam um esquema de cores oposto Porque as tintas absorvem a luz Use cores complementares de RGB Ciano absorve vermelho reflete o verde e o azul Magenta absorve o verde e amarelo absorve o azul Yellow Digital Design Copyright 2006 Frank Vahid 67 Exemplo de Aplicação de Subtratores Conversor de Cores RGB para CMY Impressoras devem converter rapidamente RGB em CMY C255R M255G Y255B Use subtratores como mostrado na figura ao lado R G B 8 8 8 8 8 8 8 8 8 255 255 255 C M Y Digital Design Copyright 2006 Frank Vahid 68 Exemplo de Aplicação de Subtratores Conversor de Cores RGB para CMY Tente armazenar padrões de tintas coloridas Solução cara para o sistema Imperfeições misturando C M Y não produzem uma boa impressão Solução Excluir a porção de preto ou cinza da cor e imprimir essa parte usando o cartucho de tinta preta Ex CMY de 250200200 200200200 5000 200200200 é um cinza escuro use tinta preta Digital Design Copyright 2006 Frank Vahid 69 Exemplo de Aplicação de Subtratores Conversor de Cores RGB para CMY Chame a parte preta de K 200200200 K200 Calcule o mínimo de C M Y Use o componente MIN projetado anteriormente um comparador e mux para calcular o valor de K Subtraia K dos valores de C M e Y Ex Entrada 250200200 produz como saída 5000200 8 8 C2 M2 Y2 K 8 8 8 8 8 8 8 8 MIN MIN C C M Y R G RGB t o CMY B M Y K R G B 8 8 8 Digital Design Copyright 2006 Frank Vahid 70 Representação de Números Negativos Complemento a Dois Números negativos são normalmente usados por CPUs para realizar cálculos Como representálos no sistema binário Modo sinal e magnitude Usamos o bit mais significativo para indicar o sinal Portanto 5 seria representado 1101 usandose 4 bits 10000101 usandose 8 bits Uma maneira mais apropriada Modo complemento a 2 Maior vantagem Nos permite fazer subtração usando a operação de adição Portanto precisaremos somente de um único componente para fazer adição ou subtração e não mais um componente específico para cada operação Digital Design Copyright 2006 Frank Vahid 73 Operações em Complemento a Dois É só complementar bit a bit o operando e somar 1 Exemplo O complemento a dois de 011 é 1001 101 Q Qual o complemento a dois de 0101 A 101011011 a Q Qual o complemento a dois de 0011 A 110011101 Digital Design Copyright 2006 Frank Vahid 74 Subtrator usando complemento a dois construído com um Somador Usando complemento a dois A B A B A complemento a dois de B A invertebitsB 1 Construímos um subtrator usando um somador e invertendo complementando os bits de B e somando 1 ao bit menos significativo colocando o Cin 1 1 cin B A Somador S B A Nbit Digital Design Copyright 2006 Frank Vahid 75 SomadorSubtrator SomadorSubtrator a entrada de controle determina se realizaremos uma soma ou uma subtração Podemos usar MUXs 21 onde a entrada sub deixa passar B ou B De forma alternativa poderíamos usar portas lógicas XOR se a entrada sub for igual a 0 os bits de B serão as entradas de um dos operandos do somador caso contrário B Digital Design Copyright 2006 Frank Vahid 76 Exemplo do uso do SomadorSubtrator Calculadora Na versão anterior necessitávamos de um somador e um subtrator em separado para realizar as operações Usando o novo componente conseguimos otimizar DIP switches 1 0 8bit register 8bit addersubtractor sub CALC LEDs e S A B f clk ld 1 0 8 8 8 8 DIP switches 1 0 8bitregister CALC LEDs e f clk ld 8 8 8 0 0 8 8 8 8 8 2x1 0 1 1 0 wi ci A A B B S S co wo 8bit adder 8bit subtractor Digital Design Copyright 2006 Frank Vahid 77 Estouro dos Limites de Representação Overflow Em algumas situações o resultado não pode ser representado com uma quantidade fixa de bits Ex Sejam dois operandos de 4bit representados em complemento a dois Suponha ainda que desejamos somálos 01110001 718 Porém não conseguimos representar números maiores que 7 com 4 bits em complemento a dois 01110001 1000 resposta errada 1000 em complemento a dois é 8 e não 8 O nosso componente SomadorSubtrator deverá indicar se um overflow ocorreu Nesse caso o resultado produzido pelo componente deverá ser descartado ou não ser levado em consideração Digital Design Copyright 2006 Frank Vahid 78 Detectando Overflow Método 1 Considere para efeito de exemplo que nossos números são representados usandose 4 bits Podemos detectar overflow quando o bit de sinal de dois numeros são iguais e o resultado produz um operando com bit de sinal diferente Se os bits de sinal dos operandos são diferentes não ocorrerá overflow Circuito combinacional muito simples overflow a3b3s3 a3b3s3 Incluiremos uma nova saída o bit de overflow no nosso componente 0 1 1 1 1 0 0 0 0 0 0 1 Bit de sinal overflow a 1 1 1 1 0 1 1 1 0 1 0 0 overflow b 1 0 0 0 1 1 1 1 1 0 1 1 no overflow c Digital Design Copyright 2006 Frank Vahid 79 Detectando overflow Método 2 Método ainda mais simples Detecte a diferença entre o carryin do bit de sinal com o carryout do bit de sinal Produz um circuito combinacional mais simples para a detecção do overflow overflow c3 xor c4 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 overflow a 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 overflow b 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 no overflow c Se o carry in do bit de sinal diferir do carry out um overflow ocorreu Digital Design Copyright 2006 Frank Vahid 80 Unidade Lógica e Aritmética ALU ALU Componente que pode executar qualquer uma das várias operaçoes aritméticas somar subtrair incremento etc e lógicas AND OR etc As operações são realizadas com base nas entradas de controle do componente Suponha que queremos uma calculadora multifunção que não só adiciona e subtrai mas também incrementa faça ANDs ORs XORs etc 49 Digital Design Copyright 2006 Frank Vahid 81 Calculadora Multifuncional sem o componente ALU Podemos construir calculadoras multifuncionais usando componentes em separado para cada operação e muxes Mas precisaríamos de muitos fios e um desperdício de poder de processamento pois de todas as operações poderíamos usar somente uma por vez DIP switches 1 0 8bit register 8bit 8 1 CALC LEDs e z y x clk Id s0 s1 s2 1 0 0 1 2 3 4 5 6 7 NOT XOR OR AND 1 Ð 8 8 8 8 8 8 8 8 8 8 8 8 A B A lot of wires Wasted power Digital Design Copyright 2006 Frank Vahid 82 ALU Projetos mais eficiente usam a ALU como componente base O projeto de uma ALU usa um único somador para realizar as operações aritméticas e lógica adicional antes das entradas dos operandos A e B para realizar as demais operações Esse bloco operacional é um circuito combinacional chamado arithmeticlogic extender O bloco operacional modifica as entradas A e B de forma que a operação desejada apareça na saída do somador Digital Design Copyright 2006 Frank Vahid 83 ArithmeticLogic Extender de uma ALU xyz000 Queremos SAB faça passar a até ia b até ib e faça cin0 xyz001 Queremos SAB faça passar a até ia b até ib e faça cin1 xyz010 Queremos SA1 faça passar a até ia faça ib0 e faça cin1 xyz011 Queremos SA faça passar a até ia faça ib0 e faça cin0 xyz100 Queremos SA AND B faça iaab b0 e cin0 outros faça de forma semelhante Baseado no que foi dito acima produza um circuito lógico para iaxyzab e ibxyzab para cada caso e produza outro circuito lógico para cinxyz para completar o componente do bloco operacional AL Extender Digital Design Copyright 2006 Frank Vahid 84 Exemplo de uso de uma ALU Calculadora Multifuncional Projeto com o componente ALU é mais eficiente Sem muitos fios Sem desperdícios DIP switches 1 0 1 0 8bit register ALU S CALC LEDs e z y x clk ld z y x 8 8 8 8 A A B B DIP swi tches 1 0 8bit register 8bit 8 1 CALC LEDs e z y x clk Id s0 s1 s2 1 0 0 1 2 3 4 5 6 7 NOT XOR OR AND 1 Ð 8 8 8 8 8 8 8 8 8 8 8 8 A B A lot of wi res Wast ed pow er Digital Design Copyright 2006 Frank Vahid 85 om the cars ompu er C d0 d1 d2 d3 e i0 i0 i1 i2 i3 a0 a1 load i1 2 4 Fr centralc t 8 8 8 8 8 D d 8 x y s1 s0 8bit 41 T ove mi rr ay load load load load reg0 reg1 reg2 reg3 T A I M Register Files MxN register file esse componente proporciona acesso eficiente a M registradores de Nbits Se temos muitos registradores mas só precisamos acessar um ou dois de cada vez um register file é mais eficiente Ex Suponha se no exemplo do display do carro tivéssemos mais funções 16 registradores de 32bits Um número muito grande de fios e um MUX muito grande e lento 410 om the car centralc ompu t er T ove mi rr ay C d0 d15 e i0 i15 load i3i0 4 16 32 32 32 32 4 D d s3s0 32bit 16x1 load load reg0 reg15 congestão Fanout alto Mux enorme a Digital Design Copyright 2006 Frank Vahid 86 Register File Em vez disso queremos um componente que tenha uma única entrada de dados e uma única saída de dados e nos permita especificar em qual registrador desejamos escrever eou ler 32 4 32 4 Wdata Waddr Wen Rdata Raddr Ren 1632 register file a a Diagrama de Tempo de um Register File Pode escrever em um registrador e ler de um registrador em cada período de clock Pode ser o mesmo registrador Digital Design Copyright 2006 Frank Vahid 87 Exemplo de uso do RegisterFile Display de Funções de um Carro Usaremos um register file com 16 registradores de 32bit que pode ser escrito pela CPU do carro e mostrado simultaneamente no display Digital Design Copyright 2006 Frank Vahid 88 Resumo do Capítulo Componentes para armazenamento e transformação de dados são necessários para implementar Caminhos de Dados de CPUs Também conhecidos por componentes RTL registertransferlevel Componentes desenvolvidos nesse capítulo Registradores Deslocadores Shifters Somadores Comparadores Contadores Multiplicadores Subtratores Unidades Lógicas e Aritméticas ArithmeticLogic Units ALUs Register Files No próximo capítulo combinaremos o conhecimento de projeto de circuitos combinacionais circuitos sequenciais e componentes de caminhos de dados para projetar sistemas digitais que realizam processamento de dados gerais ou específicos dependendo da aplicação Digital Design Copyright 2006 Frank Vahid 89
16
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
4
Sistemas Digitais
CEFET/MG
2
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
9
Sistemas Digitais
CEFET/MG
Texto de pré-visualização
Digital Design Copyright 2006 Frank Vahid 1 Sistemas Digitais Capítulo 4 Componentes de Caminhos de Dados Slides to accompany the textbook Digital Design First Edition by Frank Vahid John Wiley and Sons Publishers 2007 httpwwwddvahidcom Copyright 2007 Frank Vahid Instructors of courses requiring Vahids Digital Design textbook published by John Wiley and Sons have permission to modify and use these slides for customary courserelated activities subject to keeping this copyright notice in place and unmodified These slides may be posted as unanimated pdf versions on publiclyaccessible course websites PowerPoint source or pdf with animations may not be posted to publiclyaccessible websites but may be posted for students on internal protected sites or distributed directly to students by other electronic means Instructors may make printouts of the slides available to students for a reasonable photocopying charge without incurring royalties Any other use requires explicit permission Instructors may obtain PowerPoint source or obtain special use permissions from Wiley see httpwwwddvahidcom for information Prof Luciano C A Pimenta Tradução e Adaptação para o Português Prof Ricardo de Oliveira Duarte DELT EE UFMG Digital Design Copyright 2006 Frank Vahid 2 Introdução Capítulos 2 e 3 Projeto de circuitos combinacionais e sequenciais Portas lógicas multiplexadores decodificadores registradores e controladores Nesse capítulo circuitos mais complexos que poderão ser integrados na formação de microprocessadores microcontroladores dedicados ou não Componentes de um Caminho de Dados componentes responsáveis por modificar transformar dados ou então armázenalos de diversas formas Poderemos combinar tais blocos operacionais de forma a montar um datapath caminho de dados No próximo capítulo combinaremos controladores e datapaths para construir pequenos processadores seguindo uma forma de projeto conhecida como projeto RTL 41 Note Slides with animation are denoted with a small red a near the animated items Digital Design Copyright 2006 Frank Vahid 3 Registradores Armazenam dados Encontrados em qualquer caminho de dados Registrador do Cap 3 Carregados a cada ciclo de CLK Úteis na implementação de FSM armazena o estado codificado Outros usos podemos querer que ele carregue somente em certos ciclos 42 Combinational logic State register s1 s0 n1 n0 x b clk I3 I2 I1 I0 Q3 Q2 Q1 Q0 reg4 Registrador simples faz a carga a cada ciclo de Clk carga Como modificálo para fazer a carga somente em certos Ciclos de Clk a D Q D Q D Q D Q I2 I3 Q2 Q3 Q1 Q0 I1 I0 clk 4bit register Digital Design Copyright 2006 Frank Vahid 4 Registrador com Carga Paralela Adicione MUXs 21 antes de cada entrada D de cada Flipflop do registrador A entrada Load do Registrador seleciona qual a entrada do MUX O próximo estado receberá o estado atual ou então uma nova palavra nova carga 1 0 D Q Q3 I3 1 0 D Q Q2 I2 1 0 Q Q1 I1 1 0 D Q Q0 I0 load 0 1 0 2 1 D Q Q3 I3 load load 1 0 D Q Q2 I2 1 0 D Q Q1 I1 1 0 D Q Q3 I3 1 0 D Q Q2 I2 1 0 D Q Q1 I1 1 0 D Q Q0 I0 load 1 b c a 1 0 D Q Q0 I0 I3 I2 I1 I0 Q3 Q2 Q1 Q0 D Digital Design Copyright 2006 Frank Vahid 5 Exemplo de uso de Registradores Esse exemplo mostra como registradores carregam dados simultaneamente em um mesmo ciclo de clock Observe que todas entradas de carga ld estão em 1 não necessariamente deveriam estar isso é só um exemplo Q3 Q2 Q1 Q0 a3 a2 a1 a0 I3 I2 I1 I0 Q3 Q2 Q1 Q0 I3 ld 1 I2 I1 I0 ld 1 ld 1 Q3 Q2 Q1 Q0 I3 I2 I1 I0 R1 R0 R2 clk Digital Design Copyright 2006 Frank Vahid 6 Exemplo do uso de Registradores Q3 Q2 Q1 Q0 a3 a2 a1 a0 I3 I2 I1 I0 Q3 Q2 Q1 Q0 ld I3 1 I2 I1 I0 ld 1 ld 1 Q3 Q2 Q1 Q0 I3 I2 I1 I0 R1 R0 R2 clk R1 R2 1111 R0 clk a3a0 R0 R1 R2 given 1111 R1 R2 11110001 R0 1111 0001 R1 0000 R2 00011010 R0 0001 1010 R1 1110 R2 1010 R0 1010 1010 R1 0101 R2 1010 R0 1010 1010 R1 0101 R2 1010 R0 a b 1111 0001 1111 1111 0000 0001 0001 1110 1010 1010 0101 1010 1010 0101 1010 1010 1 2 3 4 5 Digital Design Copyright 2006 Frank Vahid 7 Exemplo de uso de Registradores com Entrada Load Balança Eletrônica A balança tem dois mostradores Peso atual Peso gravado Útil para se comparar o peso de um item com o peso de outro item Usaremos o registrador para armazenar o peso Pressionando o botão faz com que o peso atual seja gravado no registrador O peso armazenado fica sempre mostrado no display peso gravado mesmo quando apresentam peso novo aparece no display peso atual Balança Peso gravado Armazenador de pesos Peso atual clk b Armazenar I3 I2 I1 I0 Q3 Q2 Q1 Q0 load 3 pounds 0 0 1 1 0 0 1 1 3 pounds 0 0 1 0 2 pounds 1 a Digital Design Copyright 2006 Frank Vahid 8 Exemplo de uso de registrador Display de histórico de temperaturas Exemplo dado no capítulo 3 Um temporizador gera um pulso a cada hora Anteriormente usado com um clock Uma melhor alternativa de projeto seria usar um oscilador como sinal de clock e usar registradores com entradas ld ligados a um circuito gerador de pulsos temporizadores Q4 C x4 x3 x2 x1 x0 Q3 Q2 Q1 Q0 Ra Rb I4 I3 I2 I1 I0 Q4 a4 a3 a2 a1 a0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 Rc Q4 b4 b3 b2 b1 b0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 c4 c3 c2 c1 c0 TemperatureHistoryStorage Q4 Clk C t4 t3 t2 t1 t0 Q3 Q2 Q1 Q0 ld Ra Rb Rc ld I4 I3 I2 I1 I0 Q4 a4 a3 a2 a1 a0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 ld Q4 b4 b3 b2 b1 b0 Q3 Q2 Q1 Q0 I4 I3 I2 I1 I0 c4 c3 c2 c1 c0 TemperatureHistoryStorage timer osc Nova linha a Digital Design Copyright 2006 Frank Vahid 9 Exemplo de uso de Registrador Display de painel de carro C d0 d1 d2 d3 e i0 i0 i1 i2 i3 a0 a1 load i1 2 4 8 8 8 8 8 D d 8 x y s1s0 8bit 41 load load load load reg0 reg1 reg2 reg3 T A I M Exemplo apresentado no cap2 Quatro funções valores diferentes Para reduzir o no de fios Computador de bordo escreve somente 1 valor por cada vez carregado de uma só vez nos 4 registradores No cap 2 precisávamos de 8888 32 fios Agora 8 21 11 fios 0 1 00001010 1 1 00001010 Carregada no evento De Clock 8 Notação simplificada a Digital Design Copyright 2006 Frank Vahid 10 Exemplo de uso de Registradores Tabuleiro de Damas Computadorizado Cada registrador retém valores para uma coluna de LEDs Nível lógico 1 acende o LED Um Microprocessor carrega um registrador por vez Ocorre rápido o suficiente que um ser humano vê o tabuleiro se modificando por inteiro como se fosse de uma só vez LED R7 R6 d6 d5 d4 d3 d2 d1 d0 d7 8 D R5 R4 R3 R2 R1 R0 e i2 i1 i0 3 8 decoder microprocessor lit LED 1 1 0 0 0 0 0 1 Q I R0 load 10100010 from decoder from microprocessor b a Digital Design Copyright 2006 Frank Vahid 11 Exemplo de uso de Registradores Tabuleiro de Damas Computadorizado 010000101 10100010 10100010 10100010 10100010 010000101 010000101 010000101 001 R1 100 R4 010 R2 000 R0 110 R6 011 R3 101 R5 111 R7 clk e i2i1i0 D LED lit LED 10100010 10100010 10100010 10100010 01000101 01000101 01000101 01000101 R7 R6 R5 R4 R3 R2 R1 R0 Digital Design Copyright 2006 Frank Vahid 12 Registradores de Deslocamento Shift Registers Deslocamento para a Direita Shift right Move cada bit uma posição para a direita Introduz um 0 no bit FlipFlop mais a esquerda mesmo que o bit mais significativo 1 1 0 1 Conteúdo do Registrador Antes do deslocamento Para a direita 0 1 1 0 0 Conteúdo do Registrador Depois do deslocamento Para a direita a Q Faça um shift para a direita em 1001 mostrando o valor no registrador após a cada shift a A 1001 original 0100 0010 0001 0000 shrin Implementação Conecte cada saída de um flipflop a entrada do flipflop vizinho a Shift Lógico para a Direita Digital Design Copyright 2006 Frank Vahid 13 Registradores de Deslocamento Shift Registers Para permitir que um registrador desloque shift ou não retenha o dado armazenado necessitamos de MUXs 21 shr igual a 0 significa reter 1significa deslocar shift shrin valor a ser deslocado shift in Pode ser 0 ou 1 Obs Poderíamos facilmente projetar registradores de deslocamento capazes de deslocarem um bit para esquerda 1 0 2 1 D Q Q3 1 0 D Q Q2 1 0 D Q Q1 1 0 D Q Q0 shr1 1 0 2 1 D Q Q3 shr shrin shr shrin 1 0 D Q Q2 1 0 D Q Q1 b c a 1 0 D Q Q0 Q3 Q2 Q1 Q0 Digital Design Copyright 2006 Frank Vahid 14 Registradores Circulares Rotate Shifters Rotação para a direita Assim como o deslocamento para a direita entretanto o bit mais a esquerda passará a ser o bit mais a direita no evento de clock 1 1 0 1 1 1 1 0 Conteudo do registrador Antes do shift para a direita Conteudo do registrador Após o shift para a direita Digital Design Copyright 2006 Frank Vahid 15 Exemplo de aplicação do Registrador de Deslocamento Display de Carros Exemplo anterior 8 21 11 fios da CPU do carro para os 4 registradores responsáveis por exibir os valores no display Queremos um número menor de fios Usamos shift registers Fios 1214 A CPU do carro envia um valor bit a cada período de clock C d0 d1 d2 d3 e i0 i0 i1 i2 i3 a0 a1 load i1 2 4 From the cars central computer 8 8 8 8 8 D d 8 x y s1 s0 8bit 4 1 To the above mirror display load load load load reg0 reg1 reg2 reg3 T A I M 11 wires c d0 d1 d2 d3 e i0 i0 s1 s0 x y i1 i2 i3 a0 a1 shift i1 2 4 8 8 8 8 D d 8 41 shr shrin shr shrin shr shrin shr shrin reg0 reg1 reg2 reg3 T A I M Obs essa linha é 1 bit rao invés de 8 bits como antes Digital Design Copyright 2006 Frank Vahid 16 Registradores Multifuncionais Registradores podem ser projetados para serem multifuncionais Carregar Deslocar Zerar Carregar com 0s E reter os valores armazenados Facilmente projetados com o auxílio de MUXs Conecte cada entrada do MUX de forma adequada para implementar a função desejada s1 shrin s0 3 2 1 I3 0 D Q Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 Q2 0 3 2 1 I2 0 D Q 0 Q1 3 2 1 I1 0 D Q 0 Q0 3 2 1 I0 0 D Q 0 4 1 shrin s1 s0 a b Funções Operação Manter o valor atual Carga paralela Deslocar para a direita Carga 0 no registrador s0 0 1 0 1 s1 0 0 1 1 Digital Design Copyright 2006 Frank Vahid 17 Registradores Multifuncionais shrin shlin 3 2 1 I3 0 D Q Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 Q2 3 2 1 I2 0 D Q Q1 3 2 1 I1 0 D Q Q0 3 2 1 I0 0 D Q shlin shrin s1 s0 a b Operação Manter o valor atual Carga paralela Desloca para a Direita Desloca para a Esquerda s0 0 1 0 1 s1 0 0 1 1 Digital Design Copyright 2006 Frank Vahid 18 Manter o valor Shift left Shift right Shift right Carga paralela Carga paralela Carga paralela Carga paralela Operação s0 s1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 Saídas Entradas 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 ld shr shl Tabela verdade do circuito combinacional Registradores Multifuncionais com Entradas de Controle Separadas Manter o valor atual Shift left Shift right Shift right shr has priority over shl Carga paralela Carga paralela ld tem prioridade Carga paralela ld tem prioridade Carga paralela ld tem prioridade Operação shl shr ld 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Q2 Q1 Q0 Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 I2 I1 I0 I3 s1 shrin shrin shr shl ld s0 shlin shlin a a combi national circuit a s1 ldshrshl ldshrshl ldshrshl s0 ldshrshl ld Operação Manter o valor atual Carga paralela Desloca para a Direita Desloca para a Esquerda s0 0 1 0 1 s1 0 0 1 1 Digital Design Copyright 2006 Frank Vahid 19 Tabela de Operações de Registradores As operações que um Registrador é capaz de executar são usualmente exibidas na forma de uma tabela compacta X significa mesma operação se o valor é 0 ou 1 Um X expande a duas linhas Dois Xs expande a quatro linhas Coloque a entrada de controle de maior prioridade à esquerda de forma a se obter uma tabela de operação compacta e simples Mantém o valor Shift left Operação s0 s1 0 1 0 1 Saídas Entradas 0 1 0 0 0 0 Shift right Shift right 1 1 0 0 0 1 1 1 0 0 Carga paralela Carga paralela Carga paralela Carga paralela 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 ld shr shl Shift left Operação r ld shr shl 0 1 0 0 0 0 Carga paralela X X 1 Shift right X 1 0 Mantém o valor Digital Design Copyright 2006 Frank Vahid 20 Processo de Projeto de Registradores Podemos projetar registradores multifuncionais com as operações desejadas executando somente 4 passos Digital Design Copyright 2006 Frank Vahid 21 Exemplo de Projeto de Registradores Projetar registrador com as operações Carga shift left Limpar Zerar síncrono Setar colocar em 1 síncrono Manter Passo 1 Determinar o tamanho do MUX 5 operações Necessitamos de um MUX 81 Passo 2 Montamos a tabela de operações Passo 3 Conectamos as entradas dos MUXs Passo 4 Mapeamos as entradas de controle Operação Manter o valor Carga Paralela Shift left Limpar síncrono Setar síncrono Manter o valor Manter o valor Manter o valor s0 0 1 0 1 0 1 0 1 s1 0 0 1 1 0 0 1 1 s2 0 0 0 0 1 1 1 1 D Q Qn 7 6 3 2 1 In 0 5 4 1 0 s2 s1 s0 Da saída Qn1 Operação Manter o valor Shift left Carga Paralela Set to all 1s Clear to all 0s s0 0 0 1 0 1 s1 0 1 0 0 1 s2 0 0 0 1 0 shl 0 1 X X X ld 0 0 1 X X clr 0 0 0 0 1 Entradas Saídas set 0 0 0 1 X a a s2 clrset s1 clrsetldshl clr s0 clrsetld clr Digital Design Copyright 2006 Frank Vahid 22 Exemplo de Projeto de Registradores Q2 Q1 Q0 Q3 Q2 Q1 Q0 Q3 I2 I1 I0 I3 I2 I1 I0 I3 s1 ld shl s0 shlin shlin circuito Combina cional set clr s2 22 Passo 4 Mapeamos as entradas de controle Operação Manter o valor Shift left Carga Paralela Set to all 1s Clear to all 0s s0 0 0 1 0 1 s1 0 1 0 0 1 s2 0 0 0 1 0 shl 0 1 X X X ld 0 0 1 X X clr 0 0 0 0 1 Entradas Saídas set 0 0 0 1 X a s2 clrset s1 clrsetldshl clr s0 clrsetld clr Digital Design Copyright 2006 Frank Vahid 23 Somadores Soma dois números binários de Nbits Um somador de 2bits soma dois números de 2bits produzindo como saída um resultado com 3bits Ex 01 11 100 1 3 4 Podemos projetálo usando o processo de projeto de circuitos combinacionais cap 2 entretanto tornase ineficiente para um número elevado de bits Por que 43 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 s0 0 1 0 1 1 0 1 0 s1 0 0 1 1 0 1 1 0 c 0 0 0 0 0 0 0 1 b0 0 1 0 1 0 1 0 1 b1 0 0 1 1 0 0 1 1 a1 0 0 0 0 0 0 0 0 Entradas Saídas a0 0 0 0 0 1 1 1 1 Digital Design Copyright 2006 Frank Vahid 24 Porque Somadores não são projetados usandose o processo de projeto de circ Combinacionais Tabelas verdade gigantes Um somador de 2bits apresenta a tabela verdade mostrada ao lado Possui 222 16 linhas Um somador de 8bits 288 65536 linhas 16bits 21616 4 bilhões de linhas Tabelas verdade enormes com vários 1s0s produzem circuitos enormes O gráfico mostra o crescimento do número de transistores para um somador de Nbits implementado em uma ferramenta de síntese Ex Quartus II 43 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 s0 0 1 0 1 1 0 1 0 s1 0 0 1 1 0 1 1 0 c 0 0 0 0 0 0 0 1 b0 0 1 0 1 0 1 0 1 b1 0 0 1 1 0 0 1 1 a1 0 0 0 0 0 0 0 0 Inputs Outputs a0 0 0 0 0 1 1 1 1 Q Qual seria o número de transistores para um somador de 16 bits A 1000 transistores para N5 para cada incremento de N em uma unidade Logo transistores 10002N5 Portanto para N16 transistores 10002165 10002048 2048000 a 10000 8000 6000 4000 2000 0 1 2 3 4 5 N 6 7 8 t Transistores Digital Design Copyright 2006 Frank Vahid 25 Método alternativo de se projetar um Somador Reproduzir como faríamos uma soma com lápis e papel Somamos uma coluna por vez começando da coluna mais a direita Fazemos a soma dos elementos da coluna e produzimos ou não um transporte carry bit para a coluna seguinte 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 A B a Digital Design Copyright 2006 Frank Vahid 26 Método alternativo de se projetar um Somador Projete um componente para cada coluna Um componente que some os bits daquela coluna e que gere um bit carry bit para a coluna seguinte 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 b co s 0 a ci A B 0 1 1 1 1 1 b co s 1 a ci 1 b co s 0 a ci 1 1 1 0 b co s 1 SOMA a 0 A B 1 Halfadder Fulladders a Digital Design Copyright 2006 Frank Vahid 27 HalfAdder Meio Somador Halfadder Soma 2 bits produz como sinais de saída a soma e o carry bit Projeteo usando o processo de projeto de circuitos combinacionais b co s 0 a ci A B 0 1 1 1 1 1 1 b co s 1 a ci 1 1 b co s 0 a ci 1 0 b co s 1 SOMA a 0 s 0 1 1 0 co 0 0 0 1 b 0 1 0 1 a 0 0 1 1 I Entradas Saídas Passo1 Identifique a função Passo 2 Converta em equações Passo 3 Implemente o circuito co ab s ab ab mesmo que s a xor b a b co co s a b s Halfadder Digital Design Copyright 2006 Frank Vahid 28 FullAdder Somador Completo Fulladder Soma 3 bits produz 2 saídas Soma e o Carrybit Projete usando o processo aprendido no capítulo 2 b co s 0 a ci A B 0 1 1 1 1 1 1 b co s 1 a ci 1 1 b co s 0 a ci 1 0 b co s 1 SOMA a 0 Passo1 Identifique a função s 0 1 1 0 1 0 0 1 co 0 0 0 1 0 1 1 1 ci 0 1 0 1 0 1 0 1 b 0 0 1 1 0 0 1 1 a 0 0 0 0 1 1 1 1 Inputs Outputs Passo 2 Converta em equações co abc abc abc abc co abc abc abc abc abc abc co aabc bbac ccab co bc ac ab s abc abc abc abc s abc bc abc bc s ab xor c ab xor c s a xor b xor c Passo 3 Implemente o circuito co ci b a s Full adder Digital Design Copyright 2006 Frank Vahid 29 RippleCarry Adder Usando como elementos base o meio somador halfadder e o somador completo fulladder podemos construir um somador de N bits como se estivéssemos fazendo uma soma com lápis e papel Esse circuito é chamado ripplecarry adder Abaixo temos um ripplecarry adder de 4bits Soma dois números de 4bits gerando como saída um número binário de 5bits A saída em 5bits é formada pelos 4bits soma mais 1bit propagação ou carryout gerado a partir do FA localizado mais a esquerda da figura abaixo Pode ser facilmente estendido para qualquer tamanho qualquer número de bits a3 co s FA co b3 a2 b2 s3 s2 s1 b ci a co s FA b ci a a1 b1 co s FA b ci a s0 a0 b0 co s HA b a a a3a2 a1a0 b3 s3 s2 s1s0 co b2b1 b0 b 4bit adder Digital Design Copyright 2006 Frank Vahid 30 RippleCarry Adder Usando um fulladder ao invés de um halfhadder para produzir o bit menos significativo da soma nos proporcionará incluir mais um sinal de entrada o bit carry in Será útil futuramante quando conectarmos pequenos somadores para formar somadores maiores a3 co s FA co b3 a2 b2 s3 s2 s1 b ci a co s FA b ci a a1 b1 co s FA b ci a s0 a0 b0 ci co s FA b ci a a a3 a2a1 a0 b3 s3 s2 s1 s0 co ci b2 b1b0 b 4bit adder Digital Design Copyright 2006 Frank Vahid 31 Funcionamento do RippleCarry Adder 0 1 1 1 0 0 0 1 01110001 a resposta deverá ser 01000 0 co s FA 0 0 0 0 0 0 0 0 0 0 0 0 0 b ci a co s FA b ci a 0 0 co s FA b ci a 0 0 0 co s FA b ci a 0 Considere que todas as entradas Inicialmente são todas iguais a 0 Saída após 2 ns 1 FullAdder 0 0 1 1 0 co s FA 0 0 0 0 0 co2 co1 co0 b ci a co s FA b ci a co s FA b ci a co s FA b ci a 0 01 Resposta Errada A soma só fica pronta após o último carrybit propagarse através do FA FullAdder mais à esquerda Tempo de soma proporcional ao número de FAs a Digital Design Copyright 2006 Frank Vahid 32 0 0 0 co s FA 1 1 1 1 1 0 1 0 b ci a co s FA b ci a 1 0 co s FA b ci a 0 0 0 1 1 co s FA b ci a d Saídas após 8ns 4 FA delays Funcionamento do RippleCarry Adder 0 co s FA 0 0 1 co1 0 1 0 b ci a co s FA b ci a 1 0 co s FA b ci a 0 0 1 0 0 1 1 co s FA b ci a b 1 0 1 0 0 0 0 1 0 1 1 Saídas após 4ns 2 FA delays 0 0 co s FA 1 1 0 1 co2 0 1 0 b ci a co s FA b ci a 1 0 co s FA b ci a 0 0 1 1 0 co s FA b ci a c Saídas após 6ns 3 FA delays a 01110001 a resposta deverá ser 01000 1 A saída correta só fica pronta após um tempo de propagação de 4 FA delays Digital Design Copyright 2006 Frank Vahid 33 Cascateando Somadores para produzir Somadores maiores a3a2a1a0 b3 s3s2s1s0 co s7s6s5s4 co ci b2b1b0 a7a6a5a4 b7b6b5b4 a b 4bit adder a3a2a1a0 b3 s3s2s1s0 s3s2s1s0 co ci b2b1b0 a3a2a1a0 b3b2b1b0 4bit adder a7 a0 b7 b0 s7 s0 co ci 8bit adder Digital Design Copyright 2006 Frank Vahid 34 Exemplo de uso de um Somador Uma calculadora que só faz somas construída com dois DIPSwitchs e LEDs Objetivo Projetar uma unidade somadora capaz de somar dois números de 8 bits gerados a partir de DIPSwitchs DIP switch chave que permite a passagem de corrente 1 ou não 0 Solução Um somador ripplecarry de 8bits DIP switches 1 0 a7a0 b7b0 s7s0 8bit carryripple adder co ci 0 CALC LEDs a Digital Design Copyright 2006 Frank Vahid 35 Exemplo de uso de um Somador Uma calculadora que só faz somas construída com dois DIPSwitchs e LEDs A fim de evitar que valores intermediários possam provocar saídas incorretas devemos incluir um registrador na saída do somador Na realidade o que acontece é que os LEDs piscariam muito rapidamente imperceptível para o ser humano detectar mas o princípio de armazenar as saídas para evitar que valores espúrios sejam lidos por dispositivos externos que normalmente perceberão essas mudanças se aplica a essa situação DIP switches 1 0 a7a0 b7b0 s7s0 8bit adder 8bit register co ci 0 CALC LEDs e clk ld Digital Design Copyright 2006 Frank Vahid 36 display register Para o display 1 Ajuste de Pesos clk ld 0 0 0 0 0 0 4 7 5 1 3 6 2 Sensor de peso Exemplo de aplicação de um Somador Balança com compensação de peso pino de tara Valores para compensação variando de 07 Kg Para compensar balanças desreguladas pino de tara Usaremos um somador ripplecarry de 8bits a7a0 b7b0 s7s0 Somador de 8 bits co ci 0 01000010 000 01000010 010 01000100 a Digital Design Copyright 2006 Frank Vahid 37 Deslocadores Shifters Deslocamentos por ex deslocando 0011 para a esquerda resulta em 0110 Isso é útil para Manipular bits Converter dados da forma serial para paralelo lembre do exemplo do circuito de exibição de funções de um carro no painel do veículo Deslocar um bit para esquerda Shift left once é o mesmo que multiplicar por 2 de forma rápida Ex 0011 3 se tornará 0110 6 Shift right once mesmo que dividir por 2 a i2 q3 q2 q1 q0 in i3 i1 i0 Deslocador Para Esquerda 0 1 0 1 0 1 0 1 in sh i3 q3 q2 q1 q0 i2 i1 i0 Shifter with left shift or no shift inL i3 q3 q2 q1 q0 i2 i1 i0 inR 2 0 s0 s1 shL shR 1 2 0 1 2 0 1 2 0 1 Shifter with left shift right shift and no shift 1 Símbolo 44 a Digital Design Copyright 2006 Frank Vahid 38 Exemplo de Aplicação com Shifter Um conversor de temperaturas de graus Celsius para Fahrenheit Aproximado Faça um circuito que converta uma temperatura representada com 8bits em graus Celsius em uma temperatura com 8bits em Fahrenheit F C 95 32 Approximate F C2 32 Usaremos um deslocador para esquerda F leftshiftC 32 C 8 00001100 12 00011000 24 00111000 56 1 0 shift in 0 8 F 8bit adder 8 8 00100000 32 2 a Digital Design Copyright 2006 Frank Vahid 39 Exemplo de Shifters Circuito que calcula média de temperaturas Quatro registradores armazenam um histórico de temperaturas Queremos como saída a média dessas temperaturas Adicionaremos em seguida dividiremos por quatro Mesmo que deslocar para a direita 2 posições Usaremos 3 somadores e um shift right de 2 posições Tavg Ravg ld ld T clk ld Ra Rb Rc Rd 2 0 divido por 4 shift in 0 a 001000 8 001100 12 001111 15 0000111 7 0101010 42 0001010 10 Digital Design Copyright 2006 Frank Vahid 40 Barrel Shifter Um deslocador que pode deslocar os bits de entrada de qualquer quantidade 4bit barrel left shift pode deslocar para a esquerda de 0 1 2 ou 3 posições 8bit barrel left shifter pode deslocar para a esquerda de 0 1 2 3 4 5 6 ou 7 posições Deslocar um número de 8bits 8 posições não tem nenhuma utilidade Poderíamos projetálo com MUXs 81 e fios Geraria um número muito grande de fios Um projeto mais eficiente Uma cadeia de 3 shifters 4 2 e 1 Poderíamos deslocar 07 posições selecionando as entradas corretas dos MUXs 0 1 0 1 0 1 0 1 in sh i3 q3 q2 q1 q0 i2 i1 i0 Deslocador de 1 posição usa MUXs 21 Uma solução com MUXs 81 para implementar um Barrel Shifter de 8 bits necessitaria de muitos fios 1 in sh 0 0 0 x y z 8 Q 2 in sh 8 4 in sh 8 8 I Q xyz Para deslocar 5 bits a 1 0 1 00000110 01100000 por 4 01100000 11000000 por 1 Resultado desloc 5 Digital Design Copyright 2006 Frank Vahid 41 Comparadores Um comparador de Nbits Produz em sua única saída o nível lógico 1 se dois números de Nbits forem idênticos Um comparador de igualdade de 4bits cujas entradas são A e B a3 deverá que ser igual a b3 a2 b2 a1 b1 a0 b0 Dois bits são iguais se ambos forem iguais a 1 ou ambos iguais a 0 eq a3b3 a3b3 a2b2 a2b2 a1b1 a1b1 a0b0 a0b0 Lembre que as saídas de uma XNOR de 2 entradas é igual a 1 se suas entradas forem iguais a3 xnor b3 a2 xnor b2 a1 xnor b1 a0 xnor b0 45 a3 b3 a2 b2 a1 b1 a0 b0 eq a b a3a2 a1a0 b3 eq b2b1 b0 Comparador de 4 bits a 0110 0111 0 1 1 0 0 1 1 1 0 1 1 1 0 Digital Design Copyright 2006 Frank Vahid 42 Comparador de Magnitude Comparador de Magnitude de N bits Indica se AB AB ou AB para as suas entradas A e B de N bits Como projetar Como você compararia usando lápis e papel Primeiro comparo a3 e b3 Se forem iguais comparo a2 e b2 E assim por diante Paro se a comparação der diferente independentemente de qual bit seja o que for igual a 1 é o maior operando Caso não haja nenhuma desigualdade concluise que A B A1011 B1001 1011 1001 a Igual 1011 1001 Igual 1011 1001 Diferente Logo A B Digital Design Copyright 2006 Frank Vahid 43 Comparador de Magnitude Exemplo de execução no lápis e papel segue o mesmo princípio do projeto desse bloco operativo Comece pela esquerda compare cada par de bits passe o resultado para a direita O circuito para cada par de bits chamaremos de estágio Cada estágio tem 3 entradas indicando resultados dos estados de maior ordem passandoos para os de mais baixa ordem Igt Ieq Ilt a3a2a1a0 b3b2b1b0 AgtB AeqB AltB ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Estágio 3 a3 b3 a b ingt ineq inlt outgt outeq outlt Estágio 2 a2 b2 a b ingt ineq inlt outgt outeq outlt Estágio 1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Estágio 0 a0 b0 a b a b 0 0 1 Comparador de Magnitude de 4 bits Digital Design Copyright 2006 Frank Vahid 44 Comparador de Magnitude Cada estágio outgt ingt ineq a b AB se já foi determinado em um estágio de maior ordem ou se estágio de maior ordem for igual e nesse estágio a1 e b0 outlt inlt ineq a b AB se já foi determinado em um estágio de maior ordem ou se estágio de maior ordem for igual e nesse estágio a0 e b1 outeq ineq a XNOR b AB se já foi determinado em um estágio de maior ordem e nesse estágio ab também O circuito que implementa cada estágio é simples algumas portas lógicas ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Estágio 3 a3 b3 a b ingt ineq inlt outgt outeq outlt Estágio 2 a2 b2 a b ingt ineq inlt outgt outeq outlt Estágio 1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Estágio 0 a0 b0 a b Digital Design Copyright 2006 Frank Vahid 45 Comparador de Magnitude Como funciona ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b a 0 1 0 ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b b 0 1 0 0 1 0 1011 1001 0 1 0 Ieq1 força esse estágio a fazer uma comparação a Digital Design Copyright 2006 Frank Vahid 46 Comparador de Magnitude O resultado final aparecerá na saída do bloco mais a direita O resultado ficará pronto depois do atraso de propagação dos 4 blocos 1011 1001 ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b c 0 1 0 1 0 0 ingt ineq inlt outgt outeq outlt Igt Ieq Ilt Stage3 a3 b3 a b ingt ineq inlt outgt outeq outlt Stage2 a2 b2 a b ingt ineq inlt outgt outeq outlt Stage1 a1 b1 a b ingt ineq inlt outgt outeq outlt AgtB AeqB AltB Stage0 a0 b0 1 1 0 0 1 0 1 1 a b d 0 1 0 0 1 0 a Digital Design Copyright 2006 Frank Vahid 47 Exemplo do Comparador de Magnitude Mínimo de dois números Projete um componente operacional circuito combinacional que aponte o menor de dois números de 8 bits Solução Precisaremos de um comparador de magnitude de 8bits e 8 MUXs 21 Se AB faça passar A através do mux Caso contrário passe B MIN Igt Ieq Ilt AgtB AeqB AltB 0 1 0 A A B B Comparador de Magnitude de 8 bits s I1 I0 21 mux 8bit C 8 8 8 8 8 8 8 8 C A B Min a b 11000000 01111111 0 0 1 01111111 a Digital Design Copyright 2006 Frank Vahid 48 Contadores Contador ascendente de Nbits Registrador de Nbits capaz de ser incrementado de uma unidade ao seu próprio valor em cada evento de clock 0000 0001 0010 0011 1110 1111 0000 Observe o que acontece com a contagem na passagem de 1111 para 0000 Uma saída chamada de Terminal count tc fica igual a 1 enquanto 1111 logo antes da virada para 0000 Projeto interno Registrador somador de uma unidade incrementador e uma porta AND de N entradas para sinalizar tc 46 cnt tc C Contador ascendente de 4 bits 4 0000 01 0001 0010 0011 0100 0101 1110 0 1111 10 0000 0001 ld Registrador de 4 bits C tc 4 4 4 4 cnt Contador ascendente de 4 bits 1 a a Digital Design Copyright 2006 Frank Vahid 49 Incrementador Projeto do Incrementador Poderíamos usar um somador ripplecarry com a entrada B inicializada com 00001 Mas quando somamos 00001 a outro número os zeros a esquerda não são levados em consideração portanto só necessitamos de somar 2 bits por coluna Usamos halfadders somam 2 bits ao invés de fulladders somam 3 bits 0 0 1 1 0 1 1 1 carries unused 0 0 0 0 1 a b a3 a2 a1 a0 1 s0 s1 s2 s3 co a b co s HA a b co s HA a b co s HA a b co s HA a3 co s3s2 1 s1 s0 a2 a1 a0 Digital Design Copyright 2006 Frank Vahid 50 Incrementador Podemos construir incrementadores muito mais rápidos usando o processo de projeto de circuitos combinacionais Monte uma tabela verdade Encontre a equação para cada saída c0 a3a2a1a0 s0 a0 Resulta em um circuito menor e mais rápido s2 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 s1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 s0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 s3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 c0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 a0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 a1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 a3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Inputs Outputs a2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Digital Design Copyright 2006 Frank Vahid 51 Exemplo de uso de contadores Relembrando o exemplo do Capítulo 2 Necessitávamos de um componente que incrementasse as entradas xy cada vez que o botão fosse pressionado 00 01 10 11 00 01 10 11 00 Podemos usar um contador ascendente de 2bits Assuma mode1 por somente um ciclo de clock durante cada pressionar do botão Lembre Sincronizador do Pressionar de Botões exemplo do Cap 3 cnt tc c1c0 x y 2bit upcounter mode clk Digital Design Copyright 2006 Frank Vahid 52 Exemplo de aplicação do contador Gerador de clock de 1 Hz a partir de um Oscilador de 256 Hz Suponha que temos um oscilador de 256 Hz mas queremos um sinal de clock de 1 Hz 1 Hz significa 1 pulso por segundo Podemos projetálo com um contador ascendente de 8bits usaremos a saída tc como pulso Conta de 0 a 255 256 vezes logo pulsa tc a cada 256 ciclos cnt tc C não usado Contador ascendente de 8 bits 1 osc 256 Hz 8 p 1 Hz Digital Design Copyright 2006 Frank Vahid 53 Contador Decrescente Contador decrescente de 4 bits 1111 1110 1101 1100 0011 0010 0001 0000 1111 Contagem final 0000 Use uma porta NOR para chegada a 0000 Necessita de um decrementador 1 projeto semelhantre ao incrementador ld Registrador de 4 bits C tc 4 4 4 4 cnt Contador decrescente de 4 bits 1 Digital Design Copyright 2006 Frank Vahid 54 Contador AscendenteDecrescente Pode contar em ambos os sentidos Possuí um incrementador e um decrementador Use a entrada dir para selecionar o sentido de contagem selecionando dir0 no MUX 21 significa ascendente ld 4bit register C tc 4 4 4 4 4 4 cnt clr clr dir 4bit updown counter 4 4 1 1 1 0 2x1 1 0 4bit 2x1 Exemplo de aplicação do contador Sequenciador Luminoso Ilumina 8 leds da direita para a esquerda um por vez um por segundo Use um contador ascendente de 3bits para contar de 0 a 7 Use um decodificador 3x8 para acender o led correto Obs Usamos um contador de 3bits e um decodificador 3x8 Por quê não um contador de 8bits Digital Design Copyright 2006 Frank Vahid 55 Digital Design Copyright 2006 Frank Vahid 61 Multiplicador Podemos construir multiplicadores que imitam o procesos de multiplicação que usamos com lápis e papel Observe que multiplicar o multiplicando por 1 é o mesmo que fazer um AND do multiplicando com 1 47 Digital Design Copyright 2006 Frank Vahid 62 Multiplicador Representação generalizada do processo de multiplicação manual Digital Design Copyright 2006 Frank Vahid 63 Multiplicador Projeto do multiplicador um array de portas lógicas AND A B P Multiplicador 5bit 6bit 7bit 0 0 0 0 0 0 a0 a1 a2 a3 b0 b1 b2 b3 0 p7p0 pp1 pp2 pp3 pp4 Digital Design Copyright 2006 Frank Vahid 64 Subtrator Podemos construir subtratores assim como construímos somadores com o ripplecarry adder Imita o processo manual de subtração Empréstimo de colunas a esquerda Usaremos um componente chamado de fullsubtractor Te é o transporte vindo da coluna da direita Ts é o sinal de pedido de empréstimo feito para a coluna a esquerda 48 1 1 0 0 0 1 1 1 1 1 0 1stcolumn 1 1 0 1 0 10 0 1 1 1 0 1 1 3rd column 1 1 0 0 0 0 1 1 1 0 0 1 1 4th column Ts a3 a b FS Ts s b3 s3 a2 a b FS s b2 s2 a1 a b FS s b1 s1 a0 a3a2 a1a0 b3 s3s2s1s0 Te b2 b1b0 a b FS Te s b0 s0 b c Subtrator de 4 bits a 1 1 0 0 1 1 1 1 1 1 0 2ndcolumn 10 10 S 0 1 1 0 1 0 0 1 Ts 0 1 1 1 0 0 0 1 Te 0 1 0 1 0 1 0 1 b 0 0 1 1 0 0 1 1 a 0 0 0 0 1 1 1 1 Entradas Saidas Ts Ts Ts Ts Te Te Te Te Digital Design Copyright 2006 Frank Vahid 65 Exemplo de aplicação do subtrator Calculadora que somasubtrai usando como entradas DIPSwitches Calculadora Chave f indica se desejamos somar f0 ou subtrair f1 Use além do somador um subtrator e MUXs 21 DIP switches 1 0 8bit register CALC LEDs e f clk ld 8 8 8 0 0 8 8 8 8 8 2x1 0 1 1 0 wi ci A A B B S S co wo 8bit adder 8bit subtractor Digital Design Copyright 2006 Frank Vahid 66 Exemplo de aplicação de subtratores Conversor de RGB para CMY Cor Representada como uma combinação pesos de três cores red green and blue RGB Considerando 8 bits para cada uma cor seria representada com 24 bits Branco R11111111 G11111111 B11111111 Preto R00000000 G00000000 B00000000 Outras cores valores intermediários Ex R00111111 G00000000 B00001111 poderia ser um tom de vermelho Ideal para monitores de computadores que misturam vermelho verde e o azul para formar todas as cores Impressoras adotam um esquema de cores oposto Porque as tintas absorvem a luz Use cores complementares de RGB Ciano absorve vermelho reflete o verde e o azul Magenta absorve o verde e amarelo absorve o azul Yellow Digital Design Copyright 2006 Frank Vahid 67 Exemplo de Aplicação de Subtratores Conversor de Cores RGB para CMY Impressoras devem converter rapidamente RGB em CMY C255R M255G Y255B Use subtratores como mostrado na figura ao lado R G B 8 8 8 8 8 8 8 8 8 255 255 255 C M Y Digital Design Copyright 2006 Frank Vahid 68 Exemplo de Aplicação de Subtratores Conversor de Cores RGB para CMY Tente armazenar padrões de tintas coloridas Solução cara para o sistema Imperfeições misturando C M Y não produzem uma boa impressão Solução Excluir a porção de preto ou cinza da cor e imprimir essa parte usando o cartucho de tinta preta Ex CMY de 250200200 200200200 5000 200200200 é um cinza escuro use tinta preta Digital Design Copyright 2006 Frank Vahid 69 Exemplo de Aplicação de Subtratores Conversor de Cores RGB para CMY Chame a parte preta de K 200200200 K200 Calcule o mínimo de C M Y Use o componente MIN projetado anteriormente um comparador e mux para calcular o valor de K Subtraia K dos valores de C M e Y Ex Entrada 250200200 produz como saída 5000200 8 8 C2 M2 Y2 K 8 8 8 8 8 8 8 8 MIN MIN C C M Y R G RGB t o CMY B M Y K R G B 8 8 8 Digital Design Copyright 2006 Frank Vahid 70 Representação de Números Negativos Complemento a Dois Números negativos são normalmente usados por CPUs para realizar cálculos Como representálos no sistema binário Modo sinal e magnitude Usamos o bit mais significativo para indicar o sinal Portanto 5 seria representado 1101 usandose 4 bits 10000101 usandose 8 bits Uma maneira mais apropriada Modo complemento a 2 Maior vantagem Nos permite fazer subtração usando a operação de adição Portanto precisaremos somente de um único componente para fazer adição ou subtração e não mais um componente específico para cada operação Digital Design Copyright 2006 Frank Vahid 73 Operações em Complemento a Dois É só complementar bit a bit o operando e somar 1 Exemplo O complemento a dois de 011 é 1001 101 Q Qual o complemento a dois de 0101 A 101011011 a Q Qual o complemento a dois de 0011 A 110011101 Digital Design Copyright 2006 Frank Vahid 74 Subtrator usando complemento a dois construído com um Somador Usando complemento a dois A B A B A complemento a dois de B A invertebitsB 1 Construímos um subtrator usando um somador e invertendo complementando os bits de B e somando 1 ao bit menos significativo colocando o Cin 1 1 cin B A Somador S B A Nbit Digital Design Copyright 2006 Frank Vahid 75 SomadorSubtrator SomadorSubtrator a entrada de controle determina se realizaremos uma soma ou uma subtração Podemos usar MUXs 21 onde a entrada sub deixa passar B ou B De forma alternativa poderíamos usar portas lógicas XOR se a entrada sub for igual a 0 os bits de B serão as entradas de um dos operandos do somador caso contrário B Digital Design Copyright 2006 Frank Vahid 76 Exemplo do uso do SomadorSubtrator Calculadora Na versão anterior necessitávamos de um somador e um subtrator em separado para realizar as operações Usando o novo componente conseguimos otimizar DIP switches 1 0 8bit register 8bit addersubtractor sub CALC LEDs e S A B f clk ld 1 0 8 8 8 8 DIP switches 1 0 8bitregister CALC LEDs e f clk ld 8 8 8 0 0 8 8 8 8 8 2x1 0 1 1 0 wi ci A A B B S S co wo 8bit adder 8bit subtractor Digital Design Copyright 2006 Frank Vahid 77 Estouro dos Limites de Representação Overflow Em algumas situações o resultado não pode ser representado com uma quantidade fixa de bits Ex Sejam dois operandos de 4bit representados em complemento a dois Suponha ainda que desejamos somálos 01110001 718 Porém não conseguimos representar números maiores que 7 com 4 bits em complemento a dois 01110001 1000 resposta errada 1000 em complemento a dois é 8 e não 8 O nosso componente SomadorSubtrator deverá indicar se um overflow ocorreu Nesse caso o resultado produzido pelo componente deverá ser descartado ou não ser levado em consideração Digital Design Copyright 2006 Frank Vahid 78 Detectando Overflow Método 1 Considere para efeito de exemplo que nossos números são representados usandose 4 bits Podemos detectar overflow quando o bit de sinal de dois numeros são iguais e o resultado produz um operando com bit de sinal diferente Se os bits de sinal dos operandos são diferentes não ocorrerá overflow Circuito combinacional muito simples overflow a3b3s3 a3b3s3 Incluiremos uma nova saída o bit de overflow no nosso componente 0 1 1 1 1 0 0 0 0 0 0 1 Bit de sinal overflow a 1 1 1 1 0 1 1 1 0 1 0 0 overflow b 1 0 0 0 1 1 1 1 1 0 1 1 no overflow c Digital Design Copyright 2006 Frank Vahid 79 Detectando overflow Método 2 Método ainda mais simples Detecte a diferença entre o carryin do bit de sinal com o carryout do bit de sinal Produz um circuito combinacional mais simples para a detecção do overflow overflow c3 xor c4 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 overflow a 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 overflow b 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 no overflow c Se o carry in do bit de sinal diferir do carry out um overflow ocorreu Digital Design Copyright 2006 Frank Vahid 80 Unidade Lógica e Aritmética ALU ALU Componente que pode executar qualquer uma das várias operaçoes aritméticas somar subtrair incremento etc e lógicas AND OR etc As operações são realizadas com base nas entradas de controle do componente Suponha que queremos uma calculadora multifunção que não só adiciona e subtrai mas também incrementa faça ANDs ORs XORs etc 49 Digital Design Copyright 2006 Frank Vahid 81 Calculadora Multifuncional sem o componente ALU Podemos construir calculadoras multifuncionais usando componentes em separado para cada operação e muxes Mas precisaríamos de muitos fios e um desperdício de poder de processamento pois de todas as operações poderíamos usar somente uma por vez DIP switches 1 0 8bit register 8bit 8 1 CALC LEDs e z y x clk Id s0 s1 s2 1 0 0 1 2 3 4 5 6 7 NOT XOR OR AND 1 Ð 8 8 8 8 8 8 8 8 8 8 8 8 A B A lot of wires Wasted power Digital Design Copyright 2006 Frank Vahid 82 ALU Projetos mais eficiente usam a ALU como componente base O projeto de uma ALU usa um único somador para realizar as operações aritméticas e lógica adicional antes das entradas dos operandos A e B para realizar as demais operações Esse bloco operacional é um circuito combinacional chamado arithmeticlogic extender O bloco operacional modifica as entradas A e B de forma que a operação desejada apareça na saída do somador Digital Design Copyright 2006 Frank Vahid 83 ArithmeticLogic Extender de uma ALU xyz000 Queremos SAB faça passar a até ia b até ib e faça cin0 xyz001 Queremos SAB faça passar a até ia b até ib e faça cin1 xyz010 Queremos SA1 faça passar a até ia faça ib0 e faça cin1 xyz011 Queremos SA faça passar a até ia faça ib0 e faça cin0 xyz100 Queremos SA AND B faça iaab b0 e cin0 outros faça de forma semelhante Baseado no que foi dito acima produza um circuito lógico para iaxyzab e ibxyzab para cada caso e produza outro circuito lógico para cinxyz para completar o componente do bloco operacional AL Extender Digital Design Copyright 2006 Frank Vahid 84 Exemplo de uso de uma ALU Calculadora Multifuncional Projeto com o componente ALU é mais eficiente Sem muitos fios Sem desperdícios DIP switches 1 0 1 0 8bit register ALU S CALC LEDs e z y x clk ld z y x 8 8 8 8 A A B B DIP swi tches 1 0 8bit register 8bit 8 1 CALC LEDs e z y x clk Id s0 s1 s2 1 0 0 1 2 3 4 5 6 7 NOT XOR OR AND 1 Ð 8 8 8 8 8 8 8 8 8 8 8 8 A B A lot of wi res Wast ed pow er Digital Design Copyright 2006 Frank Vahid 85 om the cars ompu er C d0 d1 d2 d3 e i0 i0 i1 i2 i3 a0 a1 load i1 2 4 Fr centralc t 8 8 8 8 8 D d 8 x y s1 s0 8bit 41 T ove mi rr ay load load load load reg0 reg1 reg2 reg3 T A I M Register Files MxN register file esse componente proporciona acesso eficiente a M registradores de Nbits Se temos muitos registradores mas só precisamos acessar um ou dois de cada vez um register file é mais eficiente Ex Suponha se no exemplo do display do carro tivéssemos mais funções 16 registradores de 32bits Um número muito grande de fios e um MUX muito grande e lento 410 om the car centralc ompu t er T ove mi rr ay C d0 d15 e i0 i15 load i3i0 4 16 32 32 32 32 4 D d s3s0 32bit 16x1 load load reg0 reg15 congestão Fanout alto Mux enorme a Digital Design Copyright 2006 Frank Vahid 86 Register File Em vez disso queremos um componente que tenha uma única entrada de dados e uma única saída de dados e nos permita especificar em qual registrador desejamos escrever eou ler 32 4 32 4 Wdata Waddr Wen Rdata Raddr Ren 1632 register file a a Diagrama de Tempo de um Register File Pode escrever em um registrador e ler de um registrador em cada período de clock Pode ser o mesmo registrador Digital Design Copyright 2006 Frank Vahid 87 Exemplo de uso do RegisterFile Display de Funções de um Carro Usaremos um register file com 16 registradores de 32bit que pode ser escrito pela CPU do carro e mostrado simultaneamente no display Digital Design Copyright 2006 Frank Vahid 88 Resumo do Capítulo Componentes para armazenamento e transformação de dados são necessários para implementar Caminhos de Dados de CPUs Também conhecidos por componentes RTL registertransferlevel Componentes desenvolvidos nesse capítulo Registradores Deslocadores Shifters Somadores Comparadores Contadores Multiplicadores Subtratores Unidades Lógicas e Aritméticas ArithmeticLogic Units ALUs Register Files No próximo capítulo combinaremos o conhecimento de projeto de circuitos combinacionais circuitos sequenciais e componentes de caminhos de dados para projetar sistemas digitais que realizam processamento de dados gerais ou específicos dependendo da aplicação Digital Design Copyright 2006 Frank Vahid 89