Я пытаюсь реализовать триггер JK с асинхронной предустановкой и очисткой, с логикой положительного фронта на часах.
Я получаю следующую ошибку от Altera Quartus II:
Ошибка (10822): ошибка HDL в JK_FF_PE_D1.vhd(52): не удалось реализовать регистры для назначений на этом фронте тактового сигнала.
Ошибка: невозможно разработать иерархию пользователей верхнего уровня.
Ошибки не вижу... Буду очень признателен за подсказку или совет.
Заранее спасибо!
library ieee;
use ieee.std_logic_1164.all;
entity JK_FF_PE_D1 is
port(
J, K : in std_logic; -- J, K inputs of flip flop
PS : in std_logic; -- Preset of flip flop
CLR : in std_logic; -- CLR of flip flop
CLK : in std_logic; -- Clock
Q, Qcompl : out std_logic -- Q and its complementary output
);
end entity JK_FF_PE_D1;
architecture simple of JK_FF_PE_D1 is
signal temp_Q, temp_Qcompl : std_logic;
begin
p0:process(PS, CLR, CLK) is
begin
case std_logic_vector'(PS, CLR) is
when "00" =>
temp_Q <= '1';
temp_Qcompl <= '1';
when "01" =>
temp_Q <= '1';
temp_Qcompl <= '0';
when "10" =>
temp_Q <= '0';
temp_Qcompl <= '1';
when others => -- Preset = 1 , Clear = 1
if rising_edge (CLK) then -- Clock turns from 0 -> 1
case std_logic_vector'(J, K) is
when "11" =>
temp_Q <= not temp_Q;
temp_Qcompl <= not temp_Qcompl;
when "10" =>
temp_Q <= '1';
temp_Qcompl <= '0';
when "01" =>
temp_Q <= '0';
temp_Qcompl <= '1';
when others =>
null;
end case;
end if;
end case;
end process p0;
Q <= temp_Q;
Qcompl <= not temp_Qcompl;
end architecture simple;