Anfängerprojekte auf einem FPGA?

Ich bin zwei Wochen davon entfernt, meinen ersten College-Kurs für digitales Logikdesign abzuschließen, und anscheinend wird es kein Abschlussprojekt geben – nur eine langweilige Abschlussprüfung.

Wie es jeder neugierige Student tun würde, habe ich mir angeschaut, was FPGAs eigentlich sind und was mir im Unterricht vorgegaukelt wurde. Und ich habe mich entschieden, ein einfaches FPGA-Projekt abzuschließen. Ich verwende ein Basys2 Spartan-3E FPGA und bin mit digitaler Logik vertraut und verwende ISE, um Logikgatter herumzuschieben, aber ich kenne VHDL/Verilog nicht (ich bin mir sicher, dass ich es leicht abholen könnte).

Hat jemand eine Projektidee für einen Anfänger? Ich habe viele Labordemonstrationen gemacht, aber nichts Besonderes.

Wunschliste: 1080p-Videoanzeige, ... was soll ich sagen, ich höre damit auf :-)
Überprüfen Sie die Website fpga4fun.com .
Hüten Sie sich vor fpga4fun.com-Entwicklungsboards. Ihre Dokumentation ist Mist, und sie weigern sich, die Schaltpläne des Entwicklungsboards zu veröffentlichen .

Antworten (9)

Ich fand Pong Chus „FPGA Prototyping By Verilog Examples: Xilinx Spartan-3 Version“ als ein sehr hilfreiches Buch. Es ist für ein anderes Spartan-3-Board als das von Ihnen erwähnte gedacht, sollte aber dennoch hilfreich sein.

Es gibt auch eine VHDL-Edition, wenn Sie lieber diesen Weg gehen möchten

So wie es aussieht, hast du VGA drauf. Video macht immer neugierig auf meine Erfahrung :)

Hier ist ein Plan, den Sie vielleicht ausprobieren möchten (kein Framebuffer erforderlich):

  1. Holen Sie sich eine reine Farb-VGA-Bildschirmanzeige
  2. zeigt eine horizontale Überblendung von Schwarz zu Volltonfarbe an
  3. Überblende nun vertikal von schwarz nach rot und horizontal von schwarz nach grün 3a. (machen Sie einen interessanteren algorithmisch spezifizierten Hintergrund, den Sie in Echtzeit rendern können)
  4. Erstellen Sie eine einfache Sprite-Engine, die eine kleine beliebige Form an einer beliebigen Stelle überlagert - Sie könnten 1 BRAM für die Sprite-Daten verwenden
  5. zeige ein paar verschiedene Sprites (jeweils 1 BRAM)
  6. Erstellen Sie eine Aktualisierungslogik, damit die Sprites herumspringen (und voneinander abprallen) - Fügen Sie der Sprite-Logik eine Kollisionserkennung hinzu.
  7. Erstellen Sie ein "Paddel"-Sprite, das Sie mit den Schaltern steuern können, und verwenden Sie es, um zu verhindern, dass die Sprites vom Bildschirm verschwinden
  8. Fügen Sie einen Scoring-Mechanismus hinzu

Ich denke das sollte alles in einen 250E passen. (Der VGA-Takt ist in FPGA-Begriffen langsam, sodass Sie ihn mit dem DCM um das 4-8-fache multiplizieren können, wodurch eine Sprite-Engine über mehr als eine Sprite-Instanz multiplexen kann.)

Dieser kostenlose Online-Kurs , der von Hamster geschrieben wurde, ist erstaunlich und wurde mit Blick auf Basys 2 und Nexys 2 geschrieben.

Ich persönlich habe das Basys 2 verwendet und durch diesen Kurs eine Menge gelernt. Es geht durch alle Aspekte des Basys-Boards und viele Konzepte, um die meisten Projekte über den Kurs hinaus zu erledigen.

Beginnen Sie wie bei allem anderen mit einem Hallo-Welt- Projekt, in diesem Fall - blinken Sie eine LED - und machen Sie ihre Periode nur zum Spaß variabel.

Dazu müssen Sie lernen, wie man einen Zähler in Verilog/VHDL erstellt. Das ist ein guter Anfang, um die Feinheiten von HDL zu lernen, denn Sie werden lernen, wie man:

  1. Ableiten von Hardwareoperationen – Verwenden von RTL-Code anstelle von Code auf Gatterebene. Sie lernen, wie Sie einen vorladbaren, rücksetzbaren Aufwärts-/Abwärtszähler mit RTL-Code entwerfen.
  2. Erfahren Sie, wie man synchrones Design durchführt – wofür die meisten FPGAs sowieso gut sind und die Grundlage für fast alle digitalen Systemdesigns bilden.
  3. Erfahren Sie, wie Sie mit der Außenwelt kommunizieren – mit I/O des FPGA. Hier lernen Sie, wie Sie Dinge auf einem FPGA konfigurieren und implementieren.

Sobald das erledigt ist, gehen Sie zu Opencores und fangen Sie an, größere Projekte zu hacken. Hier finden Sie viele andere lustige Projekte von einigen unserer Mitglieder, einschließlich Ihres. :)

Martin schlägt vor, dass Sie VGA-fähig sind.

Wie wäre es mit einem anständigen "Fotorahmen", der eine bessere Kontrolle über Fotos ermöglicht als jeder normalerweise verfügbare.

  • Die meisten behandeln Unterverzeichnisse schlecht.

  • Ungefähr keiner erlaubt eine zufällige Reihenfolge der Anzeige - was ein sehr großer Vorteil ist, wenn Sie eine große Anzahl von Fotos haben.

  • Die Möglichkeit, eine Diashow basierend auf ausgewählten Fotos zu erstellen, ist ein Bonus. (Siehe Irfanview für Beispiele).

  • Extrapunkte - MP3-Wiedergabefunktion hinzufügen. Verschachteln Sie Musik mit Fotos.

  • SD-Flash-Datenspeicher.

  • USB?

  • 802.11? (zu viel zu hoffen.)

Ich habe mit dem NEXYS2- Board und dem zugehörigen Text von Digilent gearbeitet. Es ist teuer, aber es war eine gute Erfahrung.

Das Buch von Hamblen et al. ist voll von interessanten Projekten für die Boards Altera Cyclone DE1 und DE2; VHDL-Code wird mitgeliefert. Implementieren Sie einige davon auf Ihrem Spartan-3E-Board.

Eines der ersten Dinge, die Sie tun müssen, ist, einfach herunterzuladen (von einem Anbieter oder einer Website für Enthusiasten) und ein Skelettprojekt zu erstellen, das die Eingaben mit den Ausgaben verknüpft. Dies kann äußerst frustrierend sein, wenn Sie mit der Arbeit beginnen, bis Sie etwas Erfahrung haben.

Dann können Sie anfangen, Logik dazwischen zu setzen - Zustandsmaschinen für erfundene Beispiele, wie Sie sie im Unterricht hatten, oder kompliziertere, wie die von anderen empfohlenen Videogeneratoren. Kompliziertere Blöcke wie einfache DIY-Prozessoren usw.

Als ich meinen VHDL-Kurs belegte, baute ich einen Mikroprozessor mit ALU mit einigen Befehlen, Speicherkommunikation und Mikrobefehlssequenzer. Es dauert länger, als Sie denken, besonders wenn Sie es robust machen wollen.

Dito (es muss ein Dozentenfavorit sein). Es war eine überraschend gute Herausforderung und brachte mich dazu, wirklich darüber nachzudenken, wie Prozessoren tatsächlich funktionieren.