Forum: FPGA, VHDL & Co. Xilinx Multiprozessor - Reset Problem


von HWILK (Gast)


Lesenswert?

Hallo

Ich habe ein kleines Problem mit meinem Dual-MicroBlaze System. Wie der 
Name schon sagt, habe ich zwei MicroBlazes an zwei getrennten PLB 
Bussysteme. Beide führen unterschiedliche Software aus. Soweit so gut. 
Aber, wenn ich nun den Reset Button auf dem Spartan3A-DSP Board drücke, 
wird immer nur der erste MicroBlaze neu gestartet. Der zweite bleibt 
stehen.
Ich möchte aber, dass wenn ich den Reset drücke beide Prozessoren neu 
starten? Hat da jemand zufällig Erfahrung mit? Wenn ich im SDK die Debug 
Perpektive öffne und dann den Reset drücke, haben beide Prozessoren den 
Status "Terminated" ?
Sorry, aber irgendwie ist da der Wurm drin. Vielleicht hat ja jemand 
eine Idee. Würde mich freuen. Danke

Heiko

von Duke Scarring (Gast)


Lesenswert?

HWILK schrieb:
> Reset Button auf dem Spartan3A-DSP Board drücke,
Wird der Taster entprellt? Und das Signal einsynchronisiert?

> wird immer nur der erste MicroBlaze neu gestartet. Der zweite bleibt
> stehen.
Hängen die wirklich an der selben Leitung?
Ist die Software die auf den Prozessoren läuft unabhängig voneinander?
Kommunizieren die Prozessoren miteinander?

> Wenn ich im SDK die Debug
> Perpektive öffne und dann den Reset drücke, haben beide Prozessoren den
> Status "Terminated"?
Das wird vermutlich über den xmd ausgelöst. Über den Weg könntest Du Dir 
ein tcl-Skript schrieben, welches beide Prozessoren startet.

Duke

von HWILK (Gast)


Lesenswert?

Hallo

Ich nehme den Standard Reset Button von meinem Xtreme Spartan-3A DSP 
Board. Der dürfte eigentlich entprellt sein.
Das komische ist ja, wenn ich beide MicroBlazes parallel laufen lasse 
und die über FSL kommunizieren, dann funktioniert alles prima. Drücke 
ich aber den Reset Button, dann stirbt der zweite MicroBlaze. Der erste 
wird neugestartet, zumindest meistens :-)
Nur der MicroBlaze, der über den JTAG Uart kommunizieren sollte, bleibt 
hängen.
Das weitere komische ist, im Debug Modus funktoniert es. Dort wird der 
MicroBlaze ordnungsgemäß per Reset neugestartet. Warum?

Ich verwende EDK und SDK 13.1. Die MicroBlazes sind an getrennten PLBs 
und kommunizieren über den FSL. Beide sind an das MDM debug Modul 
angeschlossen. Der erste MB sendet per UART IP, der andere per JTAG UART 
(Dieser MB funktioniert nicht).
Der Reset wird über den proc_sys_reset IP verteilt. Dort kommt das 
Signal vom Button als externer Reset rein und dann sollte ein MB_Reset 
ausgeführt werdem. Dieser reset ist an beiden MicroBlazes.

Sorry für die schlechte Beschreibung. vielleicht hat trotzdem jemand 
eine Idee. vielen Dank

von asdf (Gast)


Lesenswert?

Der Taster ist sicherlich nicht entprellt!

von Test (Gast)


Lesenswert?

Der arme Taster ijst nicht entprellt. Herrje. Nun löst er 100 mal einen 
Reset aus, der Böse.

von Christian R. (supachris)


Lesenswert?

Schlimmer ist, dass er wahrscheinlich nicht (sauber) einsynchronisiert 
ist. Dann gibts die lustigsten Effekte beim Loslassen...

von Duke Scarring (Gast)


Lesenswert?

Christian R. schrieb:
> Dann gibts die lustigsten Effekte beim Loslassen...
Hat er ja auch geschrieben:

HWILK schrieb:
> Der erste
> wird neugestartet, zumindest meistens :-)

Da muß offenbar jeder mal selber durch...
1
  -- generate synchronous reset
2
  reset_synchronizer : process(areset, clk)
3
  begin
4
    if areset = '1' then
5
      reset_shiftreg <= (others => '1');
6
    elsif rising_edge(clk) then
7
      reset_shiftreg <= reset_shiftreg(reset_shiftreg'high-1 downto 0) & '0';
8
    end if;
9
  end process;
10
11
  reset <= reset_shiftreg(reset_shiftreg'high);

Duke

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.