FPGA mit VHDL
Beispiel: Prozessor mit RAM im angeschlossenem FPGA
Ich habe mir hier mal ein schönes Beispiel aus der Praxis ausgewählt.
Es gibt einen 8-Bit-Prozessor in Hardware und dazu einen Clockgenerator und einen Resetgenerator, also ein richtiges Mikroprozessorsystem in Hardware.
Nun soll das System um ein externes RAM erweitert werden und zwar so, dass später einmal noch andere Funktionen als das RAM eingebaut werden können.
Die Realisierung soll dann so sein, dass ein FPGA am Prozessor angeschlossen werden soll. In diesem wird dann erst einmal das sofort benötigte RAM eingebaut.
Da das RAM im FPGA was mit VHDL zu tun hat, müssen uns auch mit VHDL beschätigen.
Das Mikroprozessorssystem mit FPGA
In nachfolgendem Blockbild kann man die einzelnen Komponenten gut erkennen:
auf das Bild klicken zum Zoomen.
Der Prozessor hat natürlich auch ein Datenblatt und in diesem steht genau drin, die der Schreibzugriff und Lesezugriff auf externe RAM-Bausteine zu funktionieren hat.
Ich da mal ein kleines Timingdiagram entworfen, wie der Prozessoren den so auf das RAM zugreifen kann:
auf das Bild klicken zum Zoomen.
Die Timingwerte stehen als Wert in der Quelldatei zum Prozessor und können dort nachgeschlagen werden.
Aufbau des VHDL-Projektes
Da wir die Funktion durch eine Simulation auch qualifizieren wollen, müssen wir Testbenches und Module für die Simulation schreiben.
Der Funktion wegen halte ich mich mal nicht an meine sonst übliche Dateibenennung für VHDL-Projekte.
Das "Board" bekommt den Dateinamen board.vhd und ist die Testbench des ganzen Systems.
Der "Clockgenerator" und der "Resetgenerator" sind VHDL-Module nur für die Simulation und heissen clockgenerator.vhd und resetgenerator.vhd.
Das "FPGA" mit seinem RAM-Speicher ist eine synthesefähige VHDL-Datei und gleichzeit das Top-Design des ganzen Systems.
Im wahren Leben würde ich das Board top_tb.vhd und den RAM-Speicher top.vhd benennen.
im 2. Teil Instanziierung weiterlesen.
Alle Informationen und Dateien zu diesem Beispiel
- VHDL-Quelltext des Clockgenerators
- VHDL-Quelltext des Resetgenerators
- VHDL-Quelltext des Prozessors
- VHDL-Quelltext des FPGAs mit RAM-Block
- VHDL-Quelltext des RAM-Blocks
- VHDL-Quelltext des Boards
- Beispiel in VHDL für einen Prozessor mit RAM im FPGA, Teil 1
- Beispiel in VHDL für einen Prozessor mit RAM im FPGA, Teil 2
- Beispiel in VHDL für einen Prozessor mit RAM im FPGA, Teil 3