lecture 16 - 19 combinational and sequential logic.pdf

Upload: ramanaidu1

Post on 06-Jul-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    1/31

    FPGA BASED SYSTEM

    DESIGNDr. Tayab Din [email protected] 

    Lecture 16-19 : Combinational and Sequential

    Logic

    mailto:[email protected]:[email protected]

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    2/31

    Combinational vs Sequential Logic• Combinational logic output

    depends upon the currentinput

    • Memory less system

    • Sequential logic output

    needs memory because itdepends upon the

    previous states

    • Storage elements

    connected in feedbackloop with combinational

    logic

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    3/31

    Concurrent vs Sequential Code• Only statements placed inside

    • the process• the procedure

    • or function are sequential

    • but VHDL code is inherentlyconcurrent (parallel)

    • In other words, concurrent are 

    • Statements outside of a process 

    • Processes are evaluatedconcurrently

    • Concurrent code is also called

    dataflow code • In general combinational logic

    circuits are build with concurrentcode

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    4/31

    Concurrent Statements

    • Concurrent statements include:•  Boolean equations

    •  conditional assignments (when/else,with/select)

    •  instantiation

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    5/31

    Using Operators

    • Easiest and basic way of creating concurrent code

    • Complex circuits are easier to deal with sequential code

    comparatively, infact

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    6/31

    Example  – I: Multiplexer

    Fig: MUX Block

    Fig: MUX

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    7/31

    When Statement Example: When/ Else or with/ Select / When 

    When/ Else or with/ Select / When Syntax

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    8/31

    Example  – 2: Solution with WHEN/ELSE

    Fig: MUX Example - II

    If x is an integer i.e., x : in

    integer range 0 to 3; 

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    9/31

    Solution  – 2: with WITH/SELECT/WHEN

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    10/31

    Example  – 3: Tri-State Buffer

    Fig: Tri-State Buffer

    Fig: Vector Waveform

     A

    x(3:0) Y(3:0)

    ena

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    11/31

    Encoder 8by3 (i.e., n=8, m=3) When-Else

    Fig: Encoder Block

    Fig: Simulation Results

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    12/31

    Encoder 8by3 (i.e., n=8, m=3) With-Select-When

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    13/31

    GENERATE Statement• It is another concurrent statement. It allows a section of

    code to be repeated a number of times, thus creatingseveral instances of the same assignment.

    • An irregular form of GENERATE statement is

    IF/GENERATE, syntax given below:

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    14/31

    How to use GENERATE Statement?

    GENERATE Syntax  – I

    Example: input as variable

    Example: outcome as single driven

    Example: outcome as multiple driven

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    15/31

    GENERATE Shifter Example 

    Fig: VHDL Code and Vector

    Waveform Output

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    16/31

    Home Work

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    17/31

    PART-II: SEQUENTIAL

    CODE

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    18/31

    Sequential Code

    • VHDL is inherently concurrent

    • IF, WAIT, CASE, and LOOP are executed inside the

    PROCESSES, FUNCTIONS, and PROCEDURES that

    are sequentially processed.• Variable is not global, should be declared inside the

    process

    • Signal can be used globally

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    19/31

    Sequential statements: The Process

    • A VHDL construct used for grouping sequential

    statements• Statements are processed sequentially during

    simulation

    • Can be either active or inactive during simulation

     A Process typically has a SENSITIVITY LISTexcept when WAIT is used

    PROCESS ( sensitivity list )

    -- optional variable declarations 

    BEGIN

     sequential statements

    END PROCESS ;

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    20/31

    The Process Sensitivity List

    • A Process is invoked when one or more of the

    signals within the sensitivity list change, e.g.

     ARCHITECTURE archlist OF list IS 

    BEGIN 

    nand0: PROCESS (a,b)

    BEGIN 

    c

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    21/31

    Fig: D Flip Flop Symbol

    Fig: DFF Vector Waveform

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    22/31

    Signal Assignment in Processes

    LIBRARY ieee;

    USE

    ieee.std_logic_1164. ALL;

    ENTITY mux2ltch IS PORT (

    a, b: IN std_logic;

    s, en: IN std_logic;

    x: BUFFER  std_logic);

    END mux2ltch;

    x

    a

     b

    en

    s

    c

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    23/31

    Signal Assignment in Processes:Incorrect Solution

     ARCHITECTURE archmux2ltch OF mux2ltch IS 

    SIGNAL c: std_logic;

    BEGIN 

    mux: PROCESS (a,b,s,en)

    BEGIN 

    IF s = '0' THEN c

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    24/31

    PROCESS: A correct solution

     ARCHITECTURE archmux2ltch OF mux2ltch IS 

    SIGNAL c: std_logic;

    BEGIN 

    mux: PROCESS (a, b, s)BEGIN 

    IF s = '0' THEN c

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    25/31

    IF StatementCounter Example Code

    Fig: Counter

    Vector Waveform

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    26/31

    WAIT

    •No sensitivity list required

    •WAIT UNTIL accepts one signal,

    WAIT ON accepts multiple, Wait

    For is only for simulation purpose

    •Do yourself  – develop DFF code

    using wait on instead of IF only,and simulate it in Quartus-II, verify

    the functionality and observe the

    area-performance differences . 

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    27/31

    CASE DFF with CASE Statement

    •CASE statement has

    resemblance with WHEN

    •Unlike WHEN, CASE allows

    multiple assignments

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    28/31

    LOOP: FOR and WHILE

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    29/31

    Sample Example Codes

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    30/31

    CASE Versus IF and WHEN

    • CASE and IF allows selection of one sequence of

    statements for execution from a number of alternative

    sequences

    • CASE vs WHEN

    • CASE is sequential, while WHEN is concurrent

    • CASE can only be used inside the process, FUNCTIONS, or

    PROCEDURES while WHEN outside is reverse

    • All permutations can be tested by both

    • WHEN can have any number of assignments per test, whileCASE is limited to only one

    • NULL is the keyword for no-action in CASE, Unaffected is

    used in WHEN for no-action (shown previously in examples)

  • 8/18/2019 Lecture 16 - 19 Combinational and Sequential Logic.pdf

    31/31

    END OF THE LECTURELecture 16-19