• Nenhum resultado encontrado

Projecto de Sistemas Digitais (EEC4279)

N/A
N/A
Protected

Academic year: 2021

Share "Projecto de Sistemas Digitais (EEC4279)"

Copied!
63
0
0

Texto

(1)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 1

Projecto de Sistemas Digitais

(EEC4279)

Licenciatura em Engenharia Electrotécnica e de Computadores

Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia Electrotécnica e de Computadores

4º ano, 2º semestre

José Carlos Alves

http://www.fe.up.pt/~jca/feup/psd

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Projecto de Sistemas Digitais

• Sistemas Digitais. Importantes ?

– Claro!

• vastas áreas de aplicação • custo continua a descer…

• Um SD incorporado num equipamento deve ser…

(numa perspectiva industrial)

– bom: satisfazer a funcionalidade com fidelidade e fiabilidade – barato: custo mais baixo possível, sem comprometer a qualidade

• Projectar um SD

– “if it wasn’t hard they wouldn’t call it hardware”, J.F. Wakerly

– ferramentas computacionais ajudam “the little gray cells”

(2)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 3

Fluxo de projecto (típico)

Ideia particionamento desenho do circuito mapeamento tecnológico validação validação implementação teste lixo D Q DQ um controlador de intensidade luminoas para ligar e desligar luzes de casa sempre que anguem entra ou sai da casota do cao que se chama bobi e tem tambem um gato que se chama tareco1 - receptor 2 - um cpu para calcular a luz 3 - interface de potência

in te rface processador

memória

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Concepção

• Ideia

– vale a pena fazer algo que já existe ? talvez... – clarificar e estruturar a ideia, definir especificações

• um produto é mais do que um sistema digital

• geralmente um projecto é iniciado com especificações incompletas

• Exequibilidade

– boas ideias podem não ser praticáveis

• custo ou risco elevado

• tecnologia não acessível, não dominada ou não adequada • tempo de desenvolvimento demasiado longo

• Implementação

(3)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 5

Aspectos tecnológicos

• Particionamento arquitectural

– geralmente um sistema não “cabe” num único componente – divisão da funcionalidade

– selecção dos componentes e da tecnologia de montagem

memória interface co-proc. CPU I/O proc.

?

funcionalidade rapidez disponibilidade número de pinos encapsulamento fabricante(s)

?

PCB COB MCM wire-wrap ASIC RAM µP LSI

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Selecção da tecnologia

• Critérios a ter em conta

– acessibilidade à tecnologia (projecto e fabrico) – custo (protótipagem, produção)

– fiabilidade – testabilidade – rapidez – evolução – tamanho – consumo – dissipação térmica – compatibilidade electromagnética – resistência mecânica

(4)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 7

Ferramentas computacionais

• CAD/CAE

(computer aided design/computer aided engineering) – fundamentais para projectar em tempo útil circuitos complexos – não competem em qualidade com um projectista experiente (geralmente)

• Ferramentas

CAD/CAE

– trabalham com representações electrónicas de SDs (modelos) – alguns tipos de ferramentas...

• captura esquemática (mais do que desenhar o circuito lógico...) • síntese (lógica, RTL, alto nível)

• mapeamento tecnológico

• desenho físico (layout), verificação de regras geométricas • simulação lógica (verificação funcional)

• análise temporal • análise eléctrica

• modelação e simulação de faltas • geração de vectores de teste • análise térmica

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Modelos de circuitos digitais

• Representações electrónica de SDs

– usadas e transformadas por ferramentas CAD/CAE

• Um modelo é uma aproximação!

– que pode ser boa e pode ser má…

– rigor ⇒ detalhe ⇒ aproximação da tecnologia

– a simulação de um modelo nunca é igual ao seu funcionamento real

• Modelos

(mais frequentemente)

tratados por humanos

– modelos estruturais (esquemáticos)

• detalham a estrutura do circuito, interligando “componentes” entre si • nível do sistema, RTL, lógico ou dispositivo

– modelos comportamentais (HDLs, state charts, tabelas, BDDs)

• descrevem o comportamento do sistema • não contêm informação estrutural

(5)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 9

Y- chart

comportamental estrutural físico placas, MCMs módulos, chips células layout de transistores transistores portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos expressões booleanas funções de transistores dispo sitivo lóg ico RTL sis tem a níve is de a bstracçã o

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Especificação de um SD

• Tradicionalmente…

– captura esquemática (estrutural)

• interligação de portas lógicas, flip-flops, componentes RTL,… • bibliotecas de componentes específicas de uma tecnologia • anotação do desenho com atributos

– nomes, parâmetros de componentes, restrições para implementação • captura a estrutura (física) do circuito

• transformado de forma optimizada para uma tecnologia alvo

– tabelas de verdade, expressões booleanas (comportamental)

• conveniente para blocos de lógica combinacional ou FSMs – minimização lógica

– codificação de estados

• representação textual, tradução automática para um circuito lógico • independente do meio de implementação

(6)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 11

Especificação de um SD

• Actualmente...

– projecto a níveis de abstracção mais elevados

• representações comportamentais ao nível RTL e algorítmico • linguagens normalizadas para descrição de hardware

– suportadas por ferramentas de síntese automática – combinam modelação estrutural com comportamental

– permitem ao projectista abstrair-se da tecnologia alvo (não totalmente!) – portabilidade e facilidade de manutenção

• redução do ciclo de projecto

– permite explorar diversas alternativas com diferentes compromissos

– comparando com a programação de computadores...

}

código máquina assembly C, Pascal layout portas lógicas HDLs nível de abstracção crescente ainda se justifica ?

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Projecto estruturado

• Hierarquia e modularidade

– conceitos semelhantes aos empregues em programação estruturada – objectivos:

• estruturação do projecto

• permitir a reutilização de módulos • facilitar a verificação do projecto

• simplificar a produção da documentação (geralmente esquecida!)

– “quanta” hierarquia ?

• nem 1 nem 1000 ! como se faz em programação ? porquê ? • critérios principais:

– funcionalidade e granuralidade (complexidade dos módulos) • uma diferença importante da hierarquia em software:

– não significa reduzir a complexidade do hardware

(7)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 13

Metodologias de projecto

• Abordagens típicas

– bottom-up (capture-and-simulation)

• hierarquia criada de baixo para cima (lógico ⇒ RTL ⇒ sistema) • ciclo de projecto:

– desenhar os circuitos mais simples (ou usá-los se existirem) – validar com simulação esses circuitos

– usá-los na construção de outros circuitos mais complexos

– top-down (describe-and-synthesize)

• hierarquia criada de cima para baixo (sistema ⇒ RTL ⇒ lógico) • ciclo de projecto

– especificar o sistema de forma comportamental

– sintetizar e avaliar as soluções resultantes de diferentes restrições

– na prática, top-down e bottom-up… tocam-se!

manual

automático

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Validação do projecto

• Simulação funcional

