Erste Schritte mit der VHDL-Programmierung: Entwerfen Sie Ihre eigene Hardware

Offenlegung: Ihre Unterstützung hilft, die Site am Laufen zu halten! Wir verdienen eine Vermittlungsgebühr für einige der Dienste, die wir auf dieser Seite empfehlen.

VHDL ist eine Hardware Description Language(HDL). Eine HDL sieht ein bisschen wie eine Programmiersprache aus, hat aber einen anderen Zweck. Anstatt verwendet zu werden, um Software zu entwerfen, wird ein HDL verwendet, um einen Computerchip zu definieren. VHDL kann verwendet werden, um jede Art von Schaltung zu beschreiben und wird häufig beim Design, der Simulation und dem Testen von Prozessoren, CPUs, Hauptplatinen, FPGAs, ASICs und vielen anderen Arten von digitalen Schaltungen verwendet.

VHDL-Verlauf

Der Name VHDL ist ein verschachteltes Akronym. Es steht für VHSIC Hardware Description Language. VHSIC steht für Very High Speed Integrated Circuit. Es war nicht nur eine Beschreibung eines schnellen Prozessors, sondern auch der Name eines US-Regierungsprogramms in den 1980er Jahren, dessen Aufgabe die Forschung und Entwicklung auf dem Gebiet sehr schneller integrierter Schaltkreise (schnelle Computerchips) war.

Zusammen mit großen Fortschritten in der Materialwissenschaft, Algorithmen, Chip-Design, Lithographie, und ein Dutzend anderer verwandter Bereiche, VHSIC entwickelt VHDL.

Der erste offizielle Standard für die Sprache kam 1987 von der IEEE und ist als IEEE 1076 bekannt. Seitdem gab es mehrere Ausgaben, die letzte im Jahr 2008. In addition to the „core“ language specified in 1076, there are a number of extensions codified in other specs:

  • IEEE 1076.1 VHDL Analog and Mixed-Signal (VHDL-AMS)
  • IEEE 1076.1.1 VHDL-AMS Standard Packages (stdpkgs)
  • IEEE 1076.2 VHDL Math Package
  • IEEE 1076.3 VHDL Synthesis Package (vhdlsynth)
  • IEEE 1076.3 VHDL Synthesis Package – Floating Point (fphdl)
  • IEEE 1076.4 Timing (VHDL Initiative Towards ASIC Libraries: vital)
  • IEEE 1076.6 VHDL-Synthese Interoperabilität
  • IEEE 1164 VHDL-Pakete für mehrwertige Logik (std_logic_1164)

VHDL-Design und Syntax

VHDL basierte auf Ada und wurde sowohl in der Syntax als auch in den Konzepten ausführlich davon übernommen. Dies wurde dann durch hardwarespezifische Konzepte wie mehrwertige Logik, physikalische Parallelität und einen erweiterten Satz boolescher Operatoren ergänzt. VHDL kann Arrays auch in aufsteigender und absteigender Reihenfolge indizieren, während Ada (und die meisten anderen Programmiersprachen) nur in aufsteigender Reihenfolge indizieren.

Die meisten Programmiersprachen sind im Kern prozedural — der Computer führt nacheinander einen Befehl nach dem anderen aus. VHDL ist anders. Es ist eine Hardwaresprache, die eine (reale oder simulierte) physikalische Struktur beschreibt. Diese Struktur besteht aus einer großen Anzahl von Modulen, und jedes Modul wirkt zur gleichen Zeit wie jedes andere Modul.

Innerhalb jedes Moduls gibt es also einen prozeduralen Fluss von Anweisungen, der ein wenig wie ein kleines, in sich geschlossenes Softwareprogramm aussieht – mit Variablen, Kontrollflüssen, Bedingungen, Schleifen. Jedes Modul hat einen oder mehrere Eingänge zusammen mit einem oder mehreren Ausgängen. Die Eingaben werden innerhalb einer Struktur angegeben, die als Entität bezeichnet wird, und die in sich geschlossene Logik wird in einer Architektur definiert.

Betrachten Sie die Idee eines „UND-Gatters“, bei dem wir zwei Eingänge und einen Ausgang haben. Wenn beide Eingänge „on“ (true, 1) sind, dann ist der Ausgang „on“; andernfalls ist der Ausgang „off.“ Mit VHDL würden wir also zwei Eingänge und einen Ausgang definieren. Die akzeptierten Werte dieser Ein- und Ausgänge würden in einem std_logic -Modul definiert, das wie eine Bibliothek in eine reguläre Programmiersprache importiert wird. Die Architektur würde dann das Innenleben unseres „UND-Tors“ definieren, damit es so funktioniert, wie wir es gerade besprochen haben.

