Desenvolvimento de um Sistema Reconfigurável para Múltiplas Aplicações Baseado na Arquitetura VIRTEX-II
Por: Natanael079 • 6/8/2016 • Monografia • 11.280 Palavras (46 Páginas) • 380 Visualizações
Universidade Federal de Pernambuco[pic 1][pic 2]
Graduação em Engenharia da Computação
Centro de Informática
_______________________________________________________
Desenvolvimento de um sistema reconfigurável para múltiplas aplicações baseado na arquitetura VIRTEX-II
Aluno: Rodrigo Wanderley Pimentel Araujo
Orientador: Manoel Eusébio de Lima
Recife, Janeiro de 2008.
Resumo
Alto grau de paralelismo é fundamental para sistemas de processamento massivo em dados de alta velocidade. Dispositivos FPGA podem fornecer tal paralelismo mais flexibilidade de implementação. Entretanto, estes dispositivos são limitados pelo seu tamanho, quantidade de memória disponível, largura de banda da memória e tempo de reconfiguração. Técnicas de particionamento podem ser usadas para implementar grandes aplicações, quebrando-as em partições menores que são executadas por meio de multiplexação temporal no FPGA, usando técnicas de reconfiguração. Essa abordagem pode aumentar a quantidade efetiva de lógica disponível para implementar o sistema, permitindo que cada tarefa da aplicação use alto grau de paralelismo e alta performance. Este trabalho tem por finalidade desenvolver um sistema reconfigurável baseado na arquitetura VIRTEX-II integrada à um PC através do barramento PCI.
Agradecimentos
Agradeço aos meus pais e minha irmã, pois sem eles eu não seria nada, que me prepararam para a vida e sempre me deram força quando precisei.
Aos meus amigos e familiares que sempre acreditaram em mim.
O Bruno Holanda e Rodrigo Camarotti, grandes amigos, e que me ajudaram bastante na jornada do curso e nesse trabalho.
Ao professor Manoel Eusébio, pois sem ele esse trabalho não poderia ter sido idealizado.
Sumário
Resumo
Sumário
1 Introdução
2 Fundamentação Teórica
2.1 Hardware reconfigurável
2.1.1 FPGAs (FIELD PROGRAMMABLE GATE ARRAY)
2.1.2 Sistemas Dinamicamente Reconfiguráveis
2.1.3 Plataforma AVNet
2.1.3.1 Alimentação da Placa
2.1.3.2 System ACE MPM
2.1.3.3 Modos de Configuração
2.1.3.4 Memória
2.1.3.5 PCI / PCI-X
2.2 Linux e Device Drivers
3 Barramentos de Comunicação
3.1 Princípios de Funcionamento do Barramento PCI
3.2 Sinais de Comando do Barramento PCI
3.3 Mecanismo de Arbitragem
3.3.1 Estacionamento
3.4 Latência
3.5 Ciclo de Turnaround
3.6 Comandos do Barramento PCI
3.6.1 Transação de Leitura
3.6.2 Transação de Escrita
3.7 Terminação da Transação
3.7.1 Iniciada pelo Master
3.7.2 Iniciada pelo Target
3.8 Configuração plug-and-play
3.8.1 Espaço de Configuração
3.9 PCI Hot Plug
3.9.1 Componente de um Sistema Hot Plug
4 Implementação de um sistema reconfigurável dinamicamente
4.1 O sistema software
4.1.1 Device Driver
4.1.2 Aplicação em C
4.2 O sistema hardware
4.2.1 Core PCI
4.2.2 Controlador de aplicações
4.2.3 Aplicação do usuário
5 Conclusão e Trabalhos Futuros
5.1 Contribuições
5.2 Dificuldades encontradas
5.3 Trabalhos Futuros
6 Referências
1 Introdução
Existem dois métodos primários de computação convencional para a execução de algoritmos. O primeiro, Application Specific Integrated Circuit (ASIC), feito para executar uma específica aplicação, e, portanto, são muito rápidos e eficientes, porém, sua funcionalidade não pode ser alterada, sendo assim, um processo custoso. O segundo, processador, executa um conjunto de instruções, que, quando é mudado, o hardware não é alterado, mas a funcionalidade do sistema é, sendo um processo que apesar da flexibilidade pode sofrer em termos de desempenho [1].
Computação reconfigurável tenta preencher esse gap entre hardware e software, alcançando mais performance que software, enquanto mantêm um alto grau de flexibilidade. Para obter esses objetivos, uma das opções é usar os Field Programmable Gate Arrays (FPGAs). A performance alcançada por essas máquinas reconfiguráveis tem sido impressionante e tem mostrado soluções de problemas mais rápidas e econômicas nas áreas de: processamento de sinais, emulações, criptografia, entre outras [1].
Desenvolvimentos recentes na tecnologia dos FPGAs têm introduzido suporte para modificações rápidas em tempo de execução do hardware do sistema. Essas modificações podem, hoje, ser realizadas via reconfiguração durante a operação do circuito. A implementação de sistemas que exigem flexibilidade, alto desempenho, alta taxa de transferência de dados e eficiência no consumo de energia são possibilitadas por essas tecnologias. Isto inclui aplicações de televisão digital, comunicação sem fio reconfigurável, sistemas de computação de alto desempenho, processamento de imagens em tempo real e sinais digitais adaptáveis, produtos de consumo atualizáveis remotamente, entre outros [2].
...