FX2 - ein Versuch mit USB 2.0

Eine Europlatine (160 mm x 100 mm) zum „Herumspielen“ mit dem Cypress EZ-USB FX2 USB-2.0-Chip

Dieser Schaltkreis, der neben dem kompletten USB-2.0-Interface mit 480 MBit/s (brutto) auch eine komfortable FIFO samt programmierbarer Steuerung enthält, bietet sich zum Basteln an, wäre er nicht in einem 128beinigen Flachgehäuse!
Die Entscheidung für den größten Typ, CY7C68013-128 TQFP, fiel, um externen RAM-Speicher zwecks Debugging anschließen zu können.

Deshalb wurde im Zuge eines (ausgelaufenen) Forschungsprojekts die folgende 2seitige Leiterplatte konstruiert. Es werden keine industiellen Durchkontaktierungen benötigt!

Folgende Anwendungen dieser Leiterplatte stehen als mögliche Ziele:

Schaltplan

…wurde in Eagle erstellt und dem Cypress-Referenzdesign CY3681 nachempfunden. Der im Referenzdesign enthaltene FPGA wurde weggelassen. Er dient dort als Adressdekoder und zum Debuggen (oder, um den Nachbau zu erschweren). Nur auf kompatible Leuchtdioden muss man so verzichten.

RAM, ATA-Anschluss, RS232 und die Port-Expander PCF8574 sind gleich aufgebaut. Zusätzlich sind auf einem zweireihigen Steckverbinder für ein 19-Zoll-Einschubsystem alle erdenklichen FX2-Signale herausgeführt.

Schaltplan ICs Schaltplan Steckverbinder
Schaltplan; Eagle-Dateien
Man klicke auf die Bilder für wirklich lesbare Versionen der Schaltpläne! Letzte Änderung: Der LM317LZ erweist sich als nicht stromergiebig genug; er wurde durch eine simple npn-Transistor-Längsregelung mit Z-Diode 3,9 V und Basisvorwiderstand 100 Ω ersetzt.

Leiterplatte

...sollte teilbestückt in Betrieb genommen werden. Auf den folgenden Fotos ist die Bestückung für den Betrieb des IDE-Geräte-Anschlusses (ATAPI, USB-Festplatte) zu sehen.
Die externen RAM-Schaltkreise sind noch nicht bestückt; hierfür sind Typen aus alten PC-Boards (Cache-RAM) vorgesehen. Die fressen zwar viel Strom, sind aber beim Bastler massenhaft vorhanden und »müssen weg«.
Leiterplatte von oben Leiterplatte von unten
Teilbestückte Leiterplatte (Europlatine); Belichtungsfolie
Als bisher ungetestetes Extra ist der MAX232 zur Pegelkonvertierung an den beiden seriellen Schnittstellen bestückt.
Beim Entwurf wurde darauf geachtet, SMD-Bauteile der »großen« Bauform 1206 verbauen zu können, 0805 lässt sich ebenso auf die Pads löten.

Eigentlich ist das Löten von SMD-Bauteilen überhaupt nicht schwer, aber Voraussetzung ist eine perfekt Zinn annehmende Leiterplatte! Daher habe ich alle Lötpads vor dem Bestücken einzeln unter Zuhilfenahme von Wasserrohr-Flussmittel hauchdünn verzinnt, die Leiterplatte mit Wasser und Seife gewaschen und dann bestückt: Es ist dann kinderleicht.
Die kupfernen Flecken auf der chemisch vorverzinnten Leiterplatte kommen davon, wenn man das Wasserrohr-Flussmittel nicht abwäscht.

IC CY7C68013-128AC = EZUSB FX2
Detailansicht: Handgelöteter 128beiniger SMD-Schaltkreis

Inbetriebnahme

Teilbestückung

Bitte erst einmal nur teilweise bestücken: Mehr erst einmal nicht!

Erste Inbetriebnahme

Die Inbetriebnahme der Schaltung erweist sich des öfteren als Stolperfalle. Oft meldet die Inbetriebnahme "defektes USB-Gerät". Prüfen Sie daraufhin: Dann muss ein Gerätetreiber angefordert werden, dem man die EZUSBW2K.INF aus dem Cypress-Entwicklungskit zu fressen vorwirft. Dann starte man EzMr.exe und sieht nach, ob das Gerät gefunden wird.

Im High-Speed-Modus haben die verfügbaren Pipes >64 Bytes Länge; dies ist die einzige mir bekannte Erkennungsmöglichkeit.

Weitere Bestückung

Je nach Belieben kann nun weiter bestückt werden. Empfehlenswert ist die Bestückung der Wannenbuchse, der zugehörigen Kondensatoren und Widerstände sowie der LED "DASP" (Drive Active / Slave Present).

Zur Funktionsprobe großer Teile der Leiterplatte wird der ATAPI-Geräteanschluss getestet. Dazu folgende Vorgehensweise:

Das Programm legt nur mit angeschlossener Festplatte los! Die HDD-LED (»DASP«) muss kurz aufleuchten; danach meldet sich der FX2 als USB-Festplatte. Unter Windows 98 wird noch ein Treiber benötigt: Weil kaum etwas zu finden ist, hier die Software noch einmal zum Download.
Board mit IDE-Festplatte
Betrieb mit IDE-Festplatte als USB-Festplatte (Funktioniert!)

Fallstrick

Bei mir ist es passiert, dass ich nicht genügend gewartet habe, und dann enthält der EEPROM ein abstürzendes 8051-Programm. Dann gibt es das Problem, dass man das Board mit gestecktem Jumper nicht starten kann, und das EEPROM-Brennprogramm erfordert, dass der 2-Byte-EEPROM beim Start des FX2 detektiert wurde (Bit ID1 in I2CS @0xE678 gesetzt). Wie bekommt man wenigstens das erste Byte des EEPROM gelöscht, ohne ihn auszubauen? Der richtige Weg ist:

Bug

Der Cypress-Treiber ezusbdrv.sys hat einen lästigen Fehler, der gerade beim Entwickeln zum Bluescreen führt: Bei HandleRemoveDevice() fehlt ein Test, ob pInterfaceInfo kein NULL-Zeiger ist.

Größenvergleich

Bei FX2-Projekten will man meist möglichst klein bauen. Enttäuschenderweise sind die vier gängigen ICs etwa gleich groß:
Drei ICs
Größenvergleich auf 5-mm-Kästchenpapier
Die auf dem Foto gezeigten Schaltkreise sind längst vom Markt verschwunden, diese ziehen viel zu viel Strom. Sie sind durch die „A“-Serie ersetzt, die neben doppelt so viel RAM (16 KByte) ein paar Features, aber auch einige Widrigkeiten mehr hat.

Das etwas neuere 56polige Gehäuse LFXC ist schließlich bedeutend kleiner. Dieses „beinlose“ Gehäuse mit 0,5 mm Anschlussraster (also genauso dicht wie der 128beinige) lässt sich überraschend gut von Hand löten:

Hinzugekommen sind noch BAXC (Ball-Grid-Array 5 × 5 mm²) und LTXC, welches schließlich LFXC ersetzt. Leider gucken bei diesem Typen die Beinchen nicht heraus, sodass Kolbenlötung nicht mehr möglich ist.

Siehe auch