Você está na página 1de 38

UFRN – DCA

Sistemas Digitais

Projeto RTL
Prof. Felipe Silveira
Sumário
•  Introdução
•  Projeto de processadores dedicados
▫  Máquina de refrigerante
▫  Medidor de distância a Laser
•  Armadilhas e boas práticas em projeto RTL
•  Projeto orientado a controle ou dado
•  Determinação do relógio do sistema
Introdução

outputs
inputs
bi bo

FSM
FSM
Combinational
logic n1
•  Bloco de Controle: n0
▫  Descreve o comportamento de s1 s0
State register
circuitos seqüenciais clk

•  Bloco Operacional: Register Comparator


▫  Componentes de processamento
e armazenamento de dados ALU Register file

bi bo
•  Processadores: Combinational Register file
n1
▫  Combinação de Bloco de logic
n0
Controle e Operacional s1 s0 ALU
State register
Datapath
Controller 3
Método de Projeto RTL
•  Métodos de Projeto Estudados até o Momento:
▫  Circuitos Combinacionais:
  Passo 1: Capturar o comportamento do circuito
  Tabela verdade ou equação
  Passo 2: Converter o comportamento em um circuito

▫  Circuitos Seqüenciais:
  Passo 1: Capturar o comportamento do circuito
  Máquinas de estados finitos
  Passo 2: Converter o comportamento em um circuito
Método de Projeto RTL
•  Projeto de um processador:
▫  Passo 1: Capturar o comportamento do circuito
  Máquina de estados de alto nível
▫  Passo 2: Converter o comportamento em um circuito

Capturar o comportamento

Converter em circuito
Método de Projeto RTL
•  Obter uma máquina de estados de alto nível:
▫  Descreva o comportamento desejado do sistema na forma de uma
máquina de alto nível.
▫  De alto nível porque as condições para as transições e as ações
dos estados são mais do que operações booleanas
•  Criar um bloco operacional:
▫  A partir da máquina de estado anterior, crie um bloco operacional
capaz de realizar as operações sobre os dados
•  Conectar o bloco operacional a um de controle:
▫  Conectar também as entradas e saídas externas ao bloco de
controle
•  Obtenha a FSM do bloco de controle:
▫  A partir da máquina de alto nível crie a FSM do bloco de controle
  Substitua as operações por sinais de controle
Exemplo: Máquina de refrigerante
•  Requisitos: s a
▫  c: Vale 1 quando a moeda
for depositada
c Máquina
d de
▫  a: Valor da moeda refrigerante
depositada: 8 bits

▫  s: Valor do refrigerante: 8 s a 25
bits 25
50
0 1 0 1 0
▫  d: Processador envia 1 c Máquina tot: tot:
quando valor depositado d de 50
25 a

0 1 0 Refrigerante
for maior ou igual a s.
Exemplo: Máquina de refrigerante
•  Obter máquina de estado de alto nível (Passo 1) s
8
a
8
  Necessidade de um registrador local c Soda
d dispenser
  Init: Fixa d=0, tot=0 processor
  Wait: Aguarda uma moeda
  Se detectou moeda, vá para Add Inputs: c (bit), a (8 bits), s (8 bits)‫‏‬
  Add: Atualiza valor: tot = tot + a Outputs: d (bit)‫‏‬
  Volta para o estado Wait Local registers: tot (8 bits)‫‏‬
  Em Wait, se tot >= s, vá para Disp c
  Disp: Fixa d=1 (Libera refrigerante)‫‏‬ Add
  Retorna ao estado Init Init Wait
tot=tot+a

d=0 c’*(tot<s)‫‏‬
tot=0 c’*(tot<s)’
Disp

d=1
Exemplo: Máquina de refrigerante
Inputs : c (bit), a(8 bits)‫ ‏‬, s (8 bits)‫‏‬

•  Criar o bloco operacional Outputs : d (bit)‫‏‬


Local re g isters : tot (8 bits)‫‏‬

(Passo 2) c
Add
Init Wait

▫  Necessidade de um d=0 c‘
(tot<s)‫‘‏‬
tot= tot+a
c ‘ *
(tot<s)‫‏‬

registrador
t ot=0
Disp

▫  Necessidade de um s a
d=1

comparador de 8 bits
▫  Necessidade de um tot_ld ld
somador de 8 bits tot_clr clr
tot

▫  Interligação dos 8
8 8
componentes
▫  Criar as variáveis de tot_lt_s 8-bit 8-bit
adder
entrada/saída <

Datapath 8
Exemplo: Máquina de refrigerante
•  Conectar os blocos de controle e s a

operacional (Passo 3)
tot_ld
▫  Entradas do Controlador
ld
tot
tot_clr clr
8
  Entrada externa c‫‏‬ 8 8

8-bit
  Entrada tot_lt_s tot_lt_s 8-bit
