FPGA - Programmation DIY

9

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!

Blake Lucas
la source
Par "bitmap", vous voulez dire flux binaire?
Eugene Sh.
Cette question a déjà été posée dans une autre incarnation
Voltage Spike
1
Sur votre première conception de carte FPGA, je suggère de fournir 2 méthodes de programmation de périphérique (plus l'en-tête JTAG du fournisseur). Placez les cavaliers pour vous permettre de changer les broches MODE au besoin. Il est très facile de les gâcher et il est bon d'avoir des plans de sauvegarde. Assurez-vous également de fournir des points de test pour INIT et DONE (ou tout ce que Lattice utilise pour indiquer l'état de programmation).
The Photon
2
Le contrôle de processus requis pour monter des BGA, en particulier ceux à nombre de broches élevé, est plus strict que quelque chose comme un QFP. Le fait qu'il y ait plus de balles signifie qu'il y a une plus grande probabilité de pontage ou de mauvaises connexions et comme elles sont cachées, vous ne pourrez pas détecter les problèmes (sauf si vous avez une radiographie) avant d'exécuter la chose pour voir si vous avez quelque problème que ce soit. Et si vous remontez le composant, vous devez le rebooter, ce qui nécessite plus d'équipement. Les FPGA sont également des puces coûteuses que vous ne voulez pas endommager. Les grands BGA sont là où des choses comme les préchauffeurs de PCB deviennent nécessaires.
DKNguyen
1
Je travaillais dans un endroit où les techniciens ne faisaient que retravailler toute la journée et ils avaient des stations à air chaud (contrôle de la température plus strict et plus fiable que le pistolet à chaleur) et ils n'étaient pas en mesure de souder à la main de manière fiable les BGA. Je ne pense pas qu'ils avaient un préchauffeur, donc si vous voulez l'essayer, achetez un préchauffeur et utilisez une puce bon marché (peut-être même un paquet BGA factice en guirlande pour que vous puissiez vérifier vos connexions électriquement jusqu'à ce que vous l'ayez cloué avant de faire le chose réelle).
DKNguyen

Réponses:

12

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.

Dave Tweed
la source
1
Et certains, comme Lattice Mach X02, ont le flash intégré, vous n'avez donc besoin que de quelques résistances et d'un en-tête 5x2 pour vous connecter au module de programmation Lattice.
Spehro Pefhany
Je savais que vous pouvez programmer le flash directement via JTAG à partir d'outils comme Vivado / Quartus, ce que j'espérais être en mesure de le faire sans avoir besoin d'acheter un câble spécifique au fournisseur - utilisez simplement un FT2232H et écrivez le flux binaire (pas bitmap?) moi-même. Je ne pense pas que cette puce soit prise en charge par Quartus, et ne l'est pas ouvertement par Vivado (même s'ils l'utilisent sur les cartes Nexys et Basys).
Blake Lucas
1
Oui, vous pouvez programmer le flash avec le fichier bit en utilisant d'autres moyens. L'un de vos programmeurs pour vos MCU peut probablement le faire. Je sais que mon Segger J-link le peut certainement.
DKNguyen
@Toor: En effet, ce n'est pas un câble spécifique au fournisseur, mais il a toujours une prise en charge codée en dur dans les outils du fournisseur, et le Segger est un peu plus cher qu'un FT2232H.
Ben Voigt
2
Presque tous les principaux fournisseurs fournissent une documentation d'ingénierie pour permettre aux flux de bits de téléchargement déterminés dans leurs parties (FPGA et flashs de configuration personnalisés) avec des outils personnalisés, car cela est parfois souhaitable dans les systèmes intégrés ou les bancs d'essai. Il peut être plus simple d'utiliser l'équipement pris en charge par le fournisseur (en particulier au début), mais j'ai mis en place des alternatives pour des projets spécifiques à plusieurs reprises au fil des ans. La partie la plus difficile d'un projet de carte FPGA d'origine peut être tout le soutien dont un FPGA a besoin sur la carte - de nombreuses paires de puissance à router et à contourner, souvent pour plusieurs tensions distinctes.
Chris Stratton
3

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.

Ben Voigt
la source
1

Un FPGA fonctionnerait-il si je ... connectais la mémoire flash aux broches SPI d'un FPGA (avec la configuration MODE correctement réglée)?

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.

Martin Rosenau
la source
Évidemment, une carte SD ne fonctionnera pas, car aucun FPGA (à ma connaissance) ne prend en charge SD / MMC comme protocole de configuration. La plupart des FPGA s'en tiennent à AT24 / AT26 / AT45.
Dmitry Grigoryev
1

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.

Dmitry Grigoryev
la source