Você está na página 1de 62

FEDERAL UNIVERSITY

OF SANTA CATARINA

EEL5105 – Circuitos e Técnicas Digitais


Aula 9

Prof. Héctor Pettenghi

hector@eel.ufsc.br
http://hectorpettenghi.paginas.ufsc.br

Material desenvolvido com apoio de arquivos de apresentação do livro de Frank Vahid


9.1 RTL Design: Introdução

9.2 RTL Design: Elementos do Datapath


9.1 RTL Design: Introdução
• Até agora: sistemas digitais cada vez + complexos
• Porta lógicas, multiplex., decod., somadores, controladores (FSMs)

• Nas próximas aulas: como associar esses sistemas para fazer


circuitos ainda mais complexos
9.1 RTL Design: Introdução
• Exemplo: Contador de 100 com reset rst, pause c e saída
de contagem r:
• Se fazemos usando a abordagem apresentada

c’ c’ c’ c’ c’ c’ c’
rst
c c c c c c
E0 E1 E2 E3 E4 ... E98 E99
r=0 r=1 r=2 r=3 r=4 r=98 r=99
c
Vamos ter de montar uma FSM de 100 estados!
9.1 RTL Design: Introdução

• Exemplo: Contador de 100 com reset rst e pause c:


• Diagrama de estados: c’*(r<99)

c*(r<99)
rst
Init Wait Count
(r<99)’
r=0 r=r+1
• Tal diagrama contém:
• Variáveis com múltiplos bits (r)
• Operações de “alto nível”:
– Soma de valores com múltiplos bits (r)
– Atribuição (registro) de valores (r=0, r=r+1)
– Comparação de grandezas (r<99)
• Tem-se então um diagrama de estados de alto nível
9.1 RTL Design: Introdução

• RTL Design (Projeto RTL) envolve converter diagrama de


estados de alto nível em circuito digital
• Para tal, dois tipos de entradas/saídas são definidos:
• Entradas/saídas de controle: tipicamente de um bit (ou poucos
bits) representando evento ou estado do sistema
• Entradas/saídas de dados: geralmente múltiplos bits que
representam alguma informação
9.1 RTL Design: Introdução

• RTL Design (Projeto RTL ) envolve converter diagrama de


estados de alto nível em circuito digital
• Dois tipos de entradas/saídas são definidos:
• Entradas/saídas de controle: tipicamente de um bit (ou poucos
bits) representando evento ou estado do sistema
• Entradas/saídas de dados: geralmente múltiplos bits que
representam alguma informação/entidade

• São definidos também dois blocos:


• Bloco de controle: trata de entradas/saídas de controle
• Bloco operacional (datapath): trata de entr./saídas de dados
9.1 RTL Design: Introdução

• RTL Design (Projeto RTL ) envolve converter diagrama de


estados de alto nível em circuito digital
• Com isso, temos a seguinte arquitetura geral:

Entradas Saídas
de controle Controle de controle

Entradas Saídas
de dados
Datapath de dados
9.1 RTL Design: Introdução

• RTL Design (Projeto RTL ) envolve converter diagrama de


estados de alto nível em circuito digital
• Com isso, temos a seguinte arquitetura geral:

Entradas Saídas
de controle Controle de controle

Comandos Status

Entradas Saídas
de dados
Datapath de dados

• Bloco de controle e datapath conversam entre si a partir de


sinais de comando e status
9.1 RTL Design: Introdução

• Para o contador de 100:


• Diagrama de estados de alto nível:
c’*(r<99)

c*(r<99)
rst
Init Wait Count
(r<99)’
r=0 r=r+1

• Operações de “alto nível”:


• Contador crescente (r+1)
• Atribuição (registro) de valores (r=0, r=r+1)
• Comparação de grandezas (r<99)
9.1 RTL Design: Introdução

• No contador de 100:
• Soma incremental (r+1)
• Somador da Aula 4 (veremos outra forma de fazer uma soma
incremental na próxima aula)

r 1

Somador
(m bits)

r+1
9.1 RTL Design: Introdução

