Projet d'apprentissage du VHDL


16

Je suis un étudiant en EE et je peux écrire des programmes [au moins simples] dans plus de langues que je n'ai de doigts. Je viens de commencer à apprendre le VHDL et je me demandais quel serait un bon projet pour vraiment connaître la langue et les outils pertinents? J'ai du mal à en trouver un parce que c'est un style de programmation vraiment différent pour moi.

J'ai fait des choses simples comme des ajouts, mais je recherche un projet à plus long terme (c'est-à-dire un mois environ).

Dans le cas où c'est pertinent, j'ai Xilinx Webpack et une carte Digilent Spartan3.

Réponses:


7

Mon projet FPGA «bonjour le monde» était un contrôleur de matrice LED avec PWM et entrée de flux série. Le résultat final était agréable ( http://lbw.axe-man.org/led1.wmv ) mais j'avoue que j'en ai fait une partie avec l'éditeur de schéma Altera Quartus pour voir comment les parties VHDL étaient décrites.


C'est une bonne idée; Je viens de prendre une matrice sans contrôleur 16x16 et un contrôleur serait génial. vidéo soignée!
penjuin

Jolie vidéo! Et cet éditeur de schéma est là pour être utilisé.
Monica

10

Puisque vous semblez intéressé par la programmation, vous pouvez créer un microprocesseur simple.


FORTEMENT recommandé. Vous finissez par vous renseigner non seulement sur le côté FPGA et VHDL, mais aussi sur le fonctionnement des processeurs, ce qui est nécessaire en termes d'outils de développement pour prendre en charge un processeur, etc.
Chris Stratton


4

J'ai aimé travailler avec Hans chez hardhack cette année sur le projet Rekonstrukt pour construire un synthétiseur de base dans un FPGA. Les projets LED sont également bons, mais rien de tel que de brancher le FPGA sur une chaîne stéréo. Il ne se construit pas à partir de zéro, comme le ferait un projet LED, car le projet est basé sur un processeur à cœur ouvert qui prend en charge. Donc, au début, vous apprenez à charger le FPGA avec le projet, puis vous pouvez jouer avec les enveloppes dans FORTH. Mais lorsque vous commencez à en savoir plus sur les composants internes du FPGA, c'est lorsque vous souhaitez ajouter des fonctionnalités, ce qui nécessite ensuite de creuser dans le VHDL.


2

Un projet que j'ai aimé faire implémentait le jeu Milton Bradley Simon sur un FPGA.

Dans mon université, notre classe EDA utilise le même tableau que vous mentionnez. Certains des projets mis en œuvre comprenaient:

  • Traitement d'image: filtre médian, étirement de l'histogramme, détection des contours
  • Cryptographie: AES, divers algorithmes de hachage, etc.
  • Communication: Ethernet, USB, I2C, etc.
  • Jeux: Pong, envahisseurs spatiaux, etc.

Cela peut vous donner quelques idées.

J'appuierai l'idée opencores.org ainsi que la mise en œuvre de votre propre microprocesseur. Puisque vous avez un FPGA Xilinx, vous pouvez également envisager de faire quelque chose avec microblaze ou picoblaze.

Modifier: mise en forme.


1

J'ai écrit du code vhdl pour xilinx virtex core il y a quelque temps. c'était une implémentation de réveil. C'est ce que j'ai fait:

  • Lisez beaucoup le manuel vhdl - je devrais le réviser maintenant mais je l'ai trouvé assez simple et facile à utiliser hdl :-)
  • Suite xilinx utilisée (compilateur, synthétiseur) pour obtenir le flux binaire
  • Téléchargement des flux binaires à l'aide de jtag

Rincé, répété 1-3. Je voudrais souligner que la génération de flux binaire est entièrement intégrée à l'IDE de Xilinx. Il vous suffit d'avoir un ensemble clair de logiques à implémenter en HDL; tout le reste est fait par l'IDE.


1

Un oscillateur à commande numérique serait amusant. Je viens de faire un design avec ma carte compatible Arduino (voir http://tinyurl.com/ydmz2su ) mais ce serait parfait pour un FPGA.

Voici quelques références de conception.

Snell, John 1988 "Conception d'un oscillateur numérique qui générera jusqu'à 256 ondes sinusoïdales à faible distorsion en temps réel" Fondements de l'informatique musicale. Cambridge, Mass.: MIT Press

Moore, F. Richard 1988 "Table Lookup Noise for Sinusoidal Digital Oscillators" Foundations of Computer Music. Cambridge, Mass.: MIT Press


0

Je fais un peu de CPU. C'est une belle façon arrondie de couvrir toutes les bases.

Vous couvrirez toutes les bases d'un grand projet en VHDL et serez exposé à tous les sujets principaux de la conception VHDL (horloges, entrées, sorties, logique, bus et conception séquentielle de manière la plus visible) ainsi qu'à de nombreux composants électroniques et informatiques de base concepts de conception et d'architecture comme les registres, les opérations de données, la mémoire et l'arithmétique des ordinateurs.

Vous pouvez commencer par simplement ajouter et soustraire, puis ajouter plus de fonctionnalités à mesure que vous apprenez, en progressant vers un ordinateur entièrement fonctionnel (quoique simple ... ou comme je préfère l'appeler "rétro"). Du moins, c'est mon plan.

De plus, avoir votre propre ordinateur personnalisé sur une puce est tout simplement cool :) Comme un Raspberry Pi 16 bits: P

Autres projets FPGA courants:

- Synthétiseur musical

-Générateur d'effets DSP

-Contrôleur / interrupteur MIDI

-Bitcoin miner

-Emulateurs de console de jeux vidéo

- Boucliers Arduino personnalisés

-Processeurs parallèles (très utiles pour certains problèmes mathématiques auxquels les ordinateurs conventionnels ne sont pas excellents)

-Robotique / systèmes de contrôle

-Acquisition de données (quelques modèles d'oscilloscopes pour les FPGA si vous savez comment travailler avec des amplis opérationnels)

Le VHDL à lui seul n'est pas horriblement compliqué. La chose la plus importante à retenir est que vous concevez un circuit numérique électronique physique, et non pas l'écriture d'un programme pour un microcontrôleur. Votre simulation n'est pas un programme qui va fonctionner ligne par ligne, donc ne vous laissez pas tromper par la similitude superficielle avec C, VHDL est un paradigme très différent.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.