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
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)
(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
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
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
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
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
Inputs: B, S
Outputs: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt
B’ S’
a
B S
S0 S1 S2 S3 S4
▫ 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 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
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
• Passo 2: (cont.) X Y
12 digital filter 12
– Instancia somadores clk
clk
a
*
*
*
+ +
Y
Projeto de Filtro FIR
• Passo 2: (cont.) X Y
– Instacia circuito para permitir 12 digital filter 12
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
▫ 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
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
centenas ou
8-bit 8-bit
milhares de n0
< adder
caminhos tot_lt_s 8