Dieser ArtikelBenutzerSuche |
Reset für FPGA/CPLDWie jede digitale Schaltung mit FF benötigt auch ein FPGA-Design einen definierten Anfangszustand, den Resetzustand. Nach Art, Verteilung und Auslöser kann der Reset unterschieden werden zu:
[bearbeiten] Implementierung von FlipFlops/Registern mit verschiedenen Resetmöglichkeiten[bearbeiten] Kein ResetNach dem Laden befindet sich der FPGA immer in einem definierten Zustand, alle Speicherelemente (FF, Schiebeketten, RAM) sind fest geladen. Es bedarf also keiner zusätzlichen Resetschaltung. Die Resetwerte bei Xilinx (VHDL, XST) werden durch den Initwert bei der Signal-Deklaration festgelegt.
Manche Logikelemente (bei Xilinx: shift register SR16E) sind nicht mit einem Reset einsetzbar, die Synthese muss also mehr Aufwand betreiben (siehe Beitrag im Forum). Der Resetwert für Speicher kann in VHDL, im ucf oder durch Konfigurationsfiles (Coregen, EDK) definiert werden. [bearbeiten] Asynchroner ResetTraditionell am meisten eingesetzt wird der asynchrone Reset:
Beim Chipdesign ist er i.d.R. unverzichtbar, bei FPGAs wird er nicht unbedingt benötigt. Er kann sogar zu Problemen führen, wenn die fallenden Flanke des Resetsignals zu einem ungünstigen Zeitpunkt kommt (Siehe Artikel bei Xilinx). Je nach Logikdesign und der dadurch bedingten Auswirkung der Resetrücknahme, ist damit u.U. eine Verlängerung des Resetsignales so durchzuführen, daß das Löschen des Signals in jedem Falle ausserhalb des Bereiches möglicher Flankenwechsel des Systemtaktes erfolgen. Generell ist darauf zu achten, daß das asynchrone Resetsignal eine genügend lange Periode besitzt, um erfasst zu werden. Für FPGAs und PLDs ist es daher oftmas sinnvoller, einen synchronen Reset zu benutzen: [bearbeiten] Synchroner Reset
[bearbeiten] ResetgenerierungFolgend ein Beispiel einer internen Resetschaltung (auch wenn dergleichen heute im FPGA-Bereich kaum noch nötig ist), die einen 16 Takte langen Reset-Impuls erzeugt:
[bearbeiten] Logische ResetsNeben dem physikalischen Reset, der meist alle FFs gleichzeitig in einen Startzustand versetzt, benötigen viele Applikationen einen logisch neutralen Zustand mit z.B. inaktiven Ausgängen, wodurch teilweise weitere Resetzustände definiert werden müssen. Meist wird hier eine Art Warmstart-Zustand definiert. Auch ist es oft wünschenswert, dass nur Schaltungsteile neu gestartet werden, wenn Fehlfunktionen detektiert wurden, oder die Schaltung in Bereitschaft gesetzt werden soll, während andere essenzielle Funktionen aufrechterhalten werden sollen. Pipelines, algorithmische Rechenblöcke und untergeordnete state machines sind z.B. solche Schaltungsteile. [bearbeiten] Siehe auch
|