Hallo Zusammen, ich habe folgendes Problem und weiss noch nicht wie ich das überhaupt anfangen kann zu lösen. Ich will eine GSM Engine wie z.B. (Siemens HC 25, oder Telit) an einen FPGA anschliessen. http://www.telit.com/en/products/umts-hsdpa.php?p_id=14&p_ac=show&p=13 Die Engines sind komplette HF-Boards um z.B. HSDPA also High Speed GSM Verbindungen aufzubauen. Bisher habe ich das immer über die serielle Schnittstelle und einem Soft UART im FPGA angeschlossen. Die hohen Geschwindigkeiten von bis zu 7 MBit kann man aber nur per USB Anschluß im High-Speed Mode mit der Engine austauschen. Die Hersteller liefern da zwar komplette Windows Treiber etc. aus, aber das hilft mir bei einem FPGA leider gar nicht weiter. (denn das ganze soll auch ohne PC funktionieren) Eine Idee hatte ich schon, und zwar mit einem USB-to-Seriell Chip zu arbeiten, weiss aber nicht ob dies so ohne weiteres transparent funktionieren kann. Alternativ kann ich natürlich noch irgendwie einen Controller mit USB auf der einen und SPI auf der anderen Seite einsetzen. Über eine Hilfe wo ich ansetzen kann wäre ich sehr dankbar. Wer hat schon mal USB Devices (aber kein Massenspeicher) an einen FPGA angeschlossen? Viele Grüße Woko
>USB-to-Seriell Chip das wird dir nicht weiterhelfen, das sind i.A. nur USB-Devices. Du brauchst aber eine USB-Host-Implementation und die nötigen Treiber. Das ist eine sportliche Aufgabe. Wieso nimmst du nicht einen AVR mit OTG-Funktionalität, der hat den Host schon mit drin. Dann musst du nur noch die SW portieren.
Woko wrote: > Ich will eine GSM Engine wie z.B. (Siemens HC 25, oder Telit) an einen > FPGA anschliessen. Nach meinem letzten Wissensstand hat Siemens die Abteilung verkauft. Also mit den HC25 wäre ich vorsichtig falls du da was kommerzielles drauf aufbauen willst. Die Telits .... naja die hatten massive Probleme Ihre Firmware in den Griff zu kriegen. So langsam gehts, aber irgendwie, für zwei entfernte Bugs bauen sie einen neuen ein. > Die Engines sind komplette HF-Boards um z.B. HSDPA also High Speed GSM > Verbindungen aufzubauen. Bisher habe ich das immer über die serielle > Schnittstelle und einem Soft UART im FPGA angeschlossen. > Die hohen Geschwindigkeiten von bis zu 7 MBit kann man aber nur per USB > Anschluß im High-Speed Mode mit der Engine austauschen. > Die Hersteller liefern da zwar komplette Windows Treiber etc. aus, aber > das hilft mir bei einem FPGA leider gar nicht weiter. (denn das ganze > soll auch ohne PC funktionieren) Die HC25 find ich im normalfall schwer zu nutzen. Die letzte Version die ich davon in den Händen hatte wollte erstmal immer in den Composite Modus gehen (um sich dann als Mass-Storage zu präsentieren) Da musste man dann erstmal einen SCSI-Eject machen damit sie sich als normales cdc-device zeigen. (Lässt sich nach dem ersten mal aber via AT-Commands umstellen) Für die Telits kann ich dir empfehlen dir mal usb-serial.c und option.c im Linux kernel anzuschauen. Damit laufen die hier problemlos. Vlt. findest du da ein paar Anhaltspunkte. Ein reiner usb-serial-adapter bringt dir hier nix. Da die normal nicht im HostModus arbeiten. Ausserdem brauchst du, um die volle Funktionalität zu nutzen, Zugriff auf zwei der virtuellen Com-Ports.
@Lothar Jaaa, der OTG Mode ist glaub ich mehr für Mass Storage Devices gedacht, oder nicht ? @Nico Ja, das Telit massive Software Probleme hat habe ich auch schon mehrfach selbst erlebt, zwar mit anderen engines, aber dass ist auch der Grund warum ich für eine neue Anwendung die HC25 von Cinterion verwenden will. Ja die Siemensabteilung ist verkauft, die heissen jetzt Cinterion. War wohl ein Management buy out. Die stehen wohl recht gut da am Markt. Ich hatte den Telit Link eingefuegt weil der frei zugänglich ist... "...Die HC25 find ich im Normalfall schwer zu nutzen. Die letzte Version die ich davon in den Händen hatte wollte erstmal immer in den Composite Modus gehen (um sich dann als Mass-Storage zu präsentieren) Da musste man dann erstmal einen SCSI-Eject machen damit sie sich als normales cdc-device zeigen. (Lässt sich nach dem ersten mal aber via AT-Commands umstellen).." Hattest Du die denn per Windows oder Linux angeschlossen oder über einen Microcontroller ? @all Könnte man den Vinculum Chip von FTDI nutzen oder ist das auch wieder so ein "Mass Storage Device" Teil ? Gruss woko
Du brauchst einen recht universellen USB-Host-Stack mit genau dem Treiber der zu dem USB-Device passt. Die Vinculum gibts nur für bestimmte Devices: Mass-Storage, die FTDI-USB-Serial-Wandler... Du müsstest erst mal den PC-Treiber auseinander nehmen und dann auf deinen Zielprozessor portieren. Eine aufwendige Sache.
Aalso was ich jetzt in der Doku rausgefunden habe muss ich wohl sogenannte USB message pipes aufmachen. "...A USB host has to support at least 6 „Message Pipes“ (see “Universal Serial Bus Specification Revision 2.0“3 for a definition of the term „Message Pipe“) to work with the USB interface." Hat das denn schon jemand mit FPGA oder AVR und Co hinbekommen ? Gruss und Danke auch für die bisherigen Tips ;-)
Wenn Du funktionierende USB hardware auf einem FPGA implementieren möchtest, dann solltest du einen IP-Core in Betracht ziehen, ansonsten verspreche ich dir : Das wird nichts! Gruß, SuperWilly
Schaue dir den MAX3420, habe mir davon mal Samples bestellt gehabt. Weiß aber nicht, ob man damit auch andere Geräte außer HID implementieren kann.
PS: Doch müsste gehen, habe jetzt auf der Webseite nachgeschaut ( http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4751/ln/en ) Da steht folgendes: Cameras Cell Phones Custom USB Devices Desktop Routers Instrumentation Microprocessors and DSPs MP3 Players PC Peripherals PDAs PLCs Set-Top Boxes Ich empfehle aber in dem Fall einen µC oder ARM einzusetzen, der das alles abwickelt und wiederum mit dem FPGA kommuniziert über z.B. ein 8Bit parallel-Interface. Treiber für den Chip in VHDL zu schreiben in Selbstmord :)
>Alternativ kann ich natürlich noch irgendwie einen >Controller mit USB auf der einen und SPI auf der anderen Seite >einsetzen. würde dir evtl. ein VNC1L helfen? USB-Host auf SPI. http://www.vinculum.com/prd_vnc1l.html
Hallo Zusammen, ich geh mal die bisherigen Antworten durch: Also: ja ein USB Treiber komplett in VHDL scheint mir auch recht schwierig zu sein, da bricht man sich wahrscheinlich wirklich die Finger. Ich bin jetzt am Recherchieren ob man mit dedizierten USB-Host-Kontrollern, die die Hauptarbeit machen, weiterkommt... wie den hier von smsc http://www.smsc.com/main/catalog/usb3300.html#Additional%20Information Da hab ich nur das kleinere Problem wie ich die 12 ULNP Anschlüsse an meine restlichen 8 FPGA-Leitungen dran krieg, aber da muss ich irgendwas Multiplexen. Es scheint mir sowieso, das viele Chips und Devices nur mit USB ausgestattet werden die alle dann den (danke an die Tippgeber) offensichtlich den USB OTG Mode supporten. Einen ARM will ich mir ersparen weil ich so schon kaum Power übrig hab Verfügung hab. Außerdem weitet sich das ganze eh schon zum Supergau aus, ...weil eigentlich wollte ich nur eben einen bestimmten GSM-Chipsatz anklemmen, und jetzt bin ich bei soviel zusätzlicher Elektronik und Firmware angelangt, dass es bald keinen Spaß mehr macht. Es scheint mir das Standardverfahren für Transparente Datenübertragung mit EINEM USB Device zu sein. Hier hab ich zumindest mal so Allerlei zu den Details in verständlicher Form gefunden. http://www.beyondlogic.org/usb/otghost.htm Hat den schon mal jemand den USB OTG Mode programmiert, eingesetzt ? Gruß und Danke schonmal wieder an alle Woko
Hast du denn den Treiber für deinen GSM-Chipsatz im Quellcode vorliegen, oder eine Doku, welche Daten in welchen Endpoints was machen? Ohne kannst du die Sache auch fast vergessen, da müsstest du aufwendiges Re-Engeneering betreiben, um das herauszubekommen. (USB-Sniffer am PC erst mal).
Hallo Christian, ja ich habe quasi die Programmieranleitung für den GSM Chipsatz, was man denn an Kommandos an welche pipe senden kann und muss. Dies ist wohl auch nicht weiter schwierig, WENN - ja wenn ich denn überhaupt mal eine Kommunikation in Gang bringe. Nur wie ich die so genannten Pipes dann aufmache ist mir nicht klar. Ich bin mir ja nicht mal sicher ob und was denn zur Kommunikation über solche Pipes überhaupt nötig ist. Macht das dann ein USB Host Chip (s.o.) für mich oder muss ich das quasi selbst machen? Gruss Woko
Hm, das kann ich dir nicht sagen, denn solche Funktionen werden normalerweise vom Betriebssystem und einem passendem Gerätetreiber bereitgstellt. Du sitzt ja dann quasi auf unterster Ebene, da musst du erst mal alles drumherum zum Laufen bekommen (Erkennung der Geräte, Enumeration usw.). Ich weiß nicht, ob das alles auf einem FPGA klappt. wenn dann überhaupt nur mit einem Prozessor (Softcore) und einem USN OTG Controller. Auf jeden Fall eine sportliche Aufgabe, da muss man schon recht viel ahnung von USB und allem was dazugehört haben.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.