Hello, Guest the thread was called972 times and contains 56 replays

last post from bigby at the

ATF1504AS CPLD für FE3 über JTAG programmieren

  • Und nicht vergessen: Die Xilinx sind als EOL gekennzeichnet. D.h. so nach und nach wird der Markt dünner und die Anzahl

    der Fälschungen etc. aus China nehmen zu.


    Bei Lattice sind die wenigsten offen für Open Source Tools.


    Ist das IceStorm eigentlich schon brauchbar?

    Keine Ahnung... nie probiert.


    Die PLAdvanced habe ich mit den Hersteller Tools (ISPlepra) gemacht. Der Simulator ging so einigermaßen.

  • Bei Lattice sind die wenigsten offen für Open Source Tools.

    "Offen" ist eine seltsame Umschreibung für ein ohne Hilfe von Lattice durchgeführtes Reverse Engineering des Bitstreams.

    Ist das IceStorm eigentlich schon brauchbar?

    Das ist jetzt Teil von SymbiFlow

  • Zwei Schritte vor, einer zurück. Die weiteren ATF1504, die ich bei Mouser bestellt habe, sind eingetroffen. Und siehe da: Die reagieren auch auf das JTAG Interface. Tja, wer billig kauf, kauft halt manchmal zwei mal. :cursing:


    Anscheinend habe ich es dann aber auch gleich geschafft, einen der neuen CPLDs unbrauchbar zu machen. Da mir eh noch das passende EPROM für das FE3 fehlt, wollte ich die Programmierung des Chips zunächst unverbindlich testen. Also habe ich WinCupl gestartet und eine ebenso kurze wie auch sinn- und vermeintlich harmlose PLD Datei geschrieben, die die JTAG Pins unangetastet lassen sollte:


    Nachdem ich daraus eine JED und eine VSF Datei erzeugt und die mit OpenOCD geschrieben habe, reagiert auch dieser CPLD anscheinend nicht mehr auf der JTAG Schnittstelle. :( Kann mit jemand sagen warum? Hätte da die Zeile


    Code
    1. PROPERTY ATMEL {JTAG=ON};


    geholfen? Ich habe da anscheinend noch so einiges zu lernen...

  • Nachdem ich daraus eine JED und eine VSF Datei erzeugt und die mit OpenOCD geschrieben habe, reagiert auch dieser CPLD anscheinend nicht mehr auf der JTAG Schnittstelle. :( Kann mit jemand sagen warum? Hätte da die Zeile


    Code
    PROPERTY ATMEL {JTAG=ON};


    geholfen? Ich habe da anscheinend noch so einiges zu lernen...


    Ich gehe mal stark davon aus, dass Du mit der "Property Atmel"-Zeile immer noch JTAG-Zugriff auf das CPLD hättest.


    Ich hatte "damals" bei meiner FinalChessCard (siehe Signature) eine ganze Reihe von "Property Atmel"-Zeilen mit in meinen WinCupl-Quelltext aufgenommen und damit keinerlei Probleme gehabt. Geflasht habe ich aber nicht mit OpenOCD, sondern mit ATMISP7 und einem einfachen FTDI-Adapter, der sich mit passendem EEProm als ATDH1150USB (ein Programmiergerät von Atmel) ausgibt. Lief unter Windows 7 eigentlich problemlos... (Keine Ahnung, wie das unter Windows 10 wird, wenn ich in ein paar Monaten darauf updaten muss...)


    Schau Dir einfach mal die "Property Atmel"-Zeilen in meinem CPLD-Quelltext im in meiner Signatur verlinkten Repository an.


    Ich hatte bei meinem Design aber auch streng darauf geachtet, keine JTAG-Leitungen für irgendwelche Logik-Signale zu verwenden. Die Final Expansion macht dies jedoch, was bedeutet, dass Du den Chip extern einmal flasht, dann sind die JTAG-leitungen tot und dann setzt du den Chip in die Final Expansion. Ein nachträgliches Neuprogrammieren ist da nicht vorgesehen...


    Und schmeiß das gebrannte CPLD mal nicht weg. Es gibt bei diesen CPLDs einen Hochvolt-Modus (ich glaube 12V auf Pin 1 (???? / nicht sicher) ), damit wird die JTAG-Schnittstelle wieder aktiviert. Ich fing mal an mich damit zu beschäftigen, aber dann wurden wieder andere Dinge interessanter... :D


    Gruß

    Thomas

  • Ggf. steht hier etwas, wie du JTAG wieder aktivierst (10-12V an Vpp über Widerstand?).

    Ich beschreibe ebenfalls mit ATMISP und muss mit den Default-Einstellungen nicht extra sagen, dass JTAG aktiviert bleiben soll.


    Edit:Wobei die Properties wohl eher im Fitter genutzt/erzeugt werden => mit den Default-Werten auch in WinCUPL oder ProChip-Designer hat es mir nie den JTAG-Port abgeschaltet (natürlich vorausgesetzt man hat die Pins nicht anderweitig verwendet - in deinem Beispiel also richtig). So wie es aussieht erzeugt der ProChip-Designer aus Verilog oder VHDL auch wieder CUPL und benutzt ebenfalls den Standard-Fitter (verlängert also nur den Toolchain :D).

  • Als erstes mal vielen Dank für Eure Antworten!


    Ich gehe mal stark davon aus, dass Du mit der "Property Atmel"-Zeile immer noch JTAG-Zugriff auf das CPLD hättest.

    Meine Überlegung war ja genau anders herum: In meinem "Programm" hatte ich keine Property-Zeile und nun habe ich keinen JTAG-Zugriff mehr. Daher dachte ich, ich brauche die Zeile vielleicht. Aber inzwischen habe ich festgestellt, dass diese Zeile die VSF-Datei in keiner Weise verändert. Ich frage mich halt immer noch, wie ich mich ausgesperrt habe... ?(


    ATMISP7 und einem einfachen FTDI-Adapter, der sich mit passendem EEProm als ATDH1150USB (ein Programmiergerät von Atmel) ausgibt

    Ja, irgendwie hatte ich gehofft, mir nicht für jeden IC hier ein extra Gerät hinlegen zu müssen.Wo hattest Du Deinen Adapter denn her? Billige Nachbauten der anderen Geräte finde ich, aber den ATDH1150 irgendwie nicht.


    Ich hatte bei meinem Design aber auch streng darauf geachtet, keine JTAG-Leitungen für irgendwelche Logik-Signale zu verwenden. Die Final Expansion macht dies jedoch, was bedeutet, dass Du den Chip extern einmal flasht, dann sind die JTAG-leitungen tot und dann setzt du den Chip in die Final Expansion. Ein nachträgliches Neuprogrammieren ist da nicht vorgesehen...

    Ja, das ist mir bewußt. Daher wollte ich mein Programmier-Setup ja vorher mit einem vermeintlich harmlosen Programm (s.o.) testen.


    Ggf. steht hier etwas, wie du JTAG wieder aktivierst (10-12V an Vpp über Widerstand?).

    Interessanter Weise kann ich im Datenblatt zum ATF1504 keinen Hinweis auf Vpp finden. Aber ich werde das mal ausprobieren.

  • Interessanter Weise kann ich im Datenblatt zum ATF1504 keinen Hinweis auf Vpp finden. Aber ich werde das mal ausprobieren.

    Nur ein ganz ganz kleiner Hinweis steht dort drin: Unter "Pin Capacitance" steht als Note 2: "The OGI pin (high-voltage pin during programming) has a maximum capacitance of 12 pF"... (zumindest in meinem Datenblatt ausm Netz, gerade nochmal nachgeschaut)...


    Ja, irgendwie hatte ich gehofft, mir nicht für jeden IC hier ein extra Gerät hinlegen zu müssen.Wo hattest Du Deinen Adapter denn her? Billige Nachbauten der anderen Geräte finde ich, aber den ATDH1150 irgendwie nicht.

    Ich hatte mir da selbst einen Adapter unter KiCAD gezeichnet, mit einem FT2232D und ein paar Levelshiftern/Treibern. Sollte aber auch ohne Levelshifter/Treiber gehen, denke ich. Ich habe die KiCAD-Dateien mal als Archiv rangehängt. Nur ein passender Quarz war schwierig zu finden...


    Wichtig ist jedoch der korrekte EEProm-Inhalt. Das Programmier-Tool erwartet als String-Descriptoren (also als Device-Namen):


    Descriptor 1: "AtmelISP" (das ist der "Manufacturer")

    Descriptor 2: "ATDH1150USB" (das ist die "Product Description")


    VID und PID bleiben FTDI-Standard: 0403/6010.


    Falls Du einen FT2232D-Adapter verwenden willst, kann ich Dir bei dem EEProm-Inhalt gerne helfen...



    Gruß

    Thomas

  • So, ich habe das jetzt mal ausprobiert und 12V an OE1 gelegt. Das funktioniert einwandfrei, die JTAG Schnittstelle ist dann wieder verfügbar. Auf diese Weise konnte ich nun auch die 5 aus China importierten Chips "wiederbeleben"! :thumbup:


    Ich hatte mir da selbst einen Adapter unter KiCAD gezeichnet, mit einem FT2232D und ein paar Levelshiftern/Treibern. Sollte aber auch ohne Levelshifter/Treiber gehen, denke ich. Ich habe die KiCAD-Dateien mal als Archiv rangehängt. Nur ein passender Quarz war schwierig zu finden...

    Cool, vielen Dank dafür! Da komme ich zu einem späteren Zeitpunkt bestimmt gerne drauf zurück. Momentan habe ich allerdings ein paar offene Projekte zu viel... :-)

  • Tut mir leid, wenn das schon off-topic ist, aber ich hätte noch eine kleine Zwischenfrage: Gibt es für die Belegung dieser 10-poligen JTAG Anschlüsse, die ich des öfteren sehe, eigentlich einen einheitlichen Standard? Oder zumindest mehrere einheitliche Standards? Oder würfelt da jeder Hersteller bei jedem Board neu?

  • Tut mir leid, wenn das schon off-topic ist, aber ich hätte noch eine kleine Zwischenfrage: Gibt es für die Belegung dieser 10-poligen JTAG Anschlüsse, die ich des öfteren sehe, eigentlich einen einheitlichen Standard? Oder zumindest mehrere einheitliche Standards? Oder würfelt da jeder Hersteller bei jedem Board neu?

    Jein.


    Innerhalb einer Familie ist es definitiv Standard.

    Und im großen und ganzen sind sich die Hersteller einig.

    Aber im Detail habe ich bei einigen Boards immer wieder Ausreißer entdeckt.


    Das fängt schon damit an, dass die Spannung ja je nach Typ 5V oder 3,3V ist (oder noch weniger).

    Die unbenutzen Pins sind manchmal auf GND manchmal offen.

    Einige Exoten legen noch 12V auf einen der Pins, besonders praktisch wenn das Board die Pins auf GND legt ...

  • Muss die im richtigen Moment geschalten werden oder kann die auch dauerhaft anstehen während der Programmierung?

    Nach meiner Erfahrung kann die während der gesamten Programmierung anstehen. Mein "Test-Protokoll" mit einem "verprogrammierten" CPLD sah so aus:


    1. Vcc 5V an

    2. Keine Reaktion auf JTAG Scan

    3. Vpp 12V an

    4. JTAG liefert Rückmeldung

    5. Löschen des CPLD mit vorbereitetem SVF File

    6. Power off

    7. Vcc 5V an

    8. JTAG liefert Rückmeldung

    9. :thumbsup:


    Im Datenblatt findet sich dazu wie gesagt leider keine Info.

  • Tja, ich hatte auch schon auf einen Gebrauchten Galep in der Bucht geboten, aber am Ende ging der Preis dann doch weiter rauf, als ich bereit war zu gehen.


    Dann kam der entscheidende Tipp hier von toms01 . Nachdem ich auf den Link geklickt hatte, musste ich witziger Weise feststellen, dass ich irgendwann schon mal ein Bookmark auf die Seite gesetzt hatte. Hätte ich aber so nicht wiedergefunden...