Upload
marcio-luiz
View
23
Download
1
Embed Size (px)
DESCRIPTION
Chapter about Sequencial Circuits from UFMG computer programing class 2015/2.
Citation preview
DCC001 - 2014-2 1
3
Circuitos Sequenciais
DCC 001Programação de Computadores
2o Semestre de 2014Professores Jeroen e Osvaldo
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
Em casos como a soma, propriedades podem ser exploradas para conseguir de entradas da ordem de algumas dezenas de bits
Mas como fazer para somar, digamos, 5.000.000 de inteiros de 32 bits cada um?
DCC001 - 2014-2 2
Circuitos Sequenciais
Circuitos sequenciais são circuitos digitais cuja saída depende
dos sinais aplicados às suas entradas
de valores armazenados em memórias
Podem realizar operações como a soma de 5.000.000 inteiros de 32 bits, realizando uma soma de cada vez, com resultados parciais acumulados em uma memória
DCC001 - 2014-2 3
DCC001 - 2014-2 5
Flip-Flop tipo D
Pino Auxiliar:
Impõe 1
Pino Auxiliar:
Impõe 0
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
Bit
Armazenado
Complemento
do Bit
Armazenado
Pino Auxiliar:
Habilita o FF
Carta de Tempo
FF tipo D
DCC001 - 2014-2 6
1 2 3 4 5 6 7 8 9 10 11 12 13
-1
0
1
2
3
4
5
6
7
0
1Saída Q
0
1Entrada D
Clock0
1
Tempo
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 - 2014-2 8
Registradores Logisim - 2
DCC001 - 2014-2 9
Registradores
Largura de
dados
Valor
armazenado no
registrador, em
hexadecimal
Notação Hexadecimal
Base 16
Algarismos 0,⋯ , 9, 𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹
7𝐴5𝐶 = 7. 163 + 10. 162 + 5. 161 + 12. 160 = 31324
Muito útil para escrever sequências de bits, pois a conversão é muito fácil
DCC001 - 2014-2 10
101000111101=A3D
D3A
Largura de Dados
DCC001 - 2014-2 11
Estes diagramas são equivalentes
No de baixo, entradas, saídas, registradores e fios têm largura de bits (bit width) igual a 4
Mais legível
Distribuidores (Splitters)
DCC001 - 2014-2 12
3 bits2 bits
3 bits
8 bits
Tradução errada!
Deveria ser
“ramos de saída”
Conexões
É interessante ter rotas de dados que permitam que dados sejam transferidos entre quaisquer dois registradores de um circuito
Entretanto, a saída de um circuito lógico não pode ser ligada diretamente à saída de outro circuito lógico:
Se um dos circuitos coloca 0 no cabo que faz a ligação, e o outro coloca 1, como ficamos?
Barramentos permitem esse tipo de conexão, desde que protegidos por buffers controlados
DCC001 - 2014-2 14
Barramentos
DCC001 - 2014-2 15
Toda saída ligada ao barramento
passa por um “buffer controlado”
A todo instante, no máximo
um buffer controlado pode ter
o controle do barramento
O dado no barramento é igual à
saída com o buffer controlado
ligado
Controle de Fluxo de Dados
Os sinais de clock dos registradores e dos buffers controlados 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 - 2014-2 17
Controle de Fluxo de Dados
Exemplo 1
DCC001 - 2014-2 18
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
Colocar 7 no registrador A
Controle de Fluxo de Dados
Exemplo 2
DCC001 - 2014-2 19
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
Colocar 3 no registrador B
Controle de Fluxo de Dados
Exemplo 3
DCC001 - 2014-2 20
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
Colocar no registrador C o conteúdo do registrador A
Memórias - 1
O Logisim oferece memórias RAM (Random Access Memory) e ROM (Read Only Memory)
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) podem ser usadas para alteração de conteúdo, e mesmo para a leitura de um arquivo com todo o conteúdo da memória
DCC001 - 2014-2 22
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, e que é no máximo 2n, onde n é a largura de endereço
No Logisim o tamanho de uma memória é determinado por sua largura de endereço:
com n bits de largura de endereço, temos sempre 2n palavras na memória
DCC001 - 2014-2 23
Memórias – 3
DCC001 - 2014-2 24
Memory
Address
Register
Controle de posse
do barramento
Entrada e
também saída
de dados
Na subida, copia
D na posição A
RAM – Fluxo 1
DCC001 - 2014-2 25
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
5 MAR_Clk = 1Copiar o valor do barramento no registrador MAR (e
também na entrada A da RAM)
6 MAR_Clk = 0 Zerar o clock do registrador MAR
7 In_Bus = 0 Liberar o barramento
8 Input = 9 Colocar 9 (em binário, 1001) na entrada Input
9 In_Clk = 1 Copiar no registrador In a entrada Input
10 In_Clk = 0 Zerar o clock do registrador In
11 In_Bus = 1 Colocar o valor de In no barramento
12 RAM_Clk = 1 Copiar o valor do barramento no endereço A da RAM
13 RAM_Clk = 0 Zerar o clock da memória
14 In_Bus = 0 Liberar o barramento
Escrever 9 na posição de memória 15
RAM – Fluxo 2
DCC001 - 2014-2 26
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
5 MAR_Clk = 1Copiar o valor do barramento no registrador MAR (e
também na entrada A da RAM)
6 MAR_Clk = 0 Zerar o clock do registrador MAR
7 In_Bus = 0 Liberar o barramento
8 RAM_Bus = 1Colocar o valor da posição A da memória no
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
Copiar o conteúdo da posição 15 da memória para o registrador Out
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 - 2014-2 28
Acumulador – Fluxo 1
DCC001 - 2014-2 30
Sinal Comentário
Acc Clr = 1 Zera o acumulador
Acc Clr = 0 Abaixa o clear do acumulador
In = 5 Coloca 5 na entrada In
In->Dbus = 1 A entrada In controla o barramento
Acc Clk = 1O acumulador copia a entrada, que é a
saída do circuito de soma, sendo = 5
Acc Clk = 10 Abaixa o clock do acumulador
In->Dbus = 0 Libera o barramento
Colocar 5 no Acumulador
Acumulador – Fluxo 2
DCC001 - 2014-2 31
Sinal Comentário
In = 7 Coloca 7 na entrada In
In->Dbus = 1 A entrada In controla o barramento
Acc Clk = 1
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
Acc Clk = 0 Abaixa o clock do acumulador
In->Dbus = 0 Libera o barramento
Acc->Dbus = 1 O acumulador controla o barramento
Out Clk = 1 O registrador Out copia o barramento
Out Clk = 0 Abaixa o clock do registrador Out
Acc->Dbus = 0 Libera o barramento
Soma 7 (111) ao conteúdo do Acumulador, e transfere
o resultado para o registrador Out
Uma Calculadora
DCC001 - 2014-2 33
Barramento
Memória
UnidadeLógico-
Aritmética;+, -, x, /
Acumulador
Uma Calculadora
DCC001 - 2014-2 34
Saída
Registrador com Resultado de Comparação
Registrador de Dados
Entrada
Uma Calculadora
DCC001 - 2014-2 35
Saída
Registrador com Resultado de Comparação
Registrador de Dados
Entrada
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 damemória
DCC001 - 2014-2 37
Etapa 1
DCC001 - 2014-2 38
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
Carrega no acumulador o
conteúdo da posição 1 da RAM
Entrada de
Operando
Etapa 2
DCC001 - 2014-2 39
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
Soma ao acumulador o
conteúdo da posição 2 da RAM
Etapa 3
DCC001 - 2014-2 40
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
Armazena o conteúdo do
acumulador na posição 3 da
RAM
Calculadora: Valor Absoluto
Problema: colocar na saída o valor absoluto da entrada
Exemplos:
Se a entrada for 7, a saída deve ser 7
Se a entrada for -4, a saída deve ser 4
(o Logisim adota complemento de 2)
Teremos que ter ações que dependem do valor na entrada ser positivo ou negativo
DCC001 - 2014-2 41
Calculadora:
Receita para Valor Absoluto
DCC001 - 2014-2 42
Input = valor desejado
ACC_Clear = 1
ACC_Clear = 0
In_Clk = 1
In_Clk = 0In_Bus = 1
Compare_Clk = 1Compare_Clk = 0
se Bus < ACC se Bus > ACC ou Bus = ACCOperação = 01 Out_Clk = 1
ACC_Clk = 1 Out_Clk = 0
ACC_Clk = 0 In_Bus = 0
Operação = 00In_Bus = 0
ACC_Bus = 1Out_Clk = 1
Out_Clk = 0ACC_Bus = 0
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 à calculadorapara transformá-la em um processador
DCC001 - 2014-2 44
DCC001 - 2014-2 45
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 registradorescirculares obtêm sinais de tempo que são usadospara “coreografar” o fluxo de dados de um circuito
DCC001 - 2014-2 49
Resumo - 1
Um flip-flop armazena 1 bit
Registradores são conjuntos de flip-flops
Memórias armazenam muitas palavras(conjuntos de bits) identificadas porum endereço
Resumo - 2
A informação desloca-se entre dois pontosde armazenamento seguindo controles de fluxo de dados
Pode ser transformada por circuitoscombinatórios colocados entre pontos de armazenamento
Osciladores, divisores de frequência e circuitos correlatos permitem o controle no tempo do fluxo de dados
DCC001 - 2014-2 50