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


von Paul B. (Gast)


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!).

von Klakx (Gast)


Lesenswert?

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

von Christian R. (supachris)


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.

von Duke Scarring (Gast)


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

von Christian R. (supachris)


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
von Paul B. (Gast)


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.

von Weltbester FPGA-Pongo (Gast)


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"

von Christian R. (supachris)


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).

von Duke Scarring (Gast)


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:
1
    constant config_data : config_data_t := 
2
    (
3
        x"ffff", -- dummy word
4
        x"ffff", -- dummy word
5
        x"ffff", -- dummy word
6
        x"aa99", -- sync word
7
        x"5566", -- sync word        
8
        x"3261", -- type 1 write 1 word to general1
9
        x"0044", -- multi boot start address [15:0]
10
        x"3281", -- type 1 write 1 word to general2
11
        x"6b00", -- opcode and multi boot start address [23:16]
12
        x"32a1", -- type 1 write 1 word to general3
13
        x"0044", -- fallback start address [15:0]
14
        x"32c1", -- type 1 write 1 word to general4
15
        x"0300", -- opcode and fallback start address [23:16]
16
        x"30a1", -- type 1 write 1 word to cmd
17
        x"000e", -- iprog command
18
        x"2000", -- type 1 noop
19
        x"2000", -- type 1 noop
20
        x"2000"  -- type 1 noop
21
    );
Ein externer Watchdog, wo man mal am Pin ziehen kann, ist einfacher.

Duke

von Sigi (Gast)


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.

von Strubi (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.