Sie sind auf Seite 1von 50

3

Circuitos Sequenciais

DCC 001
Programao de Computadores
2o Semestre de 2014
Professores Jeroen e Osvaldo

DCC001 - 2014-2

Circuitos Combinatrios
Sua sada depende exclusivamente dos valores

aplicados s suas entradas


Com poucas variveis 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

Circuitos Sequenciais
Circuitos sequenciais so circuitos digitais cuja sada

depende

dos sinais aplicados s suas entradas


de valores armazenados em memrias

Podem realizar operaes como a soma de

5.000.000 inteiros de 32 bits, realizando uma soma


de cada vez, com resultados parciais acumulados em
uma memria

DCC001 - 2014-2

Flip-Flops e Registradores

DCC001 - 2014-2

Flip-Flop tipo D
Poderia ser click; funciona
como um obturador de
mquina fotogrfica

Bit
Armazenado
Complemento
do Bit
Armazenado

A entrada D
fotografada no
instante em que o clock
passa de 0 para 1
DCC001 - 2014-2

Pino Auxiliar:
Impe 0
Pino Auxiliar:
Impe 1

Pino Auxiliar:
Habilita o FF

Carta de Tempo
FF tipo D
7

Clock

Entrada D
2

Sada Q
0

-1
1

10

11

12

13

Tempo
DCC001 - 2014-2

Registrador de Dados com 4 bits


Clock
nico para os 4 FFs

Sadas

Entradas
DCC001 - 2014-2

Registradores Logisim - 1
Encontram-se na biblioteca Memory
Permitem escolher a

largura de dados

(no. de bits armazenados)


Tm possibilidade de digitao direta
do contedo armazenado
Tambm tm um pino de clear
DCC001 - 2014-2

Registradores Logisim - 2

Registradores

Valor
armazenado no
registrador, em
hexadecimal

Largura de
dados

DCC001 - 2014-2

Notao Hexadecimal
Base 16
Algarismos 0, , 9, , , , , ,
75 = 7. 163 + 10. 162 + 5. 161 + 12. 160 = 31324
Muito til para escrever sequncias de bits, pois a

converso muito fcil

101000111101=A3D
A
DCC001 - 2014-2

D
10

Largura de Dados
Estes diagramas so

equivalentes
No de baixo,
entradas, sadas,
registradores e fios
tm largura de bits
(bit width) igual a 4

Mais legvel
DCC001 - 2014-2

11

Distribuidores (Splitters)
Traduo errada!
Deveria ser
ramos de sada
3 bits

2 bits

8 bits
3 bits
DCC001 - 2014-2

12

Barramentos e Controle de
Fluxo de Dados

DCC001 - 2014-2

13

Conexes
interessante ter rotas de dados que

permitam que dados sejam transferidos entre


quaisquer dois registradores de um circuito
Entretanto, a sada de um circuito lgico no
pode ser ligada diretamente sada de outro
circuito lgico:

Se um dos circuitos coloca 0 no cabo que faz a


ligao, e o outro coloca 1, como ficamos?

Barramentos permitem esse tipo de conexo,

desde que protegidos por buffers controlados

DCC001 - 2014-2

14

Barramentos
O dado no barramento igual
sada com o buffer controlado
ligado
A todo instante, no mximo
um buffer controlado pode ter
o controle do barramento

Toda sada ligada ao barramento


passa por um buffer controlado
DCC001 - 2014-2

15

Barramentos

Uma boa escolha


de nomes
melhora muito a
legibilidade do
diagrama
DCC001 - 2014-2

16

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 so transferidos de um ponto para outro
conectando e desconectando esses sinais em uma
sequncia apropriada para a transferncia
desejada
DCC001 - 2014-2

17

Controle de Fluxo de Dados


Exemplo 1

