Microprogramming is a technique used to implement control units. The main idea is that a control store holds microinstructions which are coded signals for datapath control and control unit outputs. There is a sequencer which reads these microinstructions from the store, decodes the signals for the datapath control and control unit output, then fetches the next microinstruction. There is usually a CAR (Control Address Register) which holds the address of the microinstruction being executed. The address of the next microinstruction is sometimes encoded in the current microinstruction. Other schemes for generating the next microinstruction address are also used. Some designs implement the control store with ROM and others use RAM which allows run time configuration.

For an example of a micrporogrammed control unit see this design example, or this design example.


Mano, M. Morris, and Kime, Charles R. Logic and Computer Design Fundamentals. 2nd Edition. Prentice Hall, 2000.