CPLD-Platine und OSHPark

Ich habe schon eine Weile nichts mehr von mir hören lassen.
Dennoch war ich nicht untätig und habe einige Bastelprojekte voran getrieben.

Da Klemens nun selbst über OSHPark berichtet, konnte ich mich überwinden und möchte direkt mit meinen Erfahrungen anknüpfen:

Vielleicht erinnert Ihr euch noch an die Toy-CPU ? Da bin ich noch dran. Ich habe mich entschieden, für die meiste Logik, Xilinx CPLDs zu verwenden. Hierfür habe ich ein minimals CPLD-Board für den XC9572 entworfen. Dies hat eine bequeme JTAG-Schnittstelle und alle IO-Pins werden nach außen geführt. Dies ist sozusagen die Hauptzutat der CPU.

Da ich momentan kein Knopf in der Tasche habe, muss ich auf den pin kompatiblen aber um 2/3 günstigeren XC9536 mit 36 anstatt 72 Makrozellen ausweichen. Der Engpass liegt meist ohnehin bei den 36 Ausgängen und die haben Sie im VQ44 beide. Der Chinese verkauft mir einen alten XC9536 im Schnitt für 1€.

Wenn es Interesse gibt, lade ich den Stuff gerne mal bei Gut hoch.
Ein paar Verbesserungen stehen beim aktuellen Platinenlayout aber noch an.

Hier der aktuelle Entwurf:

Leider ist OSHPark bei meiner ersten Fertigung etwas rabiat zur Sache gegangen(siehe rechtes Board):

Nach einer Beschwerde hat mir der Amerikaner aber 3 neue gedruckt. Ich konnte sogar den Moment meiner geistigen Umnachtung ausbügeln (neuen Entwurf eingereicht), da ich mich beim ersten Entwurf mit dem PC44 package vergriffen hatte. Der Service und die Qualität sind wirklich top.

Lustiger Zufall mit OSHPark. :grinning:

Ja, wir (ich) erinnern uns, wir haben selbst ebenfalls noch an der TOY-CPU weitergearbeitet. :wink: Ich weiß nicht genau, wie dein letzter Stand war, aber mein letzter Stand ist folgender:

Wir hatten funktionierende Platinen für den Programm Counter und IIRC den Multiplexer. Außerdem ein Design für das Register (ich bin mir nicht sicher, ob wir das schon aufgebaut hatten). Außerdem haben wir eine ALU-Platine mit 2 72XL-CPLDs entwickelt, da wir gerade noch zwei davon als SMD-Variante da hatten:

(Man sieht, dass das Tux-Logo-Design noch nicht so weit fotgeschritten war :grin:) Wir hatten das dann auch aufgebaut und erste Tests sahen gut aus. Leider hab ich dann beim Testen einen CPLD gegrillt. :roll_eyes: Wir wissen bis heute nicht den genauen Grund, ich vermute entweder ESD oder Spannung an einem als Output konfigurierten Pin.

Ich weiß nicht, in wie weit es dir weiterhilft, aber alle Boards und die VHDL-Implementierung der ALU gibts hier: https://git.tiband.de/toy/computer (Ich glaub das Repo kennst du noch?)

Edit: @max könnte eventuell Fotos der bereits vorhandenen Platinen hochladen.

Edit2: Ich seh gerade, zur ALU gibt es ja schon einen Thread: Toy-CPU ALU – Tiband style

1 „Gefällt mir“

Das werde ich mir auf jeden Fall mal etwas genauer ansehen, richtig nice !
Die XC9500 Serie ist bis 1000 Volt ESD geschützt, das mit dem I/O Vertauschen kann natürlich übel enden.

Ist hier noch jemand der über den aktuellen Stand berichten kann ?

Es gibt nun eine optimierte und offizielle Version im Blödmannszentrum.
Man finde Sie unter dem Namen BitConnector
Es ist eine ausführliche Dokumentation beigelegt.

Es folgt noch eine stand alone Version mit Schmitt-Trigger Eingängen und Spannungsregler

