Newbie-Projekte auf einem FPGA?


11

Ich bin zwei Wochen von meinem ersten College-Kurs für digitales Logikdesign entfernt, und anscheinend wird es kein Abschlussprojekt geben - nur eine langwierige Abschlussprüfung.

Wie jeder neugierige Schüler auch, habe ich mir angesehen, was FPGAs eigentlich sind und was ich im Unterricht mit dem Löffel gefüttert werde. Und ich habe beschlossen, ein einfaches FPGA-Projekt abzuschließen. Ich verwende ein Basys2 Spartan-3E-FPGA, bin mit digitaler Logik vertraut und verwende ISE, um Logikgatter herumzuschieben, aber ich kenne VHDL / Verilog nicht (ich bin sicher, ich könnte es leicht lernen).

Hat jemand Projektideen für einen Anfänger? Ich habe viele Labordemonstrationen durchgeführt, aber nichts Besonderes.


Wunschliste: 1080p Video-Display, ... was soll ich sagen, ich höre dort auf :-)
Russell McMahon

1
Überprüfen Sie die Website fpga4fun.com .
Armf

3
Vorsicht vor fpga4fun.com Dev-Boards. Ihre Dokumentation ist Mist und sie weigern sich , die Dev-Board-Schaltpläne freizugeben .
Connor Wolf

Antworten:


5

Ich fand Pong Chus "FPGA Prototyping By Verilog Beispiele: Xilinx Spartan-3 Version" 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 diesen Weg lieber gehen möchten


4

Sie haben VGA darauf, wie es aussieht. Video macht immer Interesse an meiner Erfahrung :)

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

  1. Holen Sie sich eine reine Farb-VGA-Bildschirmanzeige
  2. Zeigen Sie eine horizontale Überblendung von Schwarz zu Vollton an
  3. Jetzt vertikal von schwarz nach rot und horizontal von schwarz nach grün 3a verblassen. (Erstellen Sie einen interessanteren algorithmisch festgelegten 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önnen 1 BRAM für die Sprite-Daten verwenden
  5. zeige ein paar verschiedene Sprites (je 1 BRAM)
  6. Erstellen Sie eine Aktualisierungslogik, damit die Sprites herumspringen (und sich voneinander entfernen). Fügen Sie der Sprite-Logik eine Kollisionserkennung hinzu.
  7. Erstellen Sie ein "Paddel" -Sprite, das Sie mit den Schaltern steuern können. Verwenden Sie es, um zu verhindern, dass die Sprites vom Bildschirm verschwinden
  8. Fügen Sie einen Bewertungsmechanismus hinzu

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


3

Dieser kostenlose Online-Kurs von Hamster ist unglaublich und wurde unter Berücksichtigung von Basys 2 und Nexys 2 geschrieben.

Ich persönlich habe die Basys 2 benutzt und durch diesen Kurs einiges gelernt. Es werden alle Aspekte des Basys-Boards und viele Konzepte behandelt, um die meisten Projekte über den Kurs hinaus zu realisieren.


2

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

Dazu müssen Sie lernen, wie Sie in Verilog / VHDL einen Zähler erstellen. 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 Gate-Ebene. Sie lernen, wie Sie einen vorladbaren, zurücksetzbaren Auf- / Ab-Zähler mit RTL-Code entwerfen.
  2. Erfahren Sie, wie Sie synchrones Design ausführen - wofür die meisten FPGAs ohnehin gut sind und die Grundlage für fast alle digitalen Systemdesigns bilden.
  3. Erfahren Sie, wie Sie mit der Außenwelt kommunizieren - mithilfe der E / A des FPGA. Hier erfahren Sie, wie Sie Dinge auf einem FPGA konfigurieren und implementieren.

Sobald dies erledigt ist, gehen Sie zu OpenCores und fangen Sie an, größere Projekte zu hacken . Hier finden Sie viele andere lustige Projekte einiger unserer Mitglieder, einschließlich Ihrer wirklich. :) :)


1

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

Was ist 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 keine erlauben 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. (Beispiele siehe Irfanview).

  • Zusätzliche Punkte - MP3-Wiedergabefunktion hinzufügen. Verschachteln Sie Musik mit Fotos.

  • SD Flash-Datenspeicher.

  • USB?

  • 802.11? (zu viel um zu hoffen.)



0

Das Buch von Hamblen et al. Enthält viele interessante Projekte für die Altera Cyclone DE1- und DE2-Boards. VHDL-Code wird mitgeliefert. Implementieren Sie einige davon auf Ihrem Spartan-3E-Board.


0

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

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


0

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


Das Gleiche gilt (es muss ein Dozent sein). Es war eine überraschend gute Herausforderung und hat mich wirklich darüber nachdenken lassen, wie Prozessoren tatsächlich funktionieren.
Al Bennett
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.