SlideShare una empresa de Scribd logo
1 de 92
Descargar para leer sin conexión
Digital System Design with VHDL



    Great thanks for Mentor Graphics Egypt


                   some slides modified from:
S. Dandamudi, “Fundamentals of Computer Organization and Design”


                                                                   1
Course Roadmap

Lecture number /Day   Lecture title
Lecture#1/Tuesday     Introduction to VHDL
Lecture#2/Wednesday   Combinational Logic Review/Dataflow VHDL Coding
Lecture #3/Thursday   Behavioral VHDL Coding (for Synthesis), Structural VHDL Coding

LAB#1…/Saturday       How to use QuartzII.. and test Ur VHDL code
Lecture #4/Sunday     Behavioral VHDL Coding (for Synthesis): Finite State Machines
                      and ASMs
LAB#2/Monday          Build lot of blocks and test them using QuartzII
Lecture #5/Tuesday    FPGA components and types
Lecture#6/Wednesday   Dynamic timing analysis Vs Static timing analysis
Lecture #7/Thursday   Design Optimization




                                                                                       2
Digital System Design with VHDL
                 Lecture 1

                  Introduction to VHDL


                   some slides modified from:
S. Dandamudi, “Fundamentals of Computer Organization and Design”


                                                                   3
Lecture Roadmap

• History of VHDL
• VHDL Design Flows
• Introduction to VHDL for synthesis




                                       4
Example Design: Cryptographic Coprocessor
Resistant to Side-Channel Attacks




                                            5
From VHDL to Fabrication




                           6
Measurement Test Setup




                         7
Brief History of VHDL




                        8
VHDL

• VHDL is a language for describing digital hardware
  used by industry worldwide


   • VHDL is an acronym for VHSIC (Very High Speed
     Integrated Circuit) Hardware Description Language




                                                         9
Genesis of VHDL
• State of the art circa 1980
   • Multiple design entry methods and hardware description
     languages in use
   • No or limited portability of designs between CAD tools
     from different vendors
   • Objective: shortening the time from a design concept to
     implementation from 18 months to 6 months




                                                               10
A Brief History of VHDL
• June 1981: Woods Hole Workshop
• July 1983: contract awarded to develop VHDL
   • Intermetrics
   • IBM
   • Texas Instruments
• August 1985: VHDL Version 7.2 released
• December 1987: VHDL became IEEE Standard 1076-1987 and in
  1988 an ANSI standard
• Four versions of VHDL:
   •   IEEE-1076 1987
   •   IEEE-1076 1993  most commonly supported by CAD tools
   •   IEEE-1076 2000 (minor changes)
   •   IEEE-1076 2002 (minor changes)




                                                               11
Verilog

• Essentially identical in function to VHDL
   • No generate statement
• Simpler and syntactically different
   • C-like
• Gateway Design Automation Co., 1983
• Early de facto standard for ASIC programming
• Open Verilog International Standard



                                                 12
VHDL vs. Verilog

Government Developed       Commercially Developed

Ada based                  C based

Strongly Type Cast         Mildly Type Cast

Difficult to learn         Easier to Learn

More Powerful              Less Powerful

                                                    13
