verilog basics 4 blocks condstatement loops

Upload: ahmad-shdifat

Post on 05-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    1/29

    Digital System Design

    Verilog:

    Blocks, Conditional Statement, Loops

    Dr. Bassam Jamil

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    2/29

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    3/29

    33

    Block Types

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    4/29

    44

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    5/29

    5

    always and initial block syntax

    Initial block syntax:Initial beginstatement1;statement2;.

    End

    OR Initial statement;

    always block syntaxalways @ ( sensitivity list) begin

    .

    end

    ORalways @ ( * )

    begin . end

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    6/29

    6

    Initial Block

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    7/297

    Initial Block Example

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    8/298

    always Block

    module clock_gen

    reg_clk;

    initialclk = 1b0;

    always @ (clk)

    #10 clk = ~ clk ;

    initial begin#1000 $finish;

    end

    endmodule

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    9/299

    always Block

    module clock_gen

    reg_clk;

    initialclk = 1b0;

    always @ (clk)#10 clk = ~ clk ;

    initial begin#1000 $finish;

    end

    endmodule

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    10/2910

    More always Block Examples

    Always Block Examples Notes

    always @(a or b or ci)

    begin

    sum = a + b + ci;end

    always block executes

    statements repeatedly.

    always @(posedge clk)q

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    11/2911

    Mux4 Example

    Implement Mux4 using Structural

    Behavioral data flow)

    Behavioral procedural using if statement

    Behavioral procedural using case statement

    11

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    12/2912

    Conditional Statements

    If statement syntax: if(expression) statement or statement_group

    if(expression) statement or statement_group

    else statement or statement_group

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    13/2913

    Conditional Statements: Nested If

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    14/2914

    Conditional Statements: Multi-way If

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    15/2915

    Conditional Statements: case statement

    Case syntaxcase (net_or_register_or_literal)

    case_match1: statement or statement_group

    case_match2,

    case_match3: statement or statement_group

    default: statement or statement_group

    endcase

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    16/2916

    Conditional Statements: casex/casez

    casez (net_or_register_or_literal)

    Special version of the case statement which uses a Zlogic value to represent don't-care bits.

    casex (net_or_register_or_literal)

    Special version of the case statement which uses Z or

    X logic values to represent don't-care bits.

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    17/2917

    Conditional Statements: case statement

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    18/2918

    Loop Statements

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    19/2919

    Forever

    reg clk;Initial begin

    clk = 0;

    forever #10 clk = ~ clk;

    end

    Syntax:foreverstatement or statement_group

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    20/2920

    Repeat

    Wait for

    5 clocks

    Syntax:

    repeat (number)

    statement orstatement_group

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    21/2921

    While Statement

    Syntax:while (expression)

    statement orstatement_group

    Count number of 1s inregisterin

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    22/29

    22

    For Statement

    Sntax:

    for(initial_assignment;

    expression;

    step_assignment)

    statement or statement_group

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    23/29

    23

    Parallel Statements

    Syntax:fork

    statement1;

    statement2;

    statementN;

    join

    All statements

    start at the

    same time.

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    24/29

    24

    Parallel Statements

    begin/end and fork/join blocks

    have same effect

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    25/29

    25

    Named Block and disable statement

    25

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    26/29

    26

    Mux4 Modeling

    Will model the mux4 in various modeling styles: Structural

    Behavioral Continuous Assignment

    Behavioral Procedural using if statement

    Behavioral Procedural using case statement

    S

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    27/29

    27

    Structural to Behavioral

    27

    M B h i l (C i )

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    28/29

    28

    Mux 4 Behavioral (Cont. assign)

    28

    M 4 E l

  • 7/31/2019 Verilog Basics 4 Blocks CondStatement Loops

    29/29

    Mux4 Example