Gate-level design

  • Determine inputs/outputs
  • Truth table
  • Simplify (can use k-maps)
  • Implement using logic gates

Examples

Half Adder

XYCS
0000
0101
1001
1110

Full Adder

ABCinCoutS
00000
00101
01001
01110
10001
10110
11010
11111

Block-level design

MSI Components (med scale integration)

Decoder

  • Based on the input bits, the decoder makes one of the outputs high
  • n-bit decoder can have up to outputs
  • Any combinational circuit with n inputs and m outputs can be implemented with an decoder with m OR gates.
  • Use when circuit has many outputs, and each function is expressed with a few minterms
    • Use decoder to generate minterms, then OR gates to form the sum
001000
010100
100010
110001

Encoder

  • Based on up to input bits (of which exactly one is high), encode to n outputs

100000
010001
001010
000111
therestXX

Priority Encoder

  • If more than one input is high, take the highest priority one
  • If all inputs are zero, it is invalid (V=0)
0000XX0
1000001
X100011
XX10101
XXX1111

Demultiplexer

  • Depending on the input from select lines, data is β€œrouted” to one of the outputs
  • Identical to a decoder with enable

00D000
010D00
1000D0
11000D

Multiplexer

  • β€œroutes” one of up to input bits to one output bit
  • Multiplexers can be combined to make bigger multiplexer (e.g. 2 4-bit multiplexers combined using one 2-bit multiplexer)
  • Implementing a function with n-bit input
    • n-bit ( to one) multiplexer: put 1 on the input if the minterm is 1, 0 otherwise
    • (n-1)-bit multiplexer: put either 1, 0, A or A’ where A is the last input bit

00
01
10
11

Calculating Delay

  • Consider a logic gate with delay t. The time that the outputs become stable is the latest time the input becomes stable + t