Aula Expositiva 03 2.2.5 Síntese de Circuitos Combinatórios (7 segmentos) 2.2.6 Multiplexadores e Demultiplexadores 2.3 Circuitos Sequenciais 2.3.1 Flip-flops e registradores 2.3.2 Barramentos e Controle de Fluxo de Dados 2.3.3 Memórias 2.3.4 Acumuladores 2.4 Processadores 2.4.1 Uma Calculadora 2.4.2 Osciladores ou Clocks DCC 001 Programação de Computadores 2o Semestre de 2011 Prof. Osvaldo Carvalho DCC001 - 2011-2 1 Display Hexadecimal com Lâmpada de 7 Segmentos DCC001 - 2011-2 2 Lâmpada de 7 Segmentos Dispositivo simples e eficaz para visualização de algarismos e algumas letras O Logisim oferece este componente, na biblioteca (Library) Input/Output Cada pino acende ou apaga um dos sete segmentos Um pino acende um ponto decimal, que não vamos usar DCC001 - 2011-2 3 O Circuito SeteSegmentos.circ Center Upper Right Lower Left Lower Right DCC001 - 2011-2 4 Display Hexadecimal 4 bits de entrada DCC001 - 2011-2 Circuito que queremos 5 Construção da Tabela da Verdade para Display Hexadecimal DCC001 - 2011-2 6 O (sub-)Circuito 4bits2hexa Complicado? Pode ser, mas isso não é um problema: DCC001 - 2011-2 O circuito foi construído automaticamente, usando uma tabela da verdade Pode ser usado como um módulo, e seus detalhes internos não interessam 7 Multiplexadores, Demultiplexadores e Decodificadores DCC001 - 2011-2 8 Controle de Fluxo de Dados Além de operações aritméticas e comparações, circuitos lógicos são também utilizados para conduzir fluxos de dados Multiplexador dirige uma única entre várias fontes de dados para um destino; a fonte é designada por um endereço Demultiplexador DCC001 - 2011-2 dirige uma entrada de dados para um entre vários destinos; o destino é designado por um endereço 9 MUX / DMX Determina qual das entradas fica conectada à saída DCC001 - 2011-2 Determina qual das saídas fica conectada à entrada 10 Multiplexador 1 bit Circuito DCC001 - 2011-2 11 Multiplexador 2 bits O binário a1a0 designa qual entrada fica ligada à saída Endereço 0 0 0 1 1 0 1 1 DCC001 - 2011-2 MUX 1 bit MUX 1 bit MUX 1 bit 12 Demultiplexador 1 bit Circuito DCC001 - 2011-2 13 Demultiplexador 2 bits DMX 1 bit DMX 1 bit DMX 1 bit DCC001 - 2011-2 Endereço 0 0 0 1 1 0 1 1 14 Decodificador construído com Demultiplexador Entrada codificada em binário Constante 1 Saída decodificada DCC001 - 2011-2 15 Circuitos Sequenciais Flip-Flops e Registradores DCC001 - 2011-2 16 Limitações de Circuitos Combinatórios Sua saída depende exclusivamente dos valores aplicados às suas entradas Com poucas variáveis de entrada, podem ser obtidos da tabela da verdade Com arranjos em cascata, podem tratar de entradas da ordem de algumas dezenas de bits Mas como fazer para somar, digamos, 50 inteiros de 32 bits cada um? DCC001 - 2011-2 17 Circuitos Sequenciais São circuitos digitais cuja saída depende dos sinais aplicados às suas entradas de valores armazenados em memórias Possuem Memórias: Flip-flops Registradores Memórias RAM Podem realizar operações como a soma de 50 inteiros de 32 bits, realizando uma soma de cada vez, com resultados parciais acumulados em uma memória DCC001 - 2011-2 18 Flip-Flop tipo D Poderia ser “click”; funciona como um obturador de máquina fotográfica A entrada D é “fotografada” no instante em que o clock passa de 0 para 1 DCC001 - 2011-2 Bit Armazenado Complemento do Bit Armazenado Pino Auxiliar: Impõe 1 Pino Auxiliar: Impõe 0 19 Carta de Tempo FF tipo D 7 6 5 Clock 1 4 0 3 1 Entrada D 2 0 1 1 Saída Q 0 0 -1 1 2 3 4 5 6 7 8 9 10 11 12 13 Tempo DCC001 - 2011-2 20 Registrador 4 bits Clock único para os 4 FFs Saídas Entradas DCC001 - 2011-2 21 Registradores Logisim - 1 Encontram-se na biblioteca “Memory” Permitem escolher a largura de dados (no. de bits armazenados) Têm possibilidade de digitação direta do conteúdo armazenado Também têm um pino de “clear” DCC001 - 2011-2 22 Registradores Logisim - 2 Registradores Valor armazenado no registrador, em hexadecimal Largura de dados DCC001 - 2011-2 23 Barramentos e Largura de Dados DCC001 - 2011-2 24 Largura de Dados Estes circuitos são equivalentes No de baixo, entradas, saídas, registradores e fios têm largura de bits (bit width) igual a 4 DCC001 - 2011-2 25 Ramificações (Splitters) Arquivo Splitter.circ 5 bits 2 bits 8 bits 1 bit DCC001 - 2011-2 26 Barramentos Toda saída ligada ao barramento passa por um “Controlled Buffer” A todo instante, no máximo um controlled buffer pode ter o controle do barramento O dado no barramento é igual à saída com o controlled buffer ligado DCC001 - 2011-2 27 Controle de Fluxo de Dados Os sinais de clock dos registradores e dos controlled buffers podem ser usados para controlar o fluxo de dados entre componentes ligados a um barramento Dados são transferidos de um ponto para outro conectando e desconectando esses sinais em uma sequência apropriada para a transferência desejada DCC001 - 2011-2 28 Controle de Fluxo de Dados Exemplo 1 Colocar 7 no registrador A Passo Sinal Comentário 1 In = 7 Colocar 7 (em binário, 111) na entrada In 2 In_Bus = 1 Colocar o valor de In no barramento 3 A_Clk = 1 Copiar o valor do barramento no registrador A 4 A_Clk = 0 Zerar o clock do registrador A 5 In_Bus = 0 Liberar o barramento DCC001 - 2011-2 29 Controle de Fluxo de Dados Exemplo 2 Colocar 3 no registrador B Passo Sinal Comentário 1 In =3 Colocar 3 (em binário, 11) na entrada In 2 In_Bus = 1 Colocar o valor de In no barramento 3 B_Clk = 1 Colocar o valor do barramento no registrador B 4 B_Clk = 0 Zerar o clock do registrador B 5 In_Bus = 0 Liberar o barramento DCC001 - 2011-2 30 Controle de Fluxo de Dados Exemplo 3 Colocar no registrador C o conteúdo do registrador A Passo Sinal Comentário 1 A_Bus = 1 Colocar o valor do registrador A no barramento 2 C_Clk = 1 Copiar o valor do barramento no registrador C 3 C_Clk = 0 Zerar o clock do registrador C 4 A_Bus = 0 Liberar o barramento DCC001 - 2011-2 31 Memórias DCC001 - 2011-2 32 Memórias - 1 O Logisim oferece memórias RAM (Random Memory) e ROM (Read Only Memory) Access Uma memória é composta por muitas unidades de armazenamento chamadas palavras Cada palavra possui um endereço que deve ser usado para ler ou escrever seu conteúdo Facilidades do simulador (não existem em circuitos reais) para alteração de conteúdo, e mesmo para a leitura de um arquivo com todo o conteúdo da memória DCC001 - 2011-2 33 Memórias - 2 Memórias têm como atributos a largura de dados, que é o número de bits em cada palavra a largura de endereço, que é o número de bits que compõem um endereço o tamanho, que é o número de palavras que a memória contém No Logisim o tamanho de uma memória é determinado por sua largura de endereço: DCC001 - 2011-2 com n bits de largura de endereço, temos 2n palavras na memória 34 Memórias – 3 Memory Address Register Entrada e também saída de dados Na subida, copia D na posição A Controle de posse do barramento DCC001 - 2011-2 35 RAM – Fluxo 1 Passo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 DCC001 - 2011-2 Escrever 9 na posição de memória 15 Sinal Comentário Input = 15 Colocar 15 (em binário, 1111) na entrada Input In_Clk = 1 Copiar no registrador In a entrada Input In_Clk = 0 Zerar o clock do registrador In In_Bus = 1 Colocar o valor de In no barramento Copiar o valor do barramento no registrador MAR (e MAR_Clk = 1 também na entrada A da RAM) MAR_Clk = 0 Zerar o clock do registrador MAR In_Bus = 0 Liberar o barramento Input = 9 Colocar 9 (em binário, 1001) na entrada Input In_Clk = 1 Copiar no registrador In a entrada Input In_Clk = 0 Zerar o clock do registrador In In_Bus = 1 Colocar o valor de In no barramento RAM_Clk = 1 Copiar o valor do barramento no endereço A da RAM RAM_Clk = 0 Zerar o clock da memória In_Bus = 0 Liberar o barramento 36 RAM – Fluxo 2 Copiar o conteúdo da posição 15 da memória para o registrador Out Passo Sinal Comentário 1 Input = 15 Colocar 15 (em binário, 1111) na entrada Input 2 In_Clk = 1 Copiar no registrador In a entrada Input 3 In_Clk = 0 Zerar o clock do registrador In 4 In_Bus = 1 Colocar o valor de In no barramento Copiar o valor do barramento no registrador MAR (e 5 MAR_Clk = 1 também na entrada A da RAM) 6 MAR_Clk = 0 Zerar o clock do registrador MAR 7 In_Bus = 0 Liberar o barramento Colocar o valor da posição A da memória no 8 RAM_Bus = 1 barramento 9 Out_Clk = 1 Copiar o valor do barramento no registrador Out 10 Out_Clk = 0 Zerar valor do clock do registrador Out 11 RAM_Bus = 0 Liberar o barramento DCC001 - 2011-2 37 Acumuladores e Loops DCC001 - 2011-2 38 Acumulador - 1 Um registrador acumulador Tem sua entrada alimentada por um circuito aritmético, como um somador Sua saída é também uma das entradas deste circuito aritmético Este arranjo permite p. ex. somar 100 números, sequenciando as somas ao longo do tempo DCC001 - 2011-2 39 Acumulador – 2 Registrador Acumulador Circuito Soma (combinatório) DCC001 - 2011-2 40 Acumulador – Fluxo 1 Colocar 5 no Acumulador Sinal Acc Clr = 1 Acc Clr = 0 In = 5 In->Dbus = 1 Acc Clk = 1 Acc Clk = 10 In->Dbus = 0 DCC001 - 2011-2 Comentário Zera o acumulador Abaixa o clear do acumulador Coloca 5 na entrada In A entrada In controla o barramento O acumulador copia a entrada, que é a saída do circuito de soma, sendo = 5 Abaixa o clock do acumulador Libera o barramento 41 Acumulador – Fluxo 2 Soma 7 (111) ao conteúdo do Acumulador, e transfere o resultado para o registrador Out Sinal In = 7 In->Dbus = 1 Acc Clk = 1 Acc Clk = 0 In->Dbus = 0 Acc->Dbus = 1 Out Clk = 1 Out Clk = 0 Acc->Dbus = 0 DCC001 - 2011-2 Comentário Coloca 7 na entrada In A entrada In controla o barramento O acumulador copia a entrada, que é a saída do circuito de soma, sendo igual a 12 (0c em hexa), soma do valor do acumulador com o do barramento Abaixa o clock do acumulador Libera o barramento O acumulador controla o barramento O registrador Out copia o barramento Abaixa o clock do registrador Out Libera o barramento 42 Uma Calculadora DCC001 - 2011-2 43 Uma Calculadora Registrador de Dados Luzes para acompanhamento Unidade LógicoAritmética DCC001 - 2011-2 44 Uso da Calculadora Problema: Somar os conteúdos das posições 1 e 2 da memória, e colocar o resultado na posição 3 Pode ser feito pelas etapas: 1. Carregar no acumulador o conteúdo da posição 1 da RAM 2. Somar ao acumulador o conteúdo da posição 2 da RAM 3. Armazenar o conteúdo do acumulador na posição 3 da memória DCC001 - 2011-2 45 Etapa 1 DCC001 - 2011-2 ACC_Clear = 1 ACC_Clear = 0 Input = 1 In_Clk = 1 In_Clk = 0 In->Bus = 1 MAR_Clk = 1 MAR_Clk = 0 In->Bus = 0 RAM->Bus = 1 ACC_Clk = 1 ACC_Clk = 0 RAM->Bus = 0 Entrada de Operando Carrega no acumulador o conteúdo da posição 1 da RAM 46 Etapa 2 Input = 2 In_Clk = 1 In Clk = 0 In->Bus = 1 MAR_Clk = 1 MAR_Clk = 0 In->Bus = 0 RAM->Bus = 1 ACC_Clk = 1 ACC_Clk = 0 RAM->Bus = 0 DCC001 - 2011-2 Soma ao acumulador o conteúdo da posição 2 da RAM 47 Etapa 3 Input = 3 In_Clk = 1 In_Clk = 0 In->Bus = 1 MAR_Clk = 1 MAR_Clk = 0 In->Bus = 0 ACC->Bus = 1 RAM_Clk = 1 RAM_Clk = 0 ACC->Bus = 0 DCC001 - 2011-2 Armazena o conteúdo do acumulador na posição 3 da RAM 48 Clocks DCC001 - 2011-2 49 De Calculadora a Processador Um processador é um circuito similar à calculadora, mas A emissão de sinais de controle e a entrada de operandos é automatizada, e segue um programa Vamos adicionar circuitos à calculadora para transformá-la em um processador DCC001 - 2011-2 50 Osciladores ou Clocks O “propulsor” de qualquer circuito digital é um oscilador ou clock Um clock é um circuito cuja saída oscila entre 0 e 1 com uma frequência conhecida Um computador de 1 GHz (1 giga hertz) utiliza um clock cuja saída varia entre 0 e 1 um milhão de vezes por segundo Deste sinal básico circuitos como registradores circulares obtêm sinais de tempo que são usados para “coreografar” o fluxo de dados de um circuito DCC001 - 2011-2 51 Clocks no Logisim DCC001 - 2011-2 52 Registrador Circular DCC001 - 2011-2 53 Registrador Circular Carta de Tempo t2 t1 t0 Clock Reset DCC001 - 2011-2 54 Resumo - 1 (De)Multiplexadores são usados para conduzir dados em um circuito digital Um flip-flop armazena 1 bit Registradores são conjuntos de flipflops Memórias armazenam muitas palavras (conjuntos de bits) identificadas por um endereço DCC001 - 2011-2 55 Resumo - 2 A informação desloca-se entre dois pontos de armazenamento seguindo controles de fluxo de dados A informação é transformada por circuitos combinatórios colocados entre dois pontos de armazenamento Osciladores, divisores de frequência e circuitos correlatos permitem o controle no tempo do fluxo de dados DCC001 - 2011-2 56