BitConnector6P

Ich habe mir mal den Entwurf „alu“ angesehen und halte ihn an 2 Stellen für problematisch.
Ihr habt da ein paar Spezifikationen von Xilinx Seite ignoriert, die da wären:

Man verwende die angegebenen Abblockkondensatoren an VCC und entsprechende Pullups an den JTAG Pins. Nachzulesen in „Xilinx - A Quick JTAG ISP Checklist“
Zudem muss man hier nicht unbedingt einen Linearregler einsetzen und wenn, wäre ich auch hier für eine Kondensatorbeschaltung laut Datenblatt: 10uF und 22uF.

Aber den hübsche Pinguin habt ihr natürlich nicht vergessen :wink:

Ich denke mittlerweile, dass die XC9572XL-VQ64 Variante für eine 16Bit ALU hier die klügere Wahl ist(bei 52 I/Os reicht ein IC und dieser ist preislich sogar erschwinglich (2€/Stück))

Das sieht ziemlich gut aus, werd ich mir am Wochenende mal genauer ansehen.

Im Rückblick war unser Design wohl etwas übereilt, das gebe ich zu, allerdings kann ich mir nicht vorstellen, wie fehlende Stützkondensatoren den CPLD zerstören sollen. Allerdings ist unsere Schaltung natürlich schon sehr bare-bones. :sweat_smile:

:grin:

Der hat ja aber nicht mehr Logik, oder? Ich glaube wir waren was das angeht schon ziemlich am Limit (müsste ich aber nochmal genau nachsehen). Realistisch gesehen wäre hier aber sowieso eher ein (EEP)ROM oder FPGA sinnvoller (wenn auch nicht so nerdig :wink:).

Jap hat er nicht. Aber wir reden hier ja ausschließlich von kombinatorischer Logik und 1600 mögliche Produktterme sind schon eine ganze Menge Holz. Im Grunde ist das eine der Stärken dieses CPLDs.
Ehrlicherweise sind die 1600 möglichen PT aber auch nur ein theoretischer Wert. Da fallen noch ein paar weg, da nur selten eine Konfiguration wie die Faust aufs Auge passt, genauso die die Produktterme auf die Makrozellen.

Ich biete hiermit die Möglichkeit einen BitConnector (mit allen Bauteilen)zum Schnäppchenpreis von 5€ zu erstehen.
Mit dabei ist auch ein Datenkabel und die Versandkosten sind inklusive, also alles in allem 5€.
Allerdings werden nur die Bauteile und die Platine geliefert, es muss also selber SMD gelötet werden. Im schlimmsten Fall sind dies Kondensatoren im 0603 package und der 44 Pin CPLD im VQ44 package.
Wer statt des XC9536XL (800 Produktterme) lieber einen XC9572XL mit 1600 Produkttermen haben möchte, zahlt 8€. Wer mehr geben will kann gerne spenden :wink:
Die Platinen sind von oshpark, also hochwertig.
Die Bordrevision ist jedoch nicht die aktuellste, was sich beispielsweise im 8Pin Connector äußert. Außerdem sind die Pinabstände von linker zu rechter Seite nicht ganz perfekt für ein Steckbrett, aber dennoch gut brauchbar. (zwei Reihen links und rechts sind jeweils noch auf dem Steckbrett frei )
Es handelt sich um diese Version: BitConnector%20v3X_F

Wer nicht mit Heißluft lötet, dem empfehle ich ein gutes Flussmittel (z.B. MCN-UV50) und diesen kurzen Lötkurs.

Zum VHDL proggen wird noch ein Programmiergerät benötigt und die ISE . Die kostenlose Lizenz reicht locker für alle CPLDS, ohne irgendwelche Einschränkungen.
Genaueres zum Programmiergerät und der ISE siehe Dokumentation Kapitel 5 und 6.
Klemens Ausführungen zur Treiberdinstallation des Programmiergerätes unter Linux sind sinnvoll und empfehlenswert.

