D-Flip-Flops(DFF)
在所有例子中:
clk
是時鐘,d
是輸入,q
是輸出,srst
是一個有源高同步復位,srstn
是低電平有效同步復位,arst
是一個有源高速非同步復位,arstn
是一個低電平有效復位,sset
是一個高效的同步集,ssetn
是一個有源低同步集,aset
是一個活躍的高非同步集,asetn
是一個低有效的低非同步集
所有訊號均為 ieee.std_logic_1164.std_ulogic
型。使用的語法是使用所有邏輯合成器得到正確合成結果的語法。有關備用語法的討論,請參閱時鐘邊沿檢測示例。
上升沿時鐘
process(clk)
begin
if rising_edge(clk) then
q <= d;
end if;
end process;
下降邊緣時鐘
process(clk)
begin
if falling_edge(clk) then
q <= d;
end if;
end process;
上升沿時鐘,同步有效高電平復位
process(clk)
begin
if rising_edge(clk) then
if srst = '1' then
q <= '0';
else
q <= d;
end if;
end if;
end process;
上升沿時鐘,非同步有效高電平復位
process(clk, arst)
begin
if arst = '1' then
q <= '0';
elsif rising_edge(clk) then
q <= d;
end if;
end process;
下降沿時鐘,非同步有效低電平復位,同步有效高電平設定
process(clk, arstn)
begin
if arstn = '0' then
q <= '0';
elsif falling_edge(clk) then
if sset = '1' then
q <= '1';
else
q <= d;
end if;
end if;
end process;
上升沿時鐘,非同步有效高電平復位,非同步低電平有效
注意:set 的優先順序高於 reset
process(clk, arst, asetn)
begin
if asetn = '0' then
q <= '1';
elsif arst = '1' then
q <= '0';
elsif rising_edge(clk) then
q <= d;
end if;
end process;