Sekwencyjne przydzielanie sygnałów (< =), w przeciwieństwie do sekwencyjnego przypisania zmiennych (: =), sekwencyjnie zestawia zdarzenie o jedną opóźnioną deltę później dla wartości sygnału do aktualizacji. Możesz zmienić zaplanowane wydarzenie, używając sekwencyjnego przypisania sygnału na tym samym sygnale w tym samym procesie. Zostanie wyświetlona tylko ostatnia aktualizacja zaplanowana dla określonego sygnału. Na przykład:
signal a : std_logic := '1'; --initial value is 1
process(clk)
variable b : std_logic;
begin
--note that the variable assignment operator, :=, can only be used to assign the value of variables, never signals
--Likewise, the signal assignment operator, <=, can only be used to assign the value of signals.
if (clk'event and clk='1') then
b := '0' --b is made '0' right now.
a <= b; --a will be made the current value of b ('0') at time t+delta
a <= '0'; --a will be made '0' at time t+delta (overwrites previous event scheduling for a)
b := '1' --b will be made '1' right now. Any future uses of b will be equivalent to replacing b with '1'
a <= b; --a will be made the current value of b ('1') at time t+delta
a <= not(a); --at time t+delta, a will be inverted. None of the previous assignments to a matter, their scheduled event have been overwritten
--after the end of the process, b does not matter because it cannot be used outside of the process, and gets reset at the start of the process
end if;
end process;
Ważne jest również, aby pamiętać, że podczas procesów sekwencyjnych działać kolejno z logicznego punktu widzenia w VHDL, kiedy syntetyzowane są one naprawdę przekształcony złożonych oświadczeń równoczesnych łączących klapki. Cały proces przebiega równolegle jako jednostka pomiędzy każdym cyklem zegara (procesy, które nie działają na zegarze, stają się czysto kombinacyjną logiką). Sygnały są wartościami, które są faktycznie przechowywane w klapkach. Zmienne są po prostu wygładzane, aby procesy były łatwiejsze do odczytania. Są one wchłaniane do logiki kombinacyjnej po syntezie.