vhd fir filter

Upload: dr-atul-dwivedi

Post on 02-Jun-2018

263 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 VHD FIR Filter

    1/56

    VHDL CodingExercise 4: FIR Filter

  • 8/10/2019 VHD FIR Filter

    2/56

    Where to start?

    Algorithm Architecture

    RTL-

    Block diagramVHDL-Code

    Designspace

    ExplorationFeedback

    Optimization

  • 8/10/2019 VHD FIR Filter

    3/56

    Algorithm High-Level System Diagram

    Context of the design Inputs and Outputs

    Throughput/rates

    Algorithmic requirements

    Algorithm Description

    Mathematical Description

    Performance Criteria

    Accuracy

    Optimization constraintsImplementation constraints

    Area

    Speed

    N

    ii

    ikxbky0

    FIR ky kx

  • 8/10/2019 VHD FIR Filter

    4/56

    Architecture (1) Isomorphic Architecture:

    Straight forward implementation of the algorithm

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

  • 8/10/2019 VHD FIR Filter

    5/56

    Architecture (2) Pipelining/Retiming:

    Improve timing

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

    Insert register(s) at the inputs or outputs

    Increases Latency

  • 8/10/2019 VHD FIR Filter

    6/56

    Architecture (2) Pipelining/Retiming:

    Improve timing

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

    Insert register(s) at the inputs or outputs

    Increases Latency

    Perform Retiming: Move registers through the logic

    without changing functionalityForward:

    Backwards:

  • 8/10/2019 VHD FIR Filter

    7/56

    Architecture (2) Pipelining/Retiming:

    Improve timing

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

    Insert register(s) at the inputs or outputs

    Increases Latency

    Perform Retiming: Move registers through the logic

    without changing functionalityForward:

    Backwards:

  • 8/10/2019 VHD FIR Filter

    8/56

    Architecture (2) Pipelining/Retiming:

    Improve timing

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

    Insert register(s) at the inputs or outputs

    Increases Latency

    Perform Retiming: Move registers through the logic

    without changing functionalityForward:

    Backwards:

  • 8/10/2019 VHD FIR Filter

    9/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

    Reverse the adder chain

  • 8/10/2019 VHD FIR Filter

    10/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

    Reverse the adder chain

  • 8/10/2019 VHD FIR Filter

    11/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    12/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    13/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    14/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    15/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    16/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    17/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    18/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    19/56

  • 8/10/2019 VHD FIR Filter

    20/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    21/56

    Architecture (3) Retiming and simple transformation:

    Optimization

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Reverse the adder chain

    Perform Retiming

    ky

  • 8/10/2019 VHD FIR Filter

    22/56

    Architecture (4) More pipelining:

    Add one pipelining stage to the retimed circuit

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    The longest path is given by the multiplier

    Unbalanced: The delay from input to the first pipeline stage ismuch longer than the delay from the first to the second stage

    ky

  • 8/10/2019 VHD FIR Filter

    23/56

    Architecture (5) More pipelining:

    Add one pipelining stage to the retimed circuit

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    kx

    Move the pipeline registers into the multiplier:

    Paths between pipeline stages are balanced

    Improved timing

    Tclock = (Tadd + Tmult)/2 + Treg

    ky

    hi ( )

  • 8/10/2019 VHD FIR Filter

    24/56

    Architecture (6) Iterative Decomposition:

    Reuse Hardware

    Identify regularity and reusable hardware components

    Add control

    multiplexers

    storage elements

    Control

    Increases Cycles/Sample

    0b

    1b

    2b

    2Nb

    1Nb

    Nb

    ky

    kx

    kx

    0b

    Nb

    0

    ky

    i

  • 8/10/2019 VHD FIR Filter

    25/56

    RTL-Design Choose an architecture under the following constraints:

    It meets ALL timing specifications/constraints: Throughput

    Latency

    It consumes the smallest possible area

    It requires the least possible amount of power

    Decide which additional functions are needed andhow they can be implemented efficiently:

    Storage of samples x(k)=> MEMORY

    Storage of coefficients bi=> LUTAddress generators for MEMORY and LUT

    => COUNTERS

    Control => FSM

    Iterative

    Decomposition

    kx

    0b

    Nb

    0

    ky

    RTL D i

  • 8/10/2019 VHD FIR Filter

    26/56

    RTL-Design RTL Block-diagram:

    Datapath

    N

    ii

    ikxbky0

    FSM: Interface protocols

    datapath control:

    kx

    0b

    Nb

    0

    ky

    RTL D i

  • 8/10/2019 VHD FIR Filter

    27/56

    RTL-Design How it works:

    IDLE

    Wait for new sample

    N

    ii

    ikxbky0

    RTL D i

  • 8/10/2019 VHD FIR Filter

    28/56

    RTL-Design How it works:

    IDLE

    Wait for new sample Store to input register

    N

    ii

    ikxbky0

    RTL D i

  • 8/10/2019 VHD FIR Filter

    29/56

    RTL-Design How it works:

    IDLE

    Wait for new sample Store to input register

    NEW DATA:

    Store new sample to memory

    N

    ii

    ikxbky0

    RTL D i

  • 8/10/2019 VHD FIR Filter

    30/56

    RTL-Design How it works:

    IDLE

    Wait for new sample Store to input register

    NEW DATA:

    Store new sample to memory

    RUN:

    N

    ii

    ikxbky0

    N

    ii

    ikxbky0

    RTL D i

  • 8/10/2019 VHD FIR Filter

    31/56

    RTL-Design How it works:

    IDLE

    Wait for new sample Store to input register

    NEW DATA:

    Store new sample to memory

    RUN:

    Store result to output register

    N

    ii

    ikxbky0

    N

    ii

    ikxbky0

    RTL D i

  • 8/10/2019 VHD FIR Filter

    32/56

    RTL-Design How it works:

    IDLE

    Wait for new sample Store to input register

    NEW DATA:

    Store new sample to memory

    RUN:

    Store result to output register

    DATA OUT:

    Output result

    N

    ii

    ikxbky0

    N

    ii

    ikxbky0

    RTL D i

  • 8/10/2019 VHD FIR Filter

    33/56

    RTL-Design How it works:

    IDLE

    Wait for new sample Store to input register

    NEW DATA:

    Store new sample to memory

    RUN:

    Store result to output register

    DATA OUT:

    Output result / Wait for ACK

    N

    ii

    ikxbky0

    N

    ii

    ikxbky0

    RTL D i

  • 8/10/2019 VHD FIR Filter

    34/56

    RTL-Design How it works:

    IDLE

    Wait for new sample Store to input register

    NEW DATA:

    Store new sample to memory

    RUN:

    Store result to output register

    DATA OUT:

    Output result / Wait for ACK

    IDLE:

    N

    ii

    ikxbky0

    N

    ii

    ikxbky0

    T l ti i t VHDL

  • 8/10/2019 VHD FIR Filter

    35/56

    Translation into VHDL Some basic VHDL building blocks:

    Signal Assignments: Outside a process:

    Within a process (sequential execution):

    AxD YxD

    AxDYxD

    BxD

    Sequential execution

    The last assignment is

    kept when the process

    terminates

    AxD YxD

    BxD

    This is NOT allowed !!!

    T anslation into VHDL

  • 8/10/2019 VHD FIR Filter

    36/56

    Translation into VHDL Some basic VHDL building blocks:

    Multiplexer:

    Conditional Statements:

    AxD

    BxD YxD

    SELxS

    CxD Default

    Assignment

    AxD

    BxD

    SelAxS

    CxD

    DxD

    OUTxD

    SelBxS

    STATExDP

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    37/56

    Translation into VHDL Common mistakes with conditional statements:

    Example:

    AxD

    ??

    SelAxS

    BxD

    ??

    OUTxD

    SelBxS

    STATExDP

    NO default assignment

    NO else statement

    ASSIGNING NOTHING TO A SIGNAL IS NOT AWAY TO KEEP ITS VALUE !!!!! => Use FlipFlops !!!

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    38/56

    Translation into VHDL Some basic VHDL building blocks:

    Register:

    Register with ENABLE:

    DataREGxDN DataREGxDP

    DataREGxDN DataREGxDP

    DataREGxDNDataREGxDP

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    39/56

    Translation into VHDL Common mistakes with sequential processes:

    DataREGxDN DataREGxDP

    CLKxCI

    DataRegENxS

    DataREGxDN DataREGxDP

    CLKxCI

    DataRegENxS

    DataREGxDN DataREGxDP

    0

    1

    Can not be translated

    into hardware and is

    NOT allowed

    Clocks are NEVER

    generated within

    any logic

    Gated clocks are more

    complicated then this

    Avoid them !!!

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    40/56

    Translation into VHDL Some basic rules:Sequential processes (FlipFlops)

    Only CLOCK and RESET in the sensitivity list

    Logic signals are NEVER used as clock signals

    Combinatorial processes Multiple assignments to the same signal are ONLY possible within

    the same process => ONLY the last assignment is valid

    Something must be assigned to each signal in any case ORThere MUST be an ELSE for every IF statement

    More rules that help to avoid problems and surprises:Use separate signals for the PRESENT state and the

    NEXT state of every FlipFlop in your design.

    Use variables ONLY to store intermediate results or evenavoid them whenever possible in an RTL design.

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    41/56

    Translation into VHDL Write the ENTITY definition of your design to specify:

    Inputs, Outputs and Generics

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    42/56

    Translation into VHDL Describe the functional units in your block diagram

    one after another in the architecture section:

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    43/56

    Translation into VHDL Describe the functional units in your block diagram

    one after another in the architecture section:

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    44/56

    Translation into VHDL Describe the functional units in your block diagram

    one after another in the architecture section:

    Register with ENABLE

    Register with ENABLE

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    45/56

    Translation into VHDL Describe the functional units in your block diagram

    one after another in the architecture section:

    Register with CLEAR

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    46/56

    Translation into VHDL Describe the functional units in your block diagram

    one after another in the architecture section:

    Counter

    Counter

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    47/56

    Translation into VHDL Describe the functional units in your block diagram

    one after another in the architecture section:

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    48/56

    Translation into VHDL The FSM is described with onesequential process

    and onecombinatorial process

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    49/56

    Translation into VHDL The FSM is described with onesequential process

    and onecombinatorial process

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    50/56

    Translation into VHDL The FSM is described with onesequential process

    and onecombinatorial process

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    51/56

    Translation into VHDL The FSM is described with onesequential process

    and onecombinatorial process

    MEALY

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    52/56

    Translation into VHDL The FSM is described with onesequential process

    and onecombinatorial process

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    53/56

    Translation into VHDL The FSM is described with onesequential process

    and onecombinatorial process

    MEALY

    Translation into VHDL

  • 8/10/2019 VHD FIR Filter

    54/56

    Translation into VHDL The FSM is described with onesequential process

    and onecombinatorial process

    MEALY

  • 8/10/2019 VHD FIR Filter

    55/56

    Other Good Ideas

  • 8/10/2019 VHD FIR Filter

    56/56

    Other Good Ideas Keep things simple

    Partition the design (Divide et Impera):Example:

    Start processing the next sample, while the previousresult is waiting in the output register:

    Just add a FIFO to at the output of you filter

    Do NOT try to optimize each Gate or FlipFlop Do not try to save cycles if not necessary

    VHDL code

    Is usually long and that is good !!

    Is just a representation of your block diagramDoes not mind hierarchy