síntese do datapathaja/psd2006_07/slides/slidespsd_200607_128... · – fsms, controladores...
TRANSCRIPT
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José 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/2007José Carlos Alves
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 Rmux mux
clkcontrolo
UFs
registos
?
?
?
?
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
130
Sistemas digitais síncronos• Lógica combinacional entre registos
Tdelay1 Tdelay2 Tdelay3
clock
freq. clock < 1 / max(Tdelay1,Tdelay2,Tdelay3)– frequência de relógio
– controlo do datapath também condiciona o desempenho
controlo datapathclock
saída assíncrona
saída síncronaentrada
entrada
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
131
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
– circuitos CMOS consomem energia (quase apenas) nas comutações
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José 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/2007José Carlos Alves
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 R4R1
R1 R2
clk clk1ce gated clock!
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José 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 b ?a
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
clkce
01
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
135
Gated clock
• Solução (mais) segura para um gated clock
clkclk
gclk1
gclk2
ce1
ce2controlo
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/2007José Carlos Alves
136
• Outra solução: registar os sinais enable (en1 e en2)
Gated clock
clk
en1
en2controlo
D Q
D Q gclk1
gclk2
ens1
ens2
gclk
clk
en
ens
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
137
Pipelining• datapath síncrono (não-pipelined vs. pipelined)
– não-pipelined: uma operação por ciclo de relógio: fclk oper/s
– pipelined: “partir” o circuito combinacional e inserir registos
clk
di0 di1 di2 di3 di4
do0 do1 do2 do3 do4X
reg inreg out
Tdelay
di
Tdelay
clk
lógica combinatória
reg
in
reg
out
do
di
Tpdelay max
clk
lógica combinatória
reg
in
reg
out
do
reg1
reg0
clk
di0 di1 di2 di3 di4
d0 d1 d2 d3 d4X
reg inreg0
Tpdelay max
reg1reg out
d0 d1 d2 d3X
do0 do1 do2X
X
X X
Latência: 3 ciclos clk
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
138
Pipelining
• No circuito pipelined– Tpdelay max menor do que Tdelay
• Tpdelay 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
– 3xTpdelay max maior do que Tdelay
• 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.
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
139
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_inD Q D Q
clock
synch_in
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José 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/2007José Carlos Alves
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/2007José Carlos Alves
142
XC3S - rede de distribuição de relógio
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
143
XC3S – localização física
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
144
XC3S - redes básicas de relógio
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
145
XC3S – Digital Clock Manager
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
146
DLL – Delay-Locked Loop
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
147
DLL - Atributos
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
148
DFS – Digital Frequency Synthesizer
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
149
DCM – gama de frequências
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
150
DCM - eliminando clock skew
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
151
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• prototipagem, circuitos para aplicações específicas, computadores dedicados
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
152
FPGA - fluxo de projecto
bloco lógico configurável
interruptoresprogramáveis
interligações
bloco de entrada/saída
A0
B0
A1
B1
S0
S1
S2A0B0
A1B1
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 levelmapeamento tecnológico
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
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
PLAPLA
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
154
FPGAs - arquitecturas de blocos configuráveis
• Look-up tables
• multiplexers
• portas lógicas e muxs
• pares de transistores
• blocos PLA
mux
RAMABCD
AB
AB
mux
mux
mux
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José Carlos Alves
155
FPGAs - 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– Hardware adaptado em run-time às necessidades de um aplicação
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007José 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/2007José Carlos Alves
157
Spartan3
Datasheet:
http://direct.xilinx.com/bvdocs/publications/ds099.pdf