VHDL код T триггер - PullRequest
       48

VHDL код T триггер

0 голосов
/ 26 июня 2018

Я изучаю VHDL и столкнулся со следующим кодом:

Entity fft is 
  port (t, r: in bit; q: out bit);
End  entity;

Architecture fft_df of fft is
signal state: bit :='0';

Begin

state <='0' when r='1' else
         not state when t='0' and t'event else
         state;

q<=state;

End;

Ну, я сомневаюсь в том, что делает этот код, и является ли это поведенческим описанием или описанием потока данных T-триггера со сбросом. И чем, в чем смысл not state when t='0' and t'event? (Я полагаю, триггер T работает на падающем фронте).

Спасибо всем.

1 Ответ

0 голосов
/ 27 июня 2018

Мне не хватает входа часов. Т-триггер (с асинхронным сбросом) будет фактически описываться как

entity tff is 
    port (clk, reset, t: in bit; q: out bit);
end entity;

architecture rtl of tff is begin
    q <= '0' when reset = '1' else
        not q when rising_egde(clk) and t = '1';
end;

Или чаще записывается как:

architecture rtl of tff is begin
    tff_proc : process(clk, reset) begin
        if reset = '1' then
            q <= '0';
        elsif rising_egde(clk) then
            if t = '1' then
                q <= not q;
            end if;
        end if;
    end process;
end;

p.s. чтение вывода требует компиляции в режиме VHDL-2008.

...