Bei Interesse oder Fragen, bitte PM an mich.

Ach ja, unerlässlich für sequenzielle Schaltungen ist noch ein Taktgenerator.
Hier gibt es einen (nur Rechteck) für schlappe 2,14€, den ich selber habe:

1 „Gefällt mir“

Die neue Version v4X ist raus, allerdings noch ungetestet.
Neu ist, dass der Pushbutton nun über einen Tiefpassfilter und einen Schmitt-Trigger, eine eingebaute Hardwareentprellung verfügt. (wurde bereits über externen Versuchsaufbau getestet)

Einschub zur Hardwareentprellung: Nur einen Tiefpass für die Entprellung zu nutzen, ist eine sehr schlechte Idee und kann sogar CMOS Schaltkreise zerstören !!!
Dies geht auf Überlegungen zu unsteilen Flanken und undefinierte CMOS Pegel zurück, die einen sehr hohen Stromfluss zur Folge haben. Ihr könnt dies gerne mal an einem diskret aufgebauten CMOS Inverter testen, und den Eingangspegel so weit absenken, bis der Strombegrenzer der Versorgungsspannung anzieht … (Vorsicht !)

Zudem kann ein weiterer Inverter(unabhängig vom CPLD-Chip) genutzt werden, der ebenfalls eine Schmitt-Trigger Hysterese besitzt. Wer den zusätzlichen IC 74LVC2G14 nicht besorgen kann/will, der kann sich das Bestücken auch sparen und einfach einen dafür vorgesehenen Lötjumper setzen. So wird der Tiefpass und der Schmitt-Trigger 74LVC2G14 überbrückt. Man erhält so die ältere v3X Version des BitConnectors. Wer mir hier nicht folgen kann, siehe einfach diesen Schaltplan.

Tja Leute, was soll ich sagen … der XC9572XL und ich werden wohl in diesem Leben keine Freunde mehr. :slightly_frowning_face:

Ich hab am Wochenende den (gut verpackten und schnell versandten!) Bausatz von @lux aufgebaut. Hab ein Flussmittel von Stannol und bleifreies Zinn mit 0,7% Kupfer verwendet. Der Aufbau hat gut funktioniert, zwei kleine Brücken am IC konnte ich problemlos mit dem Flussmittel und einer Kupferlitze entfernen.

Leider lagen direkt nach dem Einlöten bereits IO Pins 4 und 27 auf Masse, was sich auch nicht verbessert hat, nachdem ich IO4 wieder abgelötet hab. Hab das Board dann trotzdem fertig aufgebaut, aber die Output-Treiber sind definitiv defekt (>1A bei 3,3V).

Damit haben 2 von 3 von mir verbaute XC9572XL nicht überlebt…

Die Löttemperatur war 330°C und ich hab keinen Pin länger als 2–3 Sekunden berührt. Im Datenblatt steht auch was von 150°C dauerhafter Betriebstemperatur, kann mir also nicht vorstellen, dass das das Problem war. Da die Kurzschlüsse bereits vor der ersten Inbetriebnahme bestanden, bleibt IMHO nur ESD…

Zur allgemeinen Aufmunterung gibts trotzdem ein Foto (des nicht funktionsfähigen Boards :sweat_smile: ):

Wenn ich das nächste mal bei Reichelt oder in Shenzhen bestell, guck ich mal, ob ich noch einen (oder besser 5…) XC9572XL günstig mitbestellen kann. Allerdings dürfte das Auslöten ohne Heißlust keinen Spaß machen, mal gucken was es da so gibt.

Erstmal Ruhe bewahren. Ich sehe den CPLD nocht nicht verloren, so schnell bekommst du keinen XC75xx zerschossen.

Von deinem Lötzinn bin ich nicht begeister, aber ok, das ist nicht Kriegsentscheidend . Wenn ich mir einige Pins deines Fotos so ansehe, ist es mit dem richtigen Kontakt zur Platine auch eher spärlich. Einige Pins sind gut verbunden, andere scheinen teilweise „gerade mal so“ aufzuliegen. Hier solltest du definitiv nacharbeiten.