Examples
 •   VHDL Example:
 process (clk, rstn)
 begin
     if (rstn = '0') then
         q <= '0';
     elseif (clk'event and clk = '1') then
         q <= a + b;
     end if;
 end process;

 •   Verilog Example:
 always@(posedge clk or negedge rstn)
 begin
     if (! rstn)
          q <= 1'b0;
     else
          q <= a + b;
 end




                                             14
Features of VHDL and Verilog

• Technology/vendor independent

• Portable

• Reusable




                                  15
VHDL Design Flows




                    16
World of Integrated Circuits

                 Integrated Circuits


  Full-Custom         Semi-Custom                           User
     ASICs               ASICs                          Programmable
                         (std cell)




                PLD                                     FPGA


    PAL         PLA    PML                LUT           MUX    Gates
                                      (Look-Up Table)



                                                                       17
ASIC versus FPGA

         ASIC                         FPGA
  Application Specific         Field Programmable
   Integrated Circuit               Gate Array
• Designs must be sent        • Bought off the shelf
for expensive and time        and reconfigured by
consuming fabrication         designers themselves
in semiconductor foundry

• Designed all the way        • No physical layout design;
from behavioral description   design ends with a bitstream
to physical layout            used to configure a device
                                                       18
Which Way to Go?
       ASICs                 FPGAs

                          Off-the-shelf
   High performance
                      Low development cost
      Low power
                      Short time to market
      Low cost in
     high volumes       Reconfigurability


                                             19
What is an FPGA Chip ?
• Field Programmable                     I/O Block
  Gate Array
• A chip that can be
  configured by user to
  implement different
  digital hardware


                             I/O Block




                                                                   I/O Block
• Configurable Logic
  Blocks (CLB) and
  Programmable Switch
  Matrices
• Bitstream to configure:
                                         I/O Block
  function of each block &
  the interconnection                                Source: [Brown99]

  between logic blocks
                                                                   20
VHDL for Synthesis




                     21
Levels of VHDL Design
         VHDL for Specification




             VHDL for Simulation




                    VHDL for Synthesis




                                         22
Levels of Design Description


      Algorithmic level
                                  Level of description
   Register Transfer Level
                                most suitable for synthesis
      Logic (gate) level


   Circuit (transistor) level

    Physical (layout) level




                                                          23
Register Transfer Logic (RTL) Design Description




            Combinational
               Logic
                                     Combinational
                                       Logic
                                                     …



                Registers




                                                     24
VHDL Fundamentals




                    25
Case Sensitivity

• VHDL is not case sensitive
  Example:
     Names or labels
        databus
        Databus
        DataBus
        DATABUS
     are all equivalent




                               26
Naming and Labeling
General rules of thumb (according to VHDL-87)

1.   All names should start with an alphabet character (a-z or
     A-Z)
2.   Use only alphabet characters (a-z or A-Z) digits (0-9) and
     underscore (_)
3.   Do not use any punctuation or reserved characters within
     a name (!, ?, ., &, +, -, etc.)
4.   Do not use two or more consecutive underscore
     characters (__) within a name (e.g., Sel__A is invalid)
5.   All names and labels in a given entity and architecture
     must be unique
6.   All names should not be from the reserved words list
                                                                  27
Free Format
• VHDL is a “free format” language
  No formatting conventions, such as spacing or
  indentation imposed by VHDL compilers. Space and
  carriage return treated the same way.
  Example:
          if (a=b) then
     or
          if          (a=b)   then
     or
          if (a =
          b) then
     are all equivalent

                                                     28
Readability Standards


        ESA VHDL Modelling Guidelines
                 published by
 European Space Research and Technology Center
              in September 1994




                                                 29
Readability Standards
Selected issues covered by ESA Guidelines:

•   Consistent writing style
•   Consistent naming conventions
•   Consistent indentation
•   Consistent commenting style
•   Recommended file headers
•   File naming and contents
•   Number of statements/declarations per line
•   Ordering of port and signal declarations
•   Constructs to avoid


                                                 30
Comments
• Comments in VHDL are indicated with a “double dash”, i.e., “--”
          Comment indicator can be placed anywhere in the line
          Any text that follows in the same line is treated as
          a comment
          Carriage return terminates a comment
          No method for commenting a block extending over a couple of
           lines
Examples:
-- main subcircuit
Data_in <= Data_bus; -- reading data from the input FIFO



                                                                         31
Comments
• Explain function of module to other designers
• Explanatory, not just restatement of code
• Locate close to code described
   • Put near executable code, not just in a header




                                                      32
Design Entity




                33
Example: NAND Gate



                     a   b   z
   a                 0   0   1
             z
   b                 0   1   1
                     1   0   1
                     1   1   0




                                 34
Example VHDL Code
• 3 sections to a piece of VHDL code
• File extension for a VHDL file is .vhd
• Name of the file is usually the entity name (nand_gate.vhd)
LIBRARY ieee;
USE ieee.std_logic_1164.all;         LIBRARY DECLARATION

ENTITY nand_gate IS
    PORT(
         a   : IN STD_LOGIC;
         b   : IN STD_LOGIC;         ENTITY
         z   : OUT STD_LOGIC);
END nand_gate;

ARCHITECTURE model OF nand_gate IS
BEGIN
                                     ARCHITECTURE
    z <= a NAND b;
END model;

                                                                35
Fundamental Parts Of A Library
• Library is a collection of commonly used pieces of
  code, grouped for reuse.
   LIBRARY

     PACKAGE 1               PACKAGE 2

          TYPES                    TYPES
        CONSTANTS                CONSTANTS
        FUNCTIONS                FUNCTIONS
       PROCEDURES               PROCEDURES
       COMPONENTS               COMPONENTS

                                                       36
Library Declarations

LIBRARY ieee;
USE ieee.std_logic_1164.all;
                                                Library declaration
ENTITY nand_gate IS
    PORT(
         a   : IN STD_LOGIC;
         b   : IN STD_LOGIC;
         z   : OUT STD_LOGIC);       Use all definitions from the package
END nand_gate;                       std_logic_1164

ARCHITECTURE model OF nand_gate IS
BEGIN
    z <= a NAND b;
END model;




                                                                        37
Library Declarations - Syntax




     LIBRARY library_name;
     USE library_name.package_name.package_parts;




                                                    38
Commonly Used Libraries
• ieee
   • Specifies multi-level logic system          Needs to be
     including STD_LOGIC, and                    explicitly declared
     STD_LOGIC_VECTOR data types
• std
   • Specifies pre-defined data types (BIT,
     BOOLEAN, INTEGER, REAL, SIGNED,
     UNSIGNED, etc.), arithmetic
     operations, basic type conversion           Visible by default
     functions, basic text i/o functions, etc.
• work
   • User-created designs after compilation

                                                                       39
Design Entity

         design entity


   entity declaration    Design Entity - most basic
                         building block of a design.

    architecture 1
                         One entity can have many
                          different architectures.
    architecture 2


    architecture 3

                                                       40
Entity Declaration

• Entity Declaration describes the interface of the
  component, i.e. input and output ports.


                     Entity name                    Port type
                                    Port names
                                                                Semicolon

             ENTITY nand_gate IS
                 PORT(
                      a   : IN STD_LOGIC;
                      b   : IN STD_LOGIC;
                                                                   No Semicolon
                      z   : OUT STD_LOGIC                          after last port
                    );
             END nand_gate;

    Reserved words      Port modes (data flow directions)


                                                                                     41
Entity Declaration – Simplified Syntax



      ENTITY entity_name IS
        PORT (
          port_name : port_mode signal_type;
          port_name : port_mode signal_type;
          ………….
          port_name : port_mode signal_type);
      END entity_name;



                                                42
Port Mode IN


                     Port signal       Entity


                                   a




     Driver resides
     outside the entity




                                                43
Port Mode OUT

        Entity

                                   Port signal




                               z

                                        Output cannot be read within
                           c            the entity


       Driver resides
       inside the entity                   c <= z



                                                                       44
Port Mode OUT (with extra signal)

         Entity

                                    Port signal



                                x    z


                            c               Signal x can be
                                            read inside the entity


        Driver resides                       z <= x
        inside the entity
                                             c <= x


                                                                     45
Port Mode BUFFER

       Entity

                                  Port signal




                                z


                           c
                               Port signal Z can be
                               read inside the entity

       Driver resides
                                         c <= z
       inside the entity




                                                        46
Port Mode INOUT

      Port signal       Entity




                    a



                                  Signal can be
                                  read inside the entity



        Driver may reside
        both inside and outside
        of the entity


                                                           47
Port Modes: Summary
The Port Mode of the interface describes the direction in which data travels with respect
to the component

     • In: Data comes in this port and can only be read within the entity. It can appear
       only on the right side of a signal or variable assignment.

     • Out: The value of an output port can only be updated within the entity. It cannot
       be read. It can only appear on the left side of a signal assignment.

     • Inout: The value of a bi-directional port can be read and updated within the entity
       model. It can appear on both sides of a signal assignment.
                                           INOUT AND BUFFER NOT USED IN OUR COURSE
     • Buffer: Used for a signal that is an output from an entity. The value of the signal
       can be used inside the entity, which means that in an assignment statement the
       signal can appear on the left and right sides of the <= operator

                                                                                             48
Architecture

• Entity describes the ports of the module
• Architecture describes the functionality of the
  module (i.e. what does the module do)
• Architecture example:

          ARCHITECTURE model OF nand_gate IS
          BEGIN
              z <= a NAND b;
          END model;




                                                    49
Architecture – Simplified Syntax



ARCHITECTURE architecture_name OF entity_name IS
  [ declarations ]
BEGIN
  code
END architecture_name;




                                                   50
Entity Declaration & Architecture

 nand_gate.vhd
            LIBRARY ieee;
            USE ieee.std_logic_1164.all;

            ENTITY nand_gate IS
                PORT(
                     a   : IN STD_LOGIC;
                     b   : IN STD_LOGIC;
                     z   : OUT STD_LOGIC);
            END nand_gate;

            ARCHITECTURE model OF nand_gate IS
            BEGIN
                z <= a NAND b;
            END model;




                                                 51
STD_LOGIC Demystified




                        52
STD_LOGIC


        LIBRARY ieee;
        USE ieee.std_logic_1164.all;

        ENTITY nand_gate IS
            PORT(
                 a   : IN STD_LOGIC;
                 b   : IN STD_LOGIC;
                 z   : OUT STD_LOGIC);
        END nand_gate;

        ARCHITECTURE model OF nand_gate IS
        BEGIN
            z <= a NAND b;
        END model;


                 What is STD_LOGIC you ask?

                                              53
BIT versus STD_LOGIC

• BIT type can only have a value of „0‟ or „1‟
• STD_LOGIC can have nine values
   • 'U',„0‟,‟1‟,‟X‟,‟Z‟,‟W‟,‟L‟,‟H‟,‟-‟
   • Useful mainly for simulation
   • „0‟,‟1‟, and „Z‟ are synthesizable




                                                 54
STD_LOGIC type demystified

            Value                       Meaning

             'U'    Uninitialized

             „X‟    Forcing (Strong driven) Unknown

             „0‟    Forcing (Strong driven) 0

             „1‟    Forcing (Strong driven) 1

             „Z‟    High Impedance

             „W‟    Weak (Weakly driven) Unknown

                    Weak (Weakly driven) 0.
             „L‟
                    Models a pull down.

                    Weak (Weakly driven) 1.
             „H‟
                    Models a pull up.

             „-‟    Don't Care


                                                      55
More on STD_LOGIC Meanings (1)



        ‘1’
                            ‘X’
                         Contention on the bus



         ‘0’




                                                 56
More on STD_LOGIC Meanings (2)




                          ‘0’




                                 57
More on STD_LOGIC Meanings (3)

                           VDD



           ‘H’       ‘1’




           ‘0’       ‘L’




                                 58
More on STD_LOGIC Meanings (4)

      •Do not care.
      •Can be assigned to outputs for the case of invalid inputs (may produce
‘-’   significant improvement in resource utilization after synthesis).
      •Use with caution
       „1‟ = „-‟ gives FALSE




                                                                            59
Resolving Logic Levels

        U   X   0   1    Z   W   L   H   -
    U   U   U   U   U    U   U   U   U   U
    X   U   X   X   X    X   X   X   X   X
    0   U   X   0   X    0   0   0   0   X
    1   U   X   X   1    1   1   1   1   X
    Z   U   X   0   1    Z   W   L   H   X
    W   U   X   0   1    W   W   W   W   X
    L   U   X   0   1    L   W   L   W   X
    H   U   X   0   1    H   W   W   H   X
    -   U   X   X   X    X   X   X   X   X


                                             60
Modeling Wires and Buses




                           61
Single Wire Versus Bus

SIGNAL a : STD_LOGIC;



                             a
                        1   wire

SIGNAL b : STD_LOGIC_VECTOR(7 downto 0);


                             b
                        8   bus


                                           62
Standard Logic Vectors
SIGNAL    a:   STD_LOGIC;
SIGNAL    b:   STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL    c:   STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL    d:   STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL    e:   STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL    f:   STD_LOGIC_VECTOR(8 DOWNTO 0);
                                                ……….
a   <=   '1';
b   <=   "0000";        --   Binary base   assumed by default
c   <=   B"0000";       --   Binary base   explicitly specified
d   <=   "0110_0111";   --   You can use   '_' to increase readability
e   <=   X"AF67";       --   Hexadecimal   base
f   <=   O"723";        --   Octal base




                                                                     63
Single versus Double Quote

• Use single quote to hold a single bit signal
   • a <= '0', a <='Z'
• Use double quote to hold a multi-bit signal
   • b <= "00", b <= "11"




                                                 64
Vectors and Concatenation

  SIGNAL a: STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0);
  SIGNAL c, d, e: STD_LOGIC_VECTOR(7 DOWNTO 0);

  a <= "0000";
  b <= "1111";
  c <= a & b;             -- c = "00001111"

  d <= '0' & "0001111";   -- d <= "00001111"

  e <= '0' & '0' & '0' & '0' & '1' & '1' &
       '1' & '1';         -- e <= "00001111"



                                                  65
