FPGA


Fiche produit FPGA

Si votre cahier des charges précaunise des paramétrages de l'application par fichier, une interface utilisateur par LCD et clavier ainsi que des protocoles de communications vers des périphériques annexes, la programmation en language C par dessus un OS de type Linux est très certainement la meilleure solution.

Toutefois, lorsque l'interaction avec le hardware est particulièrement critique (soit parce qu'(il s'agit du coeur du produit, soit de par la complexité du hardware), une programmation en VHDL d'un FPGA en interface du CPU principal apparaît comme la solution idéal.

Les intérêts d'une telle architecture:

Un uC 32bits puissant et compact : si votre projet nécessite bien plus de puissance et capacité que ne peuvent le fournir les uC 8 et 16 bits conventiels, cette architecture vous apportera les performances d'un PocketPC à 200MHz dans un CPU au format BGA de 1 cm de côté. L'ARM9 possède de nombreux périphériques intégrés (USB, contrôleur NAND, contrôleur vidéo TFT, SPI, I2C, PWM, ADC, canaux DMA, interface parallèle, ...). Il est donc très facile d'établir un lien de communication soit sériel soit parallèle avec un composant externe de type µC ou FPGA.

S'interfacer avec un µC : si ce composant externe aura pour fonction de réaliser des opérations soumises à ces conditions complexes, qui peuvent changer avec le temps, alors il est préférable d'utiliser un µC et de réaliser une application en C. Si des contraintes temporelles strictes sont attendues il est vivement conseillé d'utiliser un RTOS (noyau temps réel), tel que PICos18, noyau temps réel gratuit basé sur la norme automobile OSEK.

S'interfacer avec un FPGA : si ce composant externe doit réaliser des opérations matérielles complexes (communiquer sur 10 liens sériels par exemple) mais sans embarqué pour autant beaucoup d'intelligence autre que celle nécessaire à l'extraction des données hardwares, mieux vaut opter pour un FPGA. Si le FPGA est en charge d'effectuer des acquisitions numériques ou analogiques et de charger la RAM centrale avec les données acquises, il sera même possible de connecter le FPGA et le CPU à l'aide d'un canal DMA qui aura pour but de prendre la main sur le bus système pour ranger périodiquement les données dans la RAM. Un driver sous Linux aurait alors pour fonction d'initialiser le canal DMA approprié puis de transmettre les données nouvellement stockées à votre application.

Programmation VHDL : lorsque nous utilisons des FPGA, nous nous orientons vers les composants CyclonII d'Altera ou Spartan3 de Xilinx. Les firmwares sont réalisés en VHDL, sous forme d'entités logicielles réutilisables. Chaque développement fait l'objet d'une phase de simulation avec Modelsim afin de garantir les chronogrammes d'accès aux hardwares.

Puissance et souplesse : le couple FPGA/CPU constitue sans aucun doute la plate-forme matérielle et logicielle la plus performante (intelligence du CPU et rigueur du FPGA) tout en assurant un grand niveau de souplesse et de maintenabilité grâce à la programmation "tout logiciel" de ce couple. Il arrive en effet que le CPU soit en charge de la programmation de la flash série du FPGA lorsque le besoin de reprogrammation à distance se fait sentir...

 

p>