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.)
Réponses:
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:
Les inconvénients:
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).
la source
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
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.
la source
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
ping
commande 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.la source
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.
la source