Je programme des microcontrôleurs depuis quelques années maintenant, et je viens de découvrir les FPGA après avoir suivi un cours de design numérique. Après avoir fait des recherches sur différents FPGA, cartes de développement, etc., j'hésite toujours à en acheter car je ne saurais pas comment créer ma propre version du "produit" final. J'ai mis des PIC, SAM, AVR, etc. sur des PCB personnalisés sans problème, donc je ne suis pas inquiet à ce sujet - ma principale préoccupation est de programmer un FPGA sans carte du fabricant.
Ma question spécifique: une FPGA fonctionnerait-elle si je prenais le fichier bitmap généré par Quartus, Vivado, iCEcube, etc., l'écrivais sur une puce de mémoire flash SPI commençant à l'adresse 0 (disons, via un FT2232H), et connectais la mémoire flash à les broches SPI d'un FPGA (avec la configuration MODE correctement réglée)?
Je m'excuse pour l'hypothèse partielle; Je suis assez sûr que c'est tout ce que fait Diamond Programmer de Lattice, mais je me demandais si cette approche fonctionnerait pour les FPGA de différents fabricants, ou si, par exemple, Quartus a ajouté des "habillages de fenêtre" ou des en-têtes supplémentaires à la mémoire lors de l'écriture.
Faites-moi savoir si je peux faire quelque chose pour améliorer / clarifier la question, ou si je manque un gros point dans le processus de programmation FPGA. Merci!
la source
Réponses:
Oui, cela fonctionnerait très bien.
En fait, les outils de développement de la plupart des FPGA vous permettent de programmer le flash externe directement via la propre connexion JTAG du FPGA, éliminant ainsi le besoin d'une interface de programmation distincte pour le flash.
la source
Lorsque vous dites "le fichier bitmap [sic] [sic] généré par", la réponse est Oui tant que vous choisissez le bon - vous avez fait une légère erreur en utilisant l'article défini car il n'y a pas qu'un seul fichier généré .
Par exemple, Quartus peut produire des fichiers SOF, POF et JIC. Le dernier est ce que vous utilisez pour la programmation indirecte via le FPGA JTAG. Il ne serait pas utile d'écrire cela sur le flash SPI. Le SOF est destiné au chargement sur JTAG pour exécuter votre conception dans le FPGA de manière transitoire. POF est ce dont vous avez besoin pour charger dans la puce flash.
Voir FPGA: Bitstream vs SRAM Object File pour de nombreuses informations utiles sur la signification des différents fichiers pour chacun des différents fournisseurs.
la source
Si je comprends bien votre question, vous voulez écrire la configuration FPGA (par exemple, votre modèle HDL compilé) sur une EEPROM SPI ou SPI Flash et vous voulez que le FPGA se programme lui-même en utilisant les données sur le SPI IC.
(Si je comprends bien la réponse de Dave Tweed, il a compris votre question d'une manière différente.)
Au moins de nombreux dispositifs de mémoire flash SPI ne fonctionneraient PAS car les circuits intégrés de mémoire flash SPI nécessitent l'envoi d'une certaine forme d'onde (par exemple, l'adresse à lire) pour que les données soient lues à partir du circuit intégré.
Cette forme d'onde n'est pas la même pour tous les périphériques de mémoire Flash. Même en ne regardant que les cartes mémoire SD (qui peuvent également être utilisées comme mémoire flash SPI), nous trouvons deux variantes nécessitant l'envoi d'une forme d'onde différente à la carte avant que celle-ci ne lise les données.
Lors du réglage correct des broches de mode du FPGA, le FPGA enverra une forme d'onde qui demandera à un périphérique de mémoire série d'envoyer les données. Cependant, comme différents circuits intégrés nécessitent des formes d'onde différentes, la forme d'onde ne sera pas comprise par tous les circuits intégrés Flash mais uniquement par certains types.
Je sais qu'Altera produit des CI Flash ou EEPROM spéciaux qui sont compatibles avec leurs FPGA.
la source
Si vous souhaitez écrire un flux binaire FPGA sur le flash sans les outils de programmation officiels FPGA, vous voudrez probablement convertir ce fichier bitstream en un format binaire ouvert que vous pouvez facilement lire, comme le binaire brut, Intel HEX ou Motorola SREC ( exemple ). Cela supprimera tous les en-têtes propriétaires qu'un flux binaire FPGA peut contenir.
De cette façon, vous pourrez programmer le flash en utilisant les outils du fabricant du flash (ou vos propres outils), ou même commander les puces flash préprogrammées avec votre flux binaire FPGA.
la source