Des projets novices sur un FPGA?


11

Je suis à deux semaines de la fin de mon premier cours collégial de conception de logique numérique, et apparemment, il n'y aura pas de projet final - juste un examen final fastidieux.

Donc, comme tout étudiant curieux le ferait, j'ai cherché à savoir ce que sont réellement les FPGA et ce que j'étais nourri à la cuillère en classe. Et j'ai décidé de terminer un simple projet FPGA. J'utilise un FPGA Basys2 Spartan-3E, et je connais la logique numérique et j'utilise ISE pour pousser les portes logiques, mais je ne connais pas VHDL / Verilog (je suis sûr que je pourrais le ramasser facilement).

Quelqu'un a-t-il des idées de projets pour un débutant? J'ai fait beaucoup de démonstrations en laboratoire, mais rien de trop sophistiqué.


Liste de souhaits: affichage vidéo 1080p, ... que dire que je m'arrête là :-)
Russell McMahon

1
Consultez le site fpga4fun.com .
armf

3
Attention aux dev-boards fpga4fun.com. Leur documentation est de la merde et ils refusent de publier les schémas de développement .
Connor Wolf

Réponses:


5

J'ai trouvé que le "FPGA Prototyping By Verilog Exemples: Xilinx Spartan-3 Version" de Pong Chu était un livre très utile. Il est destiné à une carte Spartan-3 différente de celle que vous avez mentionnée, mais devrait toujours être utile.

Il existe également une édition VHDL si vous préférez emprunter cette voie


4

Vous avez VGA à ce sujet par son apparence. La vidéo suscite toujours de l'intérêt pour mon expérience :)

Voici un plan que vous voudrez peut-être essayer (aucun tampon de cadre requis):

  1. Obtenez un écran VGA de couleur pure
  2. afficher un fondu horizontal du noir à la couleur unie
  3. Maintenant fondu verticalement du noir au rouge et horizontalement du noir au vert 3a. (créez un arrière-plan spécifié par algorithme plus intéressant que vous pouvez rendre en temps réel)
  4. créer un moteur de sprite simple qui superposera une petite forme arbitraire à un emplacement arbitraire - vous pouvez utiliser 1 BRAM pour les données de sprite
  5. montrer quelques sprites différents (1 BRAM chacun)
  6. créer une logique de mise à jour pour faire rebondir les sprites (et les séparer) - ajouter la détection de collision à la logique des sprites.
  7. créer un sprite "à palette" que vous pouvez contrôler avec les interrupteurs, utilisez-le pour arrêter les sprites qui disparaissent de l'écran
  8. Ajouter un mécanisme de notation

Je pense que tout devrait tenir dans un 250E. (L'horloge VGA est lente en termes de FPGA, vous pouvez donc multiplier par 4-8x avec le DCM qui permettra à un moteur de sprite de se multiplexer sur plus d'une instance de sprite)


3

Ce cours en ligne gratuit écrit par Hamster est incroyable et est écrit en pensant aux Basys 2 et Nexys 2 .

J'ai personnellement utilisé le Basys 2 et j'ai beaucoup appris en suivant ce cours. Il passe en revue tous les aspects du conseil d'administration de Basys et de nombreux concepts pour obtenir la plupart des projets au-delà du cours.


2

Comme pour tout le reste, commencez par un projet Hello World , dans ce cas - clignotez une LED - et faites sa variable de période juste pour le plaisir.

Pour ce faire, vous devrez apprendre à créer un compteur dans Verilog / VHDL. C'est un bon début pour apprendre les subtilités du HDL car vous apprendrez à:

  1. Inférer les opérations matérielles - en utilisant le code RTL au lieu du code au niveau de la porte. Vous apprendrez à concevoir un compteur / décompteur pré-chargé et réinitialisable avec le code RTL.
  2. Apprenez à faire une conception synchrone - ce qui est de toute façon bon pour la plupart des FPGA et est la base de presque toutes les conceptions de systèmes numériques.
  3. Apprenez à vous interfacer avec le monde extérieur en utilisant les E / S du FPGA. Cela vous apprendra comment configurer et implémenter des choses sur un FPGA.

Une fois que cela est fait, rendez-vous aux opencores et commencez à pirater des projets plus importants. Vous trouverez ici de nombreux autres projets amusants de certains de nos membres, y compris le vôtre. :)


1

Martin suggère que vous ayez la capacité VGA.

Qu'en est-il d'un "cadre photo" décent qui permet un meilleur contrôle des photos que tout autre type disponible.

  • La plupart gèrent mal les sous-répertoires.

  • Aucun ne permet un ordre d'affichage aléatoire - ce qui est un avantage très important lorsque vous avez un grand nombre de photos.

  • Possibilité de créer un diaporama basé sur les photos sélectionnées un bonus. (Voir Irfanview pour des exemples).

  • Points supplémentaires - ajoutez la capacité de lecture MP3. Entrelacer de la musique avec des photos.

  • Stockage de données SD Flash.

  • USB?

  • 802.11? (trop d'espoir.)



0

Le livre de Hamblen et al est plein de projets intéressants pour les cartes Altera Cyclone DE1 et DE2; Le code VHDL est fourni. Implémentez certains d'entre eux sur votre carte Spartan-3E.


0

L'une des premières choses à faire est simplement de télécharger (à partir d'un fournisseur ou d'un site passionné) et de créer un projet squelette qui accroche les entrées aux sorties - cela peut être extrêmement frustrant de travailler jusqu'à ce que vous ayez une certaine expérience.

Ensuite, vous pouvez commencer à mettre de la logique entre des machines à états intermédiaires pour des exemples artificiels comme vous l'avez fait en classe, ou des machines plus compliquées telles que les générateurs vidéo que d'autres recommandent. Blocs plus compliqués tels que de simples processeurs DIY, etc ...


0

Quand j'ai suivi mon cours VHDL, j'ai fait un microprocesseur avec ALU avec quelques instructions, communication mémoire et séquenceur de microinstruction. Cela prend plus de temps que vous ne le pensez, surtout si vous voulez le rendre robuste.


Idem (ce doit être un favori du conférencier). Ce fut un défi étonnamment bon et m'a fait vraiment réfléchir à la façon dont les processeurs fonctionnent réellement.
Al Bennett du
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.