FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 128
Síntese do datapath
• S.D. - controlo e processamento de informação
– unidade de processamento (datapath)
• processamento e comunicação de dados
– registos, ALUs, outros operadores dedicados (FUs), barramentos
– controlo
• activa os elementos do datapath, define as operações a realizar
– FSMs, controladores microprogramados
• Control dominated
– sistemas onde predominam as estruturas de controlo
• controlador de microondas, semáforos, microprocessador, ...
• Data flow dominated
– sistemas onde predomina o datapath, controlo reduzido
• aplicações de DSP, unidades de cálculo dedicadas
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 129
Sistemas Digitais síncronos
• Sistema síncrono
– duas entidades separadas: controlo e datapath
– todos os registos têm o mesmo sinal de relógio
– o datapath efectua operações de registo a registo
• transferências entre registos ocorrem na transição de relógio
– em cada ciclo de relógio o controlador define:
• que registos são carregados
• agulhamento de barramentos e multiplexers
• operações a realizar pelas unidades funcionais
+ * /
sqrt
and or
R
mux
mux
mux
R
R
mux
mux
clk
controlo
UFs
registos
?
?
?
?
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 130
Sistemas digitais síncronos
• Lógica combinacional entre registos
T
delay1T
delay2T
delay3clock
freq. clock < 1 / max(T
delay1,T
delay2,T
delay3)
– frequência de relógio
– controlo do datapath também condiciona o desempenho
controlo
datapath
clock
saída
assíncrona
saída
síncrona
entrada
entrada
Circuitos síncronos com relógio
• Alguns problemas…
– todos os registos têm o mesmo relógio
• O sinal de relógio deve estar em fase em todos os flip-flops
• é necessário buffers dedicados para distribuir o sinal de relógio
– clock skew: variação da fase do relógio em diferentes registos
• atrasos introduzidos pelas interligações, só conhecidos após routing
• circuitos dedicados para distribuir relógio (p.ex. em FPGAs)
– carregamento condicional de registos (habilitação ou enable)
• não usar gated clocks (depende da tecnologia de implementação)
• flip-flops com controlo clock enable síncrono
• é necessário garantir tempos de hold e setup dos flip-flops
– tratamento de entradas assíncronas
• Metaestabilidade, sincronização com o relógio, debounce
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 132
Clock skew
• variação da fase do relógio em diferentes registos
atraso
R1
R2
clk
clk1
clk
clk1
R1
b
c
R2
b
c
a
atraso
x
R1
R2
clk
clk
R1
b
c
R2
a
b
a
x
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 133
Clock skew
• Motivado por assimetria do circuito de relógio
– características físicas das ligações (comprimento, RC)
– diferente fanout
– lógica combinatória no caminho do relógio
R1
R2
clk
clk1
R1
R2
clk
clk1
R3
R4
R1
R1
R2
clk
clk1
ce
gated clock!
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 134
Gated clock
• Carregamento condicional de um registo
– solução errada: usar um AND para permitir ou não o clock
ce.clk
clk
R1
a
b
?
ce
R1 é carregado duas vezes !
Só funciona se ce ocorrer antes de clk.
R
clk
ce.clk
ce
– clock enable síncrono
– flip-flops primitivos
com controlo clock enable
–
solução correcta
R
clk
ce
0
1
Gated clock
• Solução (mais) segura para um gated clock
clk
clk
gclk1
gclk
2
ce1
ce2
controlo
gclk = ce.clk
clk
ce
clk
• portas NAND com atrasos idênticos
• atrasos iguais de clk até cada NAND...
• … e de cada NAND até aos buffers
• garante clock skew mínimo
• sinais ce gerados na unidade de controlo
• unidade de controlo síncrona com clk
• em FPGA requer routing cuidado
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 136
• Outra solução: registar os sinais enable
(en1 e en2)
Gated clock
clk
en1
en2
controlo
D Q D Qgclk1
gclk2
ens1
ens2
gclk
clk
en
ens
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 137
Pipelining
• datapath síncrono (não-pipelined vs. pipelined)
– não-pipelined: uma operação por ciclo de relógio: f
clk
oper/s
– pipelined: “partir” o circuito combinacional e inserir registos
clk
di0
di1
di2
di3
di4
do0
do1
do2
do3
do4
X
reg in
reg out
T
delaydi
T
delayclk
lógica combinatóriareg
in
reg
out do
di
Tp
delay maxclk
lógica combinatóriareg
in
reg
out do
reg1
reg0
clk
di0
di1
di2
di3
di4
d0
d1
d2
d3
d4
X
reg in
reg0
Tp
delay maxreg1
reg out
d0
d1
d2
d3
X
do0
do1
do2
X
X
X
X
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 138
Pipelining
• No circuito pipelined
– Tp
delay maxmenor do que T
delay• Tp
delay maxé o maior atraso de uma partição do circuito combinatório
• define uma frequência de clk maior do que para o circuito combinatório
– 3
x
Tp
delay maxmaior do que T
delay• para além da lógica combinatória há atrasos introduzidos pelos registos
• um resultado demora 3 períodos de clk a aparecer na saída
– é consumido um dado e produzido um resultado em cada clk
• aumento de desempenho para sequências de operações iguais
• mas não compensa para realizar uma única operação.
Entradas assíncronas
• E se uma entrada comuta e o clk também?
– Flip-flops podem “cair” em estados meta-estáveis
• ao fim de um certo tempo, é muito provável que transitem para 0 ou 1
– esse tempo é um dado do fabricante e da ordem de grandeza do tempo de
propagação (clk-to-setup) do flip-flop
• Como sincronizar entradas assíncronas?
– Solução: usar um shift-register de dois andares (como funciona?)
Circuito síncrono
Assynch_in
D
Q
D
Q
clock
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 140
Múltiplos domínios de clock
• Problemas
– como gerar e distribuir os diferentes sinais de clock?
– como sincronizar as transferências de dados entre os diferentes domínios?
• Soluções básicas
– 3 sinais de clock independentes (derivados de uma mesma fonte)
– um só clock (frequência mais elevada) e sinais de clock enable para cada bloco
Circuito síncrono
clock1
Circuito síncrono
Circuito síncrono
clock2
clock3
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 141
Circuitos síncronos em FPGAs
• Como são resolvidos esses problmas?
– as interligações programáveis introduzem atrasos importantes
• transportar o sinal de relógio com os fios “normais” é fatal!!!
• difícil (não impossível) equilibrar os atrasos de diferentes nets
– rede de interligações dedicadas para distribuir sinais de relógio
• fios, buffers, multiplicadores/divisores de relógio
– Flip-flops com sinal de clock enable e set/reset assíncrono
– família Spartan3 (consultar documentos ds099-2 e xapp462)
• 4 DCM ( Digital Clock Manager)
• 8 entradas e buffers dedicados para sinais de relógio
• multiplexers dedicados para sinais de relógio
• no ambiente de projecto da XILINX (ISE)
– Os sinais de relógio são identificados no processo de síntese
– O projectista deve definir em que PAD esse sinal deve ficar
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 142
XC3S - rede de distribuição de relógio
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 144
XC3S - redes básicas de relógio
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 145
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 146
DLL – Delay-Locked Loop
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 148
DFS – Digital Frequency Synthesizer
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 149
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 150
DCM - eliminando clock skew
FPGA
- Field Programmable Gate Array
• 1985/86: Xilinx introduz nova família de PLDs
– FPGA - Field Programmable Gate Array
• agregados regulares de blocos lógicos configuráveis (CLB para XILINX)
– ligações programáveis entre os blocos lógicos
• blocos configuráveis de complexidade reduzida (dezenas de portas lógicas)
– unidade básica: look-up table (LUT) de 4 entradas
– elementos de memória: flip-flops, latches, blocos de RAM (inclui dual-port)
– uma LUT de 4 entradas faz qualquer função lógica combinacional de 4 entradas
• configuração rápida por escrita em SRAM
– configuração volátil, necessita EPROM auxiliar
– configuração in-circuit e rápida (reconfiguração completa em milissegundos)
– possibilidade de reconfiguração parcial
– Sistemas reconfiguráveis baseados em FPGAs
• construídos uma vez, re-utilizáveis um número arbitrário de vezes
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 152
FPGA
- fluxo de projecto
bloco lógico
configurável
interruptores
programáveis
interligações
bloco de
entrada/saída
A0 B0 A1 B1 S0 S1 S2A0
B0
A1
B1
S1
S2
S0
...
assign S0=A0 ^B0,
C1=A0&B0,
S1=A1^B1^C1,
S2=A1&B1|A1&C1|B1&C1;
...
síntese física
- place&route
- timing analysis
- bitstream generation
síntese lógica
- RTL > gate level
mapeamento tecnológico
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 153
FPGAs
- características
• Programação eléctrica
– anti-fuse (programador, definitiva)
– EPROM, EEPROM (programador ou in-circuit, não volátil)
– SRAM (in-circuit, volátil)
• Arquitecturas de FPGAs correntes
bloco lógico configurável
Xilinx
Actel
Algotronix
Altera
PLA
PLA
PLA
PLA
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 154
FPGAs
- arquitecturas de blocos
configuráveis
• Look-up tables
• multiplexers
• portas lógicas e muxs
• pares de transistores
• blocos PLA
mux
RAM
A B C D A B A B mu x mu x mu xFPGAs
- aplicações
• circuitos para aplicações específicas (ASICs)
– substituir um circuito integrado fabricado por medida
• emulação e prototipagem de hardware
– acelerar processos de validação (3 a 5 ordens de magnitude)
– emulação de sistemas mistos digital-analógico
• processadores dedicados
(CCM - Custom Computing Machines)
– especificamente desenhados para acelerar partes de aplicações
• paralelismo das operações
• natureza das operações (por exemplo manipulação de bits)
– associados a processadores convencionais
– uma plataforma reconfigurável (física) para diferentes processadores
• Sistemas reconfiguráveis dinamicamente
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 156
FPGAs XILINX
(
www.xilinx.com
)
• Introduzidas em 1985
– configuração por SRAM
– blocos lógicos configuráveis baseados em LUTs
– abundância de flip-flops
– arquitectura do tipo array, canais de interligação abundantes
– RAM distribuída
– circuitos dedicados para operações aritméticas
– interconexões hierárquicas
– capacidade de readback (configuração e nós internos)
• Famílias actuais
– Spartan, Spartan II, Spartan3, VirteII-Pro, Virtex4, Virtex5
– Variadas versões: processadores embutidos, orientados para
DSP, reduzido consumo de energia
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 157