Colocar 7 no registrador A
Passo Sinal
Comentrio
1 In = 7
Colocar 7 (em binrio, 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 - 2014-2

18

Controle de Fluxo de Dados


Exemplo 2

Colocar 3 no registrador B
Passo Sinal
Comentrio
1 In =3
Colocar 3 (em binrio, 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 - 2014-2

19

Controle de Fluxo de Dados


Exemplo 3

Colocar no registrador C o contedo do registrador A


Passo Sinal
Comentrio
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 - 2014-2

20

Memrias

DCC001 - 2014-2

21

Memrias - 1
O Logisim oferece memrias RAM (Random

Memory) e ROM (Read Only Memory)

Access

Uma memria composta por muitas unidades de

armazenamento chamadas palavras


Cada palavra possui um endereo que deve ser usado para
ler ou escrever seu contedo
Facilidades do simulador (no existem em circuitos reais)
podem ser usadas para alterao de contedo, e mesmo
para a leitura de um arquivo com todo o contedo da
memria
DCC001 - 2014-2

22

Memrias - 2
Memrias tm como atributos
a largura de dados, que o nmero de bits em cada palavra
a largura de endereo, que o nmero de bits que compem um
endereo
o tamanho, que o nmero de palavras que a memria contm, e
que no mximo 2n, onde n a largura de endereo
No Logisim o tamanho de uma memria determinado por

sua largura de endereo:

DCC001 - 2014-2

com n bits de largura de endereo, temos sempre 2n palavras na


memria
23

Memrias 3
Memory
Address
Register

Entrada e
tambm sada
de dados

Na subida, copia
D na posio A
Controle de posse
do barramento
DCC001 - 2014-2

24

RAM Fluxo 1
Passo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DCC001 - 2014-2

Escrever 9 na posio de memria 15


Sinal
Comentrio
Input = 15
Colocar 15 (em binrio, 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
tambm 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 binrio, 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 endereo A da RAM
RAM_Clk = 0 Zerar o clock da memria
In_Bus = 0
Liberar o barramento
25

RAM

Fluxo 2

Copiar o contedo da posio 15 da memria para o registrador Out


Passo
Sinal
Comentrio
1
Input = 15
Colocar 15 (em binrio, 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
tambm 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 posio A da memria 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 - 2014-2

26

Acumuladores e Loops

DCC001 - 2014-2

27

Acumulador - 1
Um registrador acumulador

Tem sua entrada alimentada por um circuito


aritmtico, como um somador
Sua sada tambm uma das entradas deste
circuito aritmtico

Este arranjo permite p. ex. somar 100

nmeros, sequenciando as somas ao longo


do tempo

DCC001 - 2014-2

28

Acumulador 2

Registrador
Acumulador
Circuito Soma
(combinatrio)

DCC001 - 2014-2

29

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 - 2014-2

Comentrio
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
sada do circuito de soma, sendo = 5
Abaixa o clock do acumulador
Libera o barramento
30

Acumulador Fluxo 2
Soma 7 (111) ao contedo 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 - 2014-2

Comentrio
Coloca 7 na entrada In
A entrada In controla o barramento
O acumulador copia a entrada, que a
sada 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
31

Uma Calculadora

DCC001 - 2014-2

32

Uma Calculadora
Barramento

Memria

Unidade
LgicoAritmtica;
+, -, x, /

Acumulador

DCC001 - 2014-2

33

Uma Calculadora
Entrada

DCC001 - 2014-2

Registrador
de Dados

Sada
Registrador com
Resultado de
Comparao

34

Uma Calculadora
Entrada

DCC001 - 2014-2

Registrador
de Dados

Sada
Registrador com
Resultado de
Comparao

35

ULA (Unidade Lgico-Aritmtica)

Determina qual das operaes


fornece o resultado

DCC001 - 2014-2

36

Uso da Calculadora
Problema:
Somar os contedos das posies 1 e 2 da memria, e
colocar o resultado na posio 3

Pode ser feito pelas etapas:


1. Carregar no acumulador o contedo da posio 1 da RAM
2. Somar ao acumulador o contedo da posio 2 da RAM
3. Armazenar o contedo do acumulador na posio 3 da
memria
DCC001 - 2014-2

37

Etapa 1

DCC001 - 2014-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
contedo da posio 1 da RAM

38

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 - 2014-2

Soma ao acumulador o
contedo da posio 2 da RAM

39

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 - 2014-2

Armazena o contedo do
acumulador na posio 3 da
RAM

40

Calculadora: Valor Absoluto


Problema: colocar na sada o valor absoluto da

entrada
Exemplos:

Se a entrada for 7, a sada deve ser 7


Se a entrada for -4, a sada deve ser 4
(o Logisim adota complemento de 2)

Teremos que ter aes que dependem do valor na

entrada ser positivo ou negativo

DCC001 - 2014-2

41

Calculadora:
Receita para Valor Absoluto

DCC001 - 2014-2

Input = valor desejado


ACC_Clear = 1
ACC_Clear = 0
In_Clk = 1
In_Clk = 0
In_Bus = 1
Compare_Clk = 1
Compare_Clk = 0
se Bus < ACC
se Bus > ACC ou Bus = ACC
Operao = 01
Out_Clk = 1
ACC_Clk = 1
Out_Clk = 0
ACC_Clk = 0
In_Bus = 0
Operao = 00
In_Bus = 0
ACC_Bus = 1
Out_Clk = 1
Out_Clk = 0
ACC_Bus = 0

42

Clocks

DCC001 - 2014-2

43

De Calculadora a Processador
Um

processador um circuito similar

calculadora, mas
A emisso 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 - 2014-2

44

Osciladores ou Clocks
O propulsor de qualquer circuito digital um

oscilador ou clock
Um clock um circuito cuja sada oscila entre 0 e 1
com uma frequncia conhecida
Um computador de 1 GHz (1 giga hertz) utiliza um
clock cuja sada varia entre 0 e 1 um milho de
vezes por segundo
Deste sinal bsico circuitos como registradores
circulares obtm sinais de tempo que so usados
para coreografar o fluxo de dados de um circuito
DCC001 - 2014-2

45

Clocks no Logisim

DCC001 - 2014-2

46

Registrador Circular

DCC001 - 2014-2

47

Registrador Circular
Carta de Tempo
t2
t1
t0
Clock
Reset
DCC001 - 2014-2

48

Resumo - 1
Um flip-flop armazena 1 bit
Registradores so conjuntos de flip-

flops
Memrias armazenam muitas palavras
(conjuntos de bits) identificadas por
um endereo

DCC001 - 2014-2

49

Resumo - 2
A informao desloca-se entre dois pontos

de armazenamento seguindo controles de


fluxo de dados
Pode ser transformada por circuitos
combinatrios colocados entre pontos de
armazenamento
Osciladores, divisores de frequncia e
circuitos correlatos permitem o controle no
tempo do fluxo de dados
DCC001 - 2014-2

50

Das könnte Ihnen auch gefallen