– verificação funcional da especificação ao nível mais abstracto

• geralmente são usados modelos unit-delay ou zero-delay • verificar que é satisfeita a funcionalidade desejada • se não funciona? detecção e depuração de erros (debug) • problemas:

– como definir os vectores de simulação ? – como se sabe que o resultado é correcto ? – quão exaustivo é o teste ?

– fontes de erro mais comuns

• é bom lembrar que “os computadores não erram, os humanos sim…” – mas são humanos que criam as ferramentas de software!

• especificações incompletas, ligações erradas ou nomes trocados • uso incorrecto de ferramentas de síntese automática

(8)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 15

Validação do projecto

• Análise temporal

– circuitos lógicos introduzem atrasos

• a simulação dá resultados correctos considerando os atrasos ? • qual o desempenho ?

• o que limita o desempenho ?

– modelos de atrasos

• específicos de uma tecnologia

• dependem do circuito em que um componente se insere (fan-out) • quanto mais completo é o modelo, mais complexa é a simulação

– tpLH, tpHL, tr, tf (mínimos, típicos e máximos)

• interligações também introduzem atrasos – função do comprimento e da forma

– só são conhecidos após a implementação ao nível físico

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Teste

• Teste do sistema fabricado

– testar para quê?

• minimizar (→ 0%) o número de sistemas defeituosos vendidos • detectar e diagnosticar defeitos de fabrico

• melhorar o sistema ou o processo produtivo

– como testar ?

• construir um modelo de faltas do circuito

• criar vectores de simulação que as consigam detectar – saídas diferentes na presença ou ausência da falta

– ferramentas para ATPG - Automatic Test Pattern Generation

– teste é uma fatia importante do custo de produção

• projecto orientado para a testabilidade (DFT - Design for Testability) • auto-teste (BIST - Built-in Self Test)

(9)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 17

Linguagens de descrição de hardware

• Modelação de um circuito (digital)

– descrições comportamentais permitem nível elevado de abstracção – metodologia de projecto top-down: ferramentas de síntese automática – representação textual: portabilidade, edição e documentação

– a favor do esquemático: “uma figura diz mais do que mil palavras”

• um esquema captura melhor a ideia estrutural

• ferramentas gráficas front-end produzem descrições em HDLs – editores de esquemático: netlist em HDL (estrutural, gate-level ou RTL) – editores de diagramas de estados: descrições comportamentais sintetizáveis

– duas perspectivas na construção de um modelo

• descrever o seu funcionamento apenas para simulação

• construir uma descrição sintetizável ($monitor(…) não é sintetizável!) – um modelo sintetizável deve descrever “bem” o seu funcionamento – subsets das linguagens e regras de modelação dependem das ferramentas

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

HDLs

- exemplos

– VHDL - VHSIC Hardware Description Language (IEEE 1076 ‘93)

• desenvolvida para simulação, usada para síntese, fortemente tipada

– Verilog (IEEE 1364 ‘95)

• mais simples do que VHDL, poucos tipos de dados, próxima de C

– ABEL - Advanced Boolean Equation Language (TM Data I/O) • programação de PLDs, equações lógicas, descrição de FSMs

– HardwareC (univ. Berkeley)

• derivada da linguagem C, orientada para a representação de hardware

– ISPS - Instruction Set Processor Specification

• descrição do conjunto de instruções de processadores

– Silage (IMEC)

• aplicações de DSP, pouco controlo, data-flow

