У меня проблемы с кодированием T Flip Flop с ясным и сбросом. Как показано на рисунке ниже, t_in работает как вход разрешения, который будет установлен в 1 или 0 из счетчика mod-m. to_ldspkr затем переключится. Clr_FF очистит флип-флоп.T Flip Flop with clear (VHDL)
теперь я знаю, как я должен закодировать этот флип-флоп. Это мой код, но он не работает:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity T_FF is
port(
from_t_in : in std_logic;
clk, reset : in std_logic;
from_clr_FF : in std_logic;
to_ldspkr : out std_logic
);
end T_FF;
architecture Behavioral of T_FF is
signal temp: std_logic;
signal r_reg, r_next : std_logic;
begin
process(reset, clk, from_clr_FF, r_reg)
begin
if(reset = '1') then
r_reg <= '0';
elsif(from_clr_FF = '1') then
r_next <= '0';
elsif(clk'event and clk='1') then
if(from_t_in = '1') then
temp <= not temp;
end if;
end if;
end process;
to_ldspkr <= temp;
end Behavioral;
Вы не квалифицировали «это не работает». Для того, чтобы симуляция не работала, проще всего было бы переместить назначение 'to_ldspkr <= temp;' из процесса и сделать его параллельным назначением сигнала. 'temp' не находится в списке чувствительности для процесса. Что такое 'r_reg' и' r_next'? они не отображаются в правой части задания, в объявлении порта или в состоянии. 'to_ldspkr' влияет только на' from_clr_FF'. – user1155120
Ваш T-FF имеет 2 'сбросных' сигнала, называемых reset и from_clr_FF. В некоторых документах термин «перезагрузка» используется как синхронный сброс и очищается как асинхронный сброс. Если оба сигнала синхронизированы или асинхронны, вы можете объединить их в один оператор if с OR. – Paebbels