STD_LOGIC versus STD_ULOGIC

• STD_LOGIC resolves types which conflict via the
  conflict resolution table
• STD_ULOGIC does not allow for conflicts on buses
  and will not resolve multiple sources for a signal
• We only use STD_LOGIC in this course




                                                       66
VHDL Design Styles




                     67
VHDL Design Styles (Architecture)

                  VHDL Design
                     Styles


                                           BEHAVIORAL

 DATAFLOW        STRUCTURAL                             NON-
                                 SYTHESIZABLE
                                                    SYNTHESIZABLE

“concurrent”   components and      “sequential” statements
statements     interconnects     • State machines    • Test Benches
                                 • Registers         • Text handling
                                                     •Time-based
                                                     assignments


    VHDL subset most suitable for synthesis


                                                                       68
XOR3 Example




               69
Entity XOR3 (same for all architectures)
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY xor3 IS
    PORT(
        A : IN   STD_LOGIC;
        B : IN   STD_LOGIC;
        C : IN   STD_LOGIC;
        Result   : OUT STD_LOGIC
         );
END xor3;




                                           70
Dataflow Architecture

ARCHITECTURE dataflow OF xor3 IS
SIGNAL U1_out: STD_LOGIC;
BEGIN
       Result <= U1_out XOR C;
       U1_out <= A XOR B;
END dataflow;




                 U1_out




                                   71
Dataflow Description
• Describes how data moves through the system and the various
  processing steps.
   • Dataflow uses series of concurrent statements to realize logic.
   • Dataflow is most useful style when series of Boolean equations can represent a
     logic  used to implement simple combinational logic
   • Dataflow code also called “concurrent” code
• Concurrent statements are evaluated at the same time; thus, the order
  of these statements doesn‟t matter
   • This is not true for sequential/behavioral statements
                   This order…
                              U1_out <= A XOR B;
                              Result <= U1_out XOR C;
                   Is the same as this order…
                              Result <= U1_out XOR C;
                              U1_out <= A XOR B;

                                                                                      72
Structural Architecture (XOR3 gate)
ARCHITECTURE structural OF xor3 IS
SIGNAL U1_OUT: STD_LOGIC;
                                           A
COMPONENT xor2 IS
    PORT(                                  B            XOR3              Result
         I1 : IN STD_LOGIC;                C
         I2 : IN STD_LOGIC;
         Y : OUT STD_LOGIC
        );                                     I1
                                                                          Y
END COMPONENT;                                 I2
                                                          XOR2
BEGIN
   U1: xor2 PORT MAP ( I2   => B,
                       I1   => A,
                                                                 U1_OUT
                       Y    => U1_OUT);
   U2: xor2 PORT MAP ( I1   => U1_OUT,              A
                       I2   => C,                   B                              RESULT
                       Y     => Result);                        C
END structural;
                                                               XOR3

                                                                                    73
Component and Instantiation

• Named association connectivity (recommended)


    COMPONENT xor2 IS
        PORT(
           I1 : IN STD_LOGIC;
           I2 : IN STD_LOGIC;
           Y : OUT STD_LOGIC
             );
    END COMPONENT;
    BEGIN
    U1: xor2 PORT MAP (    I1 => A,
                           I2 => B,
                           Y => U1_OUT);
    ...

         COMPONENT PORT NAME     LOCAL WIRE

                                                 74
Component and Instantiation

• Positional association connectivity
  (not recommended)

    COMPONENT xor2 IS
         PORT(
           I1 : IN STD_LOGIC;
           I2 : IN STD_LOGIC;
           Y : OUT STD_LOGIC
             );
    END COMPONENT;
    BEGIN
    U1: xor2 PORT MAP (A, B, U1_OUT);
    ...




                                        75
Structural Description
• Structural design is the simplest to understand. This style is
  the closest to schematic capture and utilizes simple building
  blocks to compose logic functions.
• Components are interconnected in a hierarchical manner.
• Structural descriptions may connect simple gates or
  complex, abstract components.
• Structural style is useful when expressing a design that is
  naturally composed of sub-blocks.
   • Structural style used for complex designs, and will be used for the
     project


                                                                           76
Behavioral Architecture (XOR3 gate)
ARCHITECTURE behavioral OF xor3 IS
BEGIN

   PROCESS (A,B,C)
   BEGIN
       IF ((A XOR B XOR C) = '1') THEN
              Result <= '1';
       ELSE
              Result <= '0';
       END IF;
   END PROCESS;
END behavioral;




                                         77
Behavioral Description
• It accurately models what happens on the inputs and outputs
  of the black box (no matter what is inside and how it works).
• This style uses PROCESS statements in VHDL.
• Statements are executed in sequence in a process
  statement  order of code matters!




                                                              78
Testbenches




              79
Testbench Block Diagram


                  Testbench


      Processes
                              Design Under
     Generating                Test (DUT)
       Stimuli



                                     Observed Outputs




                                                    80
Testbench Defined
• A testbench applies stimuli (drives the inputs) to the
  Design Under Test (DUT) and (optionally) verifies
  expected outputs.
   • Design Under Test also called Unit Under Test (UUT)
• The results can be viewed in a waveform window or
  written to a file.
• Since a testbench is written in VHDL, it is not
  restricted to a single simulation tool (portability).
