mikrocontroller.net

Forum: FPGA, VHDL & Co. Projektvorlage FX2 + XC3S


Autor: Luky (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Luky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem FIFO - Modus habe ich schon gefunden, aber leider ohne 
konkretere Angaben wie man es implementiert und welche Datenrate das 
Teil dann wegschaffen kann.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Luky (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Der RESERVED Pin des FX2 muss an Masse liegen. Oder der Reset passt 
nicht, das muss sehr schnell gehen, da gibts ein extra Dokument. power 
and Reset Considerations... oder so.

Autor: Luky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reserved liegt auf GND, WAKEUP auch und die Resettimings sind alle 
überprüft.
Auf dem anderen Testboard funktioniert es aber bei gleicher Beschaltung.
Der Quarz schwingt nicht an.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wakeup ist Low-Aktiv. Wenn der auf Masse ist, wird der 8051 ständig mit 
dem Wakeup-Interrupt befeuert. Mit der Standard-Firmware versucht der 
dann auch noch, den PC aufzuwecken (Remote Wakeup). Schau mal, ob das 
eventuell das Problem ist. Wakeup hat ja schon was mit dem Oszillator 
und der PLL zu tun.

Autor: Luky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Datenblatt löst eine Änderung des Pegels einen Interrupt aus.
In den Hardware considerations steht nur, das der Pin entweder auf Masse 
oder VCC hängt, vorzugsweise mit 10...100k zum Debuggen

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na gut, hätte ja sein können, dass es daran liegt. Leider weiß ich da 
nun auch nix mehr. Bei uns laufen die außerordentlich zuverlässig. Auch 
im Klimaschrank...

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist denn da schon eine eigene Firmware drauf oder der nackte Chip ohne 
EEPROm usw?

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist der nackte Chip. EEPROM ist noch nicht aufgelötet.
Das EZ-USB Control Panel meldet "No Cypress USB Devices detected"

Autor: Wolfgang R. (portside)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
USB Fehler am Chip alle Anschlüsse nachlöten - USB-BUCHSE 
nachlöten/tauschen

Bei windows usbview.exe verwenden und schauen ob Gerät überhaupt von der 
Hardware erkannt wird - enumeration.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Control Panel geht eh nur mit dem alten ezusb Treiber. Für den FX2 
gibts einen neuen Treiber, den CyUSB.sys und da passt dann die CyConsole 
oder die CyConsole in .NET dazu. Aber zum Treiber installieren kommst du 
ja gar nicht, oder?

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für neuere Projekte würde ich anstatt des FX2 ein FTDI Baustein nehmen,
kostet weniger, weniger Entwicklungsaufwand, integrierter Clock.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfgang R. (portside)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfgang R. (portside)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder lädt man die Firmware über USB (Standard) oder man setzt ein 
entsprechend grosses EEPROM ein und speichert dort.

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat eigentlich jemand eine Loesung, bei der sich ein FX2 mit der 
Seriennummer aus dem On-Board EEPROM meldet, aber die Firmware von PC 
vom PC holt?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht leider nicht. Es sei denn, du startest dann aktiv einen neuen 
Download der Firmware mit anschließenden Renum. Im "Mini"-EEPROM ist nur 
Platz für VID/PID/DID. Und im großen EEPROM ist die Serial irgendwo 
drin, je nachdem, wo der Assembler/Linker sie platziert.

Autor: Wolfgang R. (portside)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Luky (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal in das BulkLoop Demo. Ansonsten einfach die 
API-Dokumentation benutzen.

Autor: Wolfgang R. (portside)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe bei Cypress was interessantes gefunden:
SuiteUSB.NET 2.0 - USB Development tools for Visual Studio 2005 and .NET 
2.0/3.0
leider bricht schon die Installation mit einer Fehlermeldung ab.
USB und Windows macht echt Probleme...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende für meine Projekte WinUSB. Bisher keine Probleme damit 
gehabt, asynchrone Transfers funktionieren auch problemlos.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.