Simuler la conception FPGA sans avoir le matériel réel

9

Je suis nouveau sur FPGA et je suis actuellement en classe HDL (Verilog en particulier). J'ai des connaissances suffisantes en conception numérique comme les circuits combinatoires et séquentiels.

Je veux créer un projet similaire à celui présenté dans cette vidéo YouTube .

Je sais également que Xilinx ISE peut traiter des signaux logiques et simuler des formes d'onde. A-t-il des capacités supplémentaires telles que l'obtention des signaux d'entrée via USB, un appareil photo, etc. et la sortie sur votre ordinateur.

Est-il possible d'exécuter ce projet (comme une simulation sur ordinateur) sans acheter une véritable carte FPGA? Ce que je veux dire, c'est que je peux construire, coder et exécuter ce projet sur mon ordinateur, et simplement brancher ma caméra via USB, puis laisser les signaux vidéo entrants être traités par des simulateurs HDL comme Xilinx ISE, etc. (sans vraiment acheter une carte FPGA et synthétisez votre projet là-bas, je n'ai actuellement pas le budget pour en avoir une)

(Ce que je veux vraiment dire est d'interfacer la conception HDLl dans des sources du monde réel, du code C, etc.)

WantIt
la source
5
Je ne sais pas si vous pouvez le faire avec le simulateur de Xilinx, mais quelque chose comme Icarus Verilog laissera votre interface de simulation au code C qui pourrait obtenir des données à partir de sources réelles; Cependant, il est probable que les ordres de grandeur soient plus lents qu'en temps réel, donc le traitement d'une source vidéo en direct serait difficile.
Chris Stratton
1
oh là, c'est la phrase que je trouve,
m'interfaçant avec des
2
@vvavepacket a voté pour les commentaires / publications afin de remercier le commentateur / affiche.
Chetan Bhargava
1
Le FPGA dans la vidéo ressemble à Altera DE2. C'est entre 200 et 600 USD selon la licence et la puce. Il y a des simulateurs sur csc.kth.se/~emille/niisim
Niklas
2
Le Terasic DE0-nano est de l'ordre de 80 $ et peut s'interfacer avec des caméras et des LCD; en fait, ils ont des démos de cela sur leur site Web. Pas affilié avec eux, mais les DE0-nano ont un joli petit FPGA sur une carte à un prix décent. J'ai toujours détesté le prix de la plupart des cartes de développement.
akohlsmith

Réponses:

5

Les outils Xilinx ne peuvent pas s'interfacer en temps réel pour autant que je sache, pas plus que ModelSim (utilisé par Libero IDE d'Actel)
Je ne connais pas les simulateurs open source, il y a des projets assez exotiques donc il est possible qu'il y ait quelque chose qui pourrait le faire.

Cependant, cela peut être vous une réponse que vous n'avez pas demandée (je la supprimerai si ce n'est pas utile), mais j'envisagerais de construire votre propre carte FPGA pour ce faire ou au moins de commencer en cours de route. J'ai gravé ma première carte FPGA et bien qu'elle soit très simple (la carte n'est pas le processus ;-)), elle m'a beaucoup appris assez rapidement.

Avantages:

  • Pas cher
  • Sautez à fond et découvrez tout ce que vous devez savoir sur les considérations matérielles. Vous oblige à lire la plupart des fiches techniques en premier et à écrire votre propre code de démarrage, ce qui à mon humble avis est souvent meilleur que l'approche de la carte de développement plug and play pour l'apprentissage.
  • Ne mettez au tableau que ce dont vous avez besoin.
  • Allez plus loin vers votre objectif d'une véritable conception de travail avec peut-être les mêmes efforts / recherches que la recherche de simulations en temps réel.

Les inconvénients:

  • Vous devez toujours acheter un programmeur, bien que des versions bon marché des programmeurs Xilinx / Altera soient disponibles sur eBay.
  • Si la conception et les problèmes d'intégrité des PCB / signaux ne sont pas quelque chose sur lequel vous souhaitez vous concentrer, alors vous ne serez peut-être pas intéressé par une grande partie des connaissances à acquérir en le faisant de cette façon.

Je comprends que la gravure de votre propre carte est probablement inutile, je ne l'ai fait que parce que j'avais les FPGA là-bas, j'étais impatient et je ne voulais pas attendre 2 semaines pour l'arrivée d'un PCB. Il existe des offres extrêmement bon marché ici pour les cartes à 2 couches, qui feraient au moins pour exécuter votre conception (peut-être à des vitesses inférieures à celles souhaitées - normalement, le nombre de couches minimum pour une conception FPGA à haute vitesse serait de 4, mais ce sont les bien plus cher)

Quoi qu'il en soit, Spirit Circuits propose une offre de PCB "os nus" à 2 couches entièrement gratuits (un par mois, un design, pas de masque ou de sérigraphie), ce qui est pratique pour un design unique.
De plus, pour les cartes prototypes bon marché à 2 et 4 couches, ITead et Seed Studio coûtent aussi peu que 10 $ pour 10 cartes (ou peut-être 5 à ce prix).

Oli Glaser
la source
prise très intéressante à ce sujet! et encourageant aussi
davidbak
6

Le pack Web standard ISE Xilinx (la version gratuite que vous pouvez télécharger sur xilinx.com) comprend un simulateur appelé iSim. Ce n'est pas un excellent simulateur, mais il est entièrement fonctionnel et le prix est correct.

Bien que je n'aie pas utilisé les outils Altera, cela me surprendrait si un simulateur n'était pas inclus.