< adder

8
  Saída do comparador s a
Datapath

▫  Saídas do Controlador 8 8
  Saída d (entrega refri)‫‏‬
  Saída para o bloco c
operacional
  load d tot_ld
  clear tot_clr

Controller Datapath
tot_lt_s
Exemplo: Máquina de refrigerante
s a
8 8
•  Obtenha a FSM
do controlador c

(Passo 4): d tot_ld

Controller

Datapath
▫  Mesmos estados tot_clr

e transições da tot_lt_s
s a
máquina de
Inputs:: c, tot_lt_s (bit)‫‏‬
alto nível Outputs:d, tot_ld, tot_clr (bit)‫‏‬ tot_ld ld
tpt
tot_ld tot_clr clr
c c 8
Add tot_clr 8 8
▫  Sinais de d Init Wait
tot_ld=1 tot_lt_s 8-bit
controle do d=0 c ’*tot_lt_s
tot_lt_s 8-bit
< adder

bloco tot_clr=1
Disp
Datapath 8

operacional
d=1
Controller
11
Exemplo: Máquina de refrigerante
•  Projeto da arquitetura
padrão da FSM
▫  Implementa o circuito
combinacional
interligado ao
registrador
Inputs:: c, tot_lt_s (bit)‫‏‬
Outputs: d, tot_ld, tot_clr (bit)‫‏‬
tot_ld
c c
Add tot_clr
d Init Wait
tot_ld=1
tot_lt_s
d=0 c’*tot_lt_s
tot_clr=1
Disp

d=1
Controller
Máquina de Estado de Alto Nível
•  Uma FSM não tem:
▫  Dados multi-bit: a and s Inputs : c (bit),a (8 bits)‫‏‬,s (8 bits)‫‏‬
Outputs : d (bit)‫‏‬
▫  Registrador local tot Local registers: tot (8 bits)‫‏‬
▫  Operações sobre dados tot=0,
tot<s, tot=tot+a. c

Init Wait
•  Máquina de Alto Nível: tot= tot+a
▫  Tipos de dados não restritos a d=0
c’(tot<s )’
c’ (tot<s ‫)‏‬
bits tot=0
▫  Registradores locais Disp

▫  Expressões aritméticas d=1


Exemplo: Medidor de Distância
•  Medidor de distância baseado em Laser:
▫  Exemplo de como se criar uma máquina de alto nível

T (in seconds)‫‏‬
laser
D
Object of
interest
sensor
2D = T sec * 3*108 m/sec
Exemplo: Medidor de Distância
T (in seconds)‫‏‬
B L
laser from button to laser
Laser-based
distance
sensor D 16 measurer S
to display from sensor

•  Entradas e Saídas do Processador:


▫  B: Entrada binária, Originada por um botão para
iniciar a medição
▫  L: Saída binária, para ativar o laser
▫  S: Entrada binária, sensor de reflexão do laser
▫  D: Saída em 16-bit, mostra a distância calculada
Exemplo: Medidor de Distância
•  Seqüência de eventos que devem ocorrer no processador:
▫  O sistema é energizado. Inicialmente o laser está desligado e o
mostrador apresenta uma distância 0;
▫  O sistema espera que o usuário pressione o botão para iniciar a
medição;
▫  Após o botão ser pressionado, o sistema deve ligar o laser (por um
ciclo de relógio);
▫  Depois do pulso de laser, o sistema deve esperar que o sensor
detecte a reflexão.
  O sistema deve medir o tempo até a reflexão ser detectada
▫  O sistema deve computar a distância e apresentar ao operador
▫  O sistema deve voltar a esperar que o usuário pressione o botão
para nova medição
Exemplo: Medidor de Distância

B L
from button to laser
Laser-based
Inputs: B, S (1 bit each)‫ ‏‬Outputs: L (bit), D (16 bits)‫‏‬ distance
D 16 measurer S
Local Registers: Dctr (16 bits)‫‏‬ to display fom
r sensor

B’ S’

S0 S1 S2 S3 S4
B S
L=0 Dctr = 0 L=1 L=0 D = Dctr / 2
D=0 Dctr = Dctr + 1 (calculate D)‫‏‬
Exemplo: Medidor de Distância
•  Bloco Operacional:
Inputs: B, S (1 bit each)‫ ‏‬Outputs: L (bit), D (16 bits)‫‏‬
Local Registers: Dctr (16 bits)‫‏‬

B‘ S‘

S0 S1 S2 S3 S4
B S
L=0 Dctr = 0 L=1 L=0 D = Dctr / 2
D=0 Dctr = Dctr + 1 (calculate D)‫‏‬
a
Datap ath

Dreg_clr >>1
16
Dreg_ld

Dctr_clr clear clear I


Dct r: 16-bit Dreg: 16-bit
Dctr_cnt count load
up -coun ter register
Q Q
16

