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;