Mais ... Vous devez savoir ce qu'un simulateur peut et ne peut pas faire. Pour commencer, il ne peut pas simuler un FPGA fonctionnant à pleine vitesse. En fait, ils sont assez lents. Selon la complexité du FPGA simulé, cela ne m'étonnerait pas de voir qu'il faut 1 minute pour simuler 1 ms de "temps simulé". Si vous voulez simuler une heure de "temps simulé", cela nécessiterait 1000 heures de temps réel.

De plus, un FPGA simulé ne peut pas communiquer directement avec des éléments comme votre port USB. Le FPGA simulé communique avec un "banc d'essai". Le banc de test est un morceau de code VHDL ou Verilog qui alimente les entrées du FPGA (ou des parties du FPGA) et vérifie la sortie de votre FPGA. Vous pouvez faire des choses assez complexes dans un banc de test, comme utiliser des nombres à virgule flottante, lire et écrire des fichiers et exécuter une logique impossible à synthétiser.


la source
1
Altera a des éditions gratuites de Quartus qui incluent ModelSim. La version gratuite de ModelSim limite votre vitesse de simulation et la version gratuite de Quartus limite le nombre de cœurs de processeur utilisés pour synthétiser, mais sont par ailleurs pleinement fonctionnels.
akohlsmith
1
Altera ModelSim ne prend pas en charge la co-simulation de VHDL et Verilog dans la même conception.
shuckc
3

Je ne connais aucun simulateur qui se connecte directement aux signaux arrivant sur un port USB (ou autre matériel).

Au moins en théorie, il serait possible d'écrire un logiciel qui prendrait les signaux arrivant sur un port, et de les traduire dans un fichier de banc d'essai qu'un simulateur pourrait traiter. Malheureusement, je ne connais aucun logiciel existant pour le faire, et l'écrire vous-même serait décidément non trivial.

Jerry Coffin
la source
alors le meilleur moyen est d'obtenir une carte fpga d'entrée de gamme à faible coût pour n00bs comme moi
WantIt
Vous n'avez pas besoin de passer par un fichier de test si vous avez un simulateur qui prend en charge une interface pour coder un tel VPI, cependant, étant donné que le simulateur exécutera des ordres de grandeur plus lentement qu'en temps réel, il peut être plus facile de gérer avec les données capturées dans un fichier qui peut être lu à la vitesse de la simulation.
Chris Stratton
@ChrisStratton Je suis intéressé par l'idée des données capturées dans un fichier. Des ressources pour ça? Merci
WantIt
Cela dépendrait entièrement des périphériques que vous souhaitez utiliser comme sources de données.
Chris Stratton
3

Vous devrez utiliser une interface de co-simulation (DPI, VPI, VHPI, FLI) qui vous permet d'écrire du code qui se connecte au simulateur et ainsi de faire le pont entre le RTL exécuté en simulation et le vrai matériel sur votre machine.

Les problèmes importants que vous rencontrerez (en dehors des interfaces mal documentées) sont liés à la synchronisation et au timing. RTL s'exécutant en simulation est beaucoup plus lent que le vrai matériel - vous devrez être en mesure de parcourir les interactions avec l'interface externe pour correspondre à la vitesse de simulation. Certaines interfaces matérielles n'aimeront pas ça! Par exemple, si vous utilisez TCP, vous devrez peut-être truquer les temporisateurs dans la pile du noyau pour éviter les retransmissions parasites, etc.

Icarus prend en charge le VPI et est gratuit pour que vous puissiez expérimenter sans dépenser d'argent en licences. Vous voudrez peut-être examiner les cadres existants qui effectuent une partie de la co-simulation de levage de charges lourdes et fournissent une abstraction plus propre au simulateur. Un tel cadre est Cocotb , une bibliothèque open source qui fournit une interface Python au simulateur. ( Avertissement: je suis l'un des développeurs de cocotb.)

Un exemple qui peut être pertinent: hier, j'ai créé du RTL pour répondre aux requêtes ping et créé un banc de test qui ouvre une interface TUN. Vous pouvez ensuite envoyer une requête ping à l'interface à l'aide de la pingcommande et la RTL exécutée en simulation reçoit la requête ping et répond. L'ensemble du banc d'essai est composé de moins de 50 lignes de Python! Le code source de cet exemple est sur Github et il fonctionne sur Icarus sous Linux.

Chiggs
la source
0

Dans la grande majorité des cas, tout ce que vous faites dans la simulation reste dans la simulation. Vous ne pouvez pas y accéder à partir de matériel réel - vous devez avoir un modèle de simulation du matériel réel.

Cependant, si vous êtes prêt à faire des efforts, la plupart des simulateurs ont une interface avec du code arbitraire. Dans Verilog, c'est une interface assez standard si je comprends bien, donc le côté Verilog des choses portera entre les simulateurs. En VHDL-land, il existe une façon standard de le faire, mais au moins l'un des grands fournisseurs a sa propre façon de le faire!

Gardez également à l'esprit que l'interfaçage en temps réel (c'est-à-dire au rythme auquel le FPGA le ferait) est très peu probable - et le reste de votre simulation (le HDL) ne fonctionnera pas non plus en temps réel. Comme indiqué dans les commentaires, le traitement simulé en temps réel de la vidéo n'est pas possible de cette manière.

Personnellement, je n'ai jamais eu besoin d'essayer, je trouve que je suis plus productif en écrivant des modèles de matériel et en exécutant le tout en VHDL.

Mais ne négligez pas les avantages de la simulation - c'est un moyen beaucoup plus rapide de savoir si les choses fonctionnent (les compilations prennent quelques secondes) que de créer des flux binaires (les compilations prennent des dizaines de minutes à des heures) et de les essayer dans le matériel.

Martin Thompson
la source
Faux, voir les commentaires sur la question.
Chris Stratton
OK, j'aurais dû être plus clair - je limitais ma réponse au niveau "Je suis nouveau sur le FPGA" :) Réponse mise à jour
Martin Thompson