In hardwired control, the control unit is an ordinary finite state machine built from flip-flops and gates:
- one state per step (F1, F2, F3, D, E1, E2 in Tiny8), moving on at each clock edge;
- inputs: the instruction class from the opcode decoder, and status bits like Z;
- outputs: the control signals, each produced by logic from the state, the opcode and Z.
Each control signal becomes a Boolean equation: an OR of "step AND instruction" terms, one for each step where it must be 1. With one signal per state (F1 = 1 while in F1, and so on), Tiny8's IR loads only in F3, so LdIR = F3. The MAR loads in F1 and D for every instruction, so LdMAR = F1 + D. Unused opcodes are don't-cares, which can shrink the logic on a K-map.
On HALT, the FSM stays in E1 and asserts nothing, so the CPU stops.
Trade-offs compared with microprogrammed control:
- Faster: signals come straight out of gates.
- Harder to change: adding an instruction means new terms in many equations and a new next-state rule.