• No contador de 100:
• Atribuição (registro) de valores (r=0, r=r+1)
• Registrador com FFs Tipo D com load e clear das Aulas 7 e Lab
r+1

clr
load Registrador
clk (m bits)

load = 1 → r = r+1
clr = 1 → r = 0
9.1 RTL Design: Introdução

• No contador de 100:
• Comparação de grandezas (r<99)
• Comparador, o qual pode ser projetado usando Aula 3
r 99

A B
Comparador
A<B

r < 99
9.1 RTL Design: Introdução

• No contador de 100:
• Associando os elementos que Machine Manager v.0.1β
fazem operações de alto nível,
c
obtém-se o datapath Controle
r 1
m h
r
Somador Datapath
(m bits) 7

r+1 r 99
r+1
clr A B
load Registrador
Comparador
clk (m bits)
A<B

r r < 99
9.1 RTL Design: Introdução

• No contador de 100:
• Associando os elementos que fazem operações de alto nível,
obtém-se o datapath
Tm Tw Tc

Datapath
1
99
Somador
A B
(m bits)
Comparador r+1
A<B clr
ld
Registrador
clk (m bits)
r < 99
r
r
7
9.1 RTL Design: Introdução

• No contador de 100:
Tm Tw Tc

Datapath
1
99
Somador
A B
(m bits)
Comparador r+1
A<B clr
ld
Registrador
clk (m bits)
r < 99
r
r
7

Tw = 1 → r = r+1
Tm: resultado de r < 99
Tc = 1 → r = 0
9.1 RTL Design: Introdução Machine Manager v.0.1β

c
Controle
c’*(Tm)
rst Tm Tw Tc
c*(Tm )
r
Init Wait Count
Datapath
7
(Tm)’
Tc=1 Tw=0 Tw=1
Tc=0
Tm Tw Tc

Datapath
1

99
Somador
(m bits)
A B
Comparador r+1
A<B clr
ld Registrador
clk (m bits)
r < 99
r
r
7
9.1 RTL Design: Introdução Machine Manager v.0.1β

c
Controle
c’*(Tm)
rst Tm Tw Tc
c*(Tm )
r
Init Wait Count
Datapath
7
(Tm)’
Tc=1 Tw=0 Tw=1
Tw=0 Tc=0 Tc=0
Tm Tw Tc

Datapath
1

99
Somador
(m bits)
A B
Comparador r+1
A<B clr
ld Registrador
clk (m bits)
r < 99
r
r
7
9.1 RTL Design: Introdução
9.2 RTL Design: Elementos do Datapath
9.2 RTL Design: Elementos do Datapath
• Exemplos de elementos do bloco operacional, ou seja,
elementos utilizados para construir um datapath:
• Registradores
• Registradores de deslocamento
• Comparadores
Entradas Saídas
Controle
• Somadores de controle de controle

• Contadores Comandos Status

• Multiplicadores Entradas
de dados
Datapath Saídas
de dados

• Subtratores
• ALUs (unidades lógico-aritméticas)
9.2 RTL Design: Elementos do Datapath
Comparadores

• Comparador de igualdade de N bits:


• Saída é igual a 1 se dois números de N bits são iguais
• Ou seja, saída é igual se todos os bits são iguais
• Como saída de XNOR é 1 se os 2 bits de entrada são iguais,
comparador de 4 bits pode ser obtido fazendo:
a3 b3 a2 b2 a1 b1 a0 b0

a3 a2 a1 a0 b3 b2 b1 b0
4-bit equality comparator
eq

(b)
eq
(a)
9.2 RTL Design: Elementos do Datapath
Comparadores

• Comparador de magnitude de N bits:


• Indica se A > B, A = B ou A < B, sendo A e B dois números de N
bits
• Como projetar?
9.2 RTL Design: Elementos do Datapath
Comparadores

• Comparador de magnitude de N bits:


• Indica se A > B, A = B ou A < B, sendo A e B dois números de N
bits
• Como projetar?
• Basta considerar como a comparação é feita “manualmente”:
A=1011 B=1001

