Вот похожий пример
Вариант 5. ЦУ: двухтактный D-триггер с разрешением (рис.1).
Таблица истинности
D E C Q
- 1 [01] (D)
- 0 [01] N
- - [1-] N
- - [00] N
Рис. 1 Двухтактный D-триггер с разрешением
Обозначения в таблице функционирования триггера
Через “-” обозначено любое из (0,1) значение сигнала; в квадратных скобках показывается изменение сигнала (обычно синхросигнала), например, через [01] обозначается передний фронт сигнала (сигнал меняется из 0 в 1); через [10] обозначается задний фронт сигнала (сигнал меняется из 1 в 0); символ N обозначает неизменяемое (предыдущее) значение сигнала; символ ^ является знаком инверсии (отрицания).
Решение.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity main is
Port ( D : in STD_LOGIC;
E : in STD_LOGIC;
C : in STD_LOGIC;
Q : out STD_LOGIC);
end main;
architecture Behavioral of main is
begin
process (E,C)
begin
if (E='1') then
if (C'event and C='1') then -- если передний фронт то
Q<=D;
end if;
end if;
end process;
end Behavioral;
ТЕСТИРОВАНИЕ СОЗДАННОЙ ПРОГРАММЫ
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY test IS
END test;
ARCHITECTURE behavior OF test IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT main
PORT(
D : IN std_logic;
E : IN std_logic;
C : IN std_logic;
Q : OUT std_logic
);
END COMPONENT;
--Inputs
signal D : std_logic := '0';
signal E : std_logic := '0';
signal C : std_logic := '0';
--Outputs
signal Q : std_logic;
-- No clocks detected in port list. Replace <clock> below with
-- appropriate port name
constant clock_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: main PORT MAP (
E => E,
D => D,
C => C,
Q => Q
);
-- Clock process definitions
clock_process :process
begin
C <= '0';
wait for clock_period/2;
C <= '1';
wait for clock_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 50 ns.
E<='1';
D<='1';
wait for 10 ns;
E<='1';
D<='0';
wait for 10 ns;
E<='0';
D<='1';
wait for 10 ns;
E<='0';
D<='0';
wait for 10 ns;
-- insert stimulus here
wait;
end process;
END
Мой вариант с таблицей функционирования и самим d триггером
: двухступенчатый D-триггер со сбросом (рис. 1).
Рис. 1. Двухступенчатый D-триггер со сбросом
Таблица функционирования двухступенчатого D-триггера со сбросом
R D C Q
1 - [--] 0
0 - [01] (D)
0 - [1-] N
0 - [00] N