evolução e estado da arte da lógica reprogramável · 7 lógicaauthor’s name | place, month...

38
Instituto de Plasmas e Fusão Nuclear Instituto Superior Técnico Lisboa, Portugal http://www.ipfn.ist.utl.pt Evolução e estado da arte da lógica reprogramável Bernardo Carvalho [email protected]

Upload: ngonhi

Post on 29-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Instituto de Plasmas e Fusão NuclearInstituto Superior TécnicoLisboa, Portugalhttp://www.ipfn.ist.utl.pt

Evolução e estado da arte da lógica reprogramável

Bernardo [email protected]

Author’s name | Place, Month xx, 2007 | Event2 Lógica programável | Lisboa, 12 Dezembro 2016

Dispositivos Lógicos Programáveis

• Circuitos lógicos como:– máquinas de estados;– shift registers;– contadores;– descodificadores, etc.

• implementados com– várias portas lógicas e flip-flops– p. ex. chips SSI (small-scale

integration) p.e. série 7400.

• Circuitos mais complexos podem requerer um número excessivo de SSI (mas nem sempre!).

http://www.bigmessowires.com/category/nibbler

Nibbler 4-bit CPU

Placa lógica com SSIs

Author’s name | Place, Month xx, 2007 | Event3 Lógica programável | Lisboa, 12 Dezembro 2016

Aplicações de FPGA’s

• Processamento Digital de Sinal

• Software-defined radio• Aero-espacial• Sistemas de Defesa• Imagem Médica• Visão por computador• Reconhecimento de voz• Criptografia• Bioinformática

• “Glue logic” em placas electrónicas multi-funcionais

• Sistemas completos num chip (SoC)

• Computação de elevada performance(p.e. FFT ou Convoluções, paralelismo massivo)

Author’s name | Place, Month xx, 2007 | Event4 Lógica programável | Lisboa, 12 Dezembro 2016

Implementação de protocolos (exemplo GPIB)

Author’s name | Place, Month xx, 2007 | Event5 Lógica programável | Lisboa, 12 Dezembro 2016

Processamento Digital de Sinais (DSP) em FPGAs

• Exemplo de maior performance:

Author’s name | Place, Month xx, 2007 | Event6 Lógica programável | Lisboa, 12 Dezembro 2016

FPGA: benefícios da tecnologia

• Performance:– paralelismo massivo– grande velocidade– grande capacidade lógica– mais rápida que

microprocessadores e DSPs

• Manutenção a longo-termo facilitada– Reprogramável em qualquer

momento– Permite implementar novas

funções

• Desenvolvimento rápido– a FPGA é um dispositivo

Commercial off-the-shelf (COTS)

– Compilação e teste rápidos; panóplia de bibliotecas

• Menor custo inicial e menor risco que ASICs

• Fiabilidade (sem OS –hardware determinístico dedicado a cada tarefa)

Author’s name | Place, Month xx, 2007 | Event7 Lógica programável | Lisboa, 12 Dezembro 2016

Comparação com outros dispositivos

Tecnologia Performance/Custo

Tempo até começar a operar

Tempo para obter alta performance

Tempo mudar as funções

ASIC Muito alta Muito longo

Muito Longo

Impossível

FPGA Média Médio Longo Médio

DSP Alta Longo Longo Longo

Processador genérico

Baixa-média

Muito Curto

Muito Curto

Muito Curto

Velo

cida

de

Flex

ibili

dade

Author’s name | Place, Month xx, 2007 | Event8 Lógica programável | Lisboa, 12 Dezembro 2016

Primórdios: Circuito Combinatório implementado com memória PROM

1 0 1 1 10 0 0

Linhas de endereço(entrada) 0 0 1 1 01 1 0

1 0 1 1 10 0 1

Linhas de dados(saídas)

a0a1a2

b0b1b2

Exemplo:b0 = F(a2,a1,a0) = (not a2) & a1 & (not a0) (a2, a1, a0 ) = (010) → b0 = 1

Tem de se descodificar TODAS as combinações de entrada(não permite simplificações).Muito ineficiente! (no entanto um método similar é utilizado nas FPGAs)

b7

Tabela paraa saída b7

Tabela paraa saída b0

Author’s name | Place, Month xx, 2007 | Event9 Lógica programável | Lisboa, 12 Dezembro 2016

Primeiro PLD de uso geral: Programmable Array Logic (PAL)

a0

a1 b0

Examplo:b0 = F(a1, a0) = a1. a0 + a1. a0

X

X

XX

Portas OR fixas

A PAL tem DOIS níveis de lógica:uma coluna ‘AND’ e uma coluna ‘OR’

São a base de dispositivos lógicos mais recentes, mais sofisticados:Simple Programmable Logic Devices (SPLD)

Coluna deAND’s

Programável

Programável uma única vez por fusíveis

Author’s name | Place, Month xx, 2007 | Event10 Lógica programável | Lisboa, 12 Dezembro 2016

Ciclo de Programação das PAL

Programação:• Base PROM (estoira os fusíveis permanentemente)• Base E-PROM (UV ‘Erasable’ PROM)• Programador de dispositivos Especializado ou Universal

Author’s name | Place, Month xx, 2007 | Event11 Lógica programável | Lisboa, 12 Dezembro 2016

Tecnologias de Programação de PLD’s

PORTA LÓGICA “AND” tipo EPROM FPGA

SRAM Anti-Fuse

Author’s name | Place, Month xx, 2007 | Event12 Lógica programável | Lisboa, 12 Dezembro 2016

PAL Típicas

EXEMPLOS• PAL16L8 = 8 saídas combinatórias• PAL16R8 = 8 saídas registadas• PAL16V8 = 8 saídas “variáveis”

PAL 16R4 - diagrama de blocos

SaídasRegistadas

Author’s name | Place, Month xx, 2007 | Event13 Lógica programável | Lisboa, 12 Dezembro 2016

SPLD - CPLD

Simple Programmable logic device•Um só nível AND•Flip-Flops e “feedback”

A B C

Flip-flop

SelectEnable

D Q

Clock

AND plane

MUX

1fPLD

BlockPLD

Block

Interconnection Matrix

I/O Block

I/O Block

PLDBlock

PLDBlock

I/O Block

I/O Block

•••

Interconnection Matrix

•••

•••

•••

Complex Programmable logic device•Várias PLDs interligadas•capacidade lógica equivalente de até ~50 SPLD típicas

Author’s name | Place, Month xx, 2007 | Event14 Lógica programável | Lisboa, 12 Dezembro 2016

FPGA

• A FPGA é um conjunto de blocos lógicos programáveis (CLB), dispostos numa matriz.

• Interligados por comutadores que permitem rearranjar as interligações.

• Blocos I/O programáveis para ligações externas.

• Linhas de relógio para levar os sinais de relógio para cada bloco lógico,

• Recursos lógicos adicionais tais como ALUs, memória, e Decoders etc.

I/O

I/O

Bloco lógico

Comutadores deinterconexão

I/O

I/O

N Input LUT

Q

QSET

CLR

DMUX

d

a

clk

rst

y

qb

c

Field Programmable Gate Array

Author’s name | Place, Month xx, 2007 | Event15 Lógica programável | Lisboa, 12 Dezembro 2016

FPGA – foto ampliada

Xilinx XC4000

Author’s name | Place, Month xx, 2007 | Event16 Lógica programável | Lisboa, 12 Dezembro 2016

FPGA: interligações

Author’s name | Place, Month xx, 2007 | Event17 Lógica programável | Lisboa, 12 Dezembro 2016

Bloco Lógico Configurável

• Funções Lógicas implementadas em Lookup Table LUTs• Multiplexers (seleccionam 1 de N entradas)• Flip-Flops. Registros (elementos de armazenamento

síncrono).

16-bit SR

flip-flop

clock

muxy

qe

abcd

16x1 RAM4-input

LUT

clock enable

set/reset

Grelha da FPGA Bloco Lógico

Author’s name | Place, Month xx, 2007 | Event18 Lógica programável | Lisboa, 12 Dezembro 2016

Lookup Tables LUTs

• Uma LUT contém Células de Memória que implementam pequenas funções lógicas.

• Cada célula está a ‘0’ ou ‘1’.• A LUT é programada com as saídas de uma tabela Booleana• As entradas seleccionam como saída o conteúdo de uma das células• A LUT pode assim implementar qualquer função de n entradas!

16-bitSR

flip-flop

clock

muxy

qe

abcd

16x1RAM

