Allgemeines 
Register dienen in der Digitaltechnik dazu, Werte zu speichern. Register können durch verschiedene Arten von Flip-Flops realisiert werden (siehe sequentielle Logik).
Register mit Reset 
Mit asynchronem Reset 
library ieee ; use ieee.std_logic_1164.all; entity dff is port( clk: in std_ulogic; rst: in std_ulogic; data_i: in std_ulogic; data_o: out std_ulogic ); end entity; architecture behave of dff is begin process(rst, clk) begin if rst='1' then data_o <= '0'; elsif rising_edge(clk) then data_o <= data_i; end if; end process; end architecture;
Dem taktflanken getriggerten D FlipFlop wurde ein asynchroner Reset hinzugefügt. rst
wurde der Sensitivitätsliste hinzugefügt, d.h. der process
wird auch für Änderungen an rst
getriggert. Innerhalb des process
wird zuerst rst
ausgewertet und erst dann auf eine steigende Taktflanke überprüft.
Mit synchronem Reset 
In diesem Beispiel soll der Zustand nur bei einer steigenden Taktflanke von clk
und bei rst
auf 1
zurüclgesetzt werden. Das Zurücksetzen erfolgt also synchron zum Takt.
library ieee ; use ieee.std_logic_1164.all; entity dff is port( clk: in std_ulogic; rst: in std_ulogic; data_i: in std_ulogic; data_o: out std_ulogic ); end entity; architecture behave of dff is begin process(clk) begin if rising_edge(clk) then if rst='1' then data_o <= '0'; else data_o <= data_i; end if; end if; end process; end architecture;
Die Sensitivity List besteht nur mehr aus dem clk
Signal. Bei einer steigenden Taktflanke wird ausgewertet, ob rst
gleich 1
ist. Wenn dies der Fall ist, wird der interne Zustand data_o
auf 0
gesetzt, ansonsten wird der Wert von data_i
übernommen.
Mittels Initialisierung 
In FPGAs lässt sich der Zustand eines FlipFlops nach einem Ein-Ausschalt Zyklus auch durch die Initialisierung des entsprechenden Signals realisieren. Das Register hält dann den entsprechenden Initialisierungswert, nachdem der FPGA sein Design geladen.
architecture behave of dff is signal d_reg : std_ulogic := '0'; begin process(clk) begin if rising_edge(clk) then d_reg <= data_i; end if; end process; data_o <= d_reg; end architecture;