Forum: FPGA, VHDL & Co. USB Device an FPGA oder mc


von Woko (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>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.

von Nico E. (masta79)


Lesenswert?

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.

von Woko (Gast)


Lesenswert?

@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

von Christian R. (supachris)


Lesenswert?

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.

von Woko (Gast)


Lesenswert?

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 ;-)

von SuperWilly (Gast)


Lesenswert?

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

von A. F. (artur-f) Benutzerseite


Lesenswert?

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.

von A. F. (artur-f) Benutzerseite


Lesenswert?

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 :)

von Dennis (Gast)


Lesenswert?

>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

von Dennis (Gast)


Lesenswert?

aaaaa. ich habe Chris`Posting überlesen. sry

von Woko (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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).

von Woko (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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
Noch kein Account? Hier anmelden.