Threshold Logic Circuits
Collection
Boolean gates, voting functions, modular arithmetic, and adders as threshold networks.
•
248 items
•
Updated
•
1
8:1 multiplexer. Selects one of 8 data inputs based on 3-bit select signal.
MUX8(d0-d7, s2,s1,s0) = d[s] where s = 4s2 + 2s1 + s0
d0 d1 d2 d3 d4 d5 d6 d7 s2 s1 s0
| | | | | | | | | | |
+--+--+--+--+--+--+--+----+--+--+
| |
v v
[N0] d0 AND (s=000) ----+
[N1] d1 AND (s=001) ----|
[N2] d2 AND (s=010) ----|
[N3] d3 AND (s=011) ----+---> [OR] ---> output
[N4] d4 AND (s=100) ----|
[N5] d5 AND (s=101) ----|
[N6] d6 AND (s=110) ----|
[N7] d7 AND (s=111) ----+
| Inputs | 11 (8 data + 3 select) |
| Outputs | 1 |
| Neurons | 9 |
| Layers | 2 |
| Parameters | 105 |
| Magnitude | 61 |
Each neuron Ni fires when di=1 AND s=i:
| Neuron | Data weights | Select weights (s2,s1,s0) | Bias |
|---|---|---|---|
| N0 | d0=1 | [-1,-1,-1] | -1 |
| N1 | d1=1 | [-1,-1,+1] | -2 |
| N2 | d2=1 | [-1,+1,-1] | -2 |
| N3 | d3=1 | [-1,+1,+1] | -3 |
| N4 | d4=1 | [+1,-1,-1] | -2 |
| N5 | d5=1 | [+1,-1,+1] | -3 |
| N6 | d6=1 | [+1,+1,-1] | -3 |
| N7 | d7=1 | [+1,+1,+1] | -4 |
OR gate: weights [1,1,1,1,1,1,1,1], bias -1
from safetensors.torch import load_file
import torch
w = load_file('model.safetensors')
def mux8(d0, d1, d2, d3, d4, d5, d6, d7, s2, s1, s0):
inp = torch.tensor([float(d0), float(d1), float(d2), float(d3),
float(d4), float(d5), float(d6), float(d7),
float(s2), float(s1), float(s0)])
l1 = (inp @ w['layer1.weight'].T + w['layer1.bias'] >= 0).float()
out = (l1 @ w['layer2.weight'].T + w['layer2.bias'] >= 0).float()
return int(out.item())
# Select d5 (s=101)
print(mux8(0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1)) # 1
MIT