USB Blaster Programmer - Platine mit zusätzlichen Versorgungsspannungen

Es gibt so einen kleinen, ordentlichen und günstigen USB Blaster Programmierer für Altery CPLD/FPGA Schaltungen, der seine Rolle perfekt erfüllt.



Leider stellt es nicht die Versorgungsspannung bereit, was erfordert, dass die programmierbare Schaltung von einer externen Quelle gespeist werden muss. Verschiedene Stromkreise haben unterschiedliche Versorgungsspannungen (und manchmal sogar mehrere).
Zum Beispiel hat mein Lieblings-CPLD EPM3064 eine Spannung für die Versorgung des Kerns der Schaltung (VCCINT) und die andere für die Versorgung von Puffern der Endstufen I/O (VCCIO), damit die Schaltung in einem System arbeiten kann, das an unterschiedliche Spannungen angepasst ist, z.B. 3,3 V, 2,5 V.

Der EPM240 hat beispielsweise vier IOLABS-Blöcke und jeder dieser Blöcke kann seine eigene VCCIO-Spannung haben.
So kam ich auf die Idee, für den oben genannten Programmierer einen kleinen "Adapter" zu bauen, der die gängigsten Spannungen produziert. Das Ganze musste in das bestehende Gehäuse passen, was eine ziemlich große Herausforderung war. Die Annahme sollte folgende Spannungen beinhalten: +1,8 V, +2,5 V, +3,3 V, +5 V, +12 V.
Als Ergebnis entstand eine Platine, angepasst an die Größe des bestehenden Gehäuses, die mit zwei Drähten (an Masse und +5 V) an die Hauptplatine des Programmierers angelötet wird, wo sich der J1-Stecker auf der Originalplatine befindet. Die Platine hat auch zwei Löcher, durch die LEDs hindurchgehen können, die den Betrieb von der Originalplatine signalisieren. Wir haben es geschafft, alles auf eine einlagige Platine zu montieren, damit die Platine ohne Angst vor einem Kurzschluss eng an die Originalplatine passt.






Ich habe mich entschieden, alle Spannungen mit der Stiftleiste abzuleiten, da sie sich im Gegensatz zum Buchsenleiste nicht abnutzt (Buchsenleisten lösen sich bei häufigem Einsetzen schnell). Um mich vor einem versehentlichen Kurzschluss der Stifte im Moment des Kontakts mit etwas zu schützen, setze ich eine Kappe auf die Stifte (aus einer Buchsenleiste).

o Die Spannungen +1,8 V, +2,5 V, +3,3 V kommen von den dedizierten AMS1117-Stabilisatoren
o Die Spannung von +5 V kommt direkt vom USB-Anschluss
o Für eine Spannung von +12 V habe ich den Konverter MC34063 verwendet
Der Leser mag sich fragen, wozu das Vorhandensein von +12 V dient? Nun, die Notwendigkeit, diese Spannung zu haben, war im Grunde der Grund für die Entwicklung der beschriebenen Leiterplatte. Oftmals versuchen wir bei der Konstruktion eines Gerätes, eine Schaltung dafür auszuwählen, dass sie den Bedürfnissen entspricht, aber nicht zu ,,übertrieben" ist (d. h. es hat die erforderliche Anzahl an Anschlüssen). Zu viele Stifte und ungenutzte Stifte sind nicht nur Preisverschwendung (teurere Schaltung), sondern auch eine kompliziertere Leiterplatte (mehr Stifte = größeres Gehäuse = meist komplizierteres Platinendesign).
Daher reicht für viele Bedürfnisse z.B. das zuvor beschriebene einfache EPM3064 Schaltung aus. Diese Schaltung hat 30 I/O-Stifte. Allerdings war ich oft in einer Situation, in der ich den einen/zwei zusätzlichen Stifte verpasst habe und auf seltsame Kombinationen zurückgreifen musste. Es stellt sich heraus, dass die JTAG-Programmierstifte dieser schaltung (TDI/TMS/TCK/TDO) auch als Standard-I/O-Stifte fungieren können. Um sie dazu zu zwingen, gehen Sie in der Quartus-Umgebung wie folgt vor:
1. Klicken Sie mit der rechten Maustaste auf Schaltung, Device >> Device and Pin Options >> wählen, Karte "General".
2. Deaktivieren Sie "Enable JTAG BST Support"
3. Kompilieren Sie das Projekt neu



Leider wird nun ein Versuch, die "POF"-Datei zum Hochladen in die Schaltung auszuwählen, mit der mysteriösen Meldung "JTAG support disabled in file..." enden.

4. Gehen Sie also zurück zu Karte ,"Programming files" und wählen Sie "JEDEC STAPL Format File (.jam)" und kompilieren Sie das Projekt erneut.