4-inputLUT

clock enable

set/reset

LUT de 3 entradas -> 8 células de memória

SRAM

Static Random Access MemoryCélulas SRAM

SRAM

3 – 6 Inputs

Multiplexer MUX

Author’s name | Place, Month xx, 2007 | Event19 Lógica programável | Lisboa, 12 Dezembro 2016

I/O (IOB)

DQ

D Q

D Q

Controlo de 3-estados

Linhas de saída

Linhas de entrada

3-estados

Saída

Relógio

Entrada direta

Entrada Registada

Faz a ligação entre os pinos físicos e as Células Lógicas.

Saídas em alta impedância(3-estado)

O mesmo pino físico pode ser configurado como entrada ou saída.

Saídas e Entradas podem ser registadas

Author’s name | Place, Month xx, 2007 | Event20 Lógica programável | Lisboa, 12 Dezembro 2016

Funções especiais na FPGA

• SRAM interna• Multiplicadores; blocos DSP• Analizador lógico embebido• CPUs embebidos• I/O de alta velocidade

(~10GHz)• Núcleos de interface SDRAM• PLLs e atrasos programáveis

DDR3 SDRAM controller

PLL

Author’s name | Place, Month xx, 2007 | Event21 Lógica programável | Lisboa, 12 Dezembro 2016

Exemplo: Virtex-4

1 Gbps IO

SRAM Block RAM/FIFO

Clocks/PLL500 MHz

PowerPC™ 405450 MHz, 680 DMIPS

Tri-ModeEthernet MAC

10/100/1000 Mbps

Multi-GigabitTransceivers

622 Mbps–10.3 Gbps

DSPs256 18x18 GMACs

CLBs200K Logic Cells

Author’s name | Place, Month xx, 2007 | Event22 Lógica programável | Lisboa, 28 Novembro 2016

Atrasos e frequência máxima

• Atraso de porta lógica: tPD

• Atraso no FF: tCO

• Atraso de interligação: tPD

Frequência máxima: a maior velocidade a que um circuito com flip-flops pode operar.

1/Fmax = Tco + Tpdlogica + Tpd interligação

Tco = 2.5 ns

Author’s name | Place, Month xx, 2007 | Event23 Lógica programável | Lisboa, 12 Dezembro 2016

• ABEL (Advanced Boolean Expression Language, criada em1983)

module MUX4title '4:1 MUX'MyDevice device 'P16L8' ;@ALTERNATE"inputsA, B, /P1G1, /P1G2 pin 17,18,1,6 "LS153 pins 14,2,1,15P1C0, P1C1, P1C2, P1C3 pin 2,3,4,5 "LS153 pins 6,5,4,3P2C0, P2C1, P2C2, P2C3 pin 7,8,9,11 "LS153 pins 10,11,12,13"outputsP1Y, P2Y pin 19, 12 "LS153 pins 7,9equationsP1Y = P1G*(/B*/A*P1C0 + /B*A*P1C1 + B*/A*P1C2 + B*A*P1C3);P2Y = P2G*(/B*/A*P2C0 + /B*A*P2C1 + B*/A*P2C2 + B*A*P2C3);end MUX4

Linguagens de Programação: PAL

Author’s name | Place, Month xx, 2007 | Event24 Lógica programável | Lisboa, 12 Dezembro 2016

Linguagens de Descrição de Hardware: CPLD/FPGA

• Verilog• VHDL• System C • System Verilog

“Nível-Básico” (equivalente ao ‘assembly’)

“Alto-Nível” (equivalente ao ‘C’)

HDL: Hardware Description Language(VHDL: Hardware Description Language)•Descrição do hardware numa linguagem de alto nível:

• Fácil de perceber• Permite simular o projeto antes do fabrico (para

identificar erros no projeto)

Author’s name | Place, Month xx, 2007 | Event25 Lógica programável | Lisboa, 12 Dezembro 2016

Modelo de desenvolvimento de código para CPLD/FPGA

Register-Transfer Level (RTL) um modelo de máquina-de-estados síncronabaseado em registos e lógica combinatória

Especificação

HDL(VHDL , Verilog, C , Simulink)

Simulação(Modelsim)

Síntese(Converter HDL para RTL)

Place & Route

Bit-File(Configuração da FPGA )

Restrições temporais lógicas

