Projekt zum Erlernen von VHDL

Ich bin ein EE-Student und kann [zumindest einfache] Programme in mehr Sprachen schreiben, als ich Finger habe. Ich habe gerade angefangen, VHDL zu lernen und habe mich gefragt, was ein gutes Projekt wäre, um die Sprache und die entsprechenden Tools wirklich kennenzulernen? Ich habe Probleme, einen zu finden, weil es ein wirklich anderer Programmierstil für mich ist.

Ich habe einfache Dinge wie Nattern gemacht, aber ich suche nach einem längerfristigen (dh einen Monat oder so) Projekt.

Falls es relevant ist, ich habe Xilinx Webpack und ein Digilent Spartan3-Board.

Antworten (8)

Mein „Hallo Welt“-FPGA-Projekt war ein LED-Array-Controller mit PWM und seriellem Stream-Eingang. Das Endergebnis war nett ( http://lbw.axe-man.org/led1.wmv ), aber ich gebe zu, dass ich einen Teil davon mit dem Altera Quartus Schematic Editor gemacht habe, um zu sehen, wie VHDL-Teile beschrieben wurden.

das ist eine großartige Idee; Ich habe mir gerade eine 16x16-Matrix ohne Controller zugelegt, und ein Controller wäre großartig. nettes Video!
Hübsches Video! Und dieser Schaltplaneditor ist dazu da, verwendet zu werden.

Da Sie an Programmierung interessiert zu sein scheinen, könnten Sie einen einfachen Mikroprozessor bauen.

SEHR empfehlenswert. Am Ende lernen Sie nicht nur die FPGA- und VHDL-Seite der Dinge kennen, sondern auch, wie Prozessoren funktionieren, welche Entwicklungstools zur Unterstützung eines Prozessors benötigt werden usw.

Sie sollten sich opencores.org ansehen und dort ein interessantes Projekt finden. Sie können auch das Sigasi HDT herunterladen , das Ihnen hilft, die VHDL-Grammatik zu beschleunigen.

Ich habe es genossen, dieses Jahr mit Hans bei Hardhack am Rekonstrukt -Projekt zu arbeiten, um einen einfachen Synthesizer in einem FPGA zu bauen. LED-Projekte sind auch gut, aber es geht nichts über das Anschließen des FPGA an eine Stereoanlage. Es wird nicht von Grund auf neu aufgebaut, wie es ein LED-Projekt tun würde, da das Projekt auf einem Open-Core-Prozessor basiert, der Forth unterstützt. Am Anfang lernen Sie also, wie Sie das FPGA im Grunde mit dem Projekt laden, dann können Sie mit den Hüllkurven in FORTH spielen. Aber wo Sie anfangen, mehr über die Interna des FPGAs zu erfahren, ist, wenn Sie Funktionen hinzufügen möchten, was dann das Graben in der VHDL erfordert.

Ein Projekt, das mir Spaß gemacht hat, war die Implementierung des Milton Bradley Simon-Spiels auf einem FPGA.

An meiner Universität verwendet unsere EDA-Klasse dasselbe von Ihnen erwähnte Board. Einige der umgesetzten Projekte waren:

  • Bildverarbeitung: Medianfilter, Histogrammstreckung, Kantenerkennung
  • Kryptografie: AES, diverse Hashing-Algorithmen etc.
  • Kommunikation: Ethernet, USB, I2C usw.
  • Spiele: Pong, Space Invaders usw.

Das kann Ihnen einige Ideen geben.

Ich werde die Idee von opencores.org unterstützen und Ihren eigenen Mikroprozessor implementieren. Da Sie ein Xilinx-FPGA haben, könnten Sie auch versuchen, etwas mit Microblaze oder Picoblaze zu machen.

Edit: Formatierung.

Ich habe vor einiger Zeit vhdl-Code für den xilinx virtex core geschrieben. es war eine Weckerimplementierung. Das habe ich getan:

  • Lesen Sie viel durch das vhdl-Handbuch - ich müsste es jetzt überarbeiten, aber ich fand es ziemlich einfach und einfach, hdl zu verwenden :-)
  • Verwendete Xilinx-Suite (Compiler, Synthesizer), um den Bitstream zu erhalten
  • Hochgeladen die Bitstreams mit jtag

Gespült, 1-3 wiederholt. Ich möchte darauf hinweisen, dass die Bitstream-Generierung weitgehend vollständig in die IDE von Xilinx integriert ist. Sie müssen nur eine klare Logik haben, die Sie in HDL implementieren können. der ganze Rest wird von der IDE erledigt.

Numerisch gesteuerter Oszillator würde Spaß machen. Ich habe gerade ein Design mit meinem Arduino-kompatiblen Board gemacht (siehe http://tinyurl.com/ydmz2su ), aber das wäre perfekt für ein FPGA.

Hier sind ein paar Design-Referenzen.

Snell, John 1988 "Design eines digitalen Oszillators, der bis zu 256 Sinuswellen mit geringer Verzerrung in Echtzeit erzeugt" Grundlagen der Computermusik. Cambridge, Mass.: MIT Press

Moore, F. Richard 1988 "Table Lookup Noise for Sinusoidal Digital Oscillators" Grundlagen der Computermusik. Cambridge, Mass.: MIT Press

Was ich tue, macht ein bisschen CPU. Es ist eine schöne, abgerundete Möglichkeit, alle Grundlagen abzudecken.

Sie decken alle Grundlagen eines großen Projekts in VHDL ab und werden mit allen Kernthemen des VHDL-Designs (Uhren, Eingänge, Ausgänge, Logik, Busse und sequenzielles Design am prominentesten) sowie mit vielen Kernelektronik- und Computerthemen vertraut gemacht Design- und Architekturkonzepte wie Register, Datenoperationen, Speicher und Computerarithmetik.

Sie können nur mit Addition und Subtraktion beginnen und dann weitere Funktionen hinzufügen, während Sie lernen, und sich zu einem voll funktionsfähigen (wenn auch einfachen ... oder wie ich es lieber "Retro" nenne) Computer hocharbeiten. Das ist zumindest mein Plan.

Außerdem ist es einfach cool, einen eigenen, maßgeschneiderten Computer auf einem Chip zu haben :) Wie ein 16-Bit-Raspberry Pi :P

Andere gängige FPGA-Projekte:

-Musik-Synthesizer

-DSP-Effektgenerator

-MIDI-Controller/Unterbrecher

-Bitcoin-Miner

-Emulatoren für Videospielkonsolen

-Benutzerdefinierte Arduino-Schilde

-Parallelprozessoren (sehr nützlich für bestimmte mathematische Probleme, bei denen herkömmliche Computer nicht besonders gut sind)

-Robotik/Steuerungssysteme

-Datenerfassung (ziemlich wenige Oszilloskop-Designs für FPGAs, wenn Sie wissen, wie man mit Operationsverstärkern arbeitet)

VHDL allein ist nicht schrecklich kompliziert. Das Wichtigste, woran Sie denken sollten, ist, dass Sie eine physische elektronische Digitalschaltung entwerfen und kein Programm für einen Mikrocontroller schreiben. Ihre Simulation ist im Grunde kein Programm, das Zeile für Zeile ausgeführt wird, also lassen Sie sich nicht von der oberflächlichen Ähnlichkeit mit C täuschen, VHDL ist ein ganz anderes Paradigma.