Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
5. VHDL<br />
In diesem Kapitel beschreiben wir die Entwicklungen die wir für den FPGA gemacht haben.<br />
Es wurde alles in VHDL im Xilinx ISE programmiert [Sch03]. Auch zur Simulation wurde<br />
das ISE benutzt. Als Synthesewerkzeug kam Xilinx XST zum Einsatz.<br />
Wie aus dem Projektplan ersichtlich ist, waren weitere Cores geplant, konnten aber in<br />
der zur Verfügung stehenden Zeit nicht mehr realisiert werden. Darum folgt hier nur die<br />
Beschreibung des Loopback Cores.<br />
5.1. Kommunikations Loopback<br />
5.1.1. Zweck und Anforderungen<br />
Der Loopback Core dient zum Entwickeln und Testen der Kommunikation zwischen dem<br />
FPGA und dem EZ-USB Chip. Er stellt also eine einfache Implementierung des im Kapitel<br />
4 beschriebenen Handshake-Protokolls dar. Die Daten die vom EZ-USB gesendet werden,<br />
müssen bis zum Abschluss der Sequenz gespeichert werden und sollen danach zurückgesendet<br />
werden. Dies ermöglicht eine Überprüfung der gesendeten Daten und beider Kommunikationswege.<br />
Der Core muss Sequenzen speichern können, die länger als ein Wort sind, da in<br />
der Anwendung normalerweise grössere Datenmengen ausgetauscht werden sollen und die<br />
USB Schnittstelle nur bei grösseren Datenblöcken die hohen Datenraten erreicht. Die VHDL<br />
Sourcecodes sind im Anhang ab E.2 zu finden.<br />
5.1.2. Realisierung<br />
Dem Loopback Core liegt ein klassischer FSM-D (Finite-State-Machine/Datapath) Ansatz<br />
zu Grunde. Diesem Ansatz folgend wurde zuerst der Datenpfad erstellt. Als zentrales Element<br />
dient ein Block RAM Element. Block RAMs sind direkt als Hardware im Spartan 3 integriert<br />
und müssen nicht synthetisiert werden. Der Vorteil dabei ist, dass keine Speicherstruktur<br />
erzeugt werden muss. Das spart Zeit bei der Entwicklung und schont die FPGA Ressourcen,<br />
da diese ineffizent für regelmässige Strukturen sind. Der Nachteil daran ist die Abhängigkeit<br />
der Zielplattform, da Block RAMs nur in Xilinx FPGAs (Spartan 3 oder Virtex 2 und<br />
höher) vorhanden sind. Der Rest des Datenpfads besteht aus einem Auf-/Abwärtszähler als<br />
Adressgenerator, einem Nulldetektor und dem Tri-State Buffer für den Datenbus.<br />
Die Statemachine wurde anschliessend im Xilinx ISE mit Hilfe des Programms StateCAD<br />
gezeichnet. Dieses erlaubt die graphische Eingabe der Zustände, den Übergängen, der Signalwerte<br />
und den Bedingungen und generiert daraus wahlweise VHDL oder Verilog Code.<br />
Dieser Weg wurde zum einen aus Neugier an der graphischen Eingabe gewählt und zum<br />
anderen weil Änderungen einfacher vorgenommen werden können. Damit muss die Dokumentation<br />
(State <strong>Event</strong> Diagramm) nicht separat erstellt werden und ist immer aktuell. Die<br />
so erstellte Statemachine ist in Abbildung 5.2 dargestellt.<br />
Project Report 13