Forum général.cherche-matériel par ou commencer pour "jouer" avec les FPGA et ce genre de circuit programmables ?

Posté par  . Licence CC By‑SA.
Étiquettes :
6
22
mai
2023

Bonjour

Me mettre a "jouer" avec les FPGA est un truc qui me trotte dans la tête depuis un bon moment. Bon .. en ce moment je suis sur d'autres sujets, mais ça ne m'empeche pas de commencer à m'interesser au sujet à mes temps perdu. Cependant, je ne sais pas trop par ou commencer, quel materiel me procurer et pour quoi faire, ni quelles lecrures et tutoriels à suivre, et quel projet concret pour me permettre de faire des trucs sympas sans me lasser. Auriez-vous des suggestions à faire ? Sites internet, tutoriels, livres/materiels, idées de projets ..

Je sais, google pourrait etre mon ami, mais j'ai deja tente de faire quelques recherches sans vraiment trouver de reponse satisfaisante ( entre le pinterrest quasi systematique, les offres comerciales sponsorisées n'ayant rien a voir avec ma demande, et plein d'autres choses je me sens un peu perdu).

Merci d'avance pour votre retour.

  • # Logisim

    Posté par  . Évalué à 7.

    Il existe plusieurs approches pour jouer avec les FPGA. J'aime bien celle du "hardeux sans matériel". Elle consiste à jouer avec un simulateur de portes logiques en partant d'exemples simples pour petit à petit, réaliser par exemple un processeur généraliste ou des circuits plus spécialisés.

    Pour cela, Logisim est assez utilisé comme support d'enseignement, tu devrais trouver de quoi démarrer sur des supports de cours d’architecture des ordinateurs, celui-là par exemple.

  • # ghdl

    Posté par  (site web personnel) . Évalué à 4.

    Pour un compilateur vhdl :
    https://fr.m.wikipedia.org/wiki/GHDL

    "La première sécurité est la liberté"

  • # carte d'éval

    Posté par  . Évalué à 4.

    Si tu veux jouer avec un vrai FPGA et pas faire seulement des simulations, il faudra acheter une carte de développement. On en trouve à un peu moins d'une centaine d'euros et ça peut monter a des milliers d'euros pour les très grosses cartes avec de très gros FPGA… En gros tu as principalement 2 fournisseurs de FPGA : Altera (maintenant Intel) et Xilinx (maintenant AMD). Il faudra aussi passer par des outils propriétaires pour la synthèse et le placement routage (je préfère le terme allocation de ressources). Ces outils sont en effet lié à l'architecture du circuit, et chaque vendeur de FPGA possède son propre outil (vivado pour xilinx et quartus pour altera). Ces outils tournent très bien sous linux. Il existe des tentative d'outils libres, mais quand on débute ça complique sans doute les choses.
    Pour ce qui est de la simulation avant programmation, comme indiqué dans un autre poste ghdl fait très bien le boulot.
    Enfin su tu as déjà bricolé avec des cartes style raspberry ne t'attend pas aux mêmes résultats, les cartes de dev sont souvent plus austère, et limitées au niveau interface. Cetains FPGA embarquent des coeurs de proc, mais la aussi l'installation d'un OS et faire causer ce proc avec l'électronique du FPGA ne s'improvise pas.
    Ca peut être sympa d'avoir une carte avec des afficheurs 7 segments et quelques boutons poussoir, ça permet de débuter en douceur avec des exemples simples (afficher le résultat d'un compteur, faire un chronometre…).

  • # Il faut aimer nager

    Posté par  . Évalué à 4.

    Comme dit plus haut, tu auras deux gros choix à faire:
    - La marque du FPGA. Les deux gros fournisseurs sont AMD/Xilinx et Intel/Altera, mais il existe aussi Lattice.
    - Le choix du langage HDL. En gros, il y a VHDL, Verilog, et SystemVerilog. Il existe d'autres langages comme le SystemC ou myHDL, mais ils sont vraiment de niche.

    Les outils développement te seront plus ou moins imposés par la marque du FPGA, ou l'inverse! Certaines personnes préfèrent choisir en fonction des outils, d'autres en fonction du matériel.

    Il faut aussi vaguement penser à ce que tu veux faire avec ton FPGA. Est-ce que tu t'intéresses plus à un moyen d'intéragir avec le monde (mesures, contrôle d'appareil), ou plutôt accélérer des calculs. Dans le premier cas, il te faut une carte avec des interfaces externes, dans l'autre un FPGA monté sur un stick USB sera suffisant.

    Au lieu de continuer à étaler l'arbre des possibles je vais proposer quelque chose. Cela permettra peut-être de lancer la discussion.

    J'aime bien la carte Arty A7 pour faire du prototypage de certains blocs ASIC et contrôler un DUT au labo.

    Arty A7

    Elle n'est pas trop chère pour une carte FPGA (environ 200$). Elle peut être alimentée et programmée par un cable USB.

    Sur la carte, il y a plein d'interfaces qui vont de la plus simple (LEDs, switches, boutons) à la moins simple (une mémoire DDR3). Il y a aussi un connecteur pour un shield Arduino et quatre connecteurs PMODs. Ces connecteurs permettent de brancher différents accessoires. Le niveau de tensions des IOs de l'Arty A7 et des PMODs sont à 3.3V. Quand on connecte un PMOD, les terres sont connectées aussi, ce qui peut éviter pas mal de maux de crâne quand le système ne fonctionne pas.

    Digilent, le fabricant de la carte, fournit le fichier de contrainte du pinout, ce qui est franchement cool pour commencer.

    Cet environnement permet de commencer très doucement (comme allumer une LED quand on presse un bouton) pour progresser vers quelque chose de plus compliqué (implémenter un RISC-V).

    Le FPGA est supporté par la version gratuite de Vivado, l'outil de développement associé. Vivado inclut un simulateur qui est loin d'être parfait, mais qui a l'avantage d'être intégré. Cela t'évitera de devoir compiler les librairies Xilinx pour un simulateur externe.

    Il reste le choix du langage HDL. Mon conseil serait de démarrer directement avec SystemVerilog. Je le trouve moche à lire (dixit le gars qui a plus de 10 ans de VHDL dans les pattes) et surtout il laisse à mon goût beaucoup trop de liberté au développeur; ce qui peut laisser des bugs jusqu'à très tard dans le développement du circuit. Par contre, je trouve SystemVerilog très puissant au niveau des structures de données et surtout au niveau des possibilités de tests (par exemple, la randomisation contrainte des patterns de test est incluse dans le langage). Il me semble aussi qu'il y a plus de projet open source en Verilog/SystemVerilog qu'en VHDL. Et finalement, il me semble que l'industrie est en train de basculer vers SystemVerilog (cette impression vient probablement du fait que j'ai dû faire le basculement moi-même).

    Mes propositions sont discutables et on peut en discuter. Par exemple, si la carte est trop chère, on peut essayer de trouver une alternative.

  • # icestorm et lattice ice40 et autres liens

    Posté par  . Évalué à 3. Dernière modification le 24 mai 2023 à 22:56.

    Je regarde aussi les FPGA et les sets d'instructions, et les microcontroleurs depuis quelques mois. Le Web est rempli de truc à regarder. Pas mal de bouts de verilog et de VHDL sur GitHub.

    • j'ai commencé avec des vieilles datasheet de 8051 et de microcontroleur PIC12 PIC16 (les vielles archis sont hyper bien documentées et c'est facile d'avoir une idée de comment ça fonctionne
    • Il y a un site historique avec du open hardware verilog/vhdl sur https://opencores.org
    • Le code de ce projet tiens en 1 page avec 4 instructions pour tout faire (super bien pour comprendre le tout) https://github.com/cpldcpu/MCPU
    • Le gros soucis c'est de programmé toutes ces petites merveilles, à compiler c'est la mort (et je suis microélectronique et pas du tout informatique…). La programmation en assembleur ça a aussi l'air d'être horrible. Au fur et à mesure de mes explorations je suis tombé sur Forth, qui repose sur les stack machines. Il y a un bouquin en ligne pour comprendre le fonctionnement https://www.forth.com/starting-forth/0-starting-forth/ et quelques projets niveau hardware
    • Dernier lien trouvé qui était bien rigolo: les One Page Code CPU https://revaldinho.github.io/opc/

    À titre personnel, le verilog me parait plus digeste et moins verbeux

    Côté matos, j'avais initialement trouvé les cartes artix7. Au fur et à mesure des explorations, je suis tombé sur icestorm: un projet en logiciel libre de synthèse/placement/routage pour FPGA Ice40 de Lattice. Ces jouets sont relativement abordables, les datasheets sont bien faites.

    https://www.latticesemi.com/products/developmentboardsandkits/ice40ultraplusbreakoutboard

    Les délais d'attente sont longs, mais en gros je viserais cette carte 62.40$ qui a le FPGA le plus gros de la gamme: Ice40 UltraPlus. Ou un truc du genre : il y a d'autres cartes avec ce FPGA faites par d'autres boites. Il faut voir ce que les fournisseurs européens ont, j'ai un peu peur des frais de port et de douanes.

    Ice40UltraPlus:

    • plus de 5000 LUT/FF pour jouer
    • 120kb de mémoire Two Port en blocs de 4kb configurables en 16 bits 8 bits 4 bits 2 bits, et directement programmable
    • 1 PLL et oscillateur sur puce
    • des blocs DSP avec des multiplicateur 16x16bits et des adders 32+32bits, a priori la synthese est capable d'inférer ces fonctions et de les utiliser (ça a l'air d'être rigolo)
    • 1Mb de mémoire RAM toute conne qui tourne à 70MHz
    • les trucs de protocole SPI et I2C, j'ai déjà vu ça quand j'ai lu de la doc sur les microcontroleurs
    • les IOs sont capables de gérer du PWM
    • le site de Lattice regorge d'IP core (des implémentations de trucs) et de Reference Design => pas sûr si ça impose les tools maison. Un exemple un ADC sigma delta https://www.latticesemi.com/products/designsoftwareandip/intellectualproperty/referencedesigns/referencedesign03/simplesigmadeltaadc
    • les tools maisons pour cette famille de FPGA sont gratuits et disponible pour Linux

    Ça a l'air d'être une bonne plateforme pour jouer. Si quelqu'un a des cartes avec un iCE40 UltraPLus UP5K à conseiller je suis tout ouï

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.