FPGA(Debug: usar o analisador lógico interno)

Simulação temporal(se necessário)

(Modelsim)Analise temporal

Restrições temporais físicas

Author’s name | Place, Month xx, 2007 | Event26 Lógica programável | Lisboa, 12 Dezembro 2016

VHDL: Introdução

Cada descrição de hardware em VHDL consiste num par “entity/architecture”(ou uma “entity” e múltiplas “architectures”)

•A secção “entity” é usada para declarar os portos I/O do circuito.

•A “architecture” descreve o comportamento do circuito em “processes”.

•“process” é um “bloco” que encapsula um conjunto de lógica e controlos.

Library Declaration

Entity

Architectureprocess

process

process

Bibliotecas standard são incluídas antes da declaração da “entity”.

Permite descrever•o comportamento lógico do sistema•os procedimentos de teste.

Author’s name | Place, Month xx, 2007 | Event27 Lógica programável | Lisboa, 12 Dezembro 2016

Exemplos de código VHDL

-- (este é um comentario VHDL)

-- import std_logic from the IEEE librarylibrary IEEE;use IEEE.std_logic_1164.all;

-- esta e’ uma entidadeentity ANDGATE is

port ( IN1 : in std_logic;IN2 : in std_logic;OUT1: out std_logic;OUT2: out std_logic);

end ANDGATE;

architecture RTL of ANDGATE isbegin OUT1 <= IN1 and IN2;OUT2 <= IN1 or IN2;

end RTL;

architectureEntradas Saídas

atenção: as atribuições (<=) operam em paralelo.

A B Q

0 0 1

0 1 1

1 0 1

1 1 1

Author’s name | Place, Month xx, 2007 | Event28 Lógica programável | Lisboa, 12 Dezembro 2016

Exemplo de um Contador Binário

library IEEE;use IEEE.std_logic_1164.all;use IEEE.numeric_std.all; -- for the unsigned type

entity counter_example isgeneric (WIDTH : integer := 32);port (CLK, RESET, LOAD : in std_logic;DATA : in unsigned(WIDTH-1 downto 0); Q : out unsigned(WIDTH-1 downto 0));

end entity counter_example;

architecture RTL of counter_example issignal cnt : unsigned(WIDTH-1 downto 0);beginprocess (RESET, CLK, LOAD)beginif RESET = '1' then

cnt <= (others => '0');elsif rising_edge(CLK) then

if LOAD = '1' thencnt <= DATA;

elsecnt <= cnt + 1;

end if;end if;

end process;Q <= cnt;

end architecture RTL;

• Num ‘process’:

• as instruções são executadas sequencialmente, o que permite introduzir sequenciação e controlo.

• outras instruções VHDL podem ser usadas tais como if-then-else e case.

• cada ‘process’ opera:

– em paralelo com outras ‘process’ ;

– em paralelo com outras instruções concurrentes.

‘Process’

Author’s name | Place, Month xx, 2007 | Event29 Lógica programável | Lisboa, 12 Dezembro 2016

Desenvolvimento Hierárquico

Top Design (top.vhd)

Component 1 (comp1.vhd)

Component 2(comp2.vhd)

Component 3(comp3.vhd)

VHDL permite uma hierarquia de entidades contendo componentes.Em cada nível o VHDL permite arquiteturas e configurações múltiplaspara cada entidade.

Desenvolvimento Hierárquico:

entity Top isPort(….);end Toparchitecture STRUCT of Top issignal X,Y,S,C : bit;component HALFADD --(defined in HALFADD.vhdl) port(A, B : in bit; SUM, CARRY : out bit);

end component;beginU1: HALFADD port map (X,Y,S,C); --(instance)-- other statementsend STRUCT;

Author’s name | Place, Month xx, 2007 | Event30 Lógica programável | Lisboa, 12 Dezembro 2016

Outros tipos de programação: “C/C++ para gates”

• A idea é compilar C/C++ para FPGA como alternativa ao CPU.

• Geralmente só envolve subconjuntos ‘simples’ do C/C++.

• Permite a transposição quase direta de um código que corre num CPU para uma FPGA!

Examplo: Mentor Catapult C

Author’s name | Place, Month xx, 2007 | Event31 Lógica programável | Lisboa, 12 Dezembro 2016

FPGA como “co-processador“ para CPU