Das sollte den CPLD nicht zerstören. Aber lese ich das richtig, da ist noch immer ein „Kurzer“ drin ?

Ein Ampere hält der XC75xx prinzipiell schon aus. Bei solch einem hohen Stromfluss sollten die leitenden Ausgänge dann definitiv an Spannung sehr stark einbrechen. Ein einzelner Ausgang schafft allerdings bei einem Kurzschluss gegen GND nur max. um die 50 mA. Bei rund 1A liegt der Fehler vielleicht nicht mal bei einem Kurzgeschlossenen I/O-Pin
Ich habe mal eine Ausganskennline erstellt.


Ich denke, du hast hier bestimmt schonmal eine „Messe“ dran gehalten ? Wie sehen die Spannungen an den einzelnen IOs denn so aus ? Sind sie alle gleich ?
Ich weiß leider nicht wie die CPLD Pins im Werkszustand konfiguriert sind, Eingang ? Ausgang ? Tri-State ?

Nein, das halte ich für unwahrscheinlich. Ich habe selber das Ding (fertig zusammengelötet) in der Hosentasche zu einem Vorstellungsgespräch mit gehabt, und das war noch lange nicht alles …

Fest steht, die 1A sind nicht gesund und hier stimmt hardwaretechnisch etwas nicht. Hilfreich wäre ein Auflichtmikroskop um die Pins genau zu untersuchen.

Andere Frage: Hast du den Taster auch richtig herrum eingelötet ?
Sind die 1A das max deiner Stromquelle ? (Strombegrenzer ?)

Ach ja, ein interessanter Versuch wäre, nur mal VCCint, VCCio und GND anzulöten.

Wir haben mehrerer Möglichkeiten:
1.) Du schickst mir das Ding zu und ich schaue mal.
2.) Ich kann dir ein XC9536 kostenlos zusenden.
3.) Du schaust mal genauer hin. Die Lötstellen des IC gefallen mir wirklich nicht besonders.
Auch bei manchen Pins auf der Steckerleiste warst du sehr zurückhaltend mit dem Lötzinn.
Aber das erklärt nicht die 1A.

Danke für die ausführliche Antwort! Ich hab mal kurz ein paar schnelle Sanity-Checks gemacht, am Wochenende hol ich dann auch nochmal den Lötkolben raus.

Das bleibt abzuwarten. :wink:

Das sieht nur von oben so aus, die sind alle gut verbunden (hab den Widerstand aller Lötstellen getestet). Ansonsten löte ich jetzt alles bleifrei.

Ja, der ist immer noch drin. Es wäre natürlich möglich, dass die entsprechenden Pins auf Output-Low konfiguriert sind, auch wenn ich das für unwahrscheinlich halte. Der Factory-Default sollte eigentlich Input/High-Impedance sein.

Wie sicher bist du dir da? Er wird schon nach wenigen Sekunden sehr warm, so dass ich bisher immer nach weniger als 5s die Spannung unterbrochen hab.

Die 1A treten auch auf, wenn nur 3V3, VCC und GND verbunden und all IO-Pins „floating“ sind. Hab auch testweise die IO-Pins auf Masse gesteckt, hat nichts geändert. Die Spannungen während des Betriebes hab ich bisher nicht gemessen (s. oben).

Der passt nur richtig. :wink: Hab aber grad nochmal nachgemessen und die Reset-Schaltung passt.

Einen Strombegrenzer hat die aktuell nicht. Bei Kurzschluss fließen 3,5A. Bei den 1A bleibt die Spannung nahezu konstant (geht nur knapp 10mV runter).

Ich werd mir am Wochende auf jedenfall nochmal die Lötstellen vornehmen und berichten. Hast du eigentlich noch das kicad-Projekt mit meiner Board-Version? Im git-Repo sind nur neuere mit anderem JTAG-Stecker.