16
D
Exemplo: Medidor de Distância
•  Conecte o bloco operacional a um bloco de controle
L
B to laser
from button
Controller from sensor
Dreg_clr S

Dreg_ld

Dctr_clr Datapath

Dctr_cnt
D
to display
16 300 MHz Clock

Datapath

Dreg_clr >>1
Dreg_ld 16

Dctr_clr clear clear I


count Dct r: 16-bit Dreg: 16-bit
Dctr_cnt up -counter load register
Q Q
16
16
D
Exemplo: Medidor de Distância
•  Obtenha a FSM do bloco de controle
▫  Convenção: Sinais de saída não mostrados nos
estados tem valor implícito 0

Inputs: B, S
Outputs: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt

B’ S’
a

B S
S0 S1 S2 S3 S4

L=0 L=0 L=1 L=0 L=0


Dreg_clr = 1 Dreg_clr = 0 Dreg_clr = 0 Dreg_clr = 0 Dreg_clr = 0
Dreg_ld = 0 Dreg_ld = 0 Dreg_ld = 0 Dreg_ld = 0 Dreg_ld = 1
Dctr_clr = 0 Dctr_clr = 1 Dctr_clr = 0 Dctr_clr = 0 Dctr_clr = 0
Dctr_cnt = 0 Dctr_cnt = 0 Dctr_cnt = 0 Dctr_cnt = 1 Dctr_cnt = 0
(laser off)‫‏‬ (clear count)‫‏‬ (laser on)‫‏‬ (laser off)‫‏‬ (load D reg with Dctr/2)‫‏‬
(clear D reg)‫‏‬ (count up)‫‏‬20 (stop counting)‫‏‬
Armadilhas de Projeto RTL
•  Armadilha comum: Assumir que um registrador é
atualizado no estado em que é escrito
•  Qual será o valor final de Q?
•  Qual será o estado final: C ou D?
•  As respostas podem supreender!
•  Valor de Q é desconhecido
•  Estado final é C
•  Por quê?
•  O Estado A configura o bloco
operacional, e a atualização só
acontece na próxima borda!
•  As cargas são realizadas
simultaneamente!
•  R não é atualizado até a próxima
borda.
•  A atualização de R ocorre
simultaneamente com a transição.
Armadilhas de Projeto RTL
•  A chave da questão está em sempre lembrar-se
de que as ações de um estado configuram o
bloco operacional e o bloco de controle,
preparando-os para que os valores desejados
sejam carregados na próxima borda de relógio

•  Enquanto não acontece essa próxima borda de


relógio, os valores não estão carregados de
fato!
Armadilhas de Projeto RTL
•  Solução:
▫  Ler o registrador
no estado seguinte
(Q=R)

▫  Inserir um estado
extra de forma a
garantir a
atualização dos
dados
Armadilhas de Projeto RTL
•  Armadilha comum: Ler saída externa na máquina
de estados de alto nível
▫  Não se pode ler
saídas Inputs: A, B (8 bits) Inputs: A, B (8 bits)
▫  Introduzir um Outputs: P (8 bits) Outputs: P (8 bits)
Local register: R (8 bits)
registrador local
▫  Pode ser lido e
S T S T
escrito
P=A P=P+B R=A P=R+B
P=A

(a) (b)
Boa Prática de Projeto RTL
•  Incluir um registrador a B B
R R
toda saída de dado
▫  Em (a), a saída P
apresenta valores + +
espúrios
▫  Em (a) o caminho critico P
ainda não está claro (a) Preg

P
(b)
Projeto RTL com Predomínio de
Dados
•  Projeto com predominância de controle
▫  Bloco de controle com maior complexidade

•  Projeto com predominância de dados


▫  Bloco operacional com maior complexidade

•  Medidor de distância a laser


▫  Predominância de controle

•  Exemplo de projeto RTL com predominância de


dados: Filtro FIR
Projeto de Filtro FIR
•  Filtro FIR
▫  Calcula uma média ponderada
sobre amostras de entrada
X Y
▫  y(t) = c0*x(t) + c1*x(t-1) + c2* 12 digital filter 12
x(t-2)
  Conhecido como de “3 taps” clk
  Podem ter dezenas de taps
  Filtro versátil – Usuário configura
(c0, c1, c2) para definir um
objetivo

▫  Projeto RTL
  Passo 1: Criar máquina de alto nível
  Não existe nenhuma nesse projeto.
  Vá direto ao passo!
Projeto de Filtro FIR
•  Passo 2: Criar bloco
operacional
–  Inicialmente cria-se uma X Y
cadeia de registradores que 12 digital filter 12
armazenarão os valores de X clk

y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2)‫‏‬

Suponha uma sequência: 180, 181, 240

