+ All Categories
Home > Documents > Ver i Log Introduction

Ver i Log Introduction

Date post: 07-Apr-2018
Category:
Upload: raqibul-hasan
View: 221 times
Download: 0 times
Share this document with a friend

of 40

Transcript
  • 8/4/2019 Ver i Log Introduction

    1/40

    1

    System Specification Using VerilogHDL

  • 8/4/2019 Ver i Log Introduction

    2/40

    2

    Number Specification

    When specifying constants, whether they be singlebit or multi-bit, you should use an explicit syntax toavoid confusion:

    The general syntax is: {bit width}{base}{value}

    4d14//4-bit value, specified in decimal

    4he//4-bit value, specified in hex 4b1110//4-bit value, specified in binary

    4b10xz//4-bit value, with x and z, in binary

  • 8/4/2019 Ver i Log Introduction

    3/40

    3

    Gate Delays

    nand #(prop_delay)

    nand #(t_rise, t_fall)

    nand #(t_rise, t_fall, t_off)

  • 8/4/2019 Ver i Log Introduction

    4/40

    4

    Delay Control

  • 8/4/2019 Ver i Log Introduction

    5/40

    5

  • 8/4/2019 Ver i Log Introduction

    6/40

    6

  • 8/4/2019 Ver i Log Introduction

    7/40

    7

    Switch Level Modeling

    nmos name (out, data, ctrl);

    pmos name (out, data, ctrl);

    ctrl

    outdata

    ctrl

    outdata

  • 8/4/2019 Ver i Log Introduction

    8/40

    8

    CMOS Inverter Switch Network

    module cmosinverter (out, in);

    input in;

    output out;supply1 vdd;

    supply0 gnd;

    pmos p1 (vdd, out, in);

    nmos n1 (gnd, out, in);

    endmodule

  • 8/4/2019 Ver i Log Introduction

    9/40

    9

    NMOS NOR with pullup Primitives

    module nor2 (out, a, b);

    input a, b;

    output out;supply0 gnd;

    nmos na (gnd, out, a);

    nmos nb (gnd, out, b);pullup (out);

    endmodule

  • 8/4/2019 Ver i Log Introduction

    10/40

  • 8/4/2019 Ver i Log Introduction

    11/40

    11

    Data Type

    There are two main data types in Verilog. These datatypes may be single bit or multi-bit.

    Wires

    Wires are physical connections between devices and are

    continuously assigned. Nets do not remember, or store, information -This behaves

    much like an electrical wire...

    Registers Regs are procedurally assigned values and remember, or

    store, information until the next value assignment is made.

    It is nothardware register

  • 8/4/2019 Ver i Log Introduction

    12/40

    12

    Data Type DeclarationWire (wire) Definition

  • 8/4/2019 Ver i Log Introduction

    13/40

    13

    Data Type Declaration

    Register (reg) Definition

  • 8/4/2019 Ver i Log Introduction

    14/40

    14

    Variable Declaration

    con

    stant

    s

  • 8/4/2019 Ver i Log Introduction

    15/40

    15

    Verilog Arithmetic Operator

  • 8/4/2019 Ver i Log Introduction

    16/40

    16

    Verilog Relational Operator

  • 8/4/2019 Ver i Log Introduction

    17/40

    17

    Verilog Bitwise Operator

  • 8/4/2019 Ver i Log Introduction

    18/40

    18

    Verilog Logical Operator

  • 8/4/2019 Ver i Log Introduction

    19/40

    19

    Verilog Concatenation Operator

  • 8/4/2019 Ver i Log Introduction

    20/40

  • 8/4/2019 Ver i Log Introduction

    21/40

    21

    Example 1

    Example 2

    Continuous Assignment

  • 8/4/2019 Ver i Log Introduction

    22/40

    22

    Procedural Constructs

  • 8/4/2019 Ver i Log Introduction

    23/40

    23

    Syntax Example

  • 8/4/2019 Ver i Log Introduction

    24/40

    24

    Sensitivity List

  • 8/4/2019 Ver i Log Introduction

    25/40

    25

    Procedural Constructs

    Combinational logic using operators:

  • 8/4/2019 Ver i Log Introduction

    26/40

    26

    Procedural Constructs

    Combinational logic using if-else:

  • 8/4/2019 Ver i Log Introduction

    27/40

    27

    Procedural Constructs

    Combinational logic using case:

  • 8/4/2019 Ver i Log Introduction

    28/40

    28

    System Tasks

    The $sign denotes Verilog system tasks, there area large number of these, most useful being:

    $display(The value of a is %b, a); Used in procedural blocks for text output. The %b is the value format (binary, in this case)

    $finish; Used to finish the simulation.

    Use when your stimulus and response testing is done.

    $stop; Similar to $finish, but doesnt exit simulation.

  • 8/4/2019 Ver i Log Introduction

    29/40

    29

    Event Control

    Event Control Edge Triggered Event Control

    Level Triggered Event Control

    Edge triggered Event Control

    Level Triggered Event Control

  • 8/4/2019 Ver i Log Introduction

    30/40

    30

    Loop Statement

    Loop Statement

    Repeat

    While

    For

    Repeat Loop

    Example

    repeat (count)sum = sum + 6;

    If condition is a x orz is treated as o

  • 8/4/2019 Ver i Log Introduction

    31/40

    31

    Loop Statement (cont.)

  • 8/4/2019 Ver i Log Introduction

    32/40

    32

    Conditional statement

    ifStatement

    Format:if(condition)

    procedural_statement

    else if( condition)

    procedural_statement

    Example

  • 8/4/2019 Ver i Log Introduction

    33/40

    33

    Case Statement

  • 8/4/2019 Ver i Log Introduction

    34/40

    34

    Structural

    module mux21(a, b, s, y);

    input a, b, s;

    output y;

    wire m, n, p;and g1(m, b, s);

    not g2(n, s);

    and g3(p, a, n);

    or g4(y, m, p);

    endmodule

  • 8/4/2019 Ver i Log Introduction

    35/40

  • 8/4/2019 Ver i Log Introduction

    36/40

    36

    Behavioral

    module mux21(A, B, S, Y);

    input A, B, S;

    output Y;

    reg Y;always @(A orB or S)begin

    if(S==0) Y = A;

    else Y = B;

    end

    endmodule

  • 8/4/2019 Ver i Log Introduction

    37/40

    37

    Compiler Directives

    include used to include another file

    Example

    include ./pqp_fetch.v

  • 8/4/2019 Ver i Log Introduction

    38/40

    38

    Suggested Coding Style

    Write one module per file, and name the file thesame as the module. Break larger designs intomodules on meaningful boundaries.

    Always use formal port mapping of sub-modules.

    Use parameters for commonly used constants.

    Be careful to create correct sensitivity lists.

  • 8/4/2019 Ver i Log Introduction

    39/40

    39

    Dont ever just sit down and code. Think aboutwhathardware you want to build, how to describe it,andhow you should test it.

    You are not writing a computer program, you aredescribing hardware Verilog is not C!

    Only you know what is in yourhead. If you needhelp from others, you need to be able to explainyour design -- either verbally, or by detailedcomments in your code.

  • 8/4/2019 Ver i Log Introduction

    40/40

    40

    The End


Recommended