mikrocontroller.net

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


Autor: Woko (Gast)
Datum:

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

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Autor: Nico Erfurth (masta79)
Datum:

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

Autor: Woko (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: Woko (Gast)
Datum:

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

Autor: SuperWilly (Gast)
Datum:

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

Autor: A. F. (artur-f) Benutzerseite
Datum:

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

Autor: A. F. (artur-f) Benutzerseite
Datum:

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

Autor: Dennis (Gast)
Datum:

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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aaaaa. ich habe Chris`Posting überlesen. sry

Autor: Woko (Gast)
Datum:

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

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

Autor: Christian R. (supachris)
Datum:

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

Autor: Woko (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

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.