Von nun an wird nach jedem Übersetzen zusätzlich zur Standard-POF-Datei eine JAM-Datei generiert und diese Datei sollte beim Programmieren ausgewählt werden.
Um einen Stapel mit abgeschalteten JTAG-Pins zu programmieren (oder umzuprogrammieren), braucht man leider - laut Kataloghinweis - einen speziellen Hochspannungs-Programmierer. Kein Wunder, denn wenn jetzt JTAG-Pins als Standard-I/O-Pins verwendet werden, woher soll das System dann wissen, dass wir sie für die Programmierung wiederverwenden wollen?
Es gibt jedoch einen Trick (der im Kataloghinweis nicht erwähnt wird). Wenn der EPM3064-Chip im Moment des Einschaltens eine Spannung von +12 V an seinem I/OE1-Pin sieht (im QFP44-Gehäuse ist es Pin 38), dann werden die JTAG-Pins wieder aktiv (bis zum Neustart) und können zum Programmieren verwendet werden. Bei dieser Methode sollten Sie natürlich einige Dinge beachten:
o +12 V an den I/OE1-Pin für die Zeit der Programmierung anschließen MUSS mit einem Schutzwiderstand in Reihe (z. B. 1kΩ). Ich weiß nicht genau, welche Spannung die Schaltung benötigt, da die andere Seite des Widerstands etwa 8 V beträgt.
o I/OE1-Pin sollte im Projekt entweder gar nicht verwendet werden, oder zumindest mit einem Jumper gesichert werden, der ihn für die Dauer der Programmierung vom Rest des Systems "abschneidet", damit +12 V darauf nicht kämen und andere daran angeschlossene Schaltungen beschädigen.
o die Stromsignale an den Pins TDI/TMS/TCK/TDO dürfen den Programmiervorgang nicht stören, d.h. sie dürfen nicht mit Ausgängen anderer Systeme verbunden werden, über die wir keine Kontrolle haben, oder sie können mit Ausgängen anderer Systeme verbunden werden, aber durch die Schutzwiderstände. Idealerweise werden diese Pins nur vom EPM3064-Chip angesteuert und für andere Schaltungen sind sie nur Eingänge.
o es ist eine Situation analog der Verwendung von MOSI/MISO/SCK-Pins von gängigen AVR-Mikrocontrollern für deren Zwecke. Dort ist der Pin zum Umschalten in den Programmiermodus der /RESET-Pin, der auch mit Fusebits abgeschaltet und in einen I/O-Pin umgewandelt werden kann, dann wird aber auch ein Hochspannungs-Programmierer benötigt).
Zussamenfassung
Die entworfene Platine erfüllt ihre Aufgabe perfekt, das einzige was noch hinzugefügt werden könnte, ist eine Spannung von 1,2 V, vielleicht könnte noch ein AMS1117 Regler hineingesteckt werden.
Kommentare
Kommentar hinzufügenHallo Nachdem ich deinen Beitrag gelesen habe, weiß ich nicht, ob ich das richtig verstanden habe. Es hat ein epm3032 mit einem blockierten jtag nur in der plcc-Version (I/OE1 ist auf Pin 44). Kann ich... [Mehr erfahren]
Hallo 1. Wenn Sie JTAG im aktuell erstellten Projekt deaktiviert haben, müssen Sie eine JAM-Datei generieren (Quartus lässt Sie die SOF-Datei nicht zum Programmieren verwenden). 2. Wenn der EPM3032... [Mehr erfahren]
Danke für die Antwort. Es stellte sich heraus, dass mein Altera die 7000er-Serie ist und genau der EPM7032SLC44-10 und nicht der 3032, wie ich vorhin geschrieben habe. Beim USB Blaster ist meine Version... [Mehr erfahren]
Hallo Ich habe eine Frage zu den Überprüfungsoptionen nach der Programmierung. Auf dem beigefügten Foto sehen Sie, dass die Schaltung nach der Programmierung die Überprüfung nicht besteht. Für mich... [Mehr erfahren]
Wenn +12 V an OE1-Pin angeschlossen sind, besteht die Schaltung die Programmierung und Überprüfung und ist SUCCESS. Wenn keine +12 V anliegen, dann wird die Programmierung bestanden, die Überprüfung wird... [Mehr erfahren]
Heute habe ich die Spannung des USB-Blasters überprüft, um den Altera mit Strom zu versorgen, und es kamen 2,69 V heraus, was wahrscheinlich nicht ausreicht. Ich habe eine externe Spannung 5 V angeschlossen... [Mehr erfahren]
Der USB Blaster versorgt den Chip nicht durch dieses graue Flachband, eine zusätzliche Stromversorgung oder Modifikation ist wie in meiner Beschreibung notwendig. [Mehr erfahren]
Hallo Ich bin auf der Suche nach der alten Version von USBblaster v3.1. Weiß jemand etwas über diese Version? Wo kann ich einen kaufen oder selbst aus einer Platine herstellen? [F] [Mehr erfahren]