26
Multiplexers, ALU Design CS 64: Computer Organization and Design Logic Lecture #13 Winter 2020 Ziad Matni, Ph.D. Dept. of Computer Science, UCSB

Multiplexers, ALU Design - GitHub Pages · 2021. 1. 14. · Simplified ALU •We can string 1-bit ALUs together to make bigger-bit ALUs (e.g. 32b ALU) 2/26/20 Matni, CS64, Wi20 23

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

  • Multiplexers, ALU DesignCS 64: Computer Organization and Design Logic

    Lecture #13Winter 2020

    Ziad Matni, Ph.D.Dept. of Computer Science, UCSB

  • Administrative

    • Lab 6 due Thursday!• Lab 7 will be posted today

    •This Friday, the TAs will be in the lab• Attendance is not mandatory, but likely very useful for

    you to be there•Work on your Lab 7 b/c it’s due next Tuesday

    2/26/20 Matni, CS64, Wi20 2

  • Lecture Outline

    •More on Logic Simplification using Kmaps

    •Multiplexers

    •ALUs

    2/26/20 Matni, CS64, Wi20 3

  • Any Questions From Last Lecture?

    2/26/20 Matni, CS64, Wi20 4

    Any Questions About the Lab?

  • 5 Minute Pop Quiz!

    •Given the following K-Map for binary function F:

    a) Group properly and write the optimized function F

    b) Draw the circuit

    2/26/20 Matni, CS64, Wi20 5

    00 01 11 100 1 1 11 1 1

    ACB

  • 5 Minute Pop Quiz! (Solution)

    •Given the following K-Map for binary function F:

    a) Group properly and write the optimized function FF = !A!B + !C

    b) Draw the circuitSee black board

    2/26/20 Matni, CS64, Wi20 6

    00 01 11 100 1 1 11 1 1

    ACB

    àß

  • Exercise 1

    • Given the following truth table, draw the resulting logic circuit

    • STEP 1: Draw the K-Map and simplify the function

    • STEP 2: Construct the circuit from the now simplified function

    2/26/20 Matni, CS64, Wi20 7

    A B C D F0 0 0 0 0

    0 0 0 1 0

    0 0 1 0 00 0 1 1 0

    0 1 0 0 1

    0 1 0 1 00 1 1 0 0

    0 1 1 1 0

    1 0 0 0 01 0 0 1 0

    1 0 1 0 1

    1 0 1 1 11 1 0 0 1

    1 1 0 1 0

    1 1 1 0 11 1 1 1 1

  • Exercise 1 – Step 1Get the simplified function

    2/26/20 Matni, CS64, Wi20 8

    A B C D F0 0 0 0 0

    0 0 0 1 0

    0 0 1 0 00 0 1 1 0

    0 1 0 0 1

    0 1 0 1 00 1 1 0 0

    0 1 1 1 0

    1 0 0 0 01 0 0 1 0

    1 0 1 0 1

    1 0 1 1 11 1 0 0 1

    1 1 0 1 0

    1 1 1 0 11 1 1 1 1

    00 01 11 10

    00

    01

    11

    10

    ABCD

    1 1

    11

    B = 1 A = 1

    D = 1

    C = 1

    F(A,B,C) = B.!C.!D + A.C

    1 1

  • Exercise 1 – Step 2Draw the logic circuit diagram

    2/26/20 Matni, CS64, Wi20 9

    F(A,B,C) = B.!C.!D + A.C

    AC

    C

    B

    D

    F

  • Exercise 2

    • Given the following truth table, draw the resulting logic circuit

    2/26/20 Matni, CS64, Wi20 10

    A B C F

    0 0 0 1

    0 0 1 10 1 0 1

    0 1 1 0

    1 0 0 11 0 1 1

    1 1 0 0

    1 1 1 0

    00 01 11 10

    0

    1

    ABC

    111

    F(A,B,C) = !B + !A!C

    1 1

    B

    AC

    F

  • Exercise 3

    • Given the following schematic of a circuit, (a) write the function and (b) fill out the truth table:

    X = A.B + !(A.C)(note that also means: X = A.B + !A + !C)

    2/26/20 Matni, CS64, Wi20 11

    ABAC

    X

    A.B

    (A.C)’

    A B C X0 0 0 1

    0 0 1 1

    0 1 0 10 1 1 1

    1 0 0 1

    1 0 1 01 1 0 1

    1 1 1 1

    X

  • Exercise 3

    • Given the following schematic of a circuit, (a) write the function and (b) fill out the truth table:

    X = A.B + !(A.C)(note that also means: X = A.B + !A + !C)

    2/26/20 Matni, CS64, Wi20 12

    ABAC

    X

    A.B

    (A.C)’

    A B C X0 0 0 1

    0 0 1 1

    0 1 0 10 1 1 1

    1 0 0 1

    1 0 1 01 1 0 1

    1 1 1 1

  • Multiplexer

    • A logical selector:• Select either input A or input B to be the output

    // if s = 0, output is a// if s = 1, output is bint mux(int a, int b, int s){

    if (!s) return a;else return b;

    }

    2/26/20 Matni, CS64, Wi20 13

  • Multiplexer (Mux for short)

    • Combinatorial circuits who function as a “chooser” between multiple inputs to be “driven to” the output

    • Always multiple inputs (N), always ONE output (N-to-1 mux)• Can be drawn symbolically in 2 ways (trapezoid vs oval)

    --- there’s NO difference, just a preference in drawing

    • 1 of the input data lines gets selected to become the output, based on a 3rd “select” (sel) input• If sel = 0, then I0 gets to be the output• If sel = 1, then I1 gets to be the output• So: OUTPUT = I1.sel + I0.sel

    • The opposite of a Mux is called a Demulitplexer (or Demux)

    2/26/20 Matni, CS64, Wi20 14

  • Mux Truth Table and Logic Circuit1-bit Mux

    I0 I1 S O0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1

    2/26/20 Matni, CS64, Wi20 15

    00 01 11 10

    0

    1

    I0 I1S

    1

    11

    1

    O = S.I1 + S’.I0

    I0

    I1

    S

    O

    = lines are physically connected

    00011011

  • Mux Configurations

    2/26/20 Matni, CS64, Wi20 16

    Muxes can have I/O that are multiple bits

    Or they can have more than two data inputs

    2:1

    A0A1

    B0B1

    SEL

    O0O1

    This is called a 2-bit, 2-to-1 mux

    6:1

    ABCDEF

    SEL

    O

    This is called a 1-bit, 6-to-1 mux

  • The Use of Multiplexers

    • Makes it possible for several signals (variables) to share one resource• Very commonly used in data communication lines

    2/26/20 Matni, CS64, Wi20 17

    Mux

    Dem

    ux

    … …DataLines

    DataLines

    Select

    Shared data line(“trunk”)

    Select

  • Selection Lines in Muxes

    • General mux description: N-bit, M-to-1•Where: N = how “wide” the input is (# of input bits, min. 1)

    M = how many inputs to the mux (min. 2)

    • The “select” input (S) has to be able to select 1 out of M inputs• So, if M = 2, S should be at least 1 bit (S = 0 for one line, S = 1 for the other)• But if M = 3, S should be at least 2 bits (why?)• If M = 4, S should be ??? • If M = 5, S should be ???

    2/26/20 Matni, CS64, Wi20 18

    ...

    S

    M inputs

    (ANS: at least 2 bits)(ANS: at least 3 bits)

  • Combining Muxes Together

    Can I do a 4:1 mux from 2:1 muxes?

    Generally, you can do 2n:1 muxes from 2:1 muxes.

    2/26/20 Matni, CS64, Wi20 19

  • What Does This Circuit Do?

    2/26/20 20

    S0

    AB 0

    1 S

    0

    1 S

    R

    Co

    R

    Co

    S0

    1b Adder

    1b Adder

    0

    1

    0

    1 S

    S1

    F

    I0

    I1

    Ci

    I0

    I1

    Ci

  • 2/26/20 21

    S0

    AB 0

    1 S

    0

    1 S

    R

    Co

    I0

    I1

    Ci

    R

    Co

    S0

    1b Adder

    1b Adder

    0

    1

    0

    1 S

    S1 S0 F0 0 A && B0 1 A || B1 0 A + B1 1 A – B

    S1

    F

    For simplicity, the Carry Out and Overflow bits are not shown

    I0

    I1

    Ci

    What Does This Circuit Do?

  • Arithmetic-Logic Unit (ALU)

    • Recall: the ALU does all the computations necessary in a CPU

    • The previous circuit was a simplified ALU:• When S = 00, R = A + B• When S = 01, R = A – B• When S = 10, R = A AND B• When S = 11, R = A OR B

    2/26/20 Matni, CS64, Wi20 22

  • Simplified ALU

    •We can string 1-bit ALUs together to make bigger-bit ALUs (e.g. 32b ALU)

    2/26/20 Matni, CS64, Wi20 23

    1bit ALU …

    A31 B31 S

    R0 R1 R2 R3 R31

    1bit ALU

    Co

    RABS

    Ci

    1bit ALU

    1bit ALU

    1bit ALU

    1bit ALU

    A0 B0 S A1 B1 S A2 B2 S A3 B3 S

    Co Ci

  • Abstract Schematic of the MIPS CPURelevant to a future lab…

    2/26/20 Matni, CS64, Wi20 24

  • YOUR TO-DOs

    • Go to Thursdsay lab

    (we won’t take attendance)

    • Work on Lab 7, which is due next Tuesday

    2/26/20 Matni, CS64, Wi20 25

  • 2/26/20 Matni, CS64, Wi20 26