INTRODUCTION TO VERILOG HDL - fke.utm.my Lآ­2: VERILOG HDL 2012/2013-1 • Verilog describes a digital

  • View
    5

  • Download
    0

Embed Size (px)

Text of INTRODUCTION TO VERILOG HDL - fke.utm.my Lآ­2: VERILOG HDL 2012/2013-1 • Verilog describes a...

  • L­2: VERILOG HDL 2012/2013-1

    INTRODUCTION TO VERILOG HDL

    CAD for ASIC Design 1

  • L­2: VERILOG HDL 2012/2013-1

    OVERVIEW 

    • Verilog was adopted as an official standard as IEEE Standard 1364­ 1995 in 1995. 

    • An enhanced version, called Verilog­2001, was adopted in 2001 as  IEEE Standard 1364­2001. 

    • Originally intended for simulation, today Verilog is designed to  facilitate describe digital hardware for both simulation and  synthesis. 

    • Verilog is a great low level language.  • Structural models are easy to design and Behavioral RTL code is 

    pretty good. 

    CAD for ASIC Design 2

  • L­2: VERILOG HDL 2012/2013-1

    • The syntax is regular and easy to remember. It is the fastest HDL  language to learn and use. 

    • However Verilog lacks user defined data types and lacks the  interface­object separation of the VHDL's entity­architecture model.

    Verilog constructs

    Entity  declaration

    module circuit (a, b, C, D); input  a; output  b; input  [3:0] C; output [0:7] D;

    endmodule

    CAD for ASIC Design 3

  • L­2: VERILOG HDL 2012/2013-1

    Internal signals,  variables,

    constants

    wire inta ; wire [3:0] intb ;

    integer [7:0] counter;

    reg [0:7] temp; parameter C 3’b000 ;

    Component  instantiation

    module system1 (……) ;

    circuit U_comp (A, B);

    endmodule

    CAD for ASIC Design 4

  • L­2: VERILOG HDL 2012/2013-1

    Concurrent  signal  assignment

    assign Dataout = Datain;

    Sequential block always @ ( a )

    begin      ……

    End

    CAD for ASIC Design 5

  • L­2: VERILOG HDL 2012/2013-1

    Control flow a) If

    b) if …else

    c) case

    if (en == 1)  f = x1;

    if (sel == 0)  begin f = x1; g = x2; end else begin f = x2; g = x1; end

    case (y) 0 : f 

  • L­2: VERILOG HDL 2012/2013-1

    BASICS OF VERILOG 

    Verilog design unit

    module module_name (  ports  ); {parameter declarations} input  ; // input/output declarations: output   ; wire   ; // nets & variables: reg (or integer)  ;

    {assign continuous statement;} // behaviour statements: {initial block;}  {always blocks;} {gate instantiations;} {module instantiations;}

    endmodule

    CAD for ASIC Design 7

  • L­2: VERILOG HDL 2012/2013-1

    • Verilog describes a digital circuit or system as a set of modules.  • The entity used in Verilog description of hardware components is a 

    module • Following the module header is a declarative part, where module 

    ports, nets and variables are declared.  • A port in Verilog may be input, output, or inout. Ports provide the 

    module with a means to connect to other modules.  • Nets are typically declared by the keyword wire, connection 

    between hardware elements.  • A port is automatically declared as wire if it is defined as input, 

    output, or inout.  • Variables, declared as reg, are used for behavioural descriptions, 

    and are very much like variables in software languages. 

    CAD for ASIC Design 8

  • L­2: VERILOG HDL 2012/2013-1

    • Usually each line of Verilog text must terminate with a semicolon,  one exception of which is the terminating endmodule keyword. 

    • Verilog is case­sensitive. It allows letters, numbers and special  character “_” to be used for names. 

    • Names (or identifiers) are used for modules, parameters, ports,  variables, and instances of modules, and must begin with letters. 

    • Keywords cannot be used for names.

    CAD for ASIC Design 9

  • L­2: VERILOG HDL 2012/2013-1

    module circuitA (  Cin, x, y, X, Y, Cout, s, Bus, S  );

    input   Cin, x, y; input   [3:0]  X, Y; output Cout, s; output [3:0]  S; inout    [7:0]  Bus;

    wire  d; reg  e; …

    endmodule

     

    CAD for ASIC Design 10

  • L­2: VERILOG HDL 2012/2013-1

    Representation of Numbers in Verilog

    • Verilog uses a 4­value logic, that is, 0, 1, z, and x.  • Numbers can be given as binary (b), octal (o), hex (h), or decimal 

    (d).

     ’  

    • E.g., 2217 can be represented as 12’b100010101001, 12’h8A9, or  8’d2217. 

    • Unsigned numbers are given without specifying the size, e.g.  ‘b1000100110 or ‘h116 or ‘d2217 (will not be zero­padded) 

    • Negative numbers, e.g. if ­5 is specified as ­4’b101, it will be  interpreted as a four­bit 2’s complement of 5, which is 1011. 

    CAD for ASIC Design 11

  • L­2: VERILOG HDL 2012/2013-1

    • The number 12’b100010101001 may be written as  12’b1000_1010_1001 to improve read­ability in the code. 

    • A constant used in Verilog may be given as 8’hz3, which is the  same as 8’bzzzz0011. 

    • 8’hx denotes an unknown 8­bit number.

    CAD for ASIC Design 12

  • L­2: VERILOG HDL 2012/2013-1

    Fancy to try?

    • 14'h1234 • ­14'h1234 • 32'hDEAD_BEEF • ­32'hDEAD_BEEF

    CAD for ASIC Design 13

  • L­2: VERILOG HDL 2012/2013-1

    Operators in Verilog

    Operator  type

    Operator  symbol

    Operation

    Bitwise  ~, &, |, ^, ~^ not, and, or, xor, xnor Logical !,  &&,  || not, and, or Arithmetic +, ­, *, / add, sub, mult, divide Relational >, =, >, 

  • L­2: VERILOG HDL 2012/2013-1

    Consider that A, B, and C to be operands, either vectors or scalar (1­ bit). 

    • The   bitwise   operator   produce   the   same   number   of   bits   as   the  operands. E.g, A = a1a0, B = b1b0, C = c1c0, then A|B results in  c1=a1|b1 and c0 = a0|b0. 

    • The logical operator generates a one­bit result. Used in conditional  statements.

    o A||B results in 1 unless both A and B are zeros o A && B will produce a result of 1 if both A and B are nonzeros.  o !A gives a 1 if all its bits are 0, otherwise it results in a 1. 

    • The relational operator outputs a 1 or 0 based on the (specified)  comparison of A and B. 

    • The shift operators perform logical 1­bit shifts to the right or left,  with zeros shifted in.

    CAD for ASIC Design 15

  • L­2: VERILOG HDL 2012/2013-1

    • In   the   case   of   the   conditional   operator,   the   operation   A?B:C  produce a result that is equal to B if A evaluates to 1, otherwise the  result is C.

    • The   precedence   of   Verilog   operators   is   similar   to   that   found   in  arithmetic and Boolean algebra.

    CAD for ASIC Design 16

  • L­2: VERILOG HDL 2012/2013-1

    HDL MODELLING OF DIGITAL CIRCUITS 

     Different   circuit   complexities   (e.g.,   simple   modules   to   complete  systems)   require   different   kinds   of   specification   or   levels   of  abstraction. 

     Three modelling styles in HDL­based design of digital systems  Structural modelling  Dataflow modelling  Behavioural modelling

    CAD for ASIC Design 17

  • L­2: VERILOG HDL 2012/2013-1

     Structural   modelling     –   using   primitives   and   lower­level   module  instantiation.  This  modelling allows for   the hierarchical  modular  design approach  in design.   It   is  used to describe a  schematic  or  logic diagram. The functionality of the design is hidden inside the  components.

     Dataflow modelling     – output signals are specified in terms of input  signal   transformation.  This  style   is   similar   to  Boolean  equations.  This   model­ling   style   allows   a   digital   system   to   be   designed   in  terms of its function.

     Behavioural   modelling     –   describes   the   function   or   expected  behaviour of the design in an algorithmic manner. This style is the  closest to a natural language description of the circuit functionality.

    CAD for ASIC Design 18

  • Logic Function

    x1

    x2

    x3

    f

    func2

    L­2: VERILOG HDL 2012/2013-1

    Dataflow Modelling 

    CAD for ASIC Design 19

    module func2 (x1, x2, x3, f) ; input x1, x2, x3; output f ;

    assign f  = ( ~x1 & ~x2 & x3)          | (x1 & ~x2 & ~x3)          | (x1 & ~x2 & x3) 

       | (x1 & x2 & ~x3) ; endmodule

  • L­2: VERILOG HDL 2012/2013-1

    Modelling of full­adder using concurrent statements