• The same testbench can be easily adapted to test
  different implementations (i.e. different architectures)
  of the same design.
                                                             81
Testbench Anatomy
ENTITY tb IS
               --TB entity has no ports
END tb;

ARCHITECTURE arch_tb OF tb IS

 --Local signals and constants

  COMPONENT TestComp -- All Design Under Test component declarations
            PORT ( );
  END COMPONENT;
-----------------------------------------------------
BEGIN
   DUT:TestComp PORT MAP(      -- Instantiations of DUTs
                       );

   testSequence: PROCESS
                                -- Input stimuli
   END PROCESS;

END arch_tb;

                                                                       82
Testbench for XOR3
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all; -- For addition
ENTITY xor3_tb IS
END xor3_tb;

ARCHITECTURE xor3_tb_architecture OF xor3_tb IS
-- Component declaration of the tested unit
COMPONENT xor3
PORT(
 A : IN STD_LOGIC;
 B : IN STD_LOGIC;
 C : IN STD_LOGIC;
 Result : OUT STD_LOGIC );
END COMPONENT;

-- Stimulus signals - signals mapped to the ports of tested entity
SIGNAL test_vector: STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL test_result : STD_LOGIC;
BEGIN
DUT : xor3 PORT MAP (
    A => test_vector(0),
    B => test_vector(1),
    C => test_vector(2),
    Result => test_result);




                                                                     83
Testbench for XOR3 (2)
PROCESS
BEGIN
 test_vector <= "000";
 WAIT FOR 10 ns;
 test_vector <= "001";
 WAIT FOR 10 ns;
 test_vector <= "010";
 WAIT FOR 10 ns;
 test_vector <= "011";
 WAIT FOR 10 ns;
 test_vector <= "100";
 WAIT FOR 10 ns;
 test_vector <= "101";
 WAIT FOR 10 ns;
 test_vector <= "110";
 WAIT FOR 10 ns;
 test_vector <= "111";
 WAIT;
 END PROCESS;
END xor3_tb_architecture;




                            84
Testbench waveform




                     85
What is a PROCESS?
     • A process is a sequence of instructions referred to as sequential
       statements.                                   The keyword PROCESS

• A process can be given a unique name
                                          Testing: PROCESS
  using an optional LABEL
                                          BEGIN
• This is followed by the keyword                   test_vector<=“00”;
  PROCESS                                           WAIT FOR 10 ns;
                                                    test_vector<=“01”;
• The keyword BEGIN is used to indicate             WAIT FOR 10 ns;
  the start of the process                          test_vector<=“10”;
                                                    WAIT FOR 10 ns;
• All statements within the process are             test_vector<=“11”;
  executed SEQUENTIALLY. Hence,                     WAIT FOR 10 ns;
                                          END PROCESS;
  order of statements is important!
• A process must end with the keywords
  END PROCESS.



                                                                           86
Execution of statements in a PROCESS
                                    Testing: PROCESS
                                    BEGIN
                                            test_vector<=“00”;
• The execution of statements               WAIT FOR 10 ns;
  continues sequentially till the           test_vector<=“01”;




                                       Order of execution
  last statement in the process.            WAIT FOR 10 ns;
• After execution of the last               test_vector<=“10”;
  statement, the control is again
  passed to the beginning of the            WAIT FOR 10 ns;
  process.                                  test_vector<=“11”;
                                            WAIT FOR 10 ns;
                                    END PROCESS;
                                    Program control is passed to the
                                      first statement after BEGIN



                                                                       87
PROCESS with a WAIT Statement
•     The last statement in the PROCESS is   Testing: PROCESS
      a WAIT instead of WAIT FOR 10 ns.
•     This will cause the PROCESS to         BEGIN
      suspend indefinitely when the WAIT
      statement is executed.
                                                    test_vector<=“00”;
•     This form of WAIT can be used in a            WAIT FOR 10 ns;




                                                Order of execution
      process included in a testbench when
      all possible combinations of inputs           test_vector<=“01”;
      have been tested or a non-periodical          WAIT FOR 10 ns;
      signal has to be generated.
                                                    test_vector<=“10”;
                                                    WAIT FOR 10 ns;
                                                    test_vector<=“11”;
                                                    WAIT;
                                             END PROCESS;
    Program execution stops here
                                                                         88
WAIT FOR vs. WAIT

 WAIT FOR: waveform will keep repeating
 itself forever

   0    1    2    3    0    1    2    3   …

 WAIT : waveform will keep its state after the
 last wait instruction.
                                          …
                                                 89
Loop Statement

• Loop Statement

                    FOR i IN range LOOP
                       statements
                    END LOOP;

• Repeats a section of VHDL Code
  • Example: process every element in an array in the same
    way




                                                             90
Loop Statement – Example 1


     Testing: PROCESS
     BEGIN
           test_vector<="000";
           FOR i IN 0 TO 7 LOOP
                WAIT FOR 10 ns;
                test_vector<=test_vector+"001";
           END LOOP;
     END PROCESS;




                                                  91
Loop Statement – Example 2


       Testing: PROCESS
       BEGIN
             test_ab<=“000”;
             test_sel<=“00”;
             FOR i IN 0 TO 3 LOOP
                    FOR j IN 0 TO 7 LOOP
                          WAIT FOR 10 ns;
                          test_ab<=test_ab+"001";
                    END LOOP;
                    test_sel<=test_sel+"01";
             END LOOP;
       END PROCESS;




                                                    92

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Vhdl
VhdlVhdl
Vhdl
 
VHDL Part 4
VHDL Part 4VHDL Part 4
VHDL Part 4
 
Vhdl 1 ppg
Vhdl 1 ppgVhdl 1 ppg
Vhdl 1 ppg
 
VHDL
VHDLVHDL
VHDL
 
VHDL - Part 2
VHDL - Part 2VHDL - Part 2
VHDL - Part 2
 
Vhdl
VhdlVhdl
Vhdl
 
Vhdl basic unit-2
Vhdl basic unit-2Vhdl basic unit-2
Vhdl basic unit-2
 
How to design Programs using VHDL
How to design Programs using VHDLHow to design Programs using VHDL
How to design Programs using VHDL
 
Introduction to VHDL
Introduction to VHDLIntroduction to VHDL
Introduction to VHDL
 
Spdas2 vlsibput
Spdas2 vlsibputSpdas2 vlsibput
Spdas2 vlsibput
 
Lecture3 combinational blocks
Lecture3 combinational blocksLecture3 combinational blocks
Lecture3 combinational blocks
 
Chapter 5 introduction to VHDL
Chapter 5 introduction to VHDLChapter 5 introduction to VHDL
Chapter 5 introduction to VHDL
 
Short.course.introduction.to.vhdl for beginners
Short.course.introduction.to.vhdl for beginners Short.course.introduction.to.vhdl for beginners
Short.course.introduction.to.vhdl for beginners
 
Verilog HDL Training Course
Verilog HDL Training CourseVerilog HDL Training Course
Verilog HDL Training Course
 
VHDL - Enumerated Types (Part 3)
VHDL - Enumerated Types (Part 3)VHDL - Enumerated Types (Part 3)
VHDL - Enumerated Types (Part 3)
 
Basics of Vhdl
Basics of VhdlBasics of Vhdl
Basics of Vhdl
 
Introduction to VHDL - Part 1
Introduction to VHDL - Part 1Introduction to VHDL - Part 1
Introduction to VHDL - Part 1
 
Vhdl 1
Vhdl 1Vhdl 1
Vhdl 1
 
INTRODUCTION TO VHDL
INTRODUCTION    TO    VHDLINTRODUCTION    TO    VHDL
INTRODUCTION TO VHDL
 
