Microprogramming
- Current state and outputs are defined using microinstructions
- The microinstructions are stored in microprogram memory (control memory)
- A micro-sequencer computes the address of the next microinstruction using the inputs and the current state
Implementation
- Option: CM stores the complete state transition table
- A row in the table corresponds to a microinstruction (i.e. next state and outputs)
- The micro-sequencer selects the next state based on the input one of the next states as address for the CM (uses a multiplexer)

- Advantage: Most flexible (δ and μ are reprogrammable)
- Drawback: CM can be very large and slow
- Option 2: Store the instructions by their address and their conditional branch address
- Moves to next by default, moves to BADR if the selected condition is met

Generating output signals
- Horizontal microprogramming
- 1 bit is used for each output signal (a control field) in CMDR → Horizontal microprogramming
- Advantage: maximal parallelism in data path
- All control signals can be set independently
- Drawback: Wide microinstruction → large control memory
- Vertical microprogramming
- Only one control field with ⌈ld(m)⌉ is used
- Values corresponds with a binary coding for the full control fields
- Advantage: small control memory
- Drawback: only one signal can be set at a time; Slow; No parallelism

- Diagonal microprogramming
- Control signals that can not be simultaneously active are grouped together and binary coded
- The number of fields defines the level of parallelism
