--- license: mit tags: - pytorch - safetensors - threshold-logic - neuromorphic - sequential - flipflop --- # threshold-jk-flipflop JK flip-flop next-state logic as threshold circuit. Most versatile flip-flop with Set, Reset, Hold, and Toggle modes. ## Circuit ``` J ──┐ K ──┼──► JK-FF ──┬──► Q Q_prev ──┘ └──► Qn ``` ## Truth Table | J | K | Q_prev | Q | Qn | Mode | |---|---|--------|---|----|----| | 0 | 0 | 0 | 0 | 1 | Hold | | 0 | 0 | 1 | 1 | 0 | Hold | | 0 | 1 | X | 0 | 1 | Reset | | 1 | 0 | X | 1 | 0 | Set | | 1 | 1 | 0 | 1 | 0 | Toggle | | 1 | 1 | 1 | 0 | 1 | Toggle | ## Modes ``` J=0, K=0: Hold - Q stays same J=0, K=1: Reset - Q becomes 0 J=1, K=0: Set - Q becomes 1 J=1, K=1: Toggle - Q flips ``` ## Logic ``` Q = J·~Q_prev + ~K·Q_prev Qn = ~J·~Q_prev + K·Q_prev ``` ## Architecture | Component | Neurons | |-----------|---------| | Input inversions | 4 | | AND gates | 4 | | OR outputs | 2 | | Passthroughs | 2 | **Total: 12 neurons, 42 parameters, 3 layers** ## Advantage Over SR Unlike SR flip-flop, JK has no invalid state. When both inputs are high, it toggles instead of producing undefined behavior. ## Usage ```python from safetensors.torch import load_file w = load_file('model.safetensors') # Counter using toggle mode: q = 0 for _ in range(4): q_next = compute(j=1, k=1, q_prev=q, w) q = q_next # q toggles: 0,1,0,1,... ``` ## Files ``` threshold-jk-flipflop/ ├── model.safetensors ├── create_safetensors.py ├── config.json └── README.md ``` ## License MIT