Vhdl design flow
Vhdl design flowVhdl design flow
Vhdl design flow
 

Destacado

8085 microprocessor ramesh gaonkar
8085 microprocessor   ramesh gaonkar8085 microprocessor   ramesh gaonkar
8085 microprocessor ramesh gaonkarDhaval Shukla
 
Ram sourcecode&testbench
Ram sourcecode&testbenchRam sourcecode&testbench
Ram sourcecode&testbenchRaj Mohan
 
VHDL Subprograms and Packages
VHDL Subprograms and PackagesVHDL Subprograms and Packages
VHDL Subprograms and PackagesRamasubbu .P
 
RAM Source code and Test Bench
RAM Source code and Test BenchRAM Source code and Test Bench
RAM Source code and Test BenchRaj Mohan
 
VHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x Additions
VHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x AdditionsVHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x Additions
VHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x AdditionsAmal Khailtash
 
Introduction to COMS VLSI Design
Introduction to COMS VLSI DesignIntroduction to COMS VLSI Design
Introduction to COMS VLSI DesignEutectics
 
Basic structures in vhdl
Basic structures in vhdlBasic structures in vhdl
Basic structures in vhdlRaj Mohan
 
Introduction to FPGA, VHDL
Introduction to FPGA, VHDL  Introduction to FPGA, VHDL
Introduction to FPGA, VHDL Amr Rashed
 

Destacado (11)

Chuong 1 he thong mang pstn
Chuong 1 he thong mang pstnChuong 1 he thong mang pstn
Chuong 1 he thong mang pstn
 
8085 microprocessor ramesh gaonkar
8085 microprocessor   ramesh gaonkar8085 microprocessor   ramesh gaonkar
8085 microprocessor ramesh gaonkar
 
Ram sourcecode&testbench
Ram sourcecode&testbenchRam sourcecode&testbench
Ram sourcecode&testbench
 
VHDL Subprograms and Packages
VHDL Subprograms and PackagesVHDL Subprograms and Packages
VHDL Subprograms and Packages
 
RAM Source code and Test Bench
RAM Source code and Test BenchRAM Source code and Test Bench
RAM Source code and Test Bench
 
VHDL Reference
VHDL ReferenceVHDL Reference
VHDL Reference
 
Vhdl
VhdlVhdl
Vhdl
 
VHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x Additions
VHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x AdditionsVHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x Additions
VHDL Packages, Coding Styles for Arithmetic Operations and VHDL-200x Additions
 
Introduction to COMS VLSI Design
Introduction to COMS VLSI DesignIntroduction to COMS VLSI Design
Introduction to COMS VLSI Design
 
Basic structures in vhdl
Basic structures in vhdlBasic structures in vhdl
Basic structures in vhdl
 
Introduction to FPGA, VHDL
Introduction to FPGA, VHDL  Introduction to FPGA, VHDL
Introduction to FPGA, VHDL
 

Similar a Lecture1

Điện tử số thầy Phạm Ngọc Nam.
Điện tử số thầy Phạm Ngọc Nam.Điện tử số thầy Phạm Ngọc Nam.
Điện tử số thầy Phạm Ngọc Nam.chessgenius
 
6 months/weeks training in Vlsi,jalandhar
6 months/weeks training in Vlsi,jalandhar6 months/weeks training in Vlsi,jalandhar
6 months/weeks training in Vlsi,jalandhardeepikakaler1
 
6 weeks/months summer training in vlsi,ludhiana
6 weeks/months summer training in vlsi,ludhiana6 weeks/months summer training in vlsi,ludhiana
6 weeks/months summer training in vlsi,ludhianadeepikakaler1
 
hardware description language power point presentation
hardware description language power point presentationhardware description language power point presentation
hardware description language power point presentationdhananjeyanrece
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdlArshit Rai
 
vlsi design summer training ppt
vlsi design summer training pptvlsi design summer training ppt
vlsi design summer training pptBhagwan Lal Teli
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdlArshit Rai
 
VLSI Systems & Design
VLSI Systems & DesignVLSI Systems & Design
VLSI Systems & DesignAakash Mishra
 
VHDL-PRESENTATION.ppt
VHDL-PRESENTATION.pptVHDL-PRESENTATION.ppt
VHDL-PRESENTATION.pptDr.YNM
 
Fel Flyer F10
Fel Flyer F10Fel Flyer F10
Fel Flyer F10chitlesh
 
Verilog Lecture1
Verilog Lecture1Verilog Lecture1
Verilog Lecture1Béo Tú
 

Similar a Lecture1 (20)

Điện tử số thầy Phạm Ngọc Nam.
Điện tử số thầy Phạm Ngọc Nam.Điện tử số thầy Phạm Ngọc Nam.
Điện tử số thầy Phạm Ngọc Nam.
 
6 months/weeks training in Vlsi,jalandhar
6 months/weeks training in Vlsi,jalandhar6 months/weeks training in Vlsi,jalandhar
6 months/weeks training in Vlsi,jalandhar
 
6 weeks/months summer training in vlsi,ludhiana
6 weeks/months summer training in vlsi,ludhiana6 weeks/months summer training in vlsi,ludhiana
6 weeks/months summer training in vlsi,ludhiana
 
hardware description language power point presentation
hardware description language power point presentationhardware description language power point presentation
hardware description language power point presentation
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdl
 
vlsi design summer training ppt
vlsi design summer training pptvlsi design summer training ppt
vlsi design summer training ppt
 
Summer training vhdl
Summer training vhdlSummer training vhdl
Summer training vhdl
 
VLSI Systems & Design
VLSI Systems & DesignVLSI Systems & Design
VLSI Systems & Design
 
FPGA.ppt
FPGA.pptFPGA.ppt
FPGA.ppt
 
SoC FPGA Technology
SoC FPGA TechnologySoC FPGA Technology
SoC FPGA Technology
 
VHDL-PRESENTATION.ppt
VHDL-PRESENTATION.pptVHDL-PRESENTATION.ppt
VHDL-PRESENTATION.ppt
 
FPGA @ UPB-BGA
FPGA @ UPB-BGAFPGA @ UPB-BGA
FPGA @ UPB-BGA
 
VHDL_VIKAS.pptx
VHDL_VIKAS.pptxVHDL_VIKAS.pptx
VHDL_VIKAS.pptx
 
Fel Flyer F10
Fel Flyer F10Fel Flyer F10
Fel Flyer F10
 
Lecture syn 024.cpld-fpga
Lecture syn 024.cpld-fpgaLecture syn 024.cpld-fpga
Lecture syn 024.cpld-fpga
 
Introduction to EDA Tools
Introduction to EDA ToolsIntroduction to EDA Tools
Introduction to EDA Tools
 
Himanshu Shivhar (1)
Himanshu Shivhar (1)Himanshu Shivhar (1)
Himanshu Shivhar (1)
 
Verilog Lecture1
Verilog Lecture1Verilog Lecture1
Verilog Lecture1
 
Embedded system
Embedded systemEmbedded system
Embedded system
 
ASIC VS FPGA.ppt
ASIC VS FPGA.pptASIC VS FPGA.ppt
ASIC VS FPGA.ppt
 

Último

microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
fourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingfourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingTeacherCyreneCayanan
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024Janet Corral
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 

Último (20)

microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
fourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingfourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writing
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 