– EDIF - Electronic Data Interchange Format (IEEE

• standard para representação de circuitos electrónicos ao nível estrutural

– XNF - Xilinx Netlist Format (TM XILINX)

(10)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 19

Verilog e VHDL

- história

• VHDL

– ‘80: por necessidade de normalização, documentação e portabilidade, e DOD funda projecto para criar linguagem de “programação” para descrever hardware – ‘83: início do desenvolvimento do VHDL (IBM, Texas, Intermetrics)

‘87: o DOD impõe que todos os SDs fossem descritos em VHDL; standard IEEE 1076; os sistemas electrónicos do F-22 foram um dos primeiros projectos em VHDL – ‘93: VHDL é revisto e adoptado como o standard IEEE 1076 ’93

‘96: adopção generalizada por ferramentas EDA; package para ferramentas de síntese (IEEE 1076.3); modelação de bibliotecas para ASIC e FPGA (IEEE 1076.4)

• Verilog

– ‘81: Gateway Design Automation, Philip Moorby cria GenRad HDL e o simulador HILO – ‘83: Gateway lançou a linguagem Verilog HDL e um simulador de Verilog

– ‘85: linguagem e simulador são enriquecidos (Verilog-XL)

– ‘87: Synopsys adopta Verilog como formato de entrada para ferramentas de síntese – ‘89/’90: Cadence compra Gateway e separa o simulador da linguagem; a linguagem é

libertada para o domínio público; é criado o OVI (Open Verilog International) – ‘93: neste ano, de todos os circuitos submetidos a fundições de silício, 85% foram

desenvolvidos e submetidos em Verilog.

‘95: Verilog é revisto e adoptado como o standard IEEE 1364

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Verilog e VHDL

- comparação

• capacidade de modelação

– semelhante para modelos estruturais

– VHDL oferece melhor suporte para modelos abstractos e modelos de atrasos – Verilog tem melhores construções para modelar ao nível lógico e primitivas de

bibliotecas de ASICs e FPGAs

• tipos de dados

– VHDL suporta tipos de dados abstractos criados pelo utilizador

– em Verilog os tipos são muito simples e mais próximos do hw (wire e reg)

• aprendizagem

– VHDL é fortemente tipada, menos intuitiva, mais verbosa

– Verilog é mais simples e fácil de ler; código é mais curto do que em VHDL

• parameterização

– VHDL tem construções para parametrizar número de bits, replicar estruturas e configurar modelos

– Verilog suporta apenas modelos com parâmetros, instanciação com redefinição de parâmetros

(11)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 21

VHDL-Verilog

(comportamental)

library IEEE; use IEEE.STD_Logic_1164.all; entity MUX_2_1 is port(S1,A1,B1,S2,A2,B2,S3,A3,B3:in std_logic; Y1,Y2,Y3:out std_logic);

end entity MUX_2_1;

architecture COND_DATA_FLOW of MUX_2_1 is begin Y1 <= A1 when S1=‘1’ else B1; TWO_2_1_MUXES: process(S2,A2,B2,S3,A3,B3) begin Y2<=B2; if (S2=‘1’) then Y2<=A2; endif; if (S3=‘1’) then Y3<=A3; else Y3<=B3; endif;

end process TWO_2_1_MUXES end architecture COND_DATA_FLOW;

module MUX_2_1(S1,A1,B1,Y1, S2,A2,B2,Y2, S3,A3,B3,Y3); input S1,A1,B1,S2,A2,B2,S3,A3,B3; output Y1,Y2,Y3; reg Y2,Y3; assign Y1=S1?A1:B1; always @(S2 or A2 or B2 or S3 or A3 or B3) begin Y2=B2; if (S2) Y2=A2; if (S3) Y3=A3; else Y3=B3; end endmodule VHDL Verilog

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

VHDL-Verilog

(estrutural)

library IEEE; use IEEE.STD_Logic_1164.all; entity HALF_ADDER is port(a,b:in std_logic; sum,carry:out std_logic); end entity HALF_ADDER;

architecture STRUCT of HALF_ADDER is component xor2

port(a,b:in std_logic; c:out std_logic); end component;

component and2

port(a,b:in std_logic; c:out std_logic); end component;

begin

X1: xor2 port map(a=>a,b=>b,c=>sum); A1: and2 port map(a=>a,b=>b,c=>carry); end STRUCT; module HALF_ADDER(a,b,sum,carry); input a,b; output sum,carry; xor X1(sum,a,b); and A1(carry,a,b); endmodule VHDL Verilog

(12)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 23

Modelação em HDL

• Modelo sintetizável vs. modelo não sintetizável

– ferramentas de síntese automática inferem a estrutura de um circuito

• o modelo (comportamental ou estrutural) vai ser hardware • regras, restrições e recomendações das ferramentas de síntese

– como é interpretado e traduzida a descrição em HDL – simulação e implementação devem concordar

– construções específicas da tecnologia de implementação

– modelos não sintetizáveis

• não são traduzidos para hardware

• definem estímulos para simulação, e permitem a monitorização de sinais • modelam o comportamento de outros circuitos para simulação do sistema

– circuito de relógio – memórias ou CPUs

– circuitos de interface (por exemplo conversores A/D ou D/A)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Modelação em HDLs

recomendações gerais

• Antes de iniciar a construção do modelo

– definir a arquitectura e estruturação do projecto (particionamento) – ferramentas de síntese não processam bem circuitos infinitamente

grandes!

• Escrever o código de modo a reflectir a arquitectura

– estruturado em módulos e funções, ter em mente a reusabilidade – favorecer a legibilidade: nomes, comentários, parêntesis, parâmetros

• Garantir a precisão da simulação

– deve traduzir fielmente o comportamento do hardware gerado – modelar correctamente o comportamento das partes não sintetizáveis

(13)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 25

Construção de modelos sintetizáveis

(em Verilog, para Synopsys FPGA Express) – Atrasos são sempre ignorados

• o seu uso pode tornar incoerente a simulação e o comportamento do circuito

– Sinais do tipo reg

• nem sempre são traduzidos em registos

• podem ser traduzidos em wire, D-flip-flops ou latches transparentes

– Atribuição contínua (assign sum=a^b^cin;)

• traduzida para um bloco de lógica combinacional

– Operadores aritméticos e lógicos

• apenas para inteiros sem sinal, dimensão dos resultados depende dos operandos • são gerados circuitos combinacionais que os implementam

• podem ou não ser partilhados para diferentes operações do mesmo tipo • os operadores / e % só podem ser usados com operandos constantes

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Construção de modelos sintetizáveis

(em Verilog, para Synopsys FPGA Express)

– always - duas formas

• always @(posedge ...): os sinais tipo reg são traduzidos para Dffs

always @(posedge clock or negedge reset) begin if (!reset) acc = 8’b00000000; else acc = data_in; end

• always @(a or b or ...): sinais do tipo reg são latches ou wires reset assíncrono;

tem de ser avaliado no primeiro if(...)

always @(a or b or sel) begin if (sel) out = a; else out = b; end

out é uma latch out é uma função combinacional de sel, a e b lista de sensibilidades pode ser omitida só para síntese

always @(a or sel) begin

if (sel) out = a; end

(14)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 27

Construção de modelos sintetizáveis

(em Verilog, para Synopsys FPGA Express) – inferência de latches em construções always - regra geral

• latches são geradas para sinais do tipo reg que não sejam completamente especificados para todos os casos de instruções condicionais (por exemplo if (sel) out = a; e quando sel==0 ? ) • no caso contrário é apenas gerado um circuito combinacional sem

elementos de memória

– latches podem ser indesejáveis

• aumento do espaço ocupado • degradação do desempenho

– ferramentas de síntese ignoram a lista de sensibilidades

• o simulador não! Só avalia o bloco quando algum sinal muda • se não for usada há (geralmente) incoerência entre a simulação e o

circuito sintetizado.

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Construção de modelos sintetizáveis

(em Verilog, para Synopsys FPGA Express) – inferência de buffers de 3-estados

• atribuindo z a um sinal (do tipo reg) module three_state(in, out, en); input in, en;

output out; reg out; always @( in or en) if (en) out = in; else out = 1’bz; endmodule assign out = en ? in : 1’bz;

(15)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 29

Construção de modelos sintetizáveis

(em Verilog, para Synopsys FPGA Express) – ciclos

• for(...): só são suportadas 4 formas:

– crescente ou decrescente de passo constante (...;index=index±step) – condição de terminação com <, >, <= ou >=

• while (...): cria um ciclo combinacional; deve ser quebrado com @(posedge clock)

always @( a or b or carry ) for(i=0;i<=31;i=i+1) begin

s[i] = a[i]^b[i]^carry;

carry = a[i]&b[i] | a[i]&carry | b[i]&carry; end

always @( posedge clock ) while (x<y)

begin

@(posedge clock); x=x+z;

end

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese de Sistemas Digitais

comportamental estrutural físico placas, MCMs módulos, chips células layout de transistores transistores portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos expressões booleanas funções de transistores dis posit ivo lóg ico RTL sis tem a níve is de a bstrac ção arquitectural lógica alto nível circuito

(16)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 31

Problemas de síntese

• Síntese estrutural

– transformação do domínio comportamental para o domínio estrutural – acrescenta detalhe estrutural

– dependente da tecnologia mas não define a realização física – sujeita a restrições: estimativas de área, desempenho ou potência

• Síntese física

– transformação do domínio estrutural para o domínio físico – nos 4 níveis de abstracção (Y-chart)

• dispositivo: produção dos desenhos das máscaras de células (layout) • célula: tradução de portas lógicas em agregados de células e interligações • RTL: organização física de módulos (floorplanning)

• sistema: particionamento em componentes, PCBs, MCMs

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese de Alto Nível

ou síntese RTL

• origem

– descrição comportamental ao nível RTL: um algoritmo

• variáveis (registos)

• operações entre variáveis (aritméticas, lógicas ou deslocamento) • decisões (if-then-else, ciclos)

– restrições

• tempo de execução: número de ciclos de relógio e frequência do relógio • espaço ocupado: número e tipo de elementos, número de células ou área

• destino - arquitectura básica

– um datapath ao nível RTL (síncrono)

• rede de registos, multiplexers, unidades funcionais e barramentos

– uma unidade de controlo

(17)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 33

Síntese de Alto Nível

while (x<a) begin xl=x+dx; ul=u-(5*x*u*dx)-(3*y*dx); yl=y+(u*dx); x=xl; u=ul; y=yl; end unidade de controlo * + -R

mux mux mux

R R mux mux datapath descrição comportamental (algorítmica, RTL) estrutura RTL unidades funcionais registos muxs e barramentos

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese de alto nível

medidas de qualidade

• Objectivos importantes

– simplificar o hardware e minimizar o tempo de execução – minimizar tempo ⇒ explorar paralelismo ⇒ complicar hardware

• Medidas de qualidade da solução RTL

– avaliadas antes da implementação física, baseadas em estimações

• número e complexidade das unidades funcionais e registos • número de ciclos de relógio, período de relógio

• complexidade da unidade de controlo

• espaço ocupado pelas interligações, barramentos e multiplexers • potência consumida

• Compromisso área-tempo

– espaço de soluções típico

área

(18)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 35

Síntese de alto nível

y1=a+b; y2=x1+x2; y3=z+t; y3 + mux mux R R R y1 y2 a x1 z b x2 t

uma unidade funcional 3 ciclos + R R R y1 y2 y3 a b x1 x2 z t + + + 3 unidades funcionais 1 ciclo

espaço ocupado pelo datapath? complexidade da unidade de controlo? duração do ciclo de relógio ? potência consumida ? testabilidade ?

Exemplo: 3 adições independentes - duas soluções alternativas:

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese de Alto Nível

problemas

• transformações de alto nível

– semelhantes às realizadas pelos compiladores

• propagação de constantes, simplificações algébricas, optimização de ciclos

• sequenciamento (scheduling)

– atribuição das operações a ciclos de execução (ciclos de relógio)

• minimizar o número de ciclos necessário para completar a operação • explorar o paralelismo natural do algoritmo

• alocação e “colagem” (allocation e binding)

– selecção de registos e de um conjunto de unidades funcionais

• minimizar a complexidade do hardware

• escolher entre diversos compromissos de unidades funcionais • depende do sequenciamento e influencia-o

– “colagem” das operações a unidades funcionais que as realizem

(19)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 37

Transformações de alto nível

• Compilação da descrição comportamental

– representação interna baseada em grafos

• DFG (Data Flow Graph)

– representa as operações e as dependências entre dados e resultados

• CFG (Control Flow Graph)

– representa a sequência de controlo de blocos de operações y=a+b; z=y*c; k=a+y; + * + k c b a y z if (a==b) z=y+c; else k=a+y; a==b z=y+c k=a+y

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Sequenciamento

ASAP e ALAP

ASAP - As Soon As Possible atribuir cada operação ao primeiro ciclo * + -< + * * * * -1 2 3 4 * ciclo

ALAP - As Late As Possible atribuir cada operação ao último ciclo * + -< + * * * * -1 2 3 4 * ciclo 4 multiplicadores 1 subtractor 1 somador 6 unidades funcionais 2 multiplicadores 2 subtractores 1 somador 5 unidades funcionais * + -< + * * * * -1 2 3 4 * ciclo 2 multiplicadores 1 subtractor 1 somador 4 unidades funcionais ASAP com restrições, fixando o número e tipo das unidades funcionais

(20)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 39

Sequenciamento

heurísticas

• Lista de prioridades (list scheduling)

– operações ordenadas por função de prioridade

• caminho mais longo, número de sucessores, mobilidade das operações

– em cada iteração são sequenciadas as operações prontas

• uma operação pronta tem todos os antecessores sequenciados • pela ordem ditada pela lista de prioridades

• FDS - Force Directed Scheduling

– distribui as operações de forma a balancear a utilização das Fus

• baseada na probabilidade de cada operação ser atribuída a cada ciclo

– requer o conhecimento de ASAP e ALAP: mobilidade – determina um sequenciamento num número fixo de ciclos

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Alocação e “colagem”

• Conhecido um sequenciamento

– escolher um conjunto de unidades funcionais que realizem as operações

• nos ciclos determinados pelo sequenciamento • em cada ciclo uma FU só pode realizar uma operação

• Formulação básica

– determinação do número mínimo de sub-grafos completos

• grafo de compatibilidades: 1 2 3 4 5 6 FU1 FU3 FU2 operações 1 e 3 são compatíveis

(21)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 41

Sequenciamento e alocação

optimização conjunta

• Programação Linear Inteira (PLI)

– formulação básica baseada em variáveis inteiras binárias: – restrições no número de ciclos ou de unidades funcionais – computacionalmente pesado

• Métodos heurísticos

– arrefecimento simulado (simulated annealing)

• flexibilidade para tratar restrições complexas associadas às FUs • necessário número elevado de iterações, soluções sub-óptimas • computacionalmente pesado

– algoritmos genéticos

xij = 1 se a operação i é atribuída ao ciclo j 0 caso contrário

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Unidades funcionais

• modelo básico

– uma FU só faz um tipo de operação num ciclo

• modelos mais realistas

– diferentes tipos de operações

– durações dependentes do tipo de operação

– disponibilidade de diferentes implementações para a mesma operação – diferentes operadores pipelined

(22)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 43

Verificação do projecto

• Tradicionalmente

– verificação era (e por vezes ainda é) feita com um protótipo do sistema

• é dispendioso, demora tempo a ser construído

• protótipos de CIs construídos com componentes discretos não são fiéis • é uma implementação do sistema, funciona próximo da velocidade real • permite verificar o sistema com estímulos complexos de sistemas físicos

• Verificação por simulação

– protótipo substituído por um modelo do sistema, permitindo:

• verificar condições de erro (sinais não ligados, conflitos de barramentos) • verificar o sistema com diferentes modelos de atrasos dos componentes • observar o estado de qualquer nó ou componente do sistema

• forçar qualquer sinal a estados desejados • iniciar a simulação em qualquer estado

• controlar de forma precisa a temporização de eventos assíncronos • construir o conjunto de estímulos para testar o sistema fabricado Baseado em ”Digital Systems Testing and Testable Design”, capítulo 3,

M. Abramovici, M.A. Breuer, A.D. Friedman, Computer Science Press, 1990

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Simulação

estímulos modelo simulador resultados especificação

?

(23)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 45

Simulação

• Verificação do projecto

– comparar o funcionamento de um modelo do sistema com os resultados esperados pela especificação

– verificar se a operação do sistema é:

• correcta e independente do estado inicial dos elementos de memória • insensível a variações dos atrasos dos componentes

• livre de contenções, oscilações, entradas ilegais ou estado suspensos

– ...e também:

• estudar e avaliar compromissos de custo e desempenho • avaliar alterações ao projecto

• produzir documentação (por exemplo diagramas temporais)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Simulação

- problemas

• Como se constroem estímulos ?

– não há procedimentos formais para gerar estímulos

– processo heurístico, baseado na intuição e conhecimento do sistema – não é praticável a verificação exaustiva

• um circuito com 75 entradas ⇒ 275 testes (1.2x109anos@1µs/teste)

• Como se sabe se os resultados são correctos ?

– só verifica a funcionalidade exercitada pelos estímulos

• Estímulos para verificação e para teste

– verificação: detectar e diagnosticar erros de projecto

• não é possível enumerar todos os erros de projecto

– teste: detectar e diagnosticar defeitos de fabrico

(24)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 47

Simulação

- compiled-code

• simulação compilada (compiled-code)

– executa um modelo compilado do circuito

• o circuito é traduzido em instruções executáveis por um processador • simulador oferece suporte para fornecer estímulos de simulação • orientada para verificação funcional, não suporta análise temporal • o comportamento de componentes é modelado por instruções

máquina ou subrotinas

– exemplo (modelo estrutural):

MOV AL,A AND AL,B MOV Y,AL MOV AL,B AND AL,Y NOT AL MOV Z,AL MOV F,AL

para cada transição de clk (código 8086):

D Q A B F Y clk Z

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Simulação

- event-driven

• simulação de eventos (event-driven)

– usa um modelo estrutural do circuito para gerar e propagar eventos

• eventos nas entradas são produzidos pelos estímulos

• eventos nos restantes nós são gerados pela avaliação dos componentes • modelo do circuito é mantido em estruturas de dados

– um evento é uma mudança do estado de um sinal num tempo dado

• os componentes que usam esse sinal são activados e avaliados • as mudanças resultantes das avaliações geram novos eventos • outros eventos: controlo do simulador, monitorização de sinais

– em Verilog: $finish; $display(...), $monitor(...)

– permite processar estímulos e sinais assíncronos

• análise do comportamento com os atrasos dos componentes

(25)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 49

Simulação

event-driven

- fluxograma

avançar tempo de simulação

fim não há eventos extrair eventos

para este tempo até ao primeiro evento pendente actualiza sinais activos propaga mudanças dos sinais avalia componentes activados introduz os novos eventos na lista actualiza o valor dos

sinais modificados pelos eventos deste tempo propaga o valor dos sinais activos até aos componentes que os usam e activa esses componentes

a avaliação dos componentes activados produz novos eventos em tempo futuro (atrasos dos componentes) ou no mesmo tempo todos os eventos produzidos pelos

estímulos já foram introduzidos na lista início

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Simulação

- o valor lógico desconhecido

• Quando um circuito lógico é ligado,

– memórias e flip-flops ficam com valores lógicos não definidos – é necessário prever um mecanismo de iniciação (reset)

• geralmente associado ao power-up • iniciar os conteúdo de registos e RAMs

• iniciar máquinas de estados num estado determinado

• Valor lógico desconhecido: u

– representa o estado de sinais lógicos não iniciados resultantes de

• não iniciação de registos e memórias

• indefinição do estado de entradas primárias do circuito a simular

– é processado juntamente com os valores lógicos 0 e 1

(26)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 51

Simulação

- o valor lógico desconhecido

• Generalização dos operadores lógicos

– valor u é representado pelo conjunto {0,1}

• u pode ser qualquer elemento do conjunto que o representa

– 1 e 0 são representados pelos conjuntos {1} e {0}, respectivamente – uma operação lógica B entre p e q, com p,q∈{0,1,u} é definida como

• uma operação entre os conjuntos que representam p e q

• o resultado é a reunião dos resultados de todas as operações B entre todos os elementos dos dois conjuntos

• para um operador unário U, o resultado U(q) é a reunião de todos os resultados de U aplicada a cada elemento do conjunto que representa q

and(0,u)=and({0},{0,1})={and(0,0),and(0,1)}={0,0}={0}=0 or(0,u)=or({0},{0,1})={or(0,0),or(0,1)}={0,1}=u

not(u)=not({0,1})={not(0),not(1)}={1,0}=u

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Simulação

- o valor lógico desconhecido

• Tabelas de verdade para AND, OR e NOT

AND 0 1 u 0 0 0 0 1 0 1 u u 0 u u OR 0 1 u 0 0 1 u 1 1 1 1 u u 1 u NOT 0 1 u 1 0 u

• Perda de informação propagando o valor lógico u

0 1 u u u u u

desconhecidos, mas sempre com valores contrários

é sempre 1!

não, não é factorial...

não serve usar u e u

u Q Q Q Q u u u 1 desconhecido

(27)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 53

Simulação

- o valor lógico Z

• Modelação de buffers com saída tristate

I O

E

se E=1, O=I se E=0, O=Z

• Um sinal com o nível lógico Z

– pode ser forçado com 1 ou 0 (pull-up ou pull-down) – é sempre interpretado como u por uma entrada

Tabela de verdade: I E 0 1 u 0 Z 0 {0,Z} 1 Z 1 {1,Z} u Z u {u,Z} a b o a b 0 1 Z u 0 0 u 0 u 1 u 1 1 u Z 0 1 Z u u u u u u Tabela de verdade de um barramento com 2 entradas

em que casos pode ocorrer contenção no barramento ?

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Simulação

- modelos de atrasos

• atraso de transporte

– um atraso na propagação do nível lógico

• atrasos de subida e de descida

– diferentes atrasos para as transições 0-1 e 1-0

• atrasos ambíguos

– mínimos e máximos para os atrasos 0-1 e 1-0

• atraso inercial

– duração mínima de uma entrada para ser reflectida na saída

• setup time e hold time para flip-flops

– setup time: tempo mínimo para D estar estável antes de clock – hold time: tempo mínimo para D permanecer estável após clock

(28)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 55

Prototipagem

• Prototipagem de Sistemas Digitais

– construção física dispendiosa e demorada (componentes off-the-shelf) – fase de protótipo: prováveis iterações ao projecto

• custos elevados e tempos longos de re-desenho

– recurso a dispositivos programáveis do tipo PLA

• 1985/86: Xilinx introduz nova família de PLDs

– FPGA - Field Programmable Gate Array

• agregados regulares de blocos lógicos configuráveis • blocos configuráveis de complexidade reduzida

• configuração rápida (escrita em SRAM, volátil, in-circuit)

– 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, Projecto de Sistemas Digitais, 1999/2000

FPGA

- Field Programmable Gate Array

bloco lógico

configurável interruptoresprogramáveis interligações bloco deentrada/saída

A0 B0 A1 B1 S0 S1 S2 A0 B0 A1 B1 S1 S2 S0

(29)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 57

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

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

FPGAs

- arquitecturas de blocos configuráveis

• Look-up tables

• multiplexers

• portas lógicas e muxs

• pares de transistores

• blocos PLA

m ux RAM A B C D A B A B m u x m u x m u x

(30)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 59

FPGAs

- aplicações

• circuitos para aplicações específicas (ASICs)

– substituir um circuito integrado fabricado por medida

• emulação e prototipagem de hardware

– acelerar simulação (3 a 5 ordens de magnitude) – emulação de sistemas mistos digital-analógico

• processadores dedicados

(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

• lista de sistemas baseados em FPGAs

– consultar http://www.io.com/~guccione/HW-list.html

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

FPGAs - Xilinx XC4000

• Família XC4000 da XILINX

(http://www.xilinx.com) – considerado um standard industrial (versão HardWireTM)

– configuração por SRAM

– blocos lógicos configuráveis baseados em LUTs de 4 e 3 entradas – abundância de flip-flops

– arquitectura do tipo array, canais de interligação abundantes – capacidade de implementar blocos de RAM

– circuitos dedicados para geração e propagação de carry – interconexões hierárquicas

– capacidade de readback (configuração e nós internos) – capacidades actuais até 500 K portas lógicas equivalentes – XC4085XLA-08: 85 K gates = 64.000$00 (Outubro 1998)

(31)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 61

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, Projecto de Sistemas Digitais, 1999/2000

Sistemas Digitais síncronos

• Sistema síncrono

– simplicidade em separar o controlo do 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 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 FUs registos

(32)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 63

Datapath síncrono

• Lógica combinatória 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 datapath clock saída assíncrona saída síncrona entrada síncrona entrada assíncrona

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Datapath síncrono

• todos os registos têm o mesmo relógio

– elevado fanout: necessário buffers para distribuir o relógio

• problemas

– 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 (abilitaçã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 (p.ex. interrupções)

• análise de metaestabilidade • sincronização com o relógio

(33)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 65

Datapath síncrono

- 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, Projecto de Sistemas Digitais, 1999/2000

Datapath síncrono

- 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

(34)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 67

Datapath síncrono

- clock skew

• Em FPGAs

– as interligações programáveis introduzem atrasos importantes

• difícil (mas não impossível) equilibrar os atrasos de diferentes nets

– rede de interligações dedicadas para distribuir sinais de relógio

• também servem para outros sinais com elevado fanout

– exemplo: na família XC4000E (consultar o databook…)

• 4 buffers primários (BUFGP) e 4 buffers secundários (BUFGS) • um par de buffers em cada canto do die (TL, TR, BL e BR)

• cada buffer pode alimentar as entradas clk de todos os FFs com skew mínimo • não utilizar um desses buffers para distribuir o relógio é FATAL!

• no ambiente de síntese da XILINX (Foundation+Express)

– são identificados os sinais de relógio: sinais que alimentam entradas clk de FFs – é alocado um buffer global (BUFGP ou BUFGS) para cada um

– não podem existir mais de 8 sinais de relógio diferentes

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Datapath síncrono

- gated clock

• Carregamento condicional de um registo

– solução errada: usar um AND para deixar ou não passar o clock

ce.clk clk

R1 a b ?

ce

R1 é carregado duas vezes !

Só funciona se ce ocorrer antes de clk. Como é possível garantir?

Se ce é produzido por uma máquina de estados síncrona com clk, ce é mudado sempre após clk. Problema adicional: o atraso introduzido pela porta AND R

clk ce.clk ce

– clock enable síncrono

– flip-flops primitivos

com controlo clock enable

solução correcta R clk ce 0 1

(35)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 69

Datapath síncrono

- gated clock

• Solução (mais) segura para um gated clock

clk clk gclk1 gclk2 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, Projecto de Sistemas Digitais, 1999/2000

• Outra solução segura: registar os sinais enable

Datapath síncrono

- gated clock

clk en1 en2 controlo D Q D Q gclk1 gclk2 ens1 ens2 gclk clk en ens

(36)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 71

Síntese do datapath

- 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 lógico e inserir registos

clk

di0 di1 di2 di3 di4 do0 do1 do2 do3 do4 X reg in reg out Tdelay di Tdelay clk lógica combinatória re g in re g ou t do di Tpdelay max clk lógica combinatória re g in re g ou t do re g1 re g0 clk

di0 di1 di2 di3 di4

d0 d1 d2 d3 d4 X reg in reg0 Tpdelay max reg1 reg out d0 d1 d2 d3 X

do0 do1 do2 X

X

X X

Latência: 3 ciclos clk

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- 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.

(37)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 73

Síntese do datapath

- unidades funcionais

• Unidades funcionais do datapath

– operadores aritméticos

• operandos inteiros, vírgula fixa ou vírgula flutuante

• operadores com constantes, mais eficientes do que operadores genéricos

– operadores lógicos, manipulação de bits

• funções lógicas, rotações, deslocamentos, bitreverse

– operadores específicos de uma aplicação

• A*B-(C+D), x[k]*x[k+t1]*x[k+t2]

• Numa abordagem top-down (HDL+síntese)

– operadores inferidos e construídos no processo de síntese – nem todos os operadores disponíveis

• FPGA Express suporta apenas divisões entre constantes (!)

– arquitecturas dos operadores com poucas alternativas

• FPGA Express só constrói multiplicadores unsigned

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Somadores e subtractores

– ripple carry

• propagação do carry limita a rapidez de cálculo

• resultado garantido após o maior tempo de propagação do carry

– carry select

• somador dividido em secções, cada secção contém 2 somadores de k bits • exemplo: somador de 12 bits em secções de 4 bits:

Kay Hwang, “Computer Arithmetic - Principles, Architecture and Design”, John Wiley & Sons, 1990

A3-0 A3-0 B3-0 B3-0 1 0 4 bit add 4 bit add C-1 C3,1 C3,0 A7-4 A7-4 B7-4 B7-4 1 0 4 bit add 4 bit add C7,1 C7,0 C3,0 C3,1 CS A11-8 A11-8 B11-8 B11-8 1 0 4 bit add 4 bit add C11,1 C11,0 CS C3,0 C3,1 C7,0 C7,1 S3-0 S7-4 S11-8 C11 C7 C4

(38)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 75

Síntese do datapath

- operadores aritméticos

• Somadores e subtractores

(cont.) – carry generate, propagate, lookahead

• generate • propagate

• equações do somador escrevem-se

• os carry de todos os andares podem ser obtidos em paralelo Gi = Ai . Bi significa que o carry é gerado no andar i

Pi = Ai⊕ Bi significa que o andar i propaga o carry que lhe chega

Si = Ai⊕ Bi ⊕ Ci-1 = Pi⊕⊕ Ci-1 Ci = Ai.Bi + Ai.Ci-1 + Bi .Ci-1

= Ai.Bi + (Ai⊕ Bi ) . Ci-1 = Gi + + Pi .Ci-1

Ck = Gk+ Gk-1.Pk + Gk-1 .Pk-1 .Pk + ... + C-1 .P0 .P1.Pk

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Somadores e subtractores

(cont.) – somadores assíncronos

• tempo de propagação depende dos operandos

• circuitos para detectar que a propagação do carry está concluída • somador de 32 bits: média de 5 bits de carry (6 para somador de 64 bits) • tempo pior é igual ou pior do que um somador ripple carry

– subtractores

• em complemento para dois basta complementar o subtractor – trocar todos os bits (com XOR) e adicionar 1 fazendo C-1=1

– melhor implementação depende da tecnologia

• em FPGAs XC4000 e usando fast carry logic, um ripple carry do que carry

select ou lookahead carry

(39)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 77

Síntese do datapath

- operadores aritméticos

• Multiplicação binária

– multiplicação de números com sinal

• facilmente tratados com representação em sinal e magnitude • o produto é

– negativo se os operandos tiverem sinais diferentes – positivo caso contrário

• custo: complementar os operandos e o resultado

1101 (13) 0101 (5) 1101 0000 1101 0000 01000001 (65 ≠≠ -15) x (-3) (5) sem sinal complemento para dois

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Multiplicador iterativo (shift-add)

– multiplicando=Md[m-1:0], multiplicador=Mr[n-1:0] – Acc[m+n:0] = 0

– para cada bit k do multiplicador desde 0 até n-1

• se Mrk = = 1

Acc[m+n:n] = Acc[m+n-1:n] + Md[m-1:0] • Acc = Acc >> 1

– produto = Acc[m+n-1:0]

– exemplo: Md Mr k Mrk Acc oper. 1101 0101 - - 000000000 1101 0101 0 1 011010000 add 001101000 shift 1101 0101 1 0 001101000 add 000110100 shift 1101 0101 2 1 100000100 add 010000010 shift 1101 0101 3 0 010000010 add 001000001 shift

(40)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 79

Síntese do datapath

- operadores aritméticos

• Multiplicador shift-add

– implementação

• em cada ciclo, os m+1 bits do produto parcial são carregados em Acc • o resultado parcial é deslocado para o registo que contém inicialmente Mr

m bit adder Mr Mr0 P[m+n-1:0] Acc Md shr ld shr ld m n n m ld m+1

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Multiplicação binária em complemento para dois

– se só for negativo o multiplicando

• basta estender o sinal dos produtos parciais

1101 0101 1111101 000000 11101 0000 11110001 x (-3) (5) (-15) extensão de sinal

(41)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 81

Síntese do datapath

- operadores aritméticos

• Multiplicação binária em complemento para dois

– se o multiplicador for negativo

• basta subtrair o último produto parcial (é igual a zero se for positivo)

– recordando a representação de números em complemento para dois

• para um número positivo com m bits • se for negativo

• para os dois casos

valor(x) = 0 + Xm-2.2m-2 + …+ X121 + X0.20

valor(x) = -2m + 2m-1 + X

m-2.2m-2 + …+ X121 + X0.20

valor(x) = - Xm-1.2m-1 + Xm-2.2m-2 + …+ X121 + X0.20

bit de sinal Xm-1 tem peso -2m-1

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Multiplicação binária em complemento para dois

– se o multiplicador for negativo

– … e se ambos negativos

– implementação: fácil incluir no multiplicador shift-add!

1101 1101 1111101 000000 11101 11110001 11101 00001001 x (-3) (-3) (+9) + -somar os 3 produtos parciais subtraír o último produto parcial extensão de sinal 0101 1101 0101 0000 0101 0011001 0101 11110001 x (5) (-3) (-15) + -somar os 3 produtos parciais subtraír o último produto parcial se o multiplicador

for positivo, o último produto parcial é zero!

(42)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 83

Síntese do datapath

- operadores aritméticos

• Multiplicador shift-add

– avaliação de k bits do multiplicador de cada vez (não sobrepostos)

• número de ciclos reduzido k vezes (shift de k bits de cada vez) • exemplo para k=2

• aumento da complexidade do somador – é necessário somar 3.Md

– somadores em cascata, tempo de atraso superior Mr1 Mr0 somar a Acc 0 0 0 0 1 Md 1 0 2.Md 1 1 2.Md+Md m bit adder Mr Mr0 Md shr ld n ld m+1 bit adder Mr1 2.Md Acc m m m m+1 m+2

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Multiplicação - recodificação de Booth

– pela propriedade:

• pode substituir-se • por

• objectivo: eliminar sequências de uns

– permite evitar em cada ciclo a soma de 3 operandos (2.Md+Md)

1 0 0 1 1 1 0 0 1 2i+k - 2i = 2i+k-1 + 2i+k-2 + 2i+1 + 2i

1 0 1 0 0 1 0 0 1 2i+k - 2i 00101110110110 00101110111010 00101111001010 00110001001010 01010001001010 factores: 0 2 3 2 3 1 2 factores: 1 -1 0 -1 0 -2 -2

(43)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 85

Síntese do datapath

- operadores aritméticos

• Multiplicação - recodificação de Booth

– algoritmo

• percorrer todos os bits desde o lsb até encontrar um 1 • trocar esse 1 por 1 e percorrer uns até encontrar um zero • trocar esse 0 por 1 e continuar

– exemplo

– tabela de recodificação, analisando 2 bits de cada vez

• é necessário acrescentar um bit zero à direita do lsb: b-1=0

0011 1101 1001 = 512 + 256 + 128 + 64 + 16 + 8 + 1 = 985

0100 0110 1011 = 1024 - 64 + 32 - 8 + 2 - 1 = 985

bi bi-1 zi valor caso 0 0 0 0 cadeia de zeros 0 1 1 +1 fim dos uns 1 0 1 -1 inicio dos uns 1 1 0 0 cadeia de uns

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Multiplicação - recodificação de Booth

– multiplicação com sinal: basta recodificar o multiplicador – para cada bit do multiplicador

• se é 0 não soma nada • se é 1 soma o multiplicando

• se é 1 soma o simétrico do multiplicando

– exemplo -7 -5 -(-7)x20 +(0)x21 +(-7)x22 -(-7)x23 7-28+56=35 x + 1001 1101 00000111 0000000 111001 00111 00100011 x + (-7) x (-5) = +35 -7 = 1001 -5 = 1011 recodificar -5 (ver tabela) 1011 0 1011 0 1011 0 1011 0 1101

(44)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 87

Síntese do datapath

- operadores aritméticos

• Multiplicador de Booth iterativo

– multiplicador Mr acrescentado de um bit à direita: Mr-1= 0 – comparados dois bits de Mr de cada vez

• se bi = bi-1 desloca produto parcial (11 ou 00 → 0) • se bi < bi-1 soma Md e desloca produto parcial (01 → 1) • se bi > bi-1 subtrai Md e desloca produto parcial (10 → 1) • deslocamento aritmético do produto

• exemplo: – Mr = -3 (1101) – Md = +7 (0111) 1101 0 1 -7 1001 0000 1100 1000 1101 0 1 +7 0011 1000 0001 1100 1101 0 1 -7 1010 1100 1101 0110 1101 0 0 +0 1101 0110 1110 1011 Mr-1 Mr opr. produto

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• Multiplicador de Booth

– recodificando pares de bits em dígitos com sinal

• são analisados 3 bits de cada vez

• cada par de bits produz uma multiplicação por 0, +1, +2, -1 ou -2 • reduz para metade o número de iterações

• tabela de recodificação

bi bi-1 bi-2 zi zi-1 valor caso 0 0 0 0 0 cadeia de zeros 0 0 1 1 +1 fim de uns 0 1 0 1 +1 1 isolado 0 1 1 1 +2 fim de uns 1 0 0 1 -2 início de uns 1 0 1 1 -1 zero isolado 1 1 0 1 -1 início de uns 1 1 1 0 0 cadeia de uns

(45)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 89

Síntese do datapath

- operadores aritméticos

• Multiplicação paralela (unsigned)

a4.b0 a3.b0 a2.b0 a1.b0 a0.b0 a4.b1 a3.b1 a2.b1 a1.b1 a0.b1 a4.b2 a3.b2 a2.b2 a1.b2 a0.b2 a4.b3 a3.b3 a2.b3 a1.b3 a0.b3 a4.b4 a3.b4 a2.b4 a1.b4 a0.b4

a4 a3 a2 a1 a0 b4 b3 b2 b1 b0

x

p9 p8 p7 p6 p5 p4 p3 p2 p1 p0

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• array multiplicador (unsigned)

– cada nó é um full adder

FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 0 0 0 0 0 a0.b0 a0.b1 a1.b0 a2.b0 a3.b0 a4.b0 a1.b1 a2.b1 a3.b1 a4.b1 a1.b2 a2.b2 a3.b2 a4.b2 a1.b3 a2.b3 a3.b3 a4.b3 a0.b2 a0.b3 a0.b4 a1.b4 a2.b4 a3.b4 a4.b4 FA A B Cin S Cout

(46)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 91

Síntese do datapath

- operadores aritméticos

• multiplicação paralela (signed)

(a4.b0) a3.b0 a2.b0 a1.b0 a0.b0 (a4.b1) a3.b1 a2.b1 a1.b1 a0.b1 (a4.b2) a3.b2 a2.b2 a1.b2 a0.b2 (a4.b3) a3.b3 a2.b3 a1.b3 a0.b3 a4.b4 (a3.b4) (a2.b4) (a1.b4) (a0.b4)

(a4) a3 a2 a1 a0 (b4) b3 b2 b1 b0 x (p9) p8 p7 p6 p5 p4 p3 p2 p1 p0 bit de sinal (peso -24) termos de soma negativos

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• array multiplicador de Pezaris (n

x

n, signed)

– 4 tipos de full adders diferentes

• FA0, FA1, FA2, FA3

FA3 FA2 FA2 p0 p1 p2 p3 p4 p5 p6 p7 p8 (p9) 0 0 0 0 0 a0.b0 a0.b1 a1.b0 a2.b0 a3.b0 a4.b0 a1.b1 a2.b1 a3.b1 a4.b1 a1.b2 a2.b2 a3.b2 a4.b2 a1.b3 a2.b3 a3.b3 a4.b3 a0.b2 a0.b3 a0.b4 a1.b4 a2.b4 a3.b4 a4.b4 FA2 FA2

FA1 FA1 FA1

FA2 FA0 FA0 FA0

FA2 FA0 FA0 FA0

(47)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 93

Síntese do datapath

- operadores aritméticos

• multiplicador bi-secção (signed)

– separando os termos positivos dos negativos

a3.b0 a2.b0 a1.b0 a0.b0 a3.b1 a2.b1 a1.b1 a0.b1 a3.b2 a2.b2 a1.b2 a0.b2 a4.b4 0 a3.b3 a2.b3 a1.b3 a0.b3 (a4.b3) (a4.b2) (a4.b1) (a4.b0) (a3.b4) (a2.b4) (a1.b4) (a0.b4)

(a4) a3 a2 a1 a0 (b4) b3 b2 b1 b0 x (p9) p8 p7 p6 p5 p4 p3 p2 p1 p0 secção positiva secção negativa

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• multiplicador bi-secção

– só dois tipos de full-adders – fácil de expandir para mxn

FA2 FA2 FA2 p0 p1 p2 p3 p4 p5 p6 p7 p8 (p9) 0 a4.b0 a4.b1 a4.b2 a4.b3 a3.b4 a4.b4 FA2 FA2

FA2 FA2 FA2

FA0 FA0 FA0

0 0 0 a0.b0 a0.b1 a1.b0 a2.b0 a1.b1 a2.b1 a1.b2 a2.b2 a1.b3 a2.b3 a0.b2 a0.b3

FA0 FA0 FA0

FA0 FA0 FA0

a3.b0 a3.b1 a3.b2 a3.b3

FA0 FA0 FA0

a2.b4 a1.b4 a0.b4 0 secção positiva

(48)

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

José Carlos Alves 95

Síntese do datapath

- operadores aritméticos

• divisão binária

– processo parecido com a multiplicação: shift-subtract – o resultado de uma subtração define a próxima operação

• dependência série entre as várias operações • mais complexo do que a multiplicação

– exemplo (unsigned): 147/11=13, 147%11=4 10010011 1011 1011 00001101 001110 1011 001111 1011 100 -1 < -10-1-1 10 < 1011 ... 111 < 1011 subtrai divisor resto quociente dividendo divisor

FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000

Síntese do datapath

- operadores aritméticos

• divisão binária (unsigned) - algoritmo

A=0; // fica com o resto, n bits M=Divisor; // n bits

Q=Dividendo; // fica com o quociente, m bits cnt=m; repeat {A,Q} = {A,Q} << 1; A = A - M; if (A<0) Q[0] = 1; else begin Q[0] = 0; A = A + M; end cnt = cnt - 1; until (cnt==0); A Q 001111000011 011110000110 quociente dividendo resto

Referências

Documentos relacionados

Mais especificamente, deseja-se responder como essas proporções poderiam ser ajustadas para minimizar os custos totais a partir de um maior equilíbrio entre os níveis de estoque

Será necessário ler a revisão bibliográfica para que se conheça algo sobre trabalhos similares, bem como os conceitos funda- mentais para a compreensão do trabalho propriamente

A aplicação dos encargos e comissões associados à mora não impede a repercussão das despesas que sejam suportadas pelo Banco Primus, por conta do(s) cliente(s) perante

Aiming to identify and understand the artifacts used to facilitate the communication between designers and developers in an AUCD approach we carried out a netnographic study in

O estudo objetivou apresentar as características do Bloco K do Sped fiscal visando analisar se as empresas obrigadas a entrega da Escrituração Fiscal Digital (EFD) - ICMS-IPI

Por fim, este artigo ousa afirmar, com base nestes resultados, que as empresas da área de TI, de pequeno e médio porte e que possuem projetos em parceria com o parque e a

No experimento 2, no qual foram introduzidos componentes que podem ser utilizados no manejo de solos (serapilheira e EM), a ausência de diferenças entre tratamentos sobre

Após todos os levantamentos e análises, conclui-se que a empresa necessita criar uma gestão de custos como ferramenta para auxiliá-la na formação dos seus preços de