ECE545 Lecture5 Dataflow

download ECE545 Lecture5 Dataflow

of 85

Transcript of ECE545 Lecture5 Dataflow

  • 8/12/2019 ECE545 Lecture5 Dataflow

    1/85

    George Mason University

    Data Flow Modeling ofCombinational Logic

    ECE 545

    Lecture 5

  • 8/12/2019 ECE545 Lecture5 Dataflow

    2/85

    2

    Required reading

    P. Chu, RTL Hardware Design using VHDL

    Chapter 4 , Conc urrent S ignal As s ign m ent

    Statem ents of VHDL

  • 8/12/2019 ECE545 Lecture5 Dataflow

    3/85

    3ECE 448 FPGA and ASIC Design with VHDL

    Dataflow VHDL Design Style

  • 8/12/2019 ECE545 Lecture5 Dataflow

    4/85

    4

    VHDL Design Styles

    Components andinterconnects

    structural

    VHDL DesignStyles

    dataflow

    Concurrentstatements

    behavioral(sequential)

    Registers

    State machines Instruction decoders

    Sequential statements

    Subset most suitable for synthesis

    Testbenches

  • 8/12/2019 ECE545 Lecture5 Dataflow

    5/85

    5

    Synthesizable VHDL

    Dataflow VHDLDesign Style

    VHDL codesynthesizable

    VHDL codesynthesizable

    Dataflow VHDLDesign Style

  • 8/12/2019 ECE545 Lecture5 Dataflow

    6/85

    6

    Register Transfer Level (RTL) Design Description

    CombinationalLogic CombinationalLogic

    Registers

    Todays Topic

  • 8/12/2019 ECE545 Lecture5 Dataflow

    7/85

  • 8/12/2019 ECE545 Lecture5 Dataflow

    8/85

    Data-flow VHDL

    concurrent signal assignment ( )

    conditional concurrent signal assignment(when-else)

    selected concurrent signal assignment(with-select-when)

    generate scheme for equations(for-generate)

    M ajor instructions

    Concurrent statements

  • 8/12/2019 ECE545 Lecture5 Dataflow

    9/859

    Data-flow VHDL: Example

    xy

    cins

    cout

  • 8/12/2019 ECE545 Lecture5 Dataflow

    10/8510

    Data-flow VHDL: Example (1)

    LIBRARY ieee ;USE ieee.std_logic_1164.all ;

    ENTITY fulladd ISPORT ( x : IN STD_LOGIC ;

    y : IN STD_LOGIC ;cin : IN STD_LOGIC ;s : OUT STD_LOGIC ;

    cout : OUT STD_LOGIC ) ;END fulladd ;

  • 8/12/2019 ECE545 Lecture5 Dataflow

    11/8511

    Data-flow VHDL: Example (2)

    ARCHITECTURE dataflow OF fulladd IS

    BEGIN s

  • 8/12/2019 ECE545 Lecture5 Dataflow

    12/8512

    Logic Operators

    Logic operators

    Logic operators precedence

    and or nand nor xor not xnor

    not

    and or nand nor xor xnor

    Highest

    Lowest

    only in VHDL-93or later

  • 8/12/2019 ECE545 Lecture5 Dataflow

    13/8513

    Wanted: y = ab + cdIncorrecty

  • 8/12/2019 ECE545 Lecture5 Dataflow

    14/85

    RTL Hardware Design Chapter 4 14

    E.g.,

    status

  • 8/12/2019 ECE545 Lecture5 Dataflow

    15/85

    RTL Hardware Design Chapter 4 15

    Signal assignment statement with aclosed feedback loop

    a signal appears in both sides of aconcurrent assignment statement

    E.g.,q

  • 8/12/2019 ECE545 Lecture5 Dataflow

    16/8516

    Data-flow VHDL

    concurrent signal assignment ( )

    conditional concurrent signal assignment(when-else) selected concurrent signal assignment

    (with-select-when)

    generate scheme for equations(for-generate)

    M ajor instructions

    Concurrent statements

  • 8/12/2019 ECE545 Lecture5 Dataflow

    17/8517

    Conditional concurrent signal assignment

    target_signal

  • 8/12/2019 ECE545 Lecture5 Dataflow

    18/8518

    Most often implied structure

    target_signal

  • 8/12/2019 ECE545 Lecture5 Dataflow

    19/85

    RTL Hardware Design Chapter 4 19

    2-to- 1 abstract mux

    sel has a data type of boolean If sel is true, the input from T port is connected

    to output.

    If sel is false, the input from F port is connectedto output.

  • 8/12/2019 ECE545 Lecture5 Dataflow

    20/85

    RTL Hardware Design Chapter 4 20

  • 8/12/2019 ECE545 Lecture5 Dataflow

    21/85

    RTL Hardware Design Chapter 4 21

  • 8/12/2019 ECE545 Lecture5 Dataflow

    22/85

    RTL Hardware Design Chapter 4 22

  • 8/12/2019 ECE545 Lecture5 Dataflow

    23/85

    RTL Hardware Design Chapter 4 23

    E.g.,

  • 8/12/2019 ECE545 Lecture5 Dataflow

    24/85

    RTL Hardware Design Chapter 4 24

    E.g .,

  • 8/12/2019 ECE545 Lecture5 Dataflow

    25/85

  • 8/12/2019 ECE545 Lecture5 Dataflow

    26/85

    RTL Hardware Design Chapter 4 26

    E.g .,

  • 8/12/2019 ECE545 Lecture5 Dataflow

    27/85

    27

    Signed and Unsigned Types

    Behave exactly likeSTD_LOGIC_VECTOR

    plus, they determine whether a given vectorshould be treated as a signed or unsigned number.Require

    USE ieee.numeric_std.all;

  • 8/12/2019 ECE545 Lecture5 Dataflow

    28/85

  • 8/12/2019 ECE545 Lecture5 Dataflow

    29/85

    29

    compare a = bc Incorrect

    when a = b and c else

    equivalent to when (a = b) and c else

    Correct when a = (b and c) else

    Priority of logic and relational operators

  • 8/12/2019 ECE545 Lecture5 Dataflow

    30/85

    30

    VHDL operators

  • 8/12/2019 ECE545 Lecture5 Dataflow

    31/85

    31

    Data-flow VHDL

    concurrent signal assignment ( )

    conditional concurrent signal assignment(when-else) selected concurrent signal assignment

    (with-select-when)

    generate scheme for equations(for-generate)

    M ajor instructions

    Concurrent statements

  • 8/12/2019 ECE545 Lecture5 Dataflow

    32/85

    32

    Selected concurrent signal assignment

    with choice_expression select

    target_signal

  • 8/12/2019 ECE545 Lecture5 Dataflow

    33/85

    33

    Most Often Implied Structure

    with choice_expression select

    target_signal

  • 8/12/2019 ECE545 Lecture5 Dataflow

    34/85

    34

    Allowed formats of choices_k

    WHEN value

    WHEN value_1 | value_2 | .... | value N

    WHEN OTHERS

  • 8/12/2019 ECE545 Lecture5 Dataflow

    35/85

    35

    Allowed formats of choice_k - example

    WITH sel SELECTy

  • 8/12/2019 ECE545 Lecture5 Dataflow

    36/85

    RTL Hardware Design Chapter 4 36

    Syntax

    Simplified syntax:with select_expression select

    signal_name

  • 8/12/2019 ECE545 Lecture5 Dataflow

    37/85

    RTL Hardware Design Chapter 4 37

    select_expression Discrete type or 1-D array With finite possible values

    choice_i A value of the data type

    Choices must be mutually exclusive all inclusive others can be used as last choice_i

  • 8/12/2019 ECE545 Lecture5 Dataflow

    38/85

    RTL Hardware Design Chapter 4 38

    E.g., 4-to-1 mux

  • 8/12/2019 ECE545 Lecture5 Dataflow

    39/85

    RTL Hardware Design Chapter 4 39

    Can 11 be used to replace others ?

  • 8/12/2019 ECE545 Lecture5 Dataflow

    40/85

    RTL Hardware Design Chapter 4 40

    E.g., 2-to-2 2 binary decoder

  • 8/12/2019 ECE545 Lecture5 Dataflow

    41/85

    RTL Hardware Design Chapter 4 41

    E.g., 4-to-2 priority encoder

  • 8/12/2019 ECE545 Lecture5 Dataflow

    42/85

    RTL Hardware Design Chapter 4 42

    Can we use -?

  • 8/12/2019 ECE545 Lecture5 Dataflow

    43/85

    RTL Hardware Design Chapter 4 43

    E.g., simple ALU

  • 8/12/2019 ECE545 Lecture5 Dataflow

    44/85

    RTL Hardware Design Chapter 4 44

    E.g., Truth table

  • 8/12/2019 ECE545 Lecture5 Dataflow

    45/85

    RTL Hardware Design Chapter 4 45

    Conceptual implementation

    Achieved by amultiplexing circuit

    Abstract (k+1)-to-1

    multiplexer sel is with a data type

    of (k+1) values:c0, c1, c2, . . . , ck

  • 8/12/2019 ECE545 Lecture5 Dataflow

    46/85

    RTL Hardware Design Chapter 4 46

    select_expression is with a data type of 5values: c0, c1, c2, c3, c4

  • 8/12/2019 ECE545 Lecture5 Dataflow

    47/85

    RTL Hardware Design Chapter 4 47

  • 8/12/2019 ECE545 Lecture5 Dataflow

    48/85

    RTL Hardware Design Chapter 4 48

    E.g.,

  • 8/12/2019 ECE545 Lecture5 Dataflow

    49/85

    RTL Hardware Design Chapter 4 49

    3. Conditional vs. selected signalassignment

    Conversion between conditional vs.selected signal assignment

    Comparison

  • 8/12/2019 ECE545 Lecture5 Dataflow

    50/85

    RTL Hardware Design Chapter 4 50

    From selected assignment toconditional assignment

  • 8/12/2019 ECE545 Lecture5 Dataflow

    51/85

    RTL Hardware Design Chapter 4 51

    From conditional assignment toselected assignment

  • 8/12/2019 ECE545 Lecture5 Dataflow

    52/85

    RTL Hardware Design Chapter 4 52

    Comparison

    Selected signal assignment: good match for a circuit described by a

    functional table

    E.g., binary decoder, multiplexer Less effective when an input pattern is given

    a preferential treatment

  • 8/12/2019 ECE545 Lecture5 Dataflow

    53/85

    May over specify for a functional table

  • 8/12/2019 ECE545 Lecture5 Dataflow

    54/85

    RTL Hardware Design Chapter 4 54

    May over -specify for a functional tablebased circuit.

    E.g., mux

  • 8/12/2019 ECE545 Lecture5 Dataflow

    55/85

    55

    MLU Example

    l k

  • 8/12/2019 ECE545 Lecture5 Dataflow

    56/85

    56

    MLU Block Diagram

    B

    A

    NEG_A

    NEG_B

    IN0

    IN1

    IN2

    IN3

    OUTPUT

    SEL1 SEL0

    MUX_4_1

    L0 L1

    NEG_Y

    Y

    Y1

    A1

    B1

    MUX_0

    MUX_1 MUX_2

    MUX_3

    0

    1

    0

    1

    0

    1

    l

  • 8/12/2019 ECE545 Lecture5 Dataflow

    57/85

    57

    MLU: Entity Declaration

    LIBRARY ieee;USE ieee.std_logic_1164.all;

    ENTITY mlu ISPORT(

    NEG_A : IN STD_LOGIC;NEG_B : IN STD_LOGIC;NEG_Y : IN STD_LOGIC;

    A : IN STD_LOGIC;B : IN STD_LOGIC;

    L1 : IN STD_LOGIC;L0 : IN STD_LOGIC;Y : OUT STD_LOGIC

    );END mlu;

    MLU: Architecture Declarative

  • 8/12/2019 ECE545 Lecture5 Dataflow

    58/85

    58

    MLU: Architecture DeclarativeSection

    ARCHITECTURE mlu_dataflow OF mlu IS

    SIGNAL A1 : STD_LOGIC;SIGNAL B1 : STD_LOGIC;SIGNAL Y1 : STD_LOGIC;SIGNAL MUX_0 : STD_LOGIC;SIGNAL MUX_1 : STD_LOGIC;SIGNAL MUX_2 : STD_LOGIC;SIGNAL MUX_3 : STD_LOGIC;

    SIGNAL L: STD_LOGIC_VECTOR(1 DOWNTO 0);

  • 8/12/2019 ECE545 Lecture5 Dataflow

    59/85

  • 8/12/2019 ECE545 Lecture5 Dataflow

    60/85

    ECE 448 FPGA and ASIC Design with VHDL

    Modeling Common CombinationalLogic Components

    Using Dataflow VHDL

  • 8/12/2019 ECE545 Lecture5 Dataflow

    61/85

    61ECE 448 FPGA and ASIC Design with VHDL

    Wires and Buses

    Si l

  • 8/12/2019 ECE545 Lecture5 Dataflow

    62/85

    62

    Signals

    SIGNAL a : STD_LOGIC;

    SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0);wire

    a

    bus

    b

    1

    8

    M i i d b

  • 8/12/2019 ECE545 Lecture5 Dataflow

    63/85

    63

    Merging wires and buses

    SIGNAL a: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL b: STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL c: STD_LOGIC;

    SIGNAL d: STD_LOGIC_VECTOR(9 DOWNTO 0);

    d

  • 8/12/2019 ECE545 Lecture5 Dataflow

    64/85

    64

    Splitting buses

    SIGNAL a: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL b: STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL c: STD_LOGIC;SIGNAL d: STD_LOGIC_VECTOR(9 DOWNTO 0);

    a

  • 8/12/2019 ECE545 Lecture5 Dataflow

    65/85

    65ECE 448 FPGA and ASIC Design with VHDL

    Fixed Shifters & Rotators

    Fi d Shift i VHDL

  • 8/12/2019 ECE545 Lecture5 Dataflow

    66/85

    66

    Fixed Shift in VHDL

    A(3) A(2) A(1) A(0)

    0 A(3) A(2) A(1)

    A>>1

    SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);

    SIGNAL AshiftR: STD_LOGIC_VECTOR(3 DOWNTO 0);

    AshiftR

  • 8/12/2019 ECE545 Lecture5 Dataflow

    67/85

    67

    Fixed Rotation in VHDL

    A(3) A(2) A(1) A(0)

    A(2) A(1) A(0) A(3)

    A

  • 8/12/2019 ECE545 Lecture5 Dataflow

    68/85

    68ECE 448 FPGA and ASIC Design with VHDL

    Buffers

    Tri-state Buffer

  • 8/12/2019 ECE545 Lecture5 Dataflow

    69/85

    69

    (b) Equivalent circuit

    (c) Truth table

    x f

    e

    (a) A tri-state buffer

    00

    11

    01

    01

    ZZ

    01

    fe x

    x f

    e = 0

    e = 1 x f

    Tri-state Buffer

    Four types of Tri-state Buffers

  • 8/12/2019 ECE545 Lecture5 Dataflow

    70/85

    70

    x

    e

    (b)

    x f

    e

    (a)

    x f

    e

    (c )

    x

    e

    (d)

    Four types of Tri state Buffers

    Tri state Buffer example (1)

  • 8/12/2019 ECE545 Lecture5 Dataflow

    71/85

    71

    Tri-state Buffer example (1)

    LIBRARY ieee;USE ieee.std_logic_1164.all;

    ENTITY tri_state IS

    PORT ( ena: IN STD_LOGIC;input: IN STD_LOGIC;output: OUT STD_LOGIC

    );

    END tri_state;

    Tri state Buffer example (2)

  • 8/12/2019 ECE545 Lecture5 Dataflow

    72/85

    72

    Tri-state Buffer example (2)

    ARCHITECTURE dataflow OF tri_state ISBEGIN

    output

  • 8/12/2019 ECE545 Lecture5 Dataflow

    73/85

    73ECE 448 FPGA and ASIC Design with VHDL

    Multiplexers

    2-to-1 Multiplexer

  • 8/12/2019 ECE545 Lecture5 Dataflow

    74/85

    74

    2 to 1 Multiplexer

    (a) Graphical symbol (b) Truth table

    0

    1

    f s

    w 0

    w 1

    f

    s

    w

    0 w

    1

    0

    1

    VHDL code for a 2-to-1 Multiplexer

  • 8/12/2019 ECE545 Lecture5 Dataflow

    75/85

    75

    VHDL code for a 2 to 1 Multiplexer

    LIBRARY ieee ;USE ieee.std_logic_1164.all ;

    ENTITY mux2to1 ISPORT ( w0, w1, s : IN STD_LOGIC ;

    f : OUT STD_LOGIC ) ;END mux2to1 ;

    ARCHITECTURE dataflow OF mux2to1 IS

    BEGINf

  • 8/12/2019 ECE545 Lecture5 Dataflow

    76/85

    76

    Cascade of two multiplexers

    s1

    w 3

    w 1

    0

    1

    s2

    w 2

    0

    1 y

    VHDL code for a cascade ofl i l

  • 8/12/2019 ECE545 Lecture5 Dataflow

    77/85

    77

    two multiplexersLIBRARY ieee ;

    USE ieee.std_logic_1164.all ;

    ENTITY mux_cascade ISPORT ( w1, w2, w3: IN STD_LOGIC ;

    s1, s2 : IN STD_LOGIC ;f : OUT STD_LOGIC ) ;

    END mux_cascade ;

    ARCHITECTURE dataflow OF mux2to1 ISBEGIN

    f

  • 8/12/2019 ECE545 Lecture5 Dataflow

    78/85

    78

    f

    s1

    w

    0w1

    00

    01

    (b) Truth table

    w0

    w1

    s0

    w2

    w3

    10

    11

    00

    1

    1

    1

    0

    1

    fs1

    0

    s0

    w2

    w3

    (a) Graphic symbol

    4-to-1 Multiplexer

  • 8/12/2019 ECE545 Lecture5 Dataflow

    79/85

  • 8/12/2019 ECE545 Lecture5 Dataflow

    80/85

    2-to-4 Decoder

  • 8/12/2019 ECE545 Lecture5 Dataflow

    81/85

    81

    2 to 4 Decoder

    0

    01

    1

    10

    1

    y3

    w1

    0

    w0

    x x

    1

    1

    0

    1

    1

    En

    00

    1

    0

    0

    y2

    01

    0

    0

    0

    y1

    10

    0

    0

    0

    y0

    00

    0

    1

    0

    w1

    En

    y3

    w0

    y2

    y1

    y0

    (a) Truth table (b) Graphicalsymbol

    VHDL code for a 2-to-4 Decoder

  • 8/12/2019 ECE545 Lecture5 Dataflow

    82/85

    82

    VHDL code for a 2 to 4 DecoderLIBRARY ieee ;USE ieee.std_logic_1164.all ;

    ENTITY dec2to4 ISPORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

    En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;

    END dec2to4 ;

    ARCHITECTURE dataflow OF dec2to4 ISSIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ;

    BEGINEnw

  • 8/12/2019 ECE545 Lecture5 Dataflow

    83/85

    83ECE 448 FPGA and ASIC Design with VHDL

    Encoders

    Priority Encoder

  • 8/12/2019 ECE545 Lecture5 Dataflow

    84/85

    84

    Priority Encoder

    w0

    w3

    y0

    y1

    d

    0 0 1

    0 1 0

    w 0 y 1

    d

    y 0

    1 1

    0

    1

    1

    1 1

    z

    1 x x

    0

    x

    w 1

    0 1 x

    0

    x

    w 2

    0 0 1

    0

    x

    w 3

    0 0 0

    0

    1

    z

    w1w2

    VHDL code for a Priority Encoder

  • 8/12/2019 ECE545 Lecture5 Dataflow

    85/85

    VHDL code for a Priority EncoderLIBRARY ieee ;USE ieee.std_logic_1164.all ;

    ENTITY priority ISPORT ( w : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

    y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ;z : OUT STD_LOGIC ) ;

    END priority ;

    ARCHITECTURE dataflow OF priority ISBEGIN

    y