Arquiteturas de Processamento
de Imagens e Sinais
Aula-1
Objetivos
• Estudar procedimentos usados para a
melhoria do desempenho no
processamento de imagens e sinais
Arquiteturas de Processamento de
Imagens e Sinais
• Arquiteturas de propósito geral - GPP
• Extensão de GPPs:
–
–
–
–
–
Instruções – MMX, SSE
GPU
Multi-Core
Cluster
Grid
• Processadores Específicos
– DSP (digital signal processors)
– ASIP (application specific instruction set processors)
• Arquiteturas Reconfiguráveis
– Granularidade fina – FPGAs
– CGRAs – Coarse Grained Reconfigurable Arrays
Bibliografia
•
•
•
•
•
•
Jean-Pierre Deschamps, Géry Jean Antoine Bioul, Gustavo D. Sutter –
Synthesis of Arithmetic Circuits: FPGA, ASIC and Embedded Systems. New
Jersey, Wiley & Sons, 2006.
James O. Hamblen, Tyson S.Hall, Michael D.Furman – Rapid Prototyping of
Digital Systems – Quartus II edition. New York, Springer, 2010.
Pong P.Chu – FPGA Prototyping by VHDL Examples. New Jersey, Wiley &
Sons, 2008.
Maya B.Gokhale, Paul S. Graham – Reconfigurable Computing:
Accelerating Computation With Field- Programmable Gate Arrays. The
Netherlands, Springer, 2005.
John L. Hennessy & David A. Patterson – Computer Architecture – A
Quantitative Approach, 4rd Ed., Morgan Kaufmann Publishers, USA, 2007.
Outras ...
Avaliação
2 provas sobre o conteúdo teórico
AULA 01
PLATAFORMAS DE HARDWARE
• Plataformas para o desenvolvimento de
hardware de sistemas eletrônicos.
Competição de Métricas de
Projeto
Custo em Circuitos Integrados
Custo de desenvolvimento, chamado de non-recurring engineering (NRE) cost
Custo de fabricação de cada cópia do sistema, unit cost (UC) .
O custo total, TC, é calculado por:
TC = NRE + UC.Q
onde Q é a quantidade de unidades.
O custo final por produto é igual a:
FC = TC/Q = NRE/Q + UC
Exemplo de evolução do custo
Exemplo de evolução do custo em função da quantidade de
peças fabricadas, Q. O custo de desenvolvimento de B é compensado
com a quantidade de peças fabricadas.
Lei de Moore (1965): atual definição - a densidade de
transistores dobra aproximadamente a cada 18
meses.
Dissipação de Potência
•
Existem duas formas de dissipação de potência em circuitos integrados:
– estática – ocorre de correntes que fluem quando nenhuma comutação ocorre.
– dinâmica – resultado da comutação.
•
Em CMOS a potência dinâmica dissipada é proporcional à carga capacitiva
C, frequência de comutação F, e quadrado da voltagem de alimentação V:
P = k.C.F.V2
•
Métodos para redução da potência dissipada variam desde:
- desligar o processador/sistema, quando inativo
- controle de potência cuidadoso de componentes individuais do chip.
•
Um circuito pode requerer menos energia para uma tarefa desde que seja
dado mais tempo para a sua execução – isso tem levado a um conjunto de
técnicas para controlar dinamicamente o desempenho, mantendo a energia
tão pequena quanto possível, minimizando o consumo de potência.
Processadores quanto ao
acesso à memória
Von Neumann – os programas e dados ficam numa mesma memória
Harvard – memória de dados e memória de programa são separadas
Arquitetura Harvard modificada: programas e dados são carregados em caches
separadamente mas a memória principal é única
Os processadores de uso geral (GPPs) usam a arquitetura Von Neumann pela
simplicidade, enquanto que
Os processadores sinais digitais (DSPs) e microcontroladores usam geralmente
a arquitetura Harvard para torrente de dados (streamming data), pois permite uma
largura de banda (bandwidth) de memória mais previsível.
Processadores de Sinais Digitais
(Digital Signal Processors)
Interação típica de DSP com o mundo real.
Componentes de aplicação
específica
ASIC totalmente customizado
(Full Custom ASIC)
• ASICs (Application-specific integrated circuits) são circuitos
integrados especificamente projetados para tarefas
predeterminadas.
• Vantagens: velocidade, consumo menor de potência, custo menor
para fabricação em massa, segurança (difícil engenharia reversa),
melhor controle de características de IO, e projeto mais compacto
de placa de circuito impresso.
• Desvantagens: custo alto para pequena quantidade, tempo de
produção grande (várias semanas), custo alto de NRE (ferramentas
de CAD, workstations, e mão de obra de engenharia), e finalmente,
uma vez transformado em silício o projeto não pode ser modificado.
ASIC semi-customizado
(Semicustom ASIC)
• Uma grande variedade de abordagens tem sido desenvolvida para
diminuir o tempo de projeto, diminuir o custo, e automatizar os
processos.
• Os ASIC semi-customizados se classificam em:
– Gate Arrays (GAs): arranjo de transistores que o fabricante disponibiliza
para que seja personalizado de acordo com a informação de
interconexões fornecida pelo cliente.
– Standard Cells: são componentes lógicos (como portas,
multiplexadores, somadores e flip-flops) previamente projetados e
armazenados numa biblioteca. Um projeto é criado usando esses
componentes como entradas num sistema de CAD, que gera um
projeto de chip.
Gate Array (GA) ASIC
(a)
(b)
Arquitetura de Gate Arrays: a) gate array com canais, b) sem canais
Standard Cell baseado em ASIC
Layout de Standard Cell típico
Fluxo
de
projeto
de ASIC
Semicustom
Passos do fluxo de projeto do
ASIC semi-custom
Design entry – entrada de projeto em linguagem tipo VHDL,
Verilog ou entrada esquemática.
Logic Synthesis – extrair um netlist, que é uma descrição das
células lógicas e suas conexões.
System Partitioning - divide um sistema grande em pequenas
partes de tamanho de um ASIC
Pre-layout Simulation – verifica o funcionamento do circuito
Floorplanning – arranja os diferentes blocos do circuito no
chip
Placement – determina as posições das células num bloco
Routing – cria as conexões entre as células e blocos
Circuit Extraction – determina a resistência e a capacitância
das interconexões e calcula os atrasos para propósito de
simulação
Post-layout Simulation – verifica o funcionamento do circuito
após incluir os atrasos criados pelas cargas de
interconexões
Design Rule Check – verifica se o layout de circuito cumpre
com as especificações de projeto de circuito (design
rule) para fabricação.
Lógica Programável
• Os circuitos lógicos podem ser
classificados em: fixos e programáveis
– Fixos: não podem ser alterados após
fabricação
– Programáveis (PLDs): podem ser
modificados
• São disponíveis muitos tipos de PLDs:
– pequenos dispositivos capazes de
implementar lógicas simples
– FPGAs que podem conter um
processador completo e um número de
periféricos.
Arquitetura típíca de PLD simples do tipo
PLA(programmable logic array), PAL(programmable
array of logic) e GAL(generic array logic)
CPLD (Complex Programmable
Logic Devices)
Vários PLDs e alguma interconexão programável num único chip.
Tradicionalmente os CPLDs tem sido preferidos em relação a FPGAs quando
uma lógica de alto desempenho é desejado. Devido a uma arquitetura interna
pouco flexível, os atrasos nos CPLDs são previsíveis e usualmente menores
que nos FPGAs.
FPGAs (Field Programmable Gate Arrays)
• Podem ser usados para implementar qualquer projeto de hardware.
• Um uso comum de FPGA é a prototipação de uma parte de
hardware que será eventualmente construído em ASIC.
• Não obstante, os FPGAs tem sido cada vez mais usados como
plataformas de produtos finais.
Origem dos FPGAs
•
No início da década de 1980 a maioria dos sistemas eram implementados
usando circuitos integrados padrões de integração em larga escala (LSI):
microprocessadores, controladores de IO, timers, etc.
•
Não obstante cada sistema tinha necessidade de alguma lógica (glue logic)
para conectar esses grandes CIs.
•
CIs customizados eram muitas vezes projetados para substituir uma grande
quantidade de glue logic, mas os CIs customizados tinham custo alto e
grande tempo para o desenvolvimento, portanto o uso de CIs customizados
só era viável para produtos com muito alto volume de fabricação.
•
A Xilinx introduziu em 1984 a tecnologia FPGA como uma alternativa para
os CIs customizados para implementar os glue logics.
Arquitetura básica de FPGA
Arranjo bidimensional de células lógicas, interconexões e
entrada/saída programáveis.
Modos de programação
Baseado em SRAM – as
conexões são obtidas usando
pass-transistors,
portas de transmissão, ou
multiplexadores, controlados
por SRAMs. (ex. Xilinx, Altera)
Antifuse – um antifuse fica
no estado de alta impedância
até que seja programado e
passe para o estado de fusão
(pode ser programado apenas
uma vez). (Ex. Actel, Quicklogic)
Baseado em EPROM/EEPROM (usado em vários PLDs) – esse método
é o mesmo das memórias. A configuração é armazenada
dentro do dispositivo. Geralmente não é possível programação em circuito.
A programação deve ser feita fora do circuito impresso.
Bloco lógico programável genérico
Normalmente um bloco lógico programável contem os elementos
mostrados.
Implementação da lógica
combinatória (Look-Up Table)
a) Memória
b) Memória e multiplexador
c) Conteúdo de memória para
diferentes funções de LUT.
Outra ilustração de LUT de 3 entradas
Implementação de uma
função AND de 3 entradas.
LUT da família Virtex, da Xilinx, em
particular Spartan II, versão baixo custo
Bloco lógico da Actel ProASIC Plus
Embora a maioria dos FPGAs reprogramáveis usem LUTs para lógica
combinacional, muitas arquiteturas tem usado combinações de
multiplexadores e portas lógicas para implementar as estruturas lógicas
programáveis.
Clusters- Agrupamento de
elementos lógicos
•
Para reduzir os custos de usar roteamentos programáveis, muitas
arquiteturas de FPGA reprogramáveis agrupa os elementos lógicos usando
um roteamento rápido e de comprimento curto.
•
Esse agrupamento permite que muitas funções maiores sejam criadas
usando roteamento rápido do grupo.
•
Muitas arquiteturas baseadas em LUT recentes empregam essa estratégia,
muitas vezes juntando 2 ou mais elementos lógicos baseados em LUTs num
grupo.
Exemplos de clusters
Um
cluster
(slice)
da
Virtex
(Xilinx)
Cluster (slice) da Virtex, Xilinx
• LUT – implementado em 4 entradas.
– cada LUT pode ser programada como uma RAM assíncrona de 16x1 bits,
– dois LUTs podem ser combinados dentro de um slice para criar:
•
•
uma RAM síncrona de 16x2 ou 32x1 bits, ou
uma memória dual-port de 16x1 bits.
– Um LUT pode também ser um registrador de deslocamento de 16 bits, ideal
para capturar dados rápidos.
• Elementos de memória – os elementos de memória num slice podem
ser configurados como flip-flops tipo D disparados nas bordas ou
latches sensíveis a nível. As entradas D podem ser alimentadas do LUT
ou diretamente das entradas do slice.
Roteamentos (Routing)
•
Os roteamentos num FPGA podem ser:
– Internos aos clusters e
– Globais: ilha, linhas longas, celular e horizontal.
•
Dentro de um cluster, o roteamento é usado para vários propósitos:
– Primeiro, é usado para determinar por onde as entradas dos elementos vem, e
onde as saídas vão.
– Em seguida, o roteamento é usado para determinar como os sinais propagam
através dos elementos lógicos. Além disso, roteamento não-programável é
usado para propagação rápida de vai-um para eliminar atrasos extras que
ocorrem quando se usa roteamento programável. Usualmente essas cadeias de
vai-um estendem entre os clusters, para suportar largas adições.
– Finalmente, o roteamento dentro do cluster é frequentemente usado para
combinar os elementos lógicos em funções maiores e complexas.
Roteamento Interno aos Clusters
Roteamento global 1: ilha (island)
Roteamento global 1: ilha (island)
• Nessa arquitetura, os clusters lógicos são cercados
por canais de roteamento verticais e horizontais
segmentados.
• Cada cluster conecta ao roteamento através de
caixas de conexão (connection box) e cada segmento
no roteamento pode ser conectado a um outro
segmento através de uma caixa de comutação
(switch box).
• O principal fator desse tipo de roteamento é que
conexões entre clusters lógicos são feitas através do
roteamento segmentado.
• Esse roteamento é encontrado em muitas FPGAs da
Xilinx, embora Xilinx forneça segmentos em vários
comprimentos (mesmo comprimentos se estendem
ao chip inteiro) enquanto forneçe roteamentos locais
entre clusters lógicos tornando a arquitetura mais
eficiente.
Roteamento Global 2: linhas longas
Roteamento Global 2: linhas longas
•
Esse roteamento também cerca os clusters
lógicos com canais de roteamento horizontal e
vertical com múltiplos fios por canal.
•
Cada um dos fios se espande à largura ou altura
inteira do chip.
•
Idealmente, para conectar quaisquer dois clusters
lógicos, somente uma linha horizontal e uma
linha vertical de linha longa é requerida.
•
A transição entre uma linha longa vertical e uma
linha longa horizontal pode ser feita usando o
roteamento interno de um cluster lógico na
intersecção de duas linhas.
•
Essa tem sido a principal forma de roteamento da
Altera, mas outros fabricantes como Actel tem
estruturas similares.
– Para reduzir a penalidade de velocidade para
alimentar sinais ao longo do chip, várias das
arquiteturas Altera recentes como a Stratix e Stratix
II tem introduzido segmentos de comprimento
menor nos canais de roteamento.
Roteamento Global 3: Celular
Roteamento Global 3: Celular
•
As conexões mais usadas são transformadas em locais entre
cluster lógicos e somente um pequeno ou nenhum através de
segmentos de conexões longas.
–
•
•
•
Exemplos incluem Algotronix CAL, que se tornou Xilinx XC6200, Cli/Atmel
6000 e Plessey/Pilkington ERA.
Essa arquitetura tende a ser de fina granularidade (funções
de 2 ou 3 entradas), tais que clusters lógicos sejam realmente
simples e tenham um único elemento lógico.
As células lógicas são projetadas para serem usadas como
parte da rede de roteamento entre outros elementos lógicos.
O uso do roteamento celular tem decaído por várias razões:
– os atrasos combinacionais são significantes para circuitos que
requerem mais que um roteamento de vizinho mais próximo;
– ferramentas de CAD tem dificuldade significante para o
mapeamento eficiente de roteamento de circuitos ; e
– os custos da área e atrasos são significantes devido a
quantidade de lógica e roteamento programável requerido.
•
A implementação de circuitos em pipeline pode aliviar os
problemas de custo e atrasos nas arquiteturas de roteamento
celular.
Roteamento
Global 4:
Horizontal
Roteamento Global 4: Horizontal (row)
•
Essa arquitetura é encontrada em FPGAs programáveis
apenas uma vez, tais como muitos FPGAs anti-fuse da
Actel, portanto, não comumente vistas em FPGAs, usadas
para computação reconfigurável.
•
A arquitetura usa principalmente canais de interconexão
horizontais para roteamento de sinais entre dois clusters
lógicos.
•
FPGAs da Actel usam alguns roteamentos verticais apesar
da polarização baseada em roteamento por canais
baseadas em linhas.
•
Por exemplo, no FPGA Act-1 e posteriores, são usadas
fiações verticais para rotear as saídas dos cluster lógicos
para vários canais de roteamentos adjacentes e algumas
fiações longas que estendem mais os canais horizontais de
roteamento.
•
Embora não ilustrada na figura, as arquiteturas de
roteamento em linhas geralmente usam fiações
segmentadas dentro dos canais de roteamento para reduzir
o atraso de roteamento para pequenos passos.
Arquiteturas de entrada/saída (IO)
• Diferente de arquiteturas de lógica e
roteamento, a arquitetura de IO, é
razoavelmente similar ao longo das
famílias de FPGAs.
– Os blocos de IO tem buffers tri-state para
as saídas e input buffers para as entradas
•
Em FPGAs modernos, uma grande variedade
de fatores adicionais podem ser encontrados
que significantemente melhoram essa estrutura
básica.
•
Por exemplo, os blocos de IO da Xilinx Virtex 4
provêem os seguintes fatores, entre outros:
– mais que 50 variações de padrões de
sinalização, algumas das quais incluem fatores
como:
a) impedância controlada digitalmente para eliminar a
necessidade de resistores de terminação para lidar
com efeitos de linhas de transmissão e
b) sinalização diferencial para melhorar a integridade
do sinal; e
– atrasos de entradas programáveis.
Arquitetura
de
um bloco
de IO
Blocos especializados
• As arquiteturas de FPGAs costumam ser desenvolvidas com a
adição de blocos de funções programáveis mais especializadas.
• Esses blocos, tais como memória embutida, lógica de aritmética, IO
serial de alta velocidade, e mesmo microprocessadores embutidos,
tem sido adicionados devido a uma necessidade frequente de tais
recursos dentro de sistemas de FPGAs e aplicações.
• O resultado é que muitos FPGAs recentes são uma mistura
heterogênea de recursos que os FPGAs iniciais.
•
Nos próximos parágrafos, descrevemos brevemente os recursos
que tem sido disponibilizados recentemente em FPGAs.
Blocos especializados: Memória embutida (1)
•
A memória, naturalmente, é um componente básico de muitos sistemas
digitais e, embora flip-flops possam ser usados como memórias, eles são
muito ineficientes para criar memórias de alguma profundidade.
•
Começando com a série XC4000 de FPGA, Xilinx fez com que os LUTs
usados para lógica fossem suficientemente flexíveis para serem usados
como RAMs 16x1 assíncronos.
•
Em arquiteturas posteriores, Xilinx projetou LUTs tal que elas possam
operar como RAMs síncronas, RAMs dual-ports, e registradores de
deslocamento (1 a 16 estágios).
•
Existem também lógicas nos clusters lógicos para compor essas RAMs
pequenas em maiores e mais profundas. A habilidade de usar LUTs para
RAMs é um fator único dos FPGAs Xilinx.
Blocos especializados: Memória embutida (2)
•
Não demorou muito para que muitos fabricantes de FPGAs começassem a
incluir blocos de SRAM mais densos dentro das arquiteturas, com a Altera
liderando, com FLEX 10K.
•
Hoje, Altera, Xilinx, Actel, Atmel, Quicklogic, e outros fabricantes de FPGA
incluem essas grandes SRAM de centenas a milhares de bits.
•
Muitas das RAMs tendem a ser de 1 a 4 Kbits, embora, no Stratix II, a Altera
tenha 3 granularidades de RAMs (576 Kb, 4.5 Kb, e 0.56 Kb) disponíveis
para o projetista.
•
Em muitos casos, a razão de aspecto das RAMs pode ser programável. Por
exemplo, no Virtex da Xilinx, uma RAM de 4 Kb pode operar nos modos:
4096x1, 2048x2, 1024x4, 512x8, ou 256x16 (onde a razão de aspecto pode
ser dada como largura x profundidade em bits).
•
Embora tendo a razão de aspecto programável, algumas RAMs embutidas
em FPGAs podem operar como memórias enderessáveis por conteúdo
(CAMs), RAMs dual-port, e/ou FIFOs.
Blocos especializados: Memória embutida (3)
• Embora a memória total disponível num chip possa somente ser da
ordem de 1MB para os últimos FPGAs, um dos benefícios chaves
dessas memórias on-chips é o grande número de acessos (ports)
disponíveis e a largura de banda agregada possível.
• Isso fornece uma vantagem significativa para aplicações paralelas
que requerem significante largura de banda de memória.
• Por exemplo, o Stratix II (EP2S180) teoricamente pode prover uma
largura de banda de memória de 30 Gb/s através de 3414 portas
dos seus 1707 RAMs (assumindo que cada memória opere em
dual-port e opere a máxima frequência).
Blocos especializados:
Aritmética
• Apesar da lógica de vai-um básica e mesmo somadores providos
em elementos lógicos e cluster lógicos, muitos FPGAs começaram
a incluir multiplicadores 18x18 , ou os chamados blocos DSPs
como recursos adicionais.
• Em geral, os blocos DSPs proveem operações de adição/subtração,
multiplicação, e multiplicação-acumulação (MAC), com um alto grau
de configurabilidade.
• As operações MAC são úteis em filtros FIR, uma operação típica de
DSPs.
Blocos DSP da Xilinx Virtex-4 e
Altera Stratix II
Blocos especializados: Entrada e Saída de
Alta Velocidade
•
Considerando-se que muitos FPGAs são usados em equipamentos de
telecomunicações de alta throughput, a recente adição de transceivers
serial multi-gigabit (MGSTs) como blocos de IO não é surpreendente.
•
Esses blocos realizam serialização e desserialização full-duplex de funções
(SERDES), proveem encodificação/decodificação de funções (por exemplo,
8B/10B) , e alguma lógica de controle de erro.
•
A primeira produção de FPGAs com essa capacidade foi a Virtex II Pro da
Xilinx (até 6.25 Gb/s full-duplex, por canal).
•
O FPGA Stratix GX da Altera (até 6.25 Gb/s full-duplex por canal) e a família
Virtex-4 FX da Xilinx (até 11.1Gb/s full-duplex por canal) também provêem
essa capacidade.
•
Evoluindo no conceito de comunicação de alta velocidade, a família Virtex-4
FX tem dois ou quatro Controladores de Acesso a Mídia Ethernet
10/100/1000 Mb/s (MAC) para prover os projetistas com uma solução mais
completa para Ethernet.
Blocos especializados: Microprocessadores
Embutidos
• Por último, os fabricantes de FPGAs integraram microprocessadores
dedicados e completos nos FPGAs para realizar funções intensas de
controle e baixa bandwidth como implementar pilhas TCP/IP.
• Com essa capacidade, sistemas dedicados completos ou quase
completos podem ser implementados com um único dispositivo.
• O primeiro FPGA comercial a integrar um microprocessador foi a
Excalibur da Altera.
• Excalibur integra um processador RISC baseado no ARM ou MIPS de
32 bits, com textura lógica (logic fabric) do tipo APEX-20KE.
• Atualmente, somente soluções baseadas em ARM são disponíveis no
Altera
Arquitetura
Excalibur
baseada em
ARM
Arquitetura Excalibur baseada em ARM
• O processador tem interfaces de memória externa dedicadas, uma
interface UART, um controlador de interrupção programável, e
outros recursos.
• Existem dois barramentos de alto desempenho AMBA (AHBs),
fornecendo acesso do processador a duas diferentes fileiras de
dispositivos.
• O processador se comunica com a lógica programável através do
AHB secundário, ou através de SRAM dual-port que conectas os
dois barramentos.
Virtex-II Pro e Virtex-4
•
Posteriormente, com o Virtex-II Pro e Virtex-4, Xilinx produziu FPGAs com
microprocessadores integrados PowerPC.
•
Uma diferença significativa entre a abordagem Xilinx, em relação a integração do
processador com a lógica da Altera, é que Xilinx coloca o microprocessador como
uma ilha dentro da lógica de FPGA, com interfaces a SRAM on-chip mas nenhum
barramento dedicado para o processador ou periférico.
•
Esses barramentos devem ser implementados usando a lógica FPGA, se
forem desejados. Isso provê ao projetista flexibilidade para definir a
arquitetura do sistema embutido, mas também significa que o processador
não pode realizar trabalho útil sem configurar a lógica do FPGA, diferente
da situação com o Excalibur.
•
Os processadores nos FPGAs da Xilinx substituem quaisquer funções
lógicas que teriam ocupado normalmente a área do chip, e alguma
arquitetura de roteamento é mantida apesar da presença do PowerPC.
Estilo Xilinx de Integração do
Processador
Arquiteturas de Programação dos
FPGAs
• Arquitetura de programação é o meio em que os dados de
reconfiguração são estruturados e como é fornecido ao FPGA para
programar os recursos.
• Os FPGAs reprogramáveis usam geralmente SRAM para os dados
de reconfiguração.
• A arquitetura de programação dos FPGAs baseados em SRAMs é
um fator importante no uso desses FPGAs em computação
reconfigurável.
• Muitas abordagens de arquiteturas de programação tem sido
desenvolvidas, mas as principais características de interesse
incluem:
–
–
–
–
bandwidth de programação,
granularidade do acesso,
programabilidade on-line, e
possibilidade de leitura dos dados programados (dados de
configuração).
Bandwidth de programação
•
•
•
•
•
A bandwidth de programação, é a taxa em que os dados de configuração
podem ser enviados ao FPGA.
Quando uma reconfiguração rápida é requerida, tal como quando uma
aplicação está multiplexando no tempo uma lógica no hardware, a
bandwidth de programação é um fator que determina quão rápido o FPGA
pode ser reprogramado.
A largura das interfaces de programação é geralmente serial ou de 8 bits e
pode ter uma taxa de dezenas de MHz.
O FPGA Stratix II da Altera, por exemplo, pode ter uma bandwidth de 800
Mb/s para configuração no modo Fast Passive Parallel – numa interface de
8 bits a 100 MHz. O Xilinx Virtex-II Pro pode operar até 400Mb/s.
Uma interface serial comum é o Joint Test Action Group’s boundary scan
interface (IEEE 1149.1) – que é referido como JTAG – que tem sido
adaptado para configuração.
– Com o JTAG, o Stratix II da Altera consegue somente 10 Mb/s, enquanto que
muitos dispositivos Xilinx pode ter uma bandwidth de até 33 Mb/s.
•
Algumas FPGAs tem interfaces de programação serial proprietárias com
altas taxas de dados.
Granularidade do acesso
• A granularidade da programabilidade dos FPGAs determina
quantos recursos são configurados com o menor bloco de dados de
programação.
• Do ponto de vista do projetista de chip de FPGA, essa
granularidade tem um efeito significativo no custo da lógica interna
usada para realizar a programação.
– Como outras formas de memória, mais endereçabilidade requerida para
os dados de programação, mais lógica é necessária para prover aquela
endereçabilidade.
• Com respeito a computação reconfigurável, o principal interesse na
granularidade dos dados de programação é relacionada a um outro
aspecto de uma arquitetura de programação – o suporte provido por
certos FPGAs de realizar programação on-line (configuração
dinâmica) de uma porção de sua lógica.
Programabilidade on-line
•
•
•
•
•
•
A programabilidade on-line permite com que o usuário modifique o circuito
enquanto executa.
A granularidade de programação, então, tem um impacto na menor
quantidade de dados e lógica que pode ser afetada quando se faz uma
pequena mudança no circuito (por exemplo, recarregando os coeficientes
em ROM usados para certas aritméticas ou algoritmos de DSPs).
Como um exemplo, as séries Virtex da Xilinx (Virtex, Virtex-E, Virtex-II,
Virtex-II Pro, Virtex-4) permitem reconfiguração parcial de FPGA.
A menor quantidade de dados que pode ser programada é chamada de
frame, que é tipicamente de centenas de milhares de bits.
Assim, para reconfigurar parcialmente uma lógica de FPGA em tempo de
execução (as vezes referido como reconfiguração em tempo de execução)
um frame inteiro de configuração de dados deve ser reescrito ao FPGA para
a menor mudança.
Por contraste, o Xilinx XC6200, agora indisponível, permitia ao usuário
enviar tão somente 8 , 16 ou 32 bits para operação de configuração, e
poderiam ser usadas máscaras para restringir as modificações de uma
escrita de dados de programação para um bit específico ou conjunto de bits.
Possibilidade de leitura dos dados
programados
•
A habilidade de leitura de dados de programação e outras informações
através da interface de configuração – a capacidade as vezes referida
como “readback” – tem também um impacto em como o FPGA pode ser
usado na computação reconfigurável, e pode ter as seguintes finalidades:
– para assegurar que os dados de programação armazenados no FPGA são
corretos – por exemplo, quando o FPGA está no espaço, a bordo de uma nave.
– forma de amostrar o estado de um projeto de usuário, como na série Virtex da
Xilinx ou XC6200.
• Por exemplo, com o Virtex, as saídas dos slices e dos IOBs (ao mundo externo e para
o resto do FPGA) podem ser amostradas e lidas pela interface de configuração como
conteúdos de várias RAMs.
– meio para comunicação entre o projeto de FPGA e o hospedeiro externo e
– ajudar os projetistas na depuração de aplicações.
Compressão e Criptografia dos
dados de configuração
•
•
•
•
•
Em adição as características vistas, muitos FPGAs modernos incluem
capacidade para compressão e críptografia de dados de programação.
Compressão naturalmente reduz a quantidade de dados que devem ser
enviados ao FPGA para programá-lo, e assim reduzindo os requerimentos
de armazenamento dos dados de programação e reduzindo o tempo de
programação.
A capacidade de criptografia foi adicionada para prevenir que pessoas
roubem configurações dos sistemas de FPGAs quando os dados são
enviados ao FPGA, como por exemplo pela Internet ou mesmo pela placa
do sistema.
Assim, mesmo que as pessoas possam ler os dados criptografados
livremente, uma chave de decriptografia é armazenada no FPGA, e
mantida disponível por bateria, antes do sistema ser enviado ao cliente, tal
que o FPGA possa decriptografar os dados sem permitir que outros
possam obtê-los.
A criptografia de bitstream é um dos vários componentes necessários para
uma programação segura de máquinas de computação reconfiguráveis
através de redes como a Internet.
Múltiplas configurações em FPGAs
• Como uma nota final sobre a arquitetura de programação, muitos
dispositivos FPGA de pesquisa tem estendido a reconfiguração
para uma nova forma.
– Esses FPGAs suportam chaveamento entre múltiplas configurações
armazenadas no FPGA.
– Isso permite com que o circuito de FPGA possa mudar rapidamente
enquanto que os dados no FPGA ou permaneçam no lugar, ou são
trocados no arranjo, emulando uma FPGA maior.
– Uma vez que multiplas memórias de configuração on-chip são
carregadas, reduz consideravelmente a bandwidth de programação
externa requerida para a troca de contexto das configurações do FPGA
uma vez que a troca entre contextos é feita acessando memória de
configuração on-chip.
Fluxo de
projeto
em FPGAs
Fluxo de projeto
em FPGAs
Design Entry – criação de arquivos de projeto usando editor
esquemático ou linguagem (Verilog, VHDL, Abel)
Design Synthesis – um processo que se inicia de um alto nível de
abstração lógica (Verilog ou VHDL) e automaticamente cria um
nível menor de abstração usando uma biblioteca de primitivas
Partition (ou Mapping) – um processo de atribuição de cada
elemento lógico a um elemento físico específico que realmente
implementa a função lógica num dispositivo reconfigurável
Place – mapeia a lógica em localização específica no FPGA alvo
Route – mapeamento das conexões da lógica
Program Generation – um arquivo de bit-stream é gerado para
programar o dispositivo
Device Programming – fazer a carga do bit-stream no FPGA
Design Verification – simulação usada para verificar
funcionalidades
Download

Aula1-introdução