Lecture1

  • 1. Digital System Design with VHDL Great thanks for Mentor Graphics Egypt some slides modified from: S. Dandamudi, “Fundamentals of Computer Organization and Design” 1
  • 2. Course Roadmap Lecture number /Day Lecture title Lecture#1/Tuesday Introduction to VHDL Lecture#2/Wednesday Combinational Logic Review/Dataflow VHDL Coding Lecture #3/Thursday Behavioral VHDL Coding (for Synthesis), Structural VHDL Coding LAB#1…/Saturday How to use QuartzII.. and test Ur VHDL code Lecture #4/Sunday Behavioral VHDL Coding (for Synthesis): Finite State Machines and ASMs LAB#2/Monday Build lot of blocks and test them using QuartzII Lecture #5/Tuesday FPGA components and types Lecture#6/Wednesday Dynamic timing analysis Vs Static timing analysis Lecture #7/Thursday Design Optimization 2
  • 3. Digital System Design with VHDL Lecture 1 Introduction to VHDL some slides modified from: S. Dandamudi, “Fundamentals of Computer Organization and Design” 3
  • 4. Lecture Roadmap • History of VHDL • VHDL Design Flows • Introduction to VHDL for synthesis 4
  • 5. Example Design: Cryptographic Coprocessor Resistant to Side-Channel Attacks 5
  • 6. From VHDL to Fabrication 6
  • 9. VHDL • VHDL is a language for describing digital hardware used by industry worldwide • VHDL is an acronym for VHSIC (Very High Speed Integrated Circuit) Hardware Description Language 9
  • 10. Genesis of VHDL • State of the art circa 1980 • Multiple design entry methods and hardware description languages in use • No or limited portability of designs between CAD tools from different vendors • Objective: shortening the time from a design concept to implementation from 18 months to 6 months 10
  • 11. A Brief History of VHDL • June 1981: Woods Hole Workshop • July 1983: contract awarded to develop VHDL • Intermetrics • IBM • Texas Instruments • August 1985: VHDL Version 7.2 released • December 1987: VHDL became IEEE Standard 1076-1987 and in 1988 an ANSI standard • Four versions of VHDL: • IEEE-1076 1987 • IEEE-1076 1993  most commonly supported by CAD tools • IEEE-1076 2000 (minor changes) • IEEE-1076 2002 (minor changes) 11
  • 12. Verilog • Essentially identical in function to VHDL • No generate statement • Simpler and syntactically different • C-like • Gateway Design Automation Co., 1983 • Early de facto standard for ASIC programming • Open Verilog International Standard 12
  • 13. VHDL vs. Verilog Government Developed Commercially Developed Ada based C based Strongly Type Cast Mildly Type Cast Difficult to learn Easier to Learn More Powerful Less Powerful 13
  • 14. Examples • VHDL Example: process (clk, rstn) begin if (rstn = '0') then q <= '0'; elseif (clk'event and clk = '1') then q <= a + b; end if; end process; • Verilog Example: always@(posedge clk or negedge rstn) begin if (! rstn) q <= 1'b0; else q <= a + b; end 14
  • 15. Features of VHDL and Verilog • Technology/vendor independent • Portable • Reusable 15
  • 17. World of Integrated Circuits Integrated Circuits Full-Custom Semi-Custom User ASICs ASICs Programmable (std cell) PLD FPGA PAL PLA PML LUT MUX Gates (Look-Up Table) 17
  • 18. ASIC versus FPGA ASIC FPGA Application Specific Field Programmable Integrated Circuit Gate Array • Designs must be sent • Bought off the shelf for expensive and time and reconfigured by consuming fabrication designers themselves in semiconductor foundry • Designed all the way • No physical layout design; from behavioral description design ends with a bitstream to physical layout used to configure a device 18
  • 19. Which Way to Go? ASICs FPGAs Off-the-shelf High performance Low development cost Low power Short time to market Low cost in high volumes Reconfigurability 19
  • 20. What is an FPGA Chip ? • Field Programmable I/O Block Gate Array • A chip that can be configured by user to implement different digital hardware I/O Block I/O Block • Configurable Logic Blocks (CLB) and Programmable Switch Matrices • Bitstream to configure: I/O Block function of each block & the interconnection Source: [Brown99] between logic blocks 20
  • 22. Levels of VHDL Design VHDL for Specification VHDL for Simulation VHDL for Synthesis 22
  • 23. Levels of Design Description Algorithmic level Level of description Register Transfer Level most suitable for synthesis Logic (gate) level Circuit (transistor) level Physical (layout) level 23
  • 24. Register Transfer Logic (RTL) Design Description Combinational Logic Combinational Logic … Registers 24
  • 26. Case Sensitivity • VHDL is not case sensitive Example: Names or labels databus Databus DataBus DATABUS are all equivalent 26
  • 27. Naming and Labeling General rules of thumb (according to VHDL-87) 1. All names should start with an alphabet character (a-z or A-Z) 2. Use only alphabet characters (a-z or A-Z) digits (0-9) and underscore (_) 3. Do not use any punctuation or reserved characters within a name (!, ?, ., &, +, -, etc.) 4. Do not use two or more consecutive underscore characters (__) within a name (e.g., Sel__A is invalid) 5. All names and labels in a given entity and architecture must be unique 6. All names should not be from the reserved words list 27
  • 28. Free Format • VHDL is a “free format” language No formatting conventions, such as spacing or indentation imposed by VHDL compilers. Space and carriage return treated the same way. Example: if (a=b) then or if (a=b) then or if (a = b) then are all equivalent 28
  • 29. Readability Standards ESA VHDL Modelling Guidelines published by European Space Research and Technology Center in September 1994 29
  • 30. Readability Standards Selected issues covered by ESA Guidelines: • Consistent writing style • Consistent naming conventions • Consistent indentation • Consistent commenting style • Recommended file headers • File naming and contents • Number of statements/declarations per line • Ordering of port and signal declarations • Constructs to avoid 30
  • 31. Comments • Comments in VHDL are indicated with a “double dash”, i.e., “--”  Comment indicator can be placed anywhere in the line  Any text that follows in the same line is treated as a comment  Carriage return terminates a comment  No method for commenting a block extending over a couple of lines Examples: -- main subcircuit Data_in <= Data_bus; -- reading data from the input FIFO 31
  • 32. Comments • Explain function of module to other designers • Explanatory, not just restatement of code • Locate close to code described • Put near executable code, not just in a header 32
  • 34. Example: NAND Gate a b z a 0 0 1 z b 0 1 1 1 0 1 1 1 0 34
  • 35. Example VHDL Code • 3 sections to a piece of VHDL code • File extension for a VHDL file is .vhd • Name of the file is usually the entity name (nand_gate.vhd) LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY DECLARATION ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; ENTITY z : OUT STD_LOGIC); END nand_gate; ARCHITECTURE model OF nand_gate IS BEGIN ARCHITECTURE z <= a NAND b; END model; 35
  • 36. Fundamental Parts Of A Library • Library is a collection of commonly used pieces of code, grouped for reuse. LIBRARY PACKAGE 1 PACKAGE 2 TYPES TYPES CONSTANTS CONSTANTS FUNCTIONS FUNCTIONS PROCEDURES PROCEDURES COMPONENTS COMPONENTS 36
  • 37. Library Declarations LIBRARY ieee; USE ieee.std_logic_1164.all; Library declaration ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC); Use all definitions from the package END nand_gate; std_logic_1164 ARCHITECTURE model OF nand_gate IS BEGIN z <= a NAND b; END model; 37
  • 38. Library Declarations - Syntax LIBRARY library_name; USE library_name.package_name.package_parts; 38
  • 39. Commonly Used Libraries • ieee • Specifies multi-level logic system Needs to be including STD_LOGIC, and explicitly declared STD_LOGIC_VECTOR data types • std • Specifies pre-defined data types (BIT, BOOLEAN, INTEGER, REAL, SIGNED, UNSIGNED, etc.), arithmetic operations, basic type conversion Visible by default functions, basic text i/o functions, etc. • work • User-created designs after compilation 39
  • 40. Design Entity design entity entity declaration Design Entity - most basic building block of a design. architecture 1 One entity can have many different architectures. architecture 2 architecture 3 40
  • 41. Entity Declaration • Entity Declaration describes the interface of the component, i.e. input and output ports. Entity name Port type Port names Semicolon ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; No Semicolon z : OUT STD_LOGIC after last port ); END nand_gate; Reserved words Port modes (data flow directions) 41
  • 42. Entity Declaration – Simplified Syntax ENTITY entity_name IS PORT ( port_name : port_mode signal_type; port_name : port_mode signal_type; …………. port_name : port_mode signal_type); END entity_name; 42
  • 43. Port Mode IN Port signal Entity a Driver resides outside the entity 43
  • 44. Port Mode OUT Entity Port signal z Output cannot be read within c the entity Driver resides inside the entity c <= z 44
  • 45. Port Mode OUT (with extra signal) Entity Port signal x z c Signal x can be read inside the entity Driver resides z <= x inside the entity c <= x 45
  • 46. Port Mode BUFFER Entity Port signal z c Port signal Z can be read inside the entity Driver resides c <= z inside the entity 46
  • 47. Port Mode INOUT Port signal Entity a Signal can be read inside the entity Driver may reside both inside and outside of the entity 47
  • 48. Port Modes: Summary The Port Mode of the interface describes the direction in which data travels with respect to the component • In: Data comes in this port and can only be read within the entity. It can appear only on the right side of a signal or variable assignment. • Out: The value of an output port can only be updated within the entity. It cannot be read. It can only appear on the left side of a signal assignment. • Inout: The value of a bi-directional port can be read and updated within the entity model. It can appear on both sides of a signal assignment. INOUT AND BUFFER NOT USED IN OUR COURSE • Buffer: Used for a signal that is an output from an entity. The value of the signal can be used inside the entity, which means that in an assignment statement the signal can appear on the left and right sides of the <= operator 48
  • 49. Architecture • Entity describes the ports of the module • Architecture describes the functionality of the module (i.e. what does the module do) • Architecture example: ARCHITECTURE model OF nand_gate IS BEGIN z <= a NAND b; END model; 49
  • 50. Architecture – Simplified Syntax ARCHITECTURE architecture_name OF entity_name IS [ declarations ] BEGIN code END architecture_name; 50
  • 51. Entity Declaration & Architecture nand_gate.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC); END nand_gate; ARCHITECTURE model OF nand_gate IS BEGIN z <= a NAND b; END model; 51
  • 53. STD_LOGIC LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY nand_gate IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; z : OUT STD_LOGIC); END nand_gate; ARCHITECTURE model OF nand_gate IS BEGIN z <= a NAND b; END model; What is STD_LOGIC you ask? 53
  • 54. BIT versus STD_LOGIC • BIT type can only have a value of „0‟ or „1‟ • STD_LOGIC can have nine values • 'U',„0‟,‟1‟,‟X‟,‟Z‟,‟W‟,‟L‟,‟H‟,‟-‟ • Useful mainly for simulation • „0‟,‟1‟, and „Z‟ are synthesizable 54
  • 55. STD_LOGIC type demystified Value Meaning 'U' Uninitialized „X‟ Forcing (Strong driven) Unknown „0‟ Forcing (Strong driven) 0 „1‟ Forcing (Strong driven) 1 „Z‟ High Impedance „W‟ Weak (Weakly driven) Unknown Weak (Weakly driven) 0. „L‟ Models a pull down. Weak (Weakly driven) 1. „H‟ Models a pull up. „-‟ Don't Care 55
  • 56. More on STD_LOGIC Meanings (1) ‘1’ ‘X’ Contention on the bus ‘0’ 56
  • 57. More on STD_LOGIC Meanings (2) ‘0’ 57
  • 58. More on STD_LOGIC Meanings (3) VDD ‘H’ ‘1’ ‘0’ ‘L’ 58
  • 59. More on STD_LOGIC Meanings (4) •Do not care. •Can be assigned to outputs for the case of invalid inputs (may produce ‘-’ significant improvement in resource utilization after synthesis). •Use with caution „1‟ = „-‟ gives FALSE 59
  • 60. Resolving Logic Levels U X 0 1 Z W L H - U U U U U U U U U U X U X X X X X X X X 0 U X 0 X 0 0 0 0 X 1 U X X 1 1 1 1 1 X Z U X 0 1 Z W L H X W U X 0 1 W W W W X L U X 0 1 L W L W X H U X 0 1 H W W H X - U X X X X X X X X 60
  • 61. Modeling Wires and Buses 61
  • 62. Single Wire Versus Bus SIGNAL a : STD_LOGIC; a 1 wire SIGNAL b : STD_LOGIC_VECTOR(7 downto 0); b 8 bus 62
  • 63. Standard Logic Vectors SIGNAL a: STD_LOGIC; SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL c: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL e: STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL f: STD_LOGIC_VECTOR(8 DOWNTO 0); ………. a <= '1'; b <= "0000"; -- Binary base assumed by default c <= B"0000"; -- Binary base explicitly specified d <= "0110_0111"; -- You can use '_' to increase readability e <= X"AF67"; -- Hexadecimal base f <= O"723"; -- Octal base 63
  • 64. Single versus Double Quote • Use single quote to hold a single bit signal • a <= '0', a <='Z' • Use double quote to hold a multi-bit signal • b <= "00", b <= "11" 64
  • 65. Vectors and Concatenation SIGNAL a: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL c, d, e: STD_LOGIC_VECTOR(7 DOWNTO 0); a <= "0000"; b <= "1111"; c <= a & b; -- c = "00001111" d <= '0' & "0001111"; -- d <= "00001111" e <= '0' & '0' & '0' & '0' & '1' & '1' & '1' & '1'; -- e <= "00001111" 65
  • 66. STD_LOGIC versus STD_ULOGIC • STD_LOGIC resolves types which conflict via the conflict resolution table • STD_ULOGIC does not allow for conflicts on buses and will not resolve multiple sources for a signal • We only use STD_LOGIC in this course 66
  • 68. VHDL Design Styles (Architecture) VHDL Design Styles BEHAVIORAL DATAFLOW STRUCTURAL NON- SYTHESIZABLE SYNTHESIZABLE “concurrent” components and “sequential” statements statements interconnects • State machines • Test Benches • Registers • Text handling •Time-based assignments VHDL subset most suitable for synthesis 68
  • 70. Entity XOR3 (same for all architectures) LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY xor3 IS PORT( A : IN STD_LOGIC; B : IN STD_LOGIC; C : IN STD_LOGIC; Result : OUT STD_LOGIC ); END xor3; 70
  • 71. Dataflow Architecture ARCHITECTURE dataflow OF xor3 IS SIGNAL U1_out: STD_LOGIC; BEGIN Result <= U1_out XOR C; U1_out <= A XOR B; END dataflow; U1_out 71
  • 72. Dataflow Description • Describes how data moves through the system and the various processing steps. • Dataflow uses series of concurrent statements to realize logic. • Dataflow is most useful style when series of Boolean equations can represent a logic  used to implement simple combinational logic • Dataflow code also called “concurrent” code • Concurrent statements are evaluated at the same time; thus, the order of these statements doesn‟t matter • This is not true for sequential/behavioral statements This order… U1_out <= A XOR B; Result <= U1_out XOR C; Is the same as this order… Result <= U1_out XOR C; U1_out <= A XOR B; 72
  • 73. Structural Architecture (XOR3 gate) ARCHITECTURE structural OF xor3 IS SIGNAL U1_OUT: STD_LOGIC; A COMPONENT xor2 IS PORT( B XOR3 Result I1 : IN STD_LOGIC; C I2 : IN STD_LOGIC; Y : OUT STD_LOGIC ); I1 Y END COMPONENT; I2 XOR2 BEGIN U1: xor2 PORT MAP ( I2 => B, I1 => A, U1_OUT Y => U1_OUT); U2: xor2 PORT MAP ( I1 => U1_OUT, A I2 => C, B RESULT Y => Result); C END structural; XOR3 73
  • 74. Component and Instantiation • Named association connectivity (recommended) COMPONENT xor2 IS PORT( I1 : IN STD_LOGIC; I2 : IN STD_LOGIC; Y : OUT STD_LOGIC ); END COMPONENT; BEGIN U1: xor2 PORT MAP ( I1 => A, I2 => B, Y => U1_OUT); ... COMPONENT PORT NAME LOCAL WIRE 74
  • 75. Component and Instantiation • Positional association connectivity (not recommended) COMPONENT xor2 IS PORT( I1 : IN STD_LOGIC; I2 : IN STD_LOGIC; Y : OUT STD_LOGIC ); END COMPONENT; BEGIN U1: xor2 PORT MAP (A, B, U1_OUT); ... 75
  • 76. Structural Description • Structural design is the simplest to understand. This style is the closest to schematic capture and utilizes simple building blocks to compose logic functions. • Components are interconnected in a hierarchical manner. • Structural descriptions may connect simple gates or complex, abstract components. • Structural style is useful when expressing a design that is naturally composed of sub-blocks. • Structural style used for complex designs, and will be used for the project 76
  • 77. Behavioral Architecture (XOR3 gate) ARCHITECTURE behavioral OF xor3 IS BEGIN PROCESS (A,B,C) BEGIN IF ((A XOR B XOR C) = '1') THEN Result <= '1'; ELSE Result <= '0'; END IF; END PROCESS; END behavioral; 77
  • 78. Behavioral Description • It accurately models what happens on the inputs and outputs of the black box (no matter what is inside and how it works). • This style uses PROCESS statements in VHDL. • Statements are executed in sequence in a process statement  order of code matters! 78
  • 80. Testbench Block Diagram Testbench Processes Design Under Generating Test (DUT) Stimuli Observed Outputs 80
  • 81. Testbench Defined • A testbench applies stimuli (drives the inputs) to the Design Under Test (DUT) and (optionally) verifies expected outputs. • Design Under Test also called Unit Under Test (UUT) • The results can be viewed in a waveform window or written to a file. • Since a testbench is written in VHDL, it is not restricted to a single simulation tool (portability). • The same testbench can be easily adapted to test different implementations (i.e. different architectures) of the same design. 81
  • 82. Testbench Anatomy ENTITY tb IS --TB entity has no ports END tb; ARCHITECTURE arch_tb OF tb IS --Local signals and constants COMPONENT TestComp -- All Design Under Test component declarations PORT ( ); END COMPONENT; ----------------------------------------------------- BEGIN DUT:TestComp PORT MAP( -- Instantiations of DUTs ); testSequence: PROCESS -- Input stimuli END PROCESS; END arch_tb; 82
  • 83. Testbench for XOR3 LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; -- For addition ENTITY xor3_tb IS END xor3_tb; ARCHITECTURE xor3_tb_architecture OF xor3_tb IS -- Component declaration of the tested unit COMPONENT xor3 PORT( A : IN STD_LOGIC; B : IN STD_LOGIC; C : IN STD_LOGIC; Result : OUT STD_LOGIC ); END COMPONENT; -- Stimulus signals - signals mapped to the ports of tested entity SIGNAL test_vector: STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL test_result : STD_LOGIC; BEGIN DUT : xor3 PORT MAP ( A => test_vector(0), B => test_vector(1), C => test_vector(2), Result => test_result); 83
  • 84. Testbench for XOR3 (2) PROCESS BEGIN test_vector <= "000"; WAIT FOR 10 ns; test_vector <= "001"; WAIT FOR 10 ns; test_vector <= "010"; WAIT FOR 10 ns; test_vector <= "011"; WAIT FOR 10 ns; test_vector <= "100"; WAIT FOR 10 ns; test_vector <= "101"; WAIT FOR 10 ns; test_vector <= "110"; WAIT FOR 10 ns; test_vector <= "111"; WAIT; END PROCESS; END xor3_tb_architecture; 84
  • 86. What is a PROCESS? • A process is a sequence of instructions referred to as sequential statements. The keyword PROCESS • A process can be given a unique name Testing: PROCESS using an optional LABEL BEGIN • This is followed by the keyword test_vector<=“00”; PROCESS WAIT FOR 10 ns; test_vector<=“01”; • The keyword BEGIN is used to indicate WAIT FOR 10 ns; the start of the process test_vector<=“10”; WAIT FOR 10 ns; • All statements within the process are test_vector<=“11”; executed SEQUENTIALLY. Hence, WAIT FOR 10 ns; END PROCESS; order of statements is important! • A process must end with the keywords END PROCESS. 86
  • 87. Execution of statements in a PROCESS Testing: PROCESS BEGIN test_vector<=“00”; • The execution of statements WAIT FOR 10 ns; continues sequentially till the test_vector<=“01”; Order of execution last statement in the process. WAIT FOR 10 ns; • After execution of the last test_vector<=“10”; statement, the control is again passed to the beginning of the WAIT FOR 10 ns; process. test_vector<=“11”; WAIT FOR 10 ns; END PROCESS; Program control is passed to the first statement after BEGIN 87
  • 88. PROCESS with a WAIT Statement • The last statement in the PROCESS is Testing: PROCESS a WAIT instead of WAIT FOR 10 ns. • This will cause the PROCESS to BEGIN suspend indefinitely when the WAIT statement is executed. test_vector<=“00”; • This form of WAIT can be used in a WAIT FOR 10 ns; Order of execution process included in a testbench when all possible combinations of inputs test_vector<=“01”; have been tested or a non-periodical WAIT FOR 10 ns; signal has to be generated. test_vector<=“10”; WAIT FOR 10 ns; test_vector<=“11”; WAIT; END PROCESS; Program execution stops here 88
  • 89. WAIT FOR vs. WAIT WAIT FOR: waveform will keep repeating itself forever 0 1 2 3 0 1 2 3 … WAIT : waveform will keep its state after the last wait instruction. … 89
  • 90. Loop Statement • Loop Statement FOR i IN range LOOP statements END LOOP; • Repeats a section of VHDL Code • Example: process every element in an array in the same way 90
  • 91. Loop Statement – Example 1 Testing: PROCESS BEGIN test_vector<="000"; FOR i IN 0 TO 7 LOOP WAIT FOR 10 ns; test_vector<=test_vector+"001"; END LOOP; END PROCESS; 91
  • 92. Loop Statement – Example 2 Testing: PROCESS BEGIN test_ab<=“000”; test_sel<=“00”; FOR i IN 0 TO 3 LOOP FOR j IN 0 TO 7 LOOP WAIT FOR 10 ns; test_ab<=test_ab+"001"; END LOOP; test_sel<=test_sel+"01"; END LOOP; END PROCESS; 92