1011 1001 Igual

1011 1001 Igual

1011 1001 Maior

Então A > B
9.2 RTL Design: Elementos do Datapath
Comparadores

• Comparador de magnitude de N bits:


• Indica se A > B, A = B ou A < B, sendo A e B dois números de N
bits
• Portanto, basta projetar um bloco:
• out_gt = in_gt + (in_eq * a * b’) [greater than]
• out_lt = in_lt + (in_eq * a’ * b) [less than]
• out_eq = in_eq * (a XNOR b) [equals]

a b

a b
Igt in_gt out_gt
Ieq in_eq out_eq
Ilt in_lt out_lt
9.2 RTL Design: Elementos do Datapath
Comparadores

• Comparador de magnitude de N bits:


• Indica se A > B, A = B ou A < B, sendo A e B dois números de N bits
• Então:
a3 b3 a2 b2 a1 b1 a0 b0

a b a b a b a b
igt in_gt out_gt in_gt out_gt in_gt out_gt in_gt out_gt AgtB
ieq in_eq out_eq in_eq out_eq in_eq out_eq in_eq out_eq AeqB
ilt in_lt out_lt in_lt out_lt in_lt out_lt in_lt out_lt AltB

Stage 3 Stage 2 Stage 1 Stage 0


(a)

0 Igt a3a2a1a0 b3b2b1b0


AgtB
1 Ieq 4-bit magnitude comparator AeqB
0 Ilt AltB
(b)
9.2 RTL Design: Elementos do Datapath
Registradores

• Registrador básico: armazena um certo número de bits


I3 I2 I1 I0

4-bit register
I3 I2 I1 I0
D D D D
Q Q Q Q reg(4)

clk
Q3 Q2 Q1 Q0

Q3 Q2 Q1 Q0

• Esse registrador é gravado em todo ciclo de clock


• Como modificá-lo para que ele seja gravado apenas em
determinados ciclos indicados por um entrada load?
9.2 RTL Design: Elementos do Datapath
Registradores

• Registrador com carga paralela:


• Armazena bits somente quando load = 1.
• Obtido adicionando um mux em cada entrada do reg. básico

ALU load
mux mux mux mux
load
9.2 RTL Design: Elementos do Datapath
Registradores de Deslocamento

• Registrador de deslocamento à direita (shr) que faz


deslocamento de shr_in somente se entrada shr = 1:

ALU
9.2 RTL Design: Elementos do Datapath
Registradores de Deslocamento

• Registrador multifunção:
• Muitos registradores tem múltiplas funções
• Podem ser facilmente projetados usando muxes
Funções:
s1 s0 Operação
• Exemplo: 0 0 Mantém valor atual
0 1 Carga paralela
1 0 Desloca à direita
1 1 (não usado - coloca 0s)

ALU
9.2 RTL Design: Elementos do Datapath
Registradores de Deslocamento

• Outro Exemplo: s1 s0 Operação


0 0 Manter valores atuais
0 1 Carga paralela
1 0 Desloca à direita
1 1 Desloca à esquerda

ALU
PROBLEMAS
Problema 9.5. Pretende-se implementar um circuito que implemente o padrão
de contagem em hexadecimal 0386C9ECFF0386..., correspondente
a um sinal de 8 bits (b0 a b7). Este padrão corresponde à contagem de 5 estados,
que se repetem ao longo do tempo. Utilizando o mínimo de lógica combinatória
adicional, ligue dois registros Multi-modo apresentado na Figura de modo a
implementar o circuito gerador deste padrão.
PROBLEMAS
Problema 9.6. Obtenha a forma de onda para a saída Q de 4-bits do registrador
Multi-modo apresentado.

Solução:

QUESTÃO 1: Tempo 5 min


9.2 RTL Design: Elementos do Datapath
Somadores

• Vistos em aulas anteriores:


a n bn a 3 b3 a 2 b2 a 1 b1 a 0 b0

co SC SC SC SC SC ci

sn s3 s2 s1 s0