240
181
180 180
181 180
a
Projeto de Filtro FIR
•  Passo 2: (cont.)‫‏‬ X Y
12 digital filter 12
–  Instancia registradores clk
para c0, c1, c2
–  Instancia multiplicadores y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2)‫‏‬
para calcular os valores
c*x

3-tap FIR filter


x(t) x(t-1) x(t-2)
c0 c1 c2
xt0 xt1 xt2
X
a
clk
*
*
*

Y
Projeto de Filtro FIR

•  Passo 2: (cont.)‫‏‬ X Y
12 digital filter 12
–  Instancia somadores clk

y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2)‫‏‬


3-tap FIR filter
x(t) x(t-1) x(t-2)
c0 c1 c2
xt0 xt1 xt2
X

clk
a
*
*
*

+ +
Y
Projeto de Filtro FIR
•  Passo 2: (cont.)‫‏‬ X Y
–  Instacia circuito para permitir 12 digital filter 12

carregar c em um registrador clk

específico y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2)‫‏‬


CL 3-tap FIR filter
e
3
Ca1 2x4 2
Ca0 1
0
C

x(t)‫‏‬ x(t-1)‫‏‬ x(t-2)‫‏‬


c0 c1 c2
xt0 xt1 xt2 a
X

clk

* * *

+ + yreg
Y
31
Projeto de Filtro FIR
•  Passos 3 & 4: Conectar ao controlador, Criar FSM
–  Nenhum bloco controlador é necessário
–  Exemplo de projeto extremamente voltado a bloco operacional

•  Comparando o circuito FIR a uma implementação por software


–  Circuito
•  Assuma que somadores têm atraso de 2-portas, multiplicadores têm atraso
de 20-portas
•  O maior caminho atravessa um multiplicador e dois somadores
–  Atraso correspondente: 20 + 2 + 2 = 24-portas
•  Um filtro de 100-taps, teria um atraso de aproximadamente 34-portas: 1
multiplicador e 7 somadores ao longo do maior percurso.
–  Software
•  Um filtro de 100-taps: 100 multiplicações, 100 adições. Digamos 2 instruções
por multiplicação, 2 por adição. Suponha um atraso de aproximadamente 10-
portas por instrução.
•  Atraso aproximado: (100*2 + 100*2)*10 = 4000 portas
–  Circuito é mais de 100 vezes mais rápido (10,000%).
Determinando a Freqüência do
Relógio
•  Projetistas geralmente
buscam por maior
clk
velocidade a b

▫  Maior freqüência de
relógio 2 ns +

▫  Freqüência limitada delay
pelo maior atraso entre
registradores c
  Conhecido como
caminho crítico
Caminho Crítico
•  O Exemplo mostra quatro
caminhos
–  a até c passa por +: 2 ns
a b
–  a até d passa por + e *: 7 ns
–  b até d passa por + e *: 7 ns
–  b até d passa por *: 5 ns 2 ns + * 5 ns
delay delay
•  O maior percurso tem 7 ns 7 ns 7 ns

2 ns

5 ns
7 ns
7 ns
•  A maior frequência será de c d
Max
1 / 7 ns = 142 MHz ‫)‏‬2,7,7,5(
= 7 ns
Caminho Crítico
•  Os fios também geram atraso
–  Deve ser incluído no caminho crítico
•  O Exemplo mostra 2 caminhos
–  Cada um com 0.5 + 2 + 0.5 = 3 ns clk a b

0.5 ns
•  Também deve ser considerado tempos 0.5 ns
de setup e hold
+ 2 ns

•  Também deve-se considerar um tempo 0.5 ns


adicional, para garantir o bom

3 ns

3 ns
funcionamento em condições c
imprevistas
–  Se o caminho tem 3 ns, então assume-se
um tempo de 4 ns
–  Entre 10% e 40% a mais!
Caminho Crítico
•  Podem existir s a

caminhos: Combinational logic 8 8


d
–  No datapath
–  No controlador tot_ld
ld
tot
–  Entre o controlador c t ot_clr
clr
e o datapath ( c ‫)‏‬ 8
tot_lt_s
–  Podem haver n1

centenas ou
8-bit 8-bit
milhares de n0
< adder
caminhos tot_lt_s 8

•  Existem ferramentas Datapath


s1 s0
automáticas que (b ‫)‏‬ (a‫)‏‬
clk State register
calculam todos os
caminhos
Resumo da Aula
•  Metodologia de projeto de processadores
baseada em projeto RTL
▫  Projeto de uma máquina de refrigerante
▫  Projeto de um medidor de distância a Laser
•  Armadilhas de projeto RTL e boas práticas
•  Projeto orientado a controle ou dados
▫  Projeto de um filtro FIR
•  Caminhos críticos e determinação do relógio
Bibliografia

•  Vahid, F., Sistemas Digitais: Projeto, Otimização e


HDLs, Bookman, 2008