-- 例. Dフリップフロップ
-- ENTITY宣言部のLIBRARY宣言
LIBRARY IEEE, ARITHMETIC ;
USE IEEE.STD_LOGIC_1164.ALL ;
USE ARITHMETIC.STD_LOGIC_ARITH.ALL ;
ENTITY dff IS -- ENTITY名は、「dff」
PORT (
d : IN STD_LOGIC ; -- 入力信号
clk : IN STD_LOGIC ; -- クロック信号
clear : IN STD_LOGIC ; -- クリア信号(非同期)
q : OUT STD_LOGIC ; -- 出力信号
qb : OUT STD_LOGIC -- 出力信号
) ;
END dff ;
-- ARCHITECTURE本体部のLIBRARY宣言
LIBRARY IEEE, ARITHMETIC ;
USE IEEE.STD_LOGIC_1164.ALL ;
USE ARITHMETIC.STD_LOGIC_ARITH.ALL ;
ARCHITECTURE behave OF dff IS
-- ARCHITECTURE名は、「behave」
-- ENTITY名は、「dff」
SIGNAL q_i : STD_LOGIC ; -- 内部信号
BEGIN
-- 同時実行文 〜 ここから 〜
qb <= NOT q_i ;
q <= q_i ;
-- プロセス文 〜 ここから 〜
dff_load : PROCESS ( clk , clear )
BEGIN
IF (clear= '1') THEN -- 非同期クリアが入力されると出力は「0」
q_i <= '0' ;
ELSIF (clk='1' AND clk'LAST_VALUE='0' AND clk'EVENT) THEN
q_i <= d ; -- クロックに同期してデータを取り込む
END IF;
END PROCESS dff_load ;
-- プロセス文 〜 ここまで 〜
-- 同時実行文 〜 ここまで 〜
END behave ;