Projektvorlage FX2 + XC3S

Gast #1075792
Lesenswert?

Ich suche irgend ein Beispiel wo ein Xilinx XC3S Daten über einen FX2 
Chip an einen PC schickt und diese dann dort irgendwie ausgewertet 
werden. Ich habe bislang leider nur Projekte in Verilog gefunden (habe 
VHDL gelernt) und die meisten enden quasi am FX2-Chip. Der Weg von dort 
zu einer PC-Anwendung wurde nirgends verständlich beschrieben.
Kennt jemand ein brauchbares, einfaches Beispiel?
In der Endanwendung sollen nur Daten von einem 14Bit 60MSPS ADC 
eingelesen werden, im FPGA gefiltert (läuft bereits) und dann eben 
(Blockweise) an den PC übertragen werden. Es braucht also keine 
kontinuierliche hohe Datenübertragungsrate.
#1075841
Lesenswert?

Naja, das meiste, was zu tun ist, steckt in der Firmware des FX2. Ich 
musste mich durch das Manual und die Beispiele von Cypress auch erst mal 
durchwühlen. Der Rest ist simpel. Der Slave FIFO Modus ist recht einfach 
zu handhaben, verhält sich wie ein normaler FIFO. Darf dir aber 
natürlich weder das FPGA Design noch die Firmware für den FX2 schicken. 
Bei konkreten Fragen kann ich dir natürlich Tipps geben.
#1076411
Lesenswert?

Dann solltest du mal hier im Forum schauen. Hatten wir schon öfters. Im 
Prinzip kannst du eine Beispiel-Firmware von Cypress nehmen und die 
Register-Einstellungen entsprechend ändern. Ist bissl Arbeit, sich durch 
das Technical Reference Manual zu ackern, aber es lohnt sich. Datenrate 
erreicht man etwa 40MByte/s, wenn man 16 Bit breit die Daten anliefert, 
und der PC die schnell genug abnimmt.
Gast #1078252
Lesenswert?

Eine Konkrete Frage hätte ich: Ein Testboard mit dem FX2 will sich nicht 
an den PC anmelden. Anscheinend schwingt der Quarz nicht. XTALOUT liegt 
auf 3,3V, an XTALIN messe ich nichts. Ein identisch aufgebautes Board 
funktioniert aber. Ist das Phänomen bekannt?
#1154766
Lesenswert?

Ich habe leider immer noch Probleme mit dem Ding.
Die Platine wird extern versorgt. Ist der FX2 nicht am PC angeschlossen 
oder im RESET, schwingt der Quarz und an CLKOUT werden 12MHz ausgegeben.
Sobald jedoch die Windows  - Meldung erscheint, dass das Gerät nicht 
erkannt wurde, stoppt der Oszillator bis das USB-Kabel wieder entfernt 
wurde.
Kennt jemand dieses Verhalten?
#1155682
Lesenswert?

Alle Kontakte der USB-Buchse sind nachgemessen. Alles ok.
Ich komme eben nicht zum Treiberinstallieren.
Am CLKOUT werden bei nicht angeschlossenem PC 12MHz ausgegeben.
Stecke ich das Gerät an den PC, stoppt der Takt kurz (einige Zyklen), 
wird wieder Aktiv (wieder für einige Zyklen) und stoppt dann ganz.
Er wird erst nach einem Reset bei ausgestecktem PC wieder ausgegeben.
#1155732
Lesenswert?

Chris wrote:
> Für neuere Projekte würde ich anstatt des FX2 ein FTDI Baustein nehmen,
> kostet weniger, weniger Entwicklungsaufwand, integrierter Clock.

Unsinn, der FX2 ist aktuell und kostet auch fast nix. Und hat gegenüber 
dem FTDI einen gewaltigen Vorteil: Die Geschwindigkeit. Mit dem FTDI 
schaffst du keine 42 MByte/s und der hat auch kein 16 Bit breites 
Interface.

Zurück zum Thema: Ich denke, der Chip ist kaputt, oder im EEPROM (falls 
vorhanden) ist was ganz seltsames drin, was nicht läuft.
#1155751
Lesenswert?

Nimm mal deine externe Spannungsversorgung weg und verwende die USB 5V.

Ohne EEPROM muss USBVIEW auch ohne Treiber das Gerät mit Vendor und 
Product ID anzeigen. Wenn nicht verlangt Windows auch keine 
Treiberinstallation.

Sind auch ohne EEPROM die pullup Widerstände  für I2C drin wie gross. 
Wenn nicht durchaus möglich dass Schrott kommt und das Teil erwartet 
dass Software aus dem EEPROM geladen wird.

Nachmessen hilft oft nicht man muss löten.
#1157403
Lesenswert?

Hannes wrote:
> Ich hatte das FX2 Board auch mal gekauft. Ich dachte das die Firmware
> auf dem FX2 bereits drauf ist. Und man nur noch die Daten anlegen muss.
> So hatte ich das damals verstanden.

Bei der Fülle an Ansteuermöglichkeiten und Konfigurationen, die der FX2 
bietet, wird es DIE universelle Lösung nicht geben. So schlimm ist die 
Firmware Geschichte aber nicht. Man muss sich halt einlesen und 
probieren.
#1159680
Lesenswert?

Einfach in TD_Init aus EEPROM z.B. bytes 8-16 lesen und nach _UsbSerNo 
Descriptor kopieren. Liegt ja irgendwo im internen  RAM.
Eben im DSCR als leeren String anlegen. Beispiel SDCC

_UsbSerNo:
StringDscr3:
                .db     StringDscr3sz           ;; Descriptor length
                .db     DSCR_STRING

                .db 
'S,0,'N,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0,0,'0 
,0,'0,0,'-,0,'0,0,'.,0,'0,0
StringDscr3End:
StringDscr3sz = . - StringDscr3
Gast #1161023
Lesenswert?

Mein FX2 Board läuft jetzt. War eine kalte Lötstelle. Der Klassiker...
Ich habe bereits etwas mit den Beispielen herumgespielt. Soweit alles 
ok.
Was mir noch nicht klar ist, ist wie ich die Daten vom FX2 am PC 
weiterverarbeiten kann. Die Beispiele gehen eben nicht so weit und alle 
Infos im Internet scheinen sich nur um Linux zu kümmern (wegen GnuRadio)
Kennt jemand ein Beispiel für Windows wo Daten vom FX2 eingelesen und 
angezeigt werden?
#1162303
Lesenswert?

Schau mal nach Infos über libusb. Damit lässt sich wenn es nicht absolut 
zeitkritisch ist alles abhandeln. Gute Dokumentation gibt es nur für 
Linux aber die Windows DLL Version ist von den Aufrufen vollkommen 
identisch.
Du musst eben den Windows Treiber zu libusb installieren. Dann braucht 
man selbst keine inf Files und eigene Treiber für USB.
USB in Windows ist noch grösseres Chaos als das System selbst.
http://libusb-win32.sourceforge.net
#1162396
Lesenswert?

Also. LibUSB ist eine feine Sache. Erlaubt aber keine asynchronen 
Transfers. SuitUSB.NET funktioniert gut, lässt sich auch prima 
installieren (als Admin), und bringt außerdem einen neueren Treiber mit 
als die C++ Variante mit der statischen Lib. Allerdings gehen dort die 
asynchronen Sachen auch nicht, bis hin zum BlueScreen. Synchron läuft 
recht gut, aber auch mit Tücken.
Wir haben´s dann ohne das API gemacht und direkt mit dem Treiber 
geredet, das klappt zuverlässig. Aber auch erst mit dem 1.8.120 aus dem 
.NET Entwickler Paket.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren