50
DCC001 - 2014-2 1 3 Circuitos Sequenciais DCC 001 Programação de Computadores 2 o Semestre de 2014 Professores Jeroen e Osvaldo

Circuitos Seuqenciais

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

Flip-Flops e Registradores

DCC001 - 2014-2 4

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

DCC001 - 2014-2 7

Registrador de Dados com 4 bits

Entradas

SaídasClock

único para os 4 FFs

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”

Barramentos e Controle de

Fluxo de Dados

DCC001 - 2014-2 13

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

Barramentos

DCC001 - 2014-2 16

Uma boa escolha

de nomes

melhora muito a

legibilidade do

diagrama

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

DCC001 - 2014-2 21

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

Acumuladores e Loops

DCC001 - 2014-2 27

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

DCC001 - 2014-2 29

Circuito Soma

(combinatório)

Registrador

Acumulador

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 32

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

ULA (Unidade Lógico-Aritmética)

DCC001 - 2014-2 36

Determina qual das operações fornece o resultado

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

Clocks

DCC001 - 2014-2 43

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

Clocks no Logisim

DCC001 - 2014-2 46

DCC001 - 2014-2 47

Registrador Circular

Registrador Circular

Carta de Tempo

DCC001 - 2014-2 48

Reset

Clock

t0

t1

t2

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