Exemplo: Xilinx/Intel

• Multi-core–x86 cores, FPGAs

• Performance–8.5 GB/s banda–105 ns latência para 64 bytes

• Modelo de programação

–Espaco de memória global partilhada–Sempre consistente (coerência de HW)–Xilinx SDAccel permite um desenvolvimento rápido.

Author’s name | Place, Month xx, 2007 | Event32 Lógica programável | Lisboa, 12 Dezembro 2016

SLIDES AUXILIARES

Author’s name | Place, Month xx, 2007 | Event33 Lógica programável | Lisboa, 12 Dezembro 2016

n-LUT: implementação

• n-bit LUT – é implementado como uma memória 2n x 1:– As entradas escolhem uma de 2n

posições de memória.– As posições de memória

(latches) são carregadas com valores na da programação da FPGA.

– As entradas de endereçamento do mux control são as entradas do LUT.

• n-LUT pode assim implementar qualquer função de n emtradas!

latch

latch

latch

latch

16 x 1mux

16

INPUTS

OUTPUT

Latches programmed as partof configuration bit-stream

Author’s name | Place, Month xx, 2007 | Event34 Lógica programável | Lisboa, 12 Dezembro 2016

LUT (exemplo)

x1 x2 x3 x4

y

x1 x2

y

LUT

x1x2x3x4

y

0x1

0x2 x3 x4

0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

y0100010101001100

0x1

0x2 x3 x4

0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

y1111111111110000

x1 x2 x3 x4

y

x1 x2 x3 x4

y

x1 x2

y

x1 x2

y

LUT

x1x2x3x4

y

0x1

0x2 x3 x4

0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

y0100010101001100

0x1

0x2 x3 x4

0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

y0100010101001100

0x1

0x2 x3 x4

0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

y1111111111110000

0x1

0x2 x3 x4

0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

y1111111111110000

Author’s name | Place, Month xx, 2007 | Event35 Lógica programável | Lisboa, 12 Dezembro 2016

Linguagens de Programação das PAL

PALASM (desenvolvida no início dos anos 80)TITLE video ; shift registerCHIP video PAL20V8CK /LD D0 D1 D2 D3 D4 D5 D6 D7 CURS GND NC REV Q7 Q6 Q5 Q4

Q3 Q2 Q1 Q0 /RST VCC (Pinos da PAL em ordem numérica; começa em 1)STRING Load 'LD*/REV*/CURS*RST' ; load data (Comentário)STRING LoadInv 'LD*REV*/CURS*RST' ; load inverted of dataSTRING Shift '/LD*/CURS*/RST' ; shift data from MSB to LSBEQUATIONS/Q0 := /D0*Load+D0*LoadInv:+:/Q1*Shift+RST (Atribuição registada)Q6 = D1 + /D2 (Atribuição Combinatória)

Author’s name | Place, Month xx, 2007 | Event36 Lógica programável | Lisboa, 12 Dezembro 2016

Bibliotecas Standard

Declaração de bibliotecas

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

STANDARD: Contains all basic declarations and definitions of language constructs and it is included in all VHDL specifications by default.

STD_LOGIC_1164: This package is not a part of the VHDL Standard but is a standard on its own; it contains the most often used language extensions.

TEXTIO: Contains declarations of basic operations on texts.

Author’s name | Place, Month xx, 2007 | Event37 Lógica programável | Lisboa, 12 Dezembro 2016

Fornecedores de FPGA’s

FPGAs baseadas em memória SRAMXilinx Inc. – www.xilinx.comAltera Corp. – www.altera.comAtmel Corp. – www.atmel.comLattice Semiconductor Corp.

– www.latticesemi.com

FPGAs baseadas em Antifuse e memória flashActel Corp. – www.actel.comQuickLogic Corp. – www.quicklogic.com

Author’s name | Place, Month xx, 2007 | Event38 Lógica programável | Lisboa, 12 Dezembro 2016

Mercado de Lógica Programável

Source: Company reportsLatest information available; computed on a 4-quarter rolling basis

XilinxAltera

LatticeActel QuickLogic: 2% Xilinx

All Others

Dois fornecedores dominantes (indicador de mercado maturo)

Segmento PLD Sub-Segmento FPGA

Other: 2%

51%33%

5% 7%

Altera

58%

31% 11%