a3 a2 a1 a0 b3 b2 b1 b0
4-bit adder ci
co s3 s2 s1 s0
9.2 RTL Design: Elementos do Datapath
Subtratores e Somadores/Subtratores

• Vistos em aulas anteriores:

X Y
n n

Subtrator
de n bits
n

Somador de n
1
bits

X-Y
9.2 RTL Design: Elementos do Datapath
Subtratores e Somadores/Subtratores

• Vistos em aulas anteriores:

C X Y

n n

Somador/ C X Y
Subtrator n n
de n bits
n Somador/subtrator
de n bits
Somador de n
bits n

n
S

Se C = 0: X + Y
Se C = 1: X - Y
9.2 RTL Design: Elementos do Datapath
Deslocadores

• Operação de deslocamento (ex. deslocar 0011 para esquerda


resulta em 0110) é útil para:
• Manipular bits
• Converter dados seriais para paralelos (geralmente usando
registradores de deslocamento)
• Fazer divisões ou multiplicações por potências de 2
• Deslocar n vezes para esquerda = multiplicação por 2n
• Deslocar n vezes para direita = dividir por 2n
9.2 RTL Design: Elementos do Datapath
Deslocadores

• Circuito pode i3 i2 i1 i0

ser muito simples:


in <<1

Símbolo
q3 q2 q1 q0

Left shifter
i3 i2 i1 i0 i3 i2 i1 i0

inR
in inL
01 01 01 01 2 01 201 2 01 2 01
• Outros: sh shL s0
shR s1

q3 q2 q1 q0 q3 q2 q1 q0
Desloca para esquerda,
Desloca para esquerda
direita ou não desloca
ou não desloca
9.2 RTL Design: Elementos do Datapath
Deslocadores

• Exemplo: conversor aproximado de Celsius para Fahrenheit


• F = C * 9/5 + 32
• De forma aproximada: F = C*2 + 32
9.2 RTL Design: Elementos do Datapath
Deslocadores

• Exemplo: conversor aproximado de Celsius para Fahrenheit


• F = C * 9/5 + 32
• De forma aproximada: F = C*2 + 32
• Usando deslocamento à esquerda: F = (C<<1) + 32
C
8 *2

<<1 0 (shift in 0)

8 00100000 (32)
8
8-bit adder
8
F
9.2 RTL Design: Elementos do Datapath
Deslocadores

• Outro exemplo: média de temperaturas


• Quatro registradores
armazenam um histórico T
Ra Rb Rc Rd
de temperaturas clk
ld
• Deseja-se calcular a ld

média das últimas 4 + +

leituras +
divide por 4
• Estratégia: somar e dividir
>>2
por 4
Ravg
ld

Tavg
9.2 RTL Design: Elementos do Datapath
Contadores

• Contador ascendente de N bits


construído usando registrador:
• 0000, 0001, 0010, ..., 1111
• Saída tc indica que contagem
chegou ao máximo
• Entrada cnt habilita contagem
9.2 RTL Design: Elementos do Datapath
Contadores

• Contador ascendente de N bits 1


0
cnt 4-bit up-counter
construído usando registrador: tc C
4
• 0000, 0001, 0010, ..., 1111
0
0
1 0001
0000
0101
0100
0011
0010
1110
1111
0001
0000
...
• Saída tc indica que contagem
chegou ao máximo
4-bit up-counter
• Entrada cnt habilita contagem
cnt
ld
4-bit register

4 4 4
• Incrementador: +1 4 +1
4
4
tc C
9.2 RTL Design: Elementos do Datapath
Contadores

• Contador pode ser usado para gerar pulso de 1 Hz a partir de


um clock de 256 Hz
• Basta usar um contador de 8 bits com indicador de máximo:

1
cnt 8-bit up-counter
tc C
osc
(256 Hz) 8
p (unused)
(1 Hz)
9.2 RTL Design: Elementos do Datapath
Contadores

• Sequenciador de lâmpadas:

1 cnt 3-bit u p -cou nt er

clk tc c2 c1 c0
(1 Hz)
00 10 010
unused