Der maximale Stromfluss bei max. 70C Chiptemperatur beträgt: ≈1,6A, siehe hierzu Doc. Kapitel 4.4.
Aber zugegeben, das sind lediglich theoretische Berechnungen und diese waren recht aufwendig. Ich kann nicht ausschließen dass ich irgendwo einen Fehler gemacht habe. Um so interessanter finde ich jetzt endlich mal einen Fall aus der Praxis zu sehen. Kannst du die IC Temperatur mit einem Thermometer abschätzen ?

Da müsste ich mal sehr genau nachsuchen. Zumindest gibt es noch (auch auf Github in der aktuellen Version) die Pin-Konfiguration des 8 Pin JTAG Headers einmal hier und hier:

Hui … :astonished:, diese Aussage verdirbt mir ein bissel meine gute Laune.

Ganz großes !!!WARNUNG!!!:

Ich habe gerade mal die neue v4X zusammen gelötet und die gleiche CPLD Charge verlötet, wie ich dir habe zukommen lassen.

Was soll ich sagen: Obwohl alle Lötstellen tip top sind, habe ich das gleiche Problem wie du.
Ich habe den Verdacht, mit der IC-Charge stimmt etwas nicht … Ich habe extra nochmals das Datenblatt zum XC9536xl und XC9572 vergleichen. Die ICs sind laut Spezifikation VQ44 100% pin-kompatibel.

Nicht das es sich hier um Plagiate handelt. Der Xilinx-Schriftzug ist entgegen der anderen CPLDs die ich habe arg unscharf.

Analyse läuft …

Plagiate verdacht erhärtet sich: Ich habe hier einen XC9572xl einer anderen Charge und ein XC9536xl.
Lege ich bei diesen „normalen“ ICs an Pin 4 GND und an Pin 35 Vcc 3.3V, so gibt es erwartungsgemäß keinen Stromfluss. Lege ich hingegen an das „Plagiate“ ebenso die gleiche Spannung fließen schonmal 50mA. (es gibt noch 3 weitere Vccs und zwei weitere GNDs, so dass sich der Stromfluss aufsummieren könnte …)

Analyse läuft weiter …

Oh, das ist blöd, würde aber natürlich einiges erklären.

Außerdem sind damit auch meine Lötkünste wieder rehabilitiert? :grin:

Hab grad nach Methoden gesucht, ohne Heißluftpistole einen SMD-IC auszulöten und zumindest wenn man nur die Platine erhalten will gibts hier eine schöne Variante. Pads und IC zu erhalten ist wohl schwierig.

Die Plagiate haben sich bestätigt.
Ich hatte noch ein XC9572xl von einer anderen Charge der funktionierte sofort.
Wenn ich die gefälschten ICs unter einem Mikroskop betrachte, erkenne ich bei der gefälschten Variante dass die Beinchen auffallend dünner sind.
Ich frage mich langsam, ob in den gefälschten ICs überhaupt irgendetwas „Logisches“ verbaut ist.
Letztlich ist es nur ein Kunststoffgehäuse mit ein paar Beinchen daran? Wir werden es wohl nur erfahren, wenn wir sie aufflexen.

Mit etwas Fummelei könnte es auch so gehen https://www.youtube.com/watch?v=CVsmwFAkf7I
(min 5:40) Aber stress dich nicht, wegen diesem unsäglich schlecht gefälschten IC.

Ein erster Erfahrungsbericht: Grundsätzlich funktioniert die Methode ganz gut, allerdings benötigt man definitiv einen Draht der stabiler als der typische Kupfer(Lack)Draht ist. Ich hab den Draht beim auslöten zweier Seiten bestimmt 5 mal abgerissen.

Rohe Gewalt (abknipsen der Kontakte mit einer Zange) funktioniert übrigens auch sehr gut. :grin:

Nach dem Tausch durch einen XC9536xl funktioniert der BitConnector übrigens problemlos, siehe auch Toy-CPU ALU – Tiband style - #4 von klemens.