Skip to main content\(\newcommand{\N}{\mathbb N} \newcommand{\Z}{\mathbb Z} \newcommand{\Q}{\mathbb Q} \newcommand{\R}{\mathbb R}
\newcommand{\lt}{<}
\newcommand{\gt}{>}
\newcommand{\amp}{&}
\definecolor{fillinmathshade}{gray}{0.9}
\newcommand{\fillinmath}[1]{\mathchoice{\colorbox{fillinmathshade}{$\displaystyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\textstyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\scriptstyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\scriptscriptstyle\phantom{\,#1\,}$}}}
\)
Section 9.3 A template for mixed synchronous and asynchronous processes
process(clk, A, B, ...) -- 1
begin
if rising_edge(clk) then -- 2
-- synchronous logic
end if;
-- asynchronous logic -- 3
end process;
Listing 9.3.1. A template for combining synchronous and asynchronous logic in the same VHDL process.
The sensitivity list includes the clock and all inputs to the asynchronous part.
The synchronous logic is inside the if rising_edge(clk)...end if block.. Every signal assignment in this block is registered (stored in flip-flops).
The asynchronous logic is outside the if rising_edge(clk)...end if block. These signal assignments are not registered.