www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Kann man einen USB direkt an einem FPGA betreiben.


Autor: Dieter Mq (marqu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte gerne eine USB-Buchse als Device am Altera FPGA Cyclon 
EP1C6Q240C8 anschließen. In der Zeitschrift ELEKTOR Teil8 ist ein 
Beispiel das ich gerne auf meinen T-Rex C1 nachvollziehen möchte. Laut 
Schaltplan in der Elektor wird D+ und D- nur mit den beiden FET's für 
low- bzw. full-speed über 1.5 Kohm beschaltet. D+ D- geht direkt am 
Eingang des FPGA LVDS51p bzw LVDS48p.
Geht das ohne "Treiber IC"?
Muß man auf kurze Verbindung achten oder ist das ganze unproblematisch?

Gruß Dieter

Autor: Achtung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe sowas noch nicht gemacht und denke auch, daß es von der 
Betriebsstablilität her nicht sinnig ist. Ich wäre aber daran 
interessiert ,zu erfahren, ob es nicht doch geht. (?)

Zwischenzeitlich könnte Dir eine Schaltung bereitstellen, wie Du vom 
Cyclone auf USB kommst.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es geht.
Ich hab das USB-Beispiel für Elektor entwickelt - und es funktioniert 
ganz hervorragend.
Man ist zwar bei den elektrischen Parameter (Slewrate, Pegel, ...) nicht 
ganz USB-Spec-Konform aber bisher habe ich noch bei keinem PC Probleme 
desswegen. Allerdings gehen nur low- und full-speed auf diese Weise. Für 
high-speed braucht man einen Phy.

Autor: Nullplan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin nicht sicher, ob dieser Thread
den gleichen Fall beschreibt, den Ich habe....

Ich möchte eine kleine Zeilenkamera bauen.
Die CCD Zeile soll über einen CPLD gesteuert
werden.

Diese Einheit soll einen kleinen Befehlssatz
verstehen können (z.B. belichtungszeit. start messung etc)
Die Einheit soll von einem PC über USB
betrieben werden, d.h. die Befehle werden über
USB zu der Zeilenkamera gesendet.

Frage:

Kann ich den USB (z.B. FTDI) allein über
den CPLD steuern oder muß ich einen
Mikrocontroller dafür nutzen?

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da in dem FTDI-Chip schon die ganze USB-Logik drin ist, sollte das kein 
Problem sein. Mit direkter Ansteuerung hat das aber nichts zu tun. Du 
musst dir nur noch einen Befehlssatz und eine dazu passende 
State-Maschine für das CPLD überlegen.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nullplan
Ein FTDI-Chip kannst du auch im sogenannten BitBang-Modus betreiben, 
damit bekommst du so was wie ein In-Output-Port mit Schreib- und 
Leseimpuls, den direkt mit einem CPLD verbinden kannst. So benötigst du 
keinen UART im CPLD.

Gruss Andi

Autor: HB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andreas:

Ich habe mir das Beispiel von Elektor auch angesehen und habe dazu eine 
Frage:
Seh ich das richtig, das diese Lösung für einen Xilinx Spartan3 nicht 
denkbar ist, weil da die I/O's nicht 5V tolerant sind?

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die I/O's beim verwendeten Cyclone sind ebenfalls NICHT 5V tolerant.
Dies ist aber kein Problem da USB mit 3,3V Signalpegeln arbeitet.

MfG.
Andreas

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das USB-Modul kann mit 5V Pegeln und mit 3,3V Pegeln arbeiten. Dafür 
gibt es bei dem USB Modul (FDTI-UM245R) einen Jumper. Das Modul kann man 
sogar bei Farnell bestellen. Den Treiber für die PC-Seite gibt es auch 
auf der FTDI-Homepgae. Zudem sind da auch Bsp. wie Du den Treiber 
ansteuern kannst. Die Beispiele sind in unterschiedlich 
Programmiersprachen. Deshalb beide DAUMEN hoch für FTDI so muss das 
sein.

Den USB-Chip von FTDI kann man sehr einfach ansteuern. Du legst mit 
Deinem CPLP die Daten an Deinen 8 Bit Datenbus an. Anschließend änderst 
Du den Zustand der CLK_Leitung von '1' auf '0'. Durch diese abfallende 
Flanke erkennt das USB-Modul, das die Daten die anliegen übernommen 
werden sollen. Danach setzt Du das Signal wieder von '0' auf '1' zurück. 
Du solltest aber unbedingt darauf achten, dass Du keine Daten an das 
USB-Modul senden solltest, wenn die Busy-Leitung gesetzt ist. Falls Du 
es doch machen solltest, wird das Modul nicht mehr richtig funktionieren 
und Du must es Neustarten.

Autor: hua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann Jemand mir die Schaltung mal zeigen?


Ich weiss nicht, ob ich richtig verstande habe.

"==" ist Pull UP Wiederstand:

   --==--|---------|--==--
USB      |FPGA     |      USB
   ------|         |------
         |         |
         |---------|

einfach so?

Autor: Johannes T. (johnsn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Frage kann ich nur Bestätigen. Mit einem Cyclone 1 (EP1C3T144C8) 
und sogar noch einer mieser Stiftleiste und Flachkabel zwischen 
USB-Stecker und FPGA funktioniert die Kommunikation prima.

Sogar Risetime und Falltime werden eingehalten.

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.