3x 8 decoder i2 i1 i0
d7 d6 d5 d4 d3 d2 d1 d0

lig hts
9.2 RTL Design: Elementos do Datapath
Contadores

• Contador decrescente (descendente) de 4 bits:


4-bit down-counter

cnt
ld
4-bit register

4 4

4 –1

tc C 4
9.2 RTL Design: Elementos do Datapath
Contadores

• Contador ascendente/descendente de 4 bits:


4-bit up/down counter

dir
1 Mux 2x1 0
4
clr clr
cn t ld 4-bit register

4 4 4 4

4 –1 +1
4 4
1 2x 1 0
tc C
9.2 RTL Design: Elementos do Datapath
Contadores

• Contador com carga paralela:


• É possível gravar valor inicial para contagem:

L 4
load
1 4-bit 2x 1 0
4

cnt load
4-bit register

4 4
4 +1

tc C
9.2 RTL Design: Elementos do Datapath
Contadores

• Contador com carga paralela:


• Interessante para criar pulsos com frequências múltiplas da
frequência de clock
• Gerador de um pulso a cada 9 ciclos de clock:
1000
4

load L
1
cnt 4-bit down-counter

tc C
clk
4
9.2 RTL Design: Elementos do Datapath
Contadores

• Gerador de pulsos de 1 Hz a partir de clock de 60 Hz:

clr
1 cnt 6-bit up counter
osc tc C
(60 Hz)
p

(1 Hz)
PROBLEMAS
Problema 9.7. Projete um circuito que fornece a sequencia apresentada usando o
contador dado e portas logicas de duas entradas.
3
Solução:
load L
000 001 010
cnt
3-bit up-counter (0—> 7)
reset
tc=4 C 110 101 100

QUESTÃO 2: Tempo 5 min


FEDERAL UNIVERSITY
OF SANTA CATARINA

EEL5105 – Circuitos e Técnicas Digitais


Aula 9

Prof. Héctor Pettenghi

hector@eel.ufsc.br
http://hectorpettenghi.paginas.ufsc.br

Material desenvolvido com apoio de arquivos de apresentação do livro de Frank Vahid


Exercícios
• Exercícios do Livro do Frank Vahid
• 4.1, 4.2, 4.6, 4.15, 4.17, 4.18, 4.19, 4.28, 4.31, 4.39,
4.40 (ignorar item c), 4.44.
• A versão digital do livro do Frank Vahid está disponível no
site da BU
• Acesse: http://www.bu.ufsc.br/design/LivrosEletronicos1.html
• Clique no link para “Minha Biblioteca”
http://150.162.1.90/pergamum/biblioteca_s/php/login_usu.ph
p?flag=minhabiblioteca_redirect.php
• Use sua senha da Biblioteca da UFSC para acessar a
“Minha Biblioteca”
• Procure pelo livro do Vahid...
Exercícios
• Resposta do 4.1:

• Resposta do 4.2:
Exercícios
• Resposta do 4.6: basta usar um registrador com carga
paralela

• Resposta do 4.15: 48 unidades de tempo, conforme


explicado abaixo
Exercícios
• Resposta do 4.17:
Exercícios
• Resposta do 4.18:
Exercícios
• Resposta do 4.19:
Exercícios
• Resposta do 4.28:
Exercícios
• Resposta do 4.31:
Exercícios
• Resposta do 4.39:
Exercícios
• Resposta do 4.40:
Exercícios
• Resposta do 4.44: Uma forma de fazer sem o uso de
multiplicadores é a seguinte
• Primeiramente calcular C*32 (deslocando C 5 vezes)
• Em seguida, calcular C*2 (deslocando C 1 vez)
• Calcular C*32-C*2 (com um subtrator), o que resulta em C*30
• Deslocar C*30 4 vezes para obter C*30/16
• Finalmente, somar C*30/16 com 32 para obter F = C*30/16 +
32
• Então, basta usar diversos somadores, subtratores e
deslocadores para fazer as operações anteriores
• É possível fazer de outras formas...

Você também pode gostar