1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*
- * RS-trigger with assynch. reset
- */
- library ieee;
- use ieee.std_logic_1164.all;
- entity RS_trigger is
- generic (T: Time := 0ns);
- port ( R, S : in std_logic;
- Q, nQ : out std_logic;
- reset, clock : in std_logic );
- end RS_trigger;
- architecture behaviour of RS_trigger is
- signal QT: std_logic; -- Q(t)
- begin
- process(clock, reset) is
- subtype RS is std_logic_vector (1 downto 0);
- begin
- if reset = '0' then
- QT <= '0';
- else
- if rising_edge(C) then
- if not (R'stable(T) and S'stable(T)) then
- QT <= 'X';
- else
- case RS'(R&S) is
- when "01" => QT <= '1';
- when "10" => QT <= '0';
- when "11" => QT <= 'X';
- when others => null;
- end case;
- end if;
- end if;
- end if;
- end process;
- Q <= QT;
- nQ <= not QT;
- end architecture behaviour;
|