mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA - Selbst-Reset Funktion


Autor: Paul B. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Kann ich mit einem Output-Pin den FPGA dazu bringen, sich selbst neu zu 
laden? Ich möchte eine sichere INIT-Funktion haben, fall es zu einem 
Fehler kommt. Ein Microcontroller soll einen sicheren Code an den FPGA 
senden, den dieser decodiert und sich dann neu lädt.

Einfach einen OUTPUT über 50 Ohm an den PROG_PIN, der im Betrieb dann 
"Z" ist?  Der PROGRAM_B hängt über 4k7 an VCCO.

Muss ich noch was beachten? HSWAP_EN ist auf GND gezogen. Damit müssten 
die Ausgänge im Ladevorgang alle "Z" sind und es dürfte nichts 
püassieren (Resetschleife!).

Autor: Klakx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was spricht dagegen, dass der Microcontroller den Reset am FPGA 
schickt/an der Leitung zieht?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei vielen FPGAs geht das auch über interne Config Ports, z.B. die ICAP 
bei Xilinx. Aber wir machen das genau so mit der Brücke zwischen IO und 
PROG_B. Mit dem Hswap Pin kannst du ja eh nur zwischen Floating und 
Pullup wählen, also keine Gefahr dass da jemand Low treibt.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian R. schrieb:
> über interne Config Ports, z.B. die ICAP bei Xilinx.
Hab ich beim Spartan 6 probiert und es war ein Krampf. Mal ging es und 
bei der nächsten Synthese wieder nicht. Ich habe dann auch die Variante 
mit dem Pin gewählt.

Duke

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtig, beim S6 ist das wirklich ein Krampf. Das blöde ICAP Modul ist 
auch so richtig auf maximal komplex ansteuerbar gemacht (bits drehen, 
sehr langsame DRP Frequenz usw.). Ich wollt das mal machen, um den 
Fallback Status herauszubekommen, aber habs dann sein lassen. Beim Artix 
probier ich das demnächts mal wieder. An der PROG_B Leitung zupfen ist 
da viel praktischer ;)

: Bearbeitet durch User
Autor: Paul B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klakx schrieb:
> Was spricht dagegen, dass der Microcontroller den Reset am FPGA
> schickt/an der Leitung zieht?
Weil der einen halben Meter weit weg ist und seriall angeschlossen ist.

Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei vielen FPGAs geht das auch über interne Config Ports,
> z.B. die ICAP bei Xilinx.

@chris: Mal ausprobiert?

Wir haben das Thema ja gerade wieder:
Beitrag "Re: MAX1000 Erfahrungen"

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weltbester FPGA-Pongo schrieb im Beitrag #5232547:
>> Bei vielen FPGAs geht das auch über interne Config Ports,
>> z.B. die ICAP bei Xilinx.
>
> @chris: Mal ausprobiert?
>
> Wir haben das Thema ja gerade wieder:
> Beitrag "Re: MAX1000 Erfahrungen"

Das Reboot über ICAP nicht, aber ich musste mir dann die Mühe machen, 
eine State Machine zu schreiben, die den Boot Status ausliest um zu 
erkennen, ob das Fallback oder das Update Image geladen wurde. Das geht 
zumindest auf dem Artix zuverlässig.
Für Reboot nehmen wir weiterhin den externen PROG_B Pin, über einen 0 
Ohm an einem I/O (für wenn man was ist).

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weltbester FPGA-Pongo schrieb im Beitrag #5232547:
>> Bei vielen FPGAs geht das auch über interne Config Ports,
>> z.B. die ICAP bei Xilinx.
>
> @chris: Mal ausprobiert?
Ja geht. Man triggert eine FSM, die die folgenden Kommandos an den ICAP 
schickt:
    constant config_data : config_data_t := 
    (
        x"ffff", -- dummy word
        x"ffff", -- dummy word
        x"ffff", -- dummy word
        x"aa99", -- sync word
        x"5566", -- sync word        
        x"3261", -- type 1 write 1 word to general1
        x"0044", -- multi boot start address [15:0]
        x"3281", -- type 1 write 1 word to general2
        x"6b00", -- opcode and multi boot start address [23:16]
        x"32a1", -- type 1 write 1 word to general3
        x"0044", -- fallback start address [15:0]
        x"32c1", -- type 1 write 1 word to general4
        x"0300", -- opcode and fallback start address [23:16]
        x"30a1", -- type 1 write 1 word to cmd
        x"000e", -- iprog command
        x"2000", -- type 1 noop
        x"2000", -- type 1 noop
        x"2000"  -- type 1 noop
    );
Ein externer Watchdog, wo man mal am Pin ziehen kann, ist einfacher.

Duke

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian R. schrieb:
> Bei vielen FPGAs geht das auch über interne Config Ports, z.B. die ICAP
> bei Xilinx.

Ist zwar schon uralt, lösen lässt sich das Problem
schon seit zig Jahre, wie z.B. schon erwähnt bei
Xilinx (seit wann?) oder bei Altera (ab Stratix-1,
Arria-1 und Cyclone-III per RemoteConfig). Bei
Lattice gibt's glaube ich auch eine Möglichkeit.

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> Bei
> Lattice gibt's glaube ich auch eine Möglichkeit.

Bisher habe ich die beim ECP3 wie auch ECP5 nicht gefunden, zumindest 
nicht, wie sich die JUMP/REFRESH-Befehle aus der programmierten Logik 
analog ICAP in den 'Bootloader' schicken lassen, ohne wüste 
Hardware-Hacks.  Wenn da wer den Trick kennt: ich wäre alle Ohren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.