Синхронная JK-защелка
JK- защелка - это RS-защелка в котором устранена неопределенность: если J [S] и K [R] одновременно равны 1 то защелка меняет свое состояние Диаграмма состояний JK-защелки:
принципиальная схема синхронной JK-защелки
--------------------- J K C | Q Q# ------+-------------- X X 0 | lastQ lastQ# 0 0 1 | lastQ lastQ# 0 1 1 | 0 1 1 0 1 | 1 0 1 1 1 | lastQ# lastQ --------------------- карта карно для синхронной JK-защелки JK 00 01 11 10 ---+-------------- 00 | 0 0 0 0 CQ 01 | 1 1 1 1 11 | 1 0 0 1 10 | 0 0 1 1
Синхронная JK-защелка с асинхронным сбросом
принципиальная схема синхронной JK-защелки с асинхронным установочным входом RST, служащим для первоначального сброса защелки в 0. (добавлена логика для асинхронного сброса защелки по сигналу RST)
------------------------ J K C RST| Q Q# ---------+-------------- X X 0 0 | lastQ lastQ# 0 0 1 0 | lastQ lastQ# 0 1 1 0 | 0 1 1 0 1 0 | 1 0 1 1 1 0 | lastQ# lastQ X X X 1 | 0 1 ------------------------- карта Карно: RJK 000 001 011 010 110 111 101 100 ---+-------------------------------- 00 | 0 0 0 0 0 0 0 0 CQ 01 | 1 1 1 1 0 0 0 0 11 | 1 0 0 1 0 0 0 0 10 | 0 0 1 1 0 0 0 0
Создание синхронной JK-защелки из RS-защелки
DIN/ANSI (треугольник значит работает по фронту) JK-триггер
DIN/ANSI (инверсия и треугольник - значит работает по фронту инверсного сигнала - то есть по спаду прямого сигнала)
Блок-схема JK-триггера:
JK-триггер (работает по фронту):
VHDL програма для JK-триггера с установочным входом RST library ieee; use ieee.std_logic_1164.all; entity JKFF is port( CLK, RST, J, K : in std_logic; Q : out std_logic); end JKFF; architecture Example of JKFF is signal FF:std_logic; -- Flip Flop main data signal CHG:std_logic; -- Change symbol begin process(CLK,RST,CHG) begin if (RST = '1') THEN FF <= '0'; elsif (CLK'event and CLK = '1') THEN CHG <= '1' after 1 ns; end if; if (CHG = '1') then if J = '0' and K = '1' then FF <= '0'; elsif J = '1' and K = '0' then FF <= '1'; elsif J = '1' and K = '1' then FF <= not FF; elsif J = '0' and K = '0' then FF <= FF; end if; CHG <= '0' after 1 ns; end if; end process; Q <= FF after 1 ns; end Example; Результат симуляции JK-триггера:
Создание JK-триггера из D-триггера