Forum: FPGA, VHDL & Co. Cypress FX3 StreamIN Problem


von Chris (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin gerade dabei, eine FPGA (Kintex7) -> PC Datenverbindung über 
einen Cypress FX3 Board herzustellen. Ich beziehe mich auf die 
Slave-FIFO-Beispiel-Applikation
http://www.cypress.com/?docID=49786
Bei der Anwendung des StreamIN-Modus wird seitens des Cypress FX3 die 
Flag_b nie auf '1' gesetzt, was für den Datentransfer nötig ist.

Hat jemand schon mal die von Cypress bereitgestellten Beispiele 
verwendet und eine Idee woran das Problem liegen könnte?

Die Clock (5 MHz) wird im FPGA generiert.

Vielen Dank!

Gruß, Chris

von Christian R. (supachris)


Lesenswert?

Da hilft wohl nur die vom Designer erzeugten Files durchzuschauen, ob 
die Bits für die Zusatzfunktionen der Pins stimmen. Außerdem muss auch 
diese Watermark Größe strimmen, die in der Firmware eingestellt wird. 
Diese Zusatz Flags sind leider recht komplex einzustzellen. Ich hab mir 
das manuell gemacht, weil es damals vom Designer noch nicht erstzellt 
wurde, prinzipiell klappt das.

von Chris (Gast)


Lesenswert?

Also ich habe die von Cypress bereitgestellte Firmware für den 
StreamIN-Modus verwendet. Das vhdl-Projekt habe ich für mein FPGA-Board 
angepasst. Im Wesentlichen habe ich die Pins im UCF abgeändert. Also im 
Prinzip (um zuzugeben noch ohne groß Ahnung vom USB-Controller und 
seiner Programmierung zu haben) alles per Anleitung für Dummies.

Leider hab ich auch nicht so recht verstanden, was Watermark überhaupt 
bedeutet.

Eigentlich möchte ich nur irgendwelche Daten vom FPGA über den FX3 mit 
etwa 200 MBit/s auf den PC streamen bzw. ablegen.

Könntest du mir vllt. deine StreamIn-Firmware bzw. das Projekt schicken?

von Christian R. (supachris)


Lesenswert?

Nee, kann ich nicht schicken, ist ja von Arbeit. Ich hab das Slave FIFO 
Beispiel (1 IN, 1 OUT) genommen, was bei den Firmware Samples dabei ist, 
und da nur einiges hinzugefügt. Im wesentlichen das Fast-Voll-Flag. 
Watermark bedeutet bei denen den Abstand zum Voll, also wenn du 
Watermark 8 einstellst, geht das Flag aktiv, wenn weniger als 8 Worte 
Platz sind. Dummerweise ist das aber auch irgendwie mit der Wortbreite 
verknippert, das war irgendwie schwierig zu durchschauen. Ich glaube, 
ich hab bei 32 Bit Watermark 8 eingestellt, dann hab ich genug Zeit, den 
Transfer zu verlangsamen um alle paar Takte nach dem echten Voll-Flag zu 
schauen, denn die Flags haben ja so viel Latenz, das geht nicht anders. 
Ich arbeite übrigens mit 75 bis 100Mhz, je nach FPGA, das klappt ganz 
gut (wenn die VCCIO am GPIF II 1,8V ist, siehe Forum bei Cypress, sonst 
gibts dauernd Aussetzer und Abstürze).

von P. K. (pek)


Lesenswert?

Bin mir aus Deiner Aufgabenstellung nicht ganz sicher, ob Du den Hut A) 
für den FX3 und das FPGA oder B) nur für das FPGA auf hast.

Falls A): Investiere etwas Zeit, um Dich an den FX3 zu gewöhnen. Die 
mitgelieferten Beispiele hatte ich eigentlich recht schnell am Laufen, 
die sollten brauchbar sein. Da Du ein Xilinx-FPGA benutzt, ist AN65974 
(inkl. FPGA-Beispiel-Code, wenn auch nur Spartan) genau das Richtige für 
Dich.

Falls B): Klopfe dem Kollegen auf den Busch...

Am Rande:
Christian R. schrieb:
> wenn die VCCIO am GPIF II 1,8V ist
Unbedingt beherzigen!

Auch die 22Ohm-Serie-R in den GPIF sollten nicht vernachlässigt werden 
(generell macht es Sinn, sich sehr genau an AN70707 zu halten...)

von Christian R. (supachris)


Lesenswert?

P. K. schrieb:
> Auch die 22Ohm-Serie-R in den GPIF sollten nicht vernachlässigt werden

Naja, wobei das aber bei 50 Leitungen am GPIF II wahrscheinlich mehr 
Probleme bringt als löst. Ist ja technisch kaum sinnvoll umsetzbar bei 
100MHz und Längenabgleich usw.
Bei uns läufts auch mit 2,5V oder kleiner über das Demo-Board und ein 
Samtec Spezialkabel fehlerfrei. Bei 3,3V allerdings nicht zu gebrauchen.

von P. K. (pek)


Lesenswert?

Christian R. schrieb:
> Naja, wobei das aber bei 50 Leitungen am GPIF II wahrscheinlich mehr
> Probleme bringt als löst.

Bei mir sind es nur 16 Datenleitungen plus 2 Flags und Slave Control. 
Dass ich die Dinger (aus Platzgründen) weggelassen habe, wurde in einem 
Cypress MyCase explizit bemängelt...

von Chris (Gast)


Lesenswert?

Hallo,
danke für eure Hilfe.
Prinzipiell klappt es bei mir jetzt.
Leider findet bei mir noch Datenverlust statt, (jeweils 5x 16 bit nach 
Befüllen des DMA-Buffers). Ich denke mal, dass das tatsächlich an einer 
zu niedrigen Schwelle liegt.
Daher meine etwas dumme Frage:
wo kann ich denn die watermark einstellen?
Danke!

von Christian R. (supachris)


Lesenswert?

Chris schrieb:
> wo kann ich denn die watermark einstellen?

CyU3PGpifSocketConfigure(...)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.