Das std_logic -Modul ist ein interessanter hardwarespezifischer Wertetyp. Er ähnelt dem in Programmiersprachen vorhandenen BOOLESCHEN Wert (ein Bit: wahr oder falsch), kann jedoch einen Wertebereich haben, da er einen tatsächlichen elektrischen Impuls in einem physikalischen System darstellt:

  • U: nicht initialisiert. Dieses Signal wurde noch nicht gesetzt.
  • X: unbekannt. Unmöglich, diesen Wert / Ergebnis zu bestimmen.
  • 0: logik 0
  • 1: logik 1
  • Z: Hohe Impedanz
  • W: Schwaches Signal, kann nicht sagen, ob es 0 oder 1 sein sollte.
  • L: Schwaches Signal, das wahrscheinlich gehen sollte 0
  • H: Schwaches Signal, das wahrscheinlich gehen sollte 1
  • -: Ist mir egal.

In Miniatur wird so ein vollständiges VHDL-Design erstellt. Ziemlich einfache, logisch in sich geschlossene Module der E / A-Aktivität werden aufgebaut und miteinander verbunden, um Rechenmaschinen zu bilden, die verschiedene Arten von Aufgaben ausführen können. Ein VHDL-Design könnte einen voll funktionsfähigen Allzweckcomputer beschreiben oder einen einzelnen Algorithmus wie den für Bitcoin-Mining verwendeten Brute-Force-Proof-of-Work codieren.

Es ist wichtig zu wissen, dass ein VHDL—Design kein Programm ist – es wird nicht ausgeführt oder ausgeführt. Wie eine Blaupause definiert sie eine Architektur. Sobald ein Design abgeschlossen ist, wird es normalerweise zum Testen in einer Software-Testbench simuliert und dann synthetisiert, was bedeutet, dass es in ein physikalisches Design übersetzt wird, das auf einem tatsächlichen Chip oder einer Leiterplatte implementiert werden kann.

Ressourcen zum Erlernen von VHDL

Es gibt viele Ressourcen zum Erlernen von VHDL. Wir haben einige der besten zusammengestellt.

Online-Ressourcen

  • VHDL Primer: ein Tutorial zu VHDL von der University of Pennsylvania.
  • VHDL auf Wikipedia: Die Wikipedia-Berichterstattung über VHDL ist überraschend ausführlich und klar und bietet eine großartige Einführung in die Sprache als Ganzes.
  • VHDL Kochbuch: ein kostenloses Online-Buch, die Länge und das Format eines College-Lehrbuchs.
  • VHDL-Tutorial: Lernen Sie anhand eines Beispiels: dieses ehrwürdige Tutorial ist nichts Schönes, aber die Informationen sind großartig und sehr gut organisiert.
  • VHDL Language Guide: Dies ist ein PDF, das die Sprache sehr detailliert behandelt (400 Seiten) mit In-Document-Links für eine sehr einfache Navigation. Dies ist eine großartige Referenz.
  • Designer’s Guide to VHDL: eine Sammlung von Ressourcen, Tutorials und Links. Enthält Videos und einen Online-Zertifizierungskurs.
  • Programmable Logic/VHDL Module Structure
  • VHDL Basics — Online Course
  • VHDL Handbook
  • VHDL Starters Guide

Books

All these books focus on VHDL:

  • The Designer’s Guide to VHDL, Third Edition
  • Circuit Design and Simulation with VHDL
  • Vhdl By Example
  • VHDL: Basics to Programming
  • VHDL for Engineers
  • VHDL By Example: Fundamentals of Digital Design
  • Circuit Design with VHDL
  • Digital Design Using VHDL: Ein Systemansatz

VHDL & Verilog Books

Der wichtigste „Wettbewerb“ von VHDL ist Verilog. Beide Sprachen werden für das Hardwaredesign verwendet, daher gibt es eine Reihe von Büchern, die sich auf zugrunde liegende Design- und Konstruktionskonzepte konzentrieren und sowohl VHDL als auch Verilog verwenden.

  • Digitales Design mit RTL-Design, VHDL und Verilog
  • Hdl-Chipdesign: Ein praktischer Leitfaden zum Entwerfen, Synthetisieren & Simulieren von Asics & Fpgas mit Vhdl oder Verilog
  • Designrezepte für FPGAs, zweite Ausgabe: Verwenden von Verilog und VHDL
  • HDL Grundlagen der Programmierung: VHDL und Verilog

Andere wichtige VHDL-Links

Implementierungen und Simulatoren

  • Free / Open Source
    • GHDL
    • NVC
    • Kostenloses HDL-Projekt
  • Kommerziell / Proprietär
    • VHDL Simili
    • Active-HDL
    • Incisive Enterprise Simulator
    • ModelSim

Tools

  • EDA Utils: Eine große Sammlung von Dienstprogrammen für die Arbeit mit VHDL sowie Verilog und anderen HDLs.
  • EDA Spielplatz: eine Online-Sandbox zum Testen von VHDL-Designs.
  • Editor-Pakete
    • Emacs VHDL-Modus
    • VHDL-Plugin für vim
    • VHDL-Paket für Sublime Text
    • VHDL für Atom
    • VHDL für Notepad++

Du solltest es auch wissen…

VHDL ist eine der beiden wichtigsten Hardwarebeschreibungssprachen. Der andere ist Verilog. Die meisten Hardwaredesigner sind sowohl mit Low-Level-Betriebssystemsprachen wie C und C ++ vertraut.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.