SlideShare ist ein Scribd-Unternehmen logo
1 von 18
VHDL 360©

by: Mohamed Samy
  Samer El-Saadany
Copyrights
Copyright © 2010 to authors. All rights reserved
• All content in this presentation, including charts, data, artwork and
  logos (from here on, "the Content"), is the property of Mohamed
  Samy and Samer El-Saadany or the corresponding owners,
  depending on the circumstances of publication, and is protected by
  national and international copyright laws.
• Authors are not personally liable for your usage of the Content that
  entailed casual or indirect destruction of anything or actions entailed
  to information profit loss or other losses.
• Users are granted to access, display, download and print portions of
  this presentation, solely for their own personal non-commercial use,
  provided that all proprietary notices are kept intact.
• Product names and trademarks mentioned in this presentation
  belong to their respective owners.


                                 VHDL 360 ©                    2
Module 3

Data Types and Operators
Objective
• Introducing Data Types & Operators
• Skills gained:
  – Familiarity with data types
  – Modeling Memories
  – More on Expressions & Operators




                    VHDL 360 ©         4
Outline
• Data Types
    – Scalar types
    – Composite types
•   Modeling Memories
•   Expressions & Operators
•   Aggregate
•   Attributes
•   Lab

                        VHDL 360 ©   5
Data Types
• A type is characterized by a set of values and operations
• Type declaration is made inside architecture
  declaration, package, entity
  declaration, subprogram, process declaration
• Types
   – Scalar types
       •   integer types
       •   floating point types
       •   enumerated types
       •   physical types
   – Composite types
       • array types: Multiple elements of the same type
       • record types: Multiple elements of different types


• VHDL offers other types like File types, Access types & Protected
  types, that will be discussed later


                                             VHDL 360 ©        6
Data Types
• VHDL also offers “Subtype” definitions
• Subtypes
     – Type together with a constraint
     – Can use operations defined to its base type
     – Can specify its own set of operations


Golden rules of thumb
VHDL is strongly typed language
i.e. The LHS & RHS of the assignment must match in:
     –   Base type
     –   Size




                                              VHDL 360 ©   7
Scalar Types
• Integer types
    –   <Range> can be one of the following
         <integer> to <integer>
                                                              Syntax:
         <integer> downto <integer>                              type <type_name> is range <range>;
• Predefined integer types:
    – integer type            -2147483648 to 2147483648       Syntax:
    – natural subtype         0 to 2147483648                   subtype <subtype_name> is
                                                                        <basetype_name> range <range>;
    – positive subtype        1 to 2147483648

 Example 1:
PROCESS (X)
  variable a: integer;                                 -- -2147483648 to 2147483648;
  variable b: integer range 0 to 15;                   -- constraints possible values
  type int is range -10 to 10;                         -- defining new integer type
  variable d: int;
  subtype sint is integer range 50 to 127;             -- defining new integer subtype
  variable c: sint;
BEGIN
  a := -1;    c := 100;          -- OK
  b := -1;   d := -12;           -- illegal
  a := 1.0;                      -- illegal
  a := 57;   b := 10; c := a;    -- OK
  c := b;                        -- illegal (current value of b is outside c range)
  d := a;                        -- illegal (two different types)
END PROCESS;
                                                VHDL 360 ©                            8
Scalar Types
• Floating point types
   –   <Range> can be one of the following                    Syntax:
        <floating point> to < floating point >                 type <type_name> is range <range>;
        < floating point > downto < floating point >
• Predefined Floating Point types:                            Syntax:
   – real type             -1.0E308 to 1.0E308                 subtype <subtype_name> is
                                                                       <basetype_name> range <range>;


Example 2:
 PROCESS (X)
   variable a: real;
   type posreal is range 0.0 to 1.0E308;
   variable b: posreal;
 BEGIN
   a := 1.3;    a := -7.5; -- OK
   b := -4.5;   a := 1;     -- illegal
   a := 1.7E13; b := 11.4; -- OK
 END PROCESS;




                                                 VHDL 360 ©                         9
• Enumerated types
                                     Scalar Types
    – specifies list of possible values
                                                                     Syntax:
    – value1, … : identifiers or characters
                                                                      Type <type_name> is (value1, value2, …)
• Predefined Enumerated types:
    – character type                  „a‟, „b‟, …etc*
    – bit type                       „0‟ or „1‟
    – boolean type                   TRUE or FALSE

Example 3:
 ARCHITECTURE test_enum OF test IS
   Type states is (idle, fetch, decode, execute);
   Signal B: states;
 BEGIN
   PROCESS (X)
     TYPE binary IS ( ONN, OFF );
     variable a: binary;
   BEGIN
     a := ONN;       -- ok
     B <= decode;    -- ok
     a := OFF;       -- ok
     B <= halt;      -- illegal
     states <= idle; -- illegal
 END PROCESS;
 END ARCHITECTURE;

   * The 256 characters of the ISO 8859-1: 1987 [B4] character set


                                                        VHDL 360 ©                        10
Reference page

                               Scalar Types
• Physical types represent measurements of                        Syntax:
  some quantity                                                    type <type_name> is range <range>
   –   <primary_unit> an identifier for the primary unit of           units
       measurement for that type                                        <primary_unit>;
   –   <secondary_unit> an integer multiple of the primary unit         <secondary_unit> =
                                                                               <integer> <primary_unit>;
                                                                         …
• Predefined physical types:                                       end units;
   – time type
   – delay_length subtype

Example 4:
 TYPE resistance IS RANGE 0 TO 10000000
 UNITS
   ohm;                   Primary unit
   Kohm = 1000 ohm;
   Mohm = 1000 kohm;     Secondary units
 END UNITS;




                                               VHDL 360 ©                               11
Composite Types
• Array types group elements of the same type
• Arrays can be defined as                   Syntax:
     – Constrained                      <range is specified>
           •   <Range> :   <integer> to <integer>                    Type <type_name> is array <range>
                           <integer> downto <integer>                  of <data_type>;
     – Unconstrained                    <No range is specified>
           •   <Range> : (indexType range <>)

• Multidimensional arrays are created by specifying multiple ranges
Example 5:
                                                                        0                     31
-- constrained array types
type word is array (0 to 31) of bit;                                    7            0
type byte is array (7 downto 0) of bit;
-- constrained multidimensional array type definition
type miniram is array (0 to 15) of std_logic_vector(7 downto 0);
Type matrix is array (0 to 15, 3 downto 0) of std_logic_vector(7 downto 0);
                                                                                 7                 2 1 0
                                                                                                           0
-- unconstrained multidimensional array type definition
type memory is array (INTEGER range <>) of word;                                                           1
                                                                                         .
signal D_bus : word; signal mem1 : miniram;
                                                                                         .
variable x : byte; variable y : bit;
variable my_mem : memory (0 to 1023) ;                                                                     15
my_mem (63) := X"0F58E230";
mem1 (5) <= "10010110" ;
mem1 (15)(4) <= '1' ;
y := x(5);                  -- y gets value of element at index 5
                                                        VHDL 360 ©                       12
Reference page

                     Composite Types
• Record types:                                   Syntax:
   – group elements of possibly different types   type <type_name> is record
                                                     identifier: type;
   – elements are indexed via field names            …
                                                  end record;
Example 6:
 type mycell is record
   rec1 : std_logic_vector( 7 downto 0);
   rec2 : integer;
   rec3 : std_logic;
   rec4 : std_logic_vector( 7 downto 0);
 end record;
 type binary IS ( ONN, OFF );
 type switch_info IS record
   state : BINARY;
   id    : INTEGER;
 end record;

 signal cell : mycell;
 variable switch : switch_info;

 cell.rec1 <=   "11000110";
 cell.rec2 <=   6;
 switch.state   := ONN;
 switch.id :=   30;

                                    VHDL 360 ©                13
Exercise 1 (Modeling Memories)
•     Complete the below code to model a 16x16 ROM by doing the following
       –   Add a rom_type definition which is an array of std_logic_vector
       –   Assign “data” with the proper value of the ROM pointed out by the address

    library ieee;
    use ieee.std_logic_1164.all;
    <Extra packages?>

    entity rom_example is
      port (clk, en : in std_logic;
            addr : in std_logic_vector(3 downto 0);
            data : out std_logic_vector(15 downto 0));
    end entity;
    architecture rtl of rom_example is
      <Add type definition here>
      constant ROM : rom_type:= (X"200A", X"0300", X"0801",   X"0025",
                                 X"0828", X"BCF2", X"0110",   X"1555",
                                 X"3504", X"023B”, X"FFFE",   X"0402",
                                 X"0501", X"0326", X"1300",   X"FFFA");
    begin
    process (clk)
      begin
        if (rising_edge(clk)) then
          if (en = '1') then
            <Add the assignment statement>
          end if;
        end if;
      end process;
    end rtl;




                                                    VHDL 360 ©                         14
Exercise 1 (Soln.)
•   Complete the below code to model a 16x16 ROM by doing the following
     –   Add a rom_type definition which is an array of std_logic_vector
     –   Assign “data” with the proper value of the ROM pointed out by the address

     library ieee;
     use ieee.std_logic_1164.all;
     use ieee.std_logic_unsigned.all;
     entity rom_example is
       port (clk, en : in std_logic;
              addr : in std_logic_vector(3 downto 0);
              data : out std_logic_vector(15 downto 0));
     end entity;
     architecture rtl of rom_example is
       type rom_type is array (15 downto 0) of std_logic_vector (15 downto 0);
       constant ROM : rom_type:= (X"200A", X"0300", X"0801", X"0025",
                                   X"0828", X"BCF2", X"0110", X"1555",
                                   X"3504", X"023B", X"FFFE", X"0402",
                                   X"0501", X"0326", X"1300", X"FFFA");
     begin
     process (clk)
       begin
         if (clk'event and clk = '1') then
           if (EN = '1') then
              data <= ROM(conv_integer(ADDR));
           end if;
         end if;
       end process;
     end rtl;




                                                  VHDL 360 ©                         15
•
      Exercise 2 (Modeling Memories)
      Complete the below code to model a 1024x8 RAM by doing the following
       –   Define a ram_type definition which is an array of std_logic_vector
       –   Write data in the RAM in the (we = 1) condition
       –   Read data stored in the RAM location pointed by addr
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity mem_example is
    port (clk, we, en : in std_logic;
          addr : in std_logic_vector(9 downto 0);
          data_in : in std_logic_vector(7 downto 0);
          data_out : out std_logic_vector(7 downto 0));
    end entity;
    architecture rtl of mem_example is
      <Add type definition here>
      signal RAM: ram_type;
    begin
      process (clk)
      begin
        if rising_edge(clk) then
          if en = '1' then
             if we = '1' then
               <Add assignment here>
             end if;
             <Add assignment here>
          end if;
        end if;
      end process;
    end rtl;
                                                     VHDL 360 ©                 16
•
                             Exercise 2 (Soln.)
      Complete the below code to model a 1024x8 RAM by doing the following
       –   Define a ram_type definition which is an array of std_logic_vector
       –   Write data in the RAM in the (we = 1) condition pointed by the addr
       –   Read data stored in the RAM location pointed by addr

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity mem_example is
    port (clk, we, en : in std_logic;
          addr : in std_logic_vector(9 downto 0);
          data_in : in std_logic_vector(7 downto 0);
          data_out : out std_logic_vector(7 downto 0));
    end entity;
    architecture rtl of mem_example is
      type ram_type is array (1023 downto 0) of std_logic_vector (7 downto 0);
      signal RAM: ram_type;
    begin
      process (clk)
      begin
        if rising_edge(clk) then
          if en = '1' then
             if we = '1' then
               RAM(conv_integer(ADDR)) <= data_in;
             end if;
             Data_out <= RAM(conv_integer(addr)) ;
          end if;
        end if;
      end process;
    end rtl;
                                                     VHDL 360 ©                  17
Contacts
• You can contact us at:
  – http://www.embedded-tips.blogspot.com/




                     VHDL 360 ©         18

Weitere ähnliche Inhalte

Was ist angesagt?

Wireless communication theodore rappaport
Wireless communication   theodore rappaportWireless communication   theodore rappaport
Wireless communication theodore rappaportDaud Khan
 
EC6602-Antenna fundamentals new
EC6602-Antenna fundamentals new EC6602-Antenna fundamentals new
EC6602-Antenna fundamentals new krishnamrm
 
differential amplifier for electronic
differential amplifier for electronicdifferential amplifier for electronic
differential amplifier for electronicFaiz Yun
 
VHDL- gate level modelling
VHDL- gate level modellingVHDL- gate level modelling
VHDL- gate level modellingVandanaPagar1
 
Clipper and clamper circuits
Clipper and clamper circuitsClipper and clamper circuits
Clipper and clamper circuitsUnsa Shakir
 
Ppt on sawtooth wave form generator
Ppt on sawtooth wave form generatorPpt on sawtooth wave form generator
Ppt on sawtooth wave form generatorAmit kumar
 
Delta modulation
Delta modulationDelta modulation
Delta modulationmpsrekha83
 
Modules and ports in Verilog HDL
Modules and ports in Verilog HDLModules and ports in Verilog HDL
Modules and ports in Verilog HDLanand hd
 
OPERATING OVERLOADING IN VHDL
OPERATING OVERLOADING IN VHDLOPERATING OVERLOADING IN VHDL
OPERATING OVERLOADING IN VHDLBLESSYDAISE PAUL
 
transistor transistor logic
transistor transistor logictransistor transistor logic
transistor transistor logicmansi acharya
 
Directional couplers ppt for microwave engineering
Directional couplers  ppt for microwave engineeringDirectional couplers  ppt for microwave engineering
Directional couplers ppt for microwave engineeringDivya Shree
 
NYQUIST CRITERION FOR ZERO ISI
NYQUIST CRITERION FOR ZERO ISINYQUIST CRITERION FOR ZERO ISI
NYQUIST CRITERION FOR ZERO ISIFAIZAN SHAFI
 

Was ist angesagt? (20)

Wireless communication theodore rappaport
Wireless communication   theodore rappaportWireless communication   theodore rappaport
Wireless communication theodore rappaport
 
Data types in verilog
Data types in verilogData types in verilog
Data types in verilog
 
VHDL - Part 2
VHDL - Part 2VHDL - Part 2
VHDL - Part 2
 
Line coding
Line codingLine coding
Line coding
 
EC6602-Antenna fundamentals new
EC6602-Antenna fundamentals new EC6602-Antenna fundamentals new
EC6602-Antenna fundamentals new
 
waveshaping ckts
 waveshaping ckts waveshaping ckts
waveshaping ckts
 
differential amplifier for electronic
differential amplifier for electronicdifferential amplifier for electronic
differential amplifier for electronic
 
VHDL- gate level modelling
VHDL- gate level modellingVHDL- gate level modelling
VHDL- gate level modelling
 
Vhdl programming
Vhdl programmingVhdl programming
Vhdl programming
 
Mosfet
MosfetMosfet
Mosfet
 
Clipper and clamper circuits
Clipper and clamper circuitsClipper and clamper circuits
Clipper and clamper circuits
 
Ppt on sawtooth wave form generator
Ppt on sawtooth wave form generatorPpt on sawtooth wave form generator
Ppt on sawtooth wave form generator
 
Delta modulation
Delta modulationDelta modulation
Delta modulation
 
Behavioral modelling in VHDL
Behavioral modelling in VHDLBehavioral modelling in VHDL
Behavioral modelling in VHDL
 
Modules and ports in Verilog HDL
Modules and ports in Verilog HDLModules and ports in Verilog HDL
Modules and ports in Verilog HDL
 
OPERATING OVERLOADING IN VHDL
OPERATING OVERLOADING IN VHDLOPERATING OVERLOADING IN VHDL
OPERATING OVERLOADING IN VHDL
 
transistor transistor logic
transistor transistor logictransistor transistor logic
transistor transistor logic
 
Directional couplers ppt for microwave engineering
Directional couplers  ppt for microwave engineeringDirectional couplers  ppt for microwave engineering
Directional couplers ppt for microwave engineering
 
NYQUIST CRITERION FOR ZERO ISI
NYQUIST CRITERION FOR ZERO ISINYQUIST CRITERION FOR ZERO ISI
NYQUIST CRITERION FOR ZERO ISI
 
Vhdl lab manual
Vhdl lab manualVhdl lab manual
Vhdl lab manual
 

Andere mochten auch

digital logic circuits, digital component
 digital logic circuits, digital component digital logic circuits, digital component
digital logic circuits, digital componentRai University
 
Components of digital computer
Components of digital computerComponents of digital computer
Components of digital computerVanitha Kumari
 
Computer architecture
Computer architectureComputer architecture
Computer architectureZuhaib Zaroon
 
Register transfer and micro operation
Register transfer and micro operationRegister transfer and micro operation
Register transfer and micro operationKamal Acharya
 
COMPUTER ORGANIZATION -Multiplexer,Demultiplexer, Encoder
COMPUTER ORGANIZATION -Multiplexer,Demultiplexer, EncoderCOMPUTER ORGANIZATION -Multiplexer,Demultiplexer, Encoder
COMPUTER ORGANIZATION -Multiplexer,Demultiplexer, EncoderVanitha Chandru
 
Encoders and decoders
Encoders and decodersEncoders and decoders
Encoders and decodersGaditek
 

Andere mochten auch (10)

digital logic circuits, digital component
 digital logic circuits, digital component digital logic circuits, digital component
digital logic circuits, digital component
 
Components of digital computer
Components of digital computerComponents of digital computer
Components of digital computer
 
Computer architecture
Computer architectureComputer architecture
Computer architecture
 
Register transfer and micro operation
Register transfer and micro operationRegister transfer and micro operation
Register transfer and micro operation
 
COMPUTER ORGANIZATION -Multiplexer,Demultiplexer, Encoder
COMPUTER ORGANIZATION -Multiplexer,Demultiplexer, EncoderCOMPUTER ORGANIZATION -Multiplexer,Demultiplexer, Encoder
COMPUTER ORGANIZATION -Multiplexer,Demultiplexer, Encoder
 
Encoders and decoders
Encoders and decodersEncoders and decoders
Encoders and decoders
 
Chapter 3
Chapter 3Chapter 3
Chapter 3
 
Data types
Data typesData types
Data types
 
Encoder and decoder
Encoder and decoderEncoder and decoder
Encoder and decoder
 
Multiplexers & Demultiplexers
Multiplexers & DemultiplexersMultiplexers & Demultiplexers
Multiplexers & Demultiplexers
 

Ähnlich wie Data types and Operators

Data types and Operators Continued
Data types and Operators ContinuedData types and Operators Continued
Data types and Operators ContinuedMohamed Samy
 
java Basic Programming Needs
java Basic Programming Needsjava Basic Programming Needs
java Basic Programming NeedsRaja Sekhar
 
the-vhsic-.pptx
the-vhsic-.pptxthe-vhsic-.pptx
the-vhsic-.pptxjpradha86
 
Vhdl identifiers,data types
Vhdl identifiers,data typesVhdl identifiers,data types
Vhdl identifiers,data typesMadhuriMulik1
 
FP 201 Unit 2 - Part 2
FP 201 Unit 2 - Part 2FP 201 Unit 2 - Part 2
FP 201 Unit 2 - Part 2rohassanie
 
Pj01 3-java-variable and data types
Pj01 3-java-variable and data typesPj01 3-java-variable and data types
Pj01 3-java-variable and data typesSasidharaRaoMarrapu
 
Java Programming For Android
Java Programming For AndroidJava Programming For Android
Java Programming For AndroidTechiNerd
 
5variables in c#
5variables in c#5variables in c#
5variables in c#Sireesh K
 
cassignmentii-170424105623.pdf
cassignmentii-170424105623.pdfcassignmentii-170424105623.pdf
cassignmentii-170424105623.pdfYRABHI
 
data types in C programming
data types in C programmingdata types in C programming
data types in C programmingHarshita Yadav
 
Android webinar class_java_review
Android webinar class_java_reviewAndroid webinar class_java_review
Android webinar class_java_reviewEdureka!
 
Cs1123 3 c++ overview
Cs1123 3 c++ overviewCs1123 3 c++ overview
Cs1123 3 c++ overviewTAlha MAlik
 
ch6-Short.ppt eee cse www rrr www qqq rrr ttt
ch6-Short.ppt eee cse www rrr www qqq rrr tttch6-Short.ppt eee cse www rrr www qqq rrr ttt
ch6-Short.ppt eee cse www rrr www qqq rrr tttwinimag331
 

Ähnlich wie Data types and Operators (20)

Data types and Operators Continued
Data types and Operators ContinuedData types and Operators Continued
Data types and Operators Continued
 
java Basic Programming Needs
java Basic Programming Needsjava Basic Programming Needs
java Basic Programming Needs
 
VHDL-Data-Types.ppt
VHDL-Data-Types.pptVHDL-Data-Types.ppt
VHDL-Data-Types.ppt
 
Unit i
Unit  iUnit  i
Unit i
 
the-vhsic-.pptx
the-vhsic-.pptxthe-vhsic-.pptx
the-vhsic-.pptx
 
Data types
Data typesData types
Data types
 
Vhdl identifiers,data types
Vhdl identifiers,data typesVhdl identifiers,data types
Vhdl identifiers,data types
 
FP 201 Unit 2 - Part 2
FP 201 Unit 2 - Part 2FP 201 Unit 2 - Part 2
FP 201 Unit 2 - Part 2
 
Pj01 3-java-variable and data types
Pj01 3-java-variable and data typesPj01 3-java-variable and data types
Pj01 3-java-variable and data types
 
Java Programming For Android
Java Programming For AndroidJava Programming For Android
Java Programming For Android
 
5variables in c#
5variables in c#5variables in c#
5variables in c#
 
Qtp - Introduction to fundamentals of vbscript
Qtp - Introduction to fundamentals of vbscriptQtp - Introduction to fundamentals of vbscript
Qtp - Introduction to fundamentals of vbscript
 
cassignmentii-170424105623.pdf
cassignmentii-170424105623.pdfcassignmentii-170424105623.pdf
cassignmentii-170424105623.pdf
 
data types in C programming
data types in C programmingdata types in C programming
data types in C programming
 
Android webinar class_java_review
Android webinar class_java_reviewAndroid webinar class_java_review
Android webinar class_java_review
 
Datatypes
DatatypesDatatypes
Datatypes
 
Vhdl
VhdlVhdl
Vhdl
 
Cs1123 3 c++ overview
Cs1123 3 c++ overviewCs1123 3 c++ overview
Cs1123 3 c++ overview
 
Cpprm
CpprmCpprm
Cpprm
 
ch6-Short.ppt eee cse www rrr www qqq rrr ttt
ch6-Short.ppt eee cse www rrr www qqq rrr tttch6-Short.ppt eee cse www rrr www qqq rrr ttt
ch6-Short.ppt eee cse www rrr www qqq rrr ttt
 

Mehr von Mohamed Samy

Building Hierarchy
Building HierarchyBuilding Hierarchy
Building HierarchyMohamed Samy
 
Synthesis Examples
Synthesis ExamplesSynthesis Examples
Synthesis ExamplesMohamed Samy
 
Writing more complex models (continued)
Writing more complex models (continued)Writing more complex models (continued)
Writing more complex models (continued)Mohamed Samy
 
Writing more complex models
Writing more complex modelsWriting more complex models
Writing more complex modelsMohamed Samy
 
Create your first model for a simple logic circuit
Create your first model for a simple logic circuitCreate your first model for a simple logic circuit
Create your first model for a simple logic circuitMohamed Samy
 
Introduction to VHDL
Introduction to VHDLIntroduction to VHDL
Introduction to VHDLMohamed Samy
 

Mehr von Mohamed Samy (7)

Building Hierarchy
Building HierarchyBuilding Hierarchy
Building Hierarchy
 
Modeling FSMs
Modeling FSMsModeling FSMs
Modeling FSMs
 
Synthesis Examples
Synthesis ExamplesSynthesis Examples
Synthesis Examples
 
Writing more complex models (continued)
Writing more complex models (continued)Writing more complex models (continued)
Writing more complex models (continued)
 
Writing more complex models
Writing more complex modelsWriting more complex models
Writing more complex models
 
Create your first model for a simple logic circuit
Create your first model for a simple logic circuitCreate your first model for a simple logic circuit
Create your first model for a simple logic circuit
 
Introduction to VHDL
Introduction to VHDLIntroduction to VHDL
Introduction to VHDL
 

Kürzlich hochgeladen

Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
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
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
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
 
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
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room servicediscovermytutordmt
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
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
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
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
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 

Kürzlich hochgeladen (20)

Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
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
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
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
 
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
 
9548086042 for call girls in Indira Nagar with room service
9548086042  for call girls in Indira Nagar  with room service9548086042  for call girls in Indira Nagar  with room service
9548086042 for call girls in Indira Nagar with room service
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
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...
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
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 ...
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 

Data types and Operators

  • 1. VHDL 360© by: Mohamed Samy Samer El-Saadany
  • 2. Copyrights Copyright © 2010 to authors. All rights reserved • All content in this presentation, including charts, data, artwork and logos (from here on, "the Content"), is the property of Mohamed Samy and Samer El-Saadany or the corresponding owners, depending on the circumstances of publication, and is protected by national and international copyright laws. • Authors are not personally liable for your usage of the Content that entailed casual or indirect destruction of anything or actions entailed to information profit loss or other losses. • Users are granted to access, display, download and print portions of this presentation, solely for their own personal non-commercial use, provided that all proprietary notices are kept intact. • Product names and trademarks mentioned in this presentation belong to their respective owners. VHDL 360 © 2
  • 3. Module 3 Data Types and Operators
  • 4. Objective • Introducing Data Types & Operators • Skills gained: – Familiarity with data types – Modeling Memories – More on Expressions & Operators VHDL 360 © 4
  • 5. Outline • Data Types – Scalar types – Composite types • Modeling Memories • Expressions & Operators • Aggregate • Attributes • Lab VHDL 360 © 5
  • 6. Data Types • A type is characterized by a set of values and operations • Type declaration is made inside architecture declaration, package, entity declaration, subprogram, process declaration • Types – Scalar types • integer types • floating point types • enumerated types • physical types – Composite types • array types: Multiple elements of the same type • record types: Multiple elements of different types • VHDL offers other types like File types, Access types & Protected types, that will be discussed later VHDL 360 © 6
  • 7. Data Types • VHDL also offers “Subtype” definitions • Subtypes – Type together with a constraint – Can use operations defined to its base type – Can specify its own set of operations Golden rules of thumb VHDL is strongly typed language i.e. The LHS & RHS of the assignment must match in: – Base type – Size VHDL 360 © 7
  • 8. Scalar Types • Integer types – <Range> can be one of the following <integer> to <integer> Syntax: <integer> downto <integer> type <type_name> is range <range>; • Predefined integer types: – integer type -2147483648 to 2147483648 Syntax: – natural subtype 0 to 2147483648 subtype <subtype_name> is <basetype_name> range <range>; – positive subtype 1 to 2147483648 Example 1: PROCESS (X) variable a: integer; -- -2147483648 to 2147483648; variable b: integer range 0 to 15; -- constraints possible values type int is range -10 to 10; -- defining new integer type variable d: int; subtype sint is integer range 50 to 127; -- defining new integer subtype variable c: sint; BEGIN a := -1; c := 100; -- OK b := -1; d := -12; -- illegal a := 1.0; -- illegal a := 57; b := 10; c := a; -- OK c := b; -- illegal (current value of b is outside c range) d := a; -- illegal (two different types) END PROCESS; VHDL 360 © 8
  • 9. Scalar Types • Floating point types – <Range> can be one of the following Syntax: <floating point> to < floating point > type <type_name> is range <range>; < floating point > downto < floating point > • Predefined Floating Point types: Syntax: – real type -1.0E308 to 1.0E308 subtype <subtype_name> is <basetype_name> range <range>; Example 2: PROCESS (X) variable a: real; type posreal is range 0.0 to 1.0E308; variable b: posreal; BEGIN a := 1.3; a := -7.5; -- OK b := -4.5; a := 1; -- illegal a := 1.7E13; b := 11.4; -- OK END PROCESS; VHDL 360 © 9
  • 10. • Enumerated types Scalar Types – specifies list of possible values Syntax: – value1, … : identifiers or characters Type <type_name> is (value1, value2, …) • Predefined Enumerated types: – character type „a‟, „b‟, …etc* – bit type „0‟ or „1‟ – boolean type TRUE or FALSE Example 3: ARCHITECTURE test_enum OF test IS Type states is (idle, fetch, decode, execute); Signal B: states; BEGIN PROCESS (X) TYPE binary IS ( ONN, OFF ); variable a: binary; BEGIN a := ONN; -- ok B <= decode; -- ok a := OFF; -- ok B <= halt; -- illegal states <= idle; -- illegal END PROCESS; END ARCHITECTURE; * The 256 characters of the ISO 8859-1: 1987 [B4] character set VHDL 360 © 10
  • 11. Reference page Scalar Types • Physical types represent measurements of Syntax: some quantity type <type_name> is range <range> – <primary_unit> an identifier for the primary unit of units measurement for that type <primary_unit>; – <secondary_unit> an integer multiple of the primary unit <secondary_unit> = <integer> <primary_unit>; … • Predefined physical types: end units; – time type – delay_length subtype Example 4: TYPE resistance IS RANGE 0 TO 10000000 UNITS ohm; Primary unit Kohm = 1000 ohm; Mohm = 1000 kohm; Secondary units END UNITS; VHDL 360 © 11
  • 12. Composite Types • Array types group elements of the same type • Arrays can be defined as Syntax: – Constrained <range is specified> • <Range> : <integer> to <integer> Type <type_name> is array <range> <integer> downto <integer> of <data_type>; – Unconstrained <No range is specified> • <Range> : (indexType range <>) • Multidimensional arrays are created by specifying multiple ranges Example 5: 0 31 -- constrained array types type word is array (0 to 31) of bit; 7 0 type byte is array (7 downto 0) of bit; -- constrained multidimensional array type definition type miniram is array (0 to 15) of std_logic_vector(7 downto 0); Type matrix is array (0 to 15, 3 downto 0) of std_logic_vector(7 downto 0); 7 2 1 0 0 -- unconstrained multidimensional array type definition type memory is array (INTEGER range <>) of word; 1 . signal D_bus : word; signal mem1 : miniram; . variable x : byte; variable y : bit; variable my_mem : memory (0 to 1023) ; 15 my_mem (63) := X"0F58E230"; mem1 (5) <= "10010110" ; mem1 (15)(4) <= '1' ; y := x(5); -- y gets value of element at index 5 VHDL 360 © 12
  • 13. Reference page Composite Types • Record types: Syntax: – group elements of possibly different types type <type_name> is record identifier: type; – elements are indexed via field names … end record; Example 6: type mycell is record rec1 : std_logic_vector( 7 downto 0); rec2 : integer; rec3 : std_logic; rec4 : std_logic_vector( 7 downto 0); end record; type binary IS ( ONN, OFF ); type switch_info IS record state : BINARY; id : INTEGER; end record; signal cell : mycell; variable switch : switch_info; cell.rec1 <= "11000110"; cell.rec2 <= 6; switch.state := ONN; switch.id := 30; VHDL 360 © 13
  • 14. Exercise 1 (Modeling Memories) • Complete the below code to model a 16x16 ROM by doing the following – Add a rom_type definition which is an array of std_logic_vector – Assign “data” with the proper value of the ROM pointed out by the address library ieee; use ieee.std_logic_1164.all; <Extra packages?> entity rom_example is port (clk, en : in std_logic; addr : in std_logic_vector(3 downto 0); data : out std_logic_vector(15 downto 0)); end entity; architecture rtl of rom_example is <Add type definition here> constant ROM : rom_type:= (X"200A", X"0300", X"0801", X"0025", X"0828", X"BCF2", X"0110", X"1555", X"3504", X"023B”, X"FFFE", X"0402", X"0501", X"0326", X"1300", X"FFFA"); begin process (clk) begin if (rising_edge(clk)) then if (en = '1') then <Add the assignment statement> end if; end if; end process; end rtl; VHDL 360 © 14
  • 15. Exercise 1 (Soln.) • Complete the below code to model a 16x16 ROM by doing the following – Add a rom_type definition which is an array of std_logic_vector – Assign “data” with the proper value of the ROM pointed out by the address library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity rom_example is port (clk, en : in std_logic; addr : in std_logic_vector(3 downto 0); data : out std_logic_vector(15 downto 0)); end entity; architecture rtl of rom_example is type rom_type is array (15 downto 0) of std_logic_vector (15 downto 0); constant ROM : rom_type:= (X"200A", X"0300", X"0801", X"0025", X"0828", X"BCF2", X"0110", X"1555", X"3504", X"023B", X"FFFE", X"0402", X"0501", X"0326", X"1300", X"FFFA"); begin process (clk) begin if (clk'event and clk = '1') then if (EN = '1') then data <= ROM(conv_integer(ADDR)); end if; end if; end process; end rtl; VHDL 360 © 15
  • 16. Exercise 2 (Modeling Memories) Complete the below code to model a 1024x8 RAM by doing the following – Define a ram_type definition which is an array of std_logic_vector – Write data in the RAM in the (we = 1) condition – Read data stored in the RAM location pointed by addr library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mem_example is port (clk, we, en : in std_logic; addr : in std_logic_vector(9 downto 0); data_in : in std_logic_vector(7 downto 0); data_out : out std_logic_vector(7 downto 0)); end entity; architecture rtl of mem_example is <Add type definition here> signal RAM: ram_type; begin process (clk) begin if rising_edge(clk) then if en = '1' then if we = '1' then <Add assignment here> end if; <Add assignment here> end if; end if; end process; end rtl; VHDL 360 © 16
  • 17. Exercise 2 (Soln.) Complete the below code to model a 1024x8 RAM by doing the following – Define a ram_type definition which is an array of std_logic_vector – Write data in the RAM in the (we = 1) condition pointed by the addr – Read data stored in the RAM location pointed by addr library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mem_example is port (clk, we, en : in std_logic; addr : in std_logic_vector(9 downto 0); data_in : in std_logic_vector(7 downto 0); data_out : out std_logic_vector(7 downto 0)); end entity; architecture rtl of mem_example is type ram_type is array (1023 downto 0) of std_logic_vector (7 downto 0); signal RAM: ram_type; begin process (clk) begin if rising_edge(clk) then if en = '1' then if we = '1' then RAM(conv_integer(ADDR)) <= data_in; end if; Data_out <= RAM(conv_integer(addr)) ; end if; end if; end process; end rtl; VHDL 360 © 17
  • 18. Contacts • You can contact us at: – http://www.embedded-tips.blogspot.com/ VHDL 360 © 18