Forum: FPGA, VHDL & Co. Zugriff auf einen USB-Mikrocontroller


von Bustle (Gast)


Lesenswert?

Ich habe ein Entwicklungsboard mit einem CY7C68013A USB Mikrocontroller
und möchte darauf zugreifen. An dem Mikrocontroller ist ein 24LC64 und
ein FPGA (XC3S400) angeschlossen. Werd aber nicht schlau aus den ganzen
Informationen die ich bis jetzt gesammelt hab.

Kann mir jemand eine gute Seite nennen?

Oder ein Programm zum beschreiben, auslesen, testen des CY7C68013A?

Oder vielleicht ein Beispiel Code für den Mikrocontroller?


Wäre euch über Hilfe sehr dankbar

Gruß
Bustle

von FPGAküchle (Gast)


Lesenswert?

Hm, bei der FPGA steuerung des Hostinterfaces (FIFO's des FX2) hab ich
ein paar tipps auf Lager, für den integrierten uC (8051) nicht. Aber
bei Cypress findet sich zu dem Evalboard jede Menge Manuals und
Codeschnippsel.

von Bustle (Gast)


Lesenswert?

bin grad fleißig am Lesen und Lernen was die Steuerung des
USB-Mikrocontrollers betrifft.

Was für Tipps kannst du mir denn zu der Steuerung des Hostinterfaces
geben? Oder anders Formuliert (sonst weißt du wahrscheinlich zuviel was
du schreiben könntest), was gibt es für grobe Richtlinien/Tipss die beim
Einstieg zu beachten sind?

von Michael (Gast)


Lesenswert?

1. Muss man den USB Mikrocontroller etwa noch programmieren?

Ich dachte man kauft ein IC, dem man die Daten übergibt und dieser
erstellt daraus das USB Protokoll.

Grüsse

Michael

von Bustle (Gast)


Lesenswert?

Einen USB Mikrocontroller hat schon eine Default Einstellung. Aber die
scheitert schon daran, falls ein Interrupt Transfer durchgeführt werden
soll.
VendorID (Hersteller-Code), ProductID (Produkt Nummer) und Device
release (Chip Revisionsnummer) sollte auch einstellbar sein um später
u.a. den richtigen Treiber automatisch Laden zukönnen. Die können aber
leicht über einen externen EEPROM eingespeist werden.

Am eigentlichen Code hoffe ich selber nicht viel ändern zu müssen. Aber
wie gesagt, bin selber noch am Lernen. Das "EZ-USB Technical Reference
Maunal v1.2" von Cypress Hilft mir dabei glaub sehr gut.

Auch wie ich den USB-Mikrocontroller zum ersten mal (z.B. zum
beschreiben der EEPROM(s)) anspreche, habe ich noch keine Hilfe
gefunden.

von FPGAküchle (Gast)


Lesenswert?

<Was für Tipps kannst du mir denn zu der Steuerung des Hostinterfaces
<geben? Oder anders Formuliert (sonst weißt du wahrscheinlich zuviel
was
<du schreiben könntest), was gibt es für grobe Richtlinien/Tipss die
beim
<Einstieg zu beachten sind?

Schau dir genau Setup und Holdzeiten an, beachte das die flags langsam
wechseln. Es ist ziemlcih tricky mit 48 MHz die Daten zw. FPGA und FX2
transferieren zu lassen, wenn man auch die Füllstandsflags beachten
muss.

Das PEND Signal kommt nur dann richtig wenn die FIFO die du beschreibst
nciht voll bzw. die Fifo die du liesst nicht leer ist. eine gefüllt fifo
wird nicht vom FX2 geleert solange diese aktiv ist (CS und FIFO addr
aktiv) . Diese Hinweise stehen nicht so klar im Datenblatt. Es ist
einfacher Worte zw. FPGA und FX2 im einzeln auszutauschen (SLWR und
SLRD nur für einen Takt aktiv) so erzielbare Datenraten liegen bei
bielleicht 16MB/s. Bei Burstbetrieb (SLWR bzw. SLRD für 256 Takte
aktiv) sind datenraten bis zu 40 MB/s drin.

von Michael (Gast)


Lesenswert?

Sehe ich das richtig, das Cypress schon ein Code für den
USB-Mikrocontroller zur Verfügung stellt, der nur den Bedürfnissen
angepasst werden muss?

Hast Jemand links, wo beschrieben wird wie das USB-Protokoll für die
Übertragung aussieht?

Grüsse

Michael

von Uwe Bonnes (Gast)


Lesenswert?

Zwar nicht X, aber A.
Das U_niversal S_oftware R_adio P_eripheral(www.comsec.com/wiki,
www.gnudradio.org) verwendet ein FPGA und den 68013 und hat alle
Quellen offen.

von Klaus Bickert (Gast)


Lesenswert?

Falls noch von Interesse: Ich benutze den 68013 um Photon-Event Daten
aus einem Xilinx VirtexII fpga highspeed an den Experimentrechner zu
übertragen. Hab das beim Cypress-Kit mitgelieferte Framework jetzt auf
Assembler umgeschrieben, da ich auch ein Gps-Receiver
lesen/kommandieren muss und unsere Keil-Tools auf 4k Code limitiert
sind. Bin gerade am debuggen der Firmware.
 Das Projekt ist Open Source. Schreib an kfb@ufo-computers.com

von Bustle (Gast)


Lesenswert?

An dieses 4k Limit bin ich auch schon beim Testen gestoßen. Betrifft
dieses Limit nur C-Codes oder hast du es in Assembler geschrieben weil
die Übersetzung weniger Platz benötigt?

Gruß
Bustle

von Klaus Bickert (Gast)


Lesenswert?

Die beim Cypress Kit enthaltene Keil-Version sagt bei Compiler, Linker
und Debugger, dass nur 4k akzeptiert werden. Mitgeliefert ist auch nur
eine für cypress angepasste small-model library. Hab zwar eine large
gefunden, die kann aber keine dual DPTR, keine Zusatzinterrupts etc.

Mit EP1OUT/IN command interpreter, fpga handler, gps rx/tx handler, con
rx/tx, und port-bit (C und E) komme ich in assembler auf 3,7 K code,
88.2 byte data, und 10,8 k xdata. Geht mit ein wenig Luft in die 16kB
des 680013. A51 braucht ca 1/3 des C-codes (besseres
Code-recycling/sharing, effektivere Algorithmen.
  Hab jetzt die USB-Irq Jumptable hart verbogen und debug den EP1
interpreter. Aber irgendwas stimmt mit dem Simulator nicht, wenn ich im
Memory-Fenster EP1OUTBC auf 8 Byte setz, liest er im Sim die 0x80, die
bei der Initialisierung zum Arming geschrieben wurde. ???

von Bustle (Gast)


Lesenswert?

ne 4k??? Hab bei Keil eine 2k (0800H) Grenze.

oder interpretiere ich die Meldung beim compilieren falsch?

**********************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 08B9H BYTE
(109%) *
**********************************************************************
Program Size: data=49.5 xdata=4518 const=10 code=3193

Woher bekommst du eigentlich die genauen angaben mit dem Platzbedarf
von Code, Byte und xdata?

von Klaus Bickert (Gast)


Lesenswert?

Meine Keil-Tools liegen dem Cypress Kit Cy3684 bei. Nach dem Linken
zeigt er mir:
Program size: data=81.3 xdata=10812 code=3693
creating hex-file from "bulkext"...
"bulkext" -  0 Error(s)  2 Warning(s)

Die .3 kommen von den 11 bit variablen. Bulkext war ein Beispiel mit
dem fw, habs re-used. Const gibts bei mir nicht (Cy7c68013 ist ein
Dallas '390 Derivat, kein '251). Bei mir verweigert er bei
Code-Limitüberschreitung den Link-Prozess.
 Die warnings stammen von Zugriff auf 2 variable vom Startup-code (reg
bank 0) und dem Interrupt level (bank 1), als
***Warning L15: Multiple Call to Segment.

8051 ist 'n ganz blöder Mist! Der Dptr kann nocht auf den
ISpace/DSpace zugreifen. Muss ein paar Sachen neu schreiben.

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.