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