Hallo Christoph,
ich habe vor mir evtl. ein Spartan3 Starter Board oder ein nexys zu
kaufen deshalb habe ich mich zumindest in der Theorie und Dokumentation
mit beiden schon beschäftigt.
Wie gesagt nur Theorie ( = 3/4 Wissen )
Es gibt wohl 2 grundverschiedene Welten, die Du auseinander halten
musst.
1. Die Adept Suite Software von Digilent
========================================
Die SW arbeitet mit dem USB Cypress Controller über die GPIO ( das
General Purpose IO Interface ) zusammen. Dieses wiederum wird über einen
8051 Microcontroller gesteuert, welcher in dem cypress Baustein
integriert ist.
Über die Systemsoftware des 8051 werden dann z.B. die JTAG
Schnittstellen Signale bedient um z.B. das Plattform Flasch oder den
FPGA direkt zu laden.
Desweiteren kann auch in den FPGA ein kleines Modul geladen werden,
welches wiederum eine Datenkommunikation mit dem PC ähnlich einer
parallelen Schnittstelle darstellt. Hierüber kann man z.B. auch
Dateninhalte in das RAM laden oder lesen usw.
Allerdings alles in Software und ziehmlich langsam.
1. Direkte Anbindung des FIFO an den FPGA
========================================
Hier sieht die Sache ganz anders aus.
Wie gesagt ich weiß es nicht ganz genau, aber ungefähr so:
Der der Cypress USB Baustein wird mit dem Treiber von Cypress unter
Windows betrieben. Dieser sagen wir mal Universaltreiber übernimmt für
dich alle wichtigen Funktionen, um ein USB Gerät als Device unter
Windows anzumelden usw. Der Treiber übernimmt für dich auch die Aufgabe
die jeweils beim erkennen des USB Bausteins die neueste Firmware vom PC
auf den Cypress Chip zu übertragen. Mit dieser Cypress Firmware
arbeitest Du dann also später zusammen.
Danach mußt Du ein eigenes Programm z.b. in C schreiben mit welchem du
auf die API des Cypress Treiber unter windows zugreifst.
Du definierst deine Buffer, endpoint, die Art der Datenübertragung usw.
Auf der FPGA Seite mußt Du dann eine kinderleichte State machine in VHDL
programmieren, welche jeweils den FIFO Puffer des Cypress Bausteins mit
Daten bis zum Anschlag füllt. ( z.B. 512 Byte ) Die Firmware übernimmt
für dich dann automatisch die Übertragung der Daten auf den PC.
Wobei bei USB natürlich nur dann Daten übertragen werden, wenn der
Master Daten zum lesen anfordert. Also ein quasi Polling verfahren.
In dieser Variante arbeitest Du nicht mit der GPIO zusammen sondern
direkt mit dem FIFO Datenbus zugehörigen Steuersignalen.
Bestimmt meldet sich noch jemand, der das viel besser weiß als ich....
Gruß vom FPGA-Fragenden