SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot (20)

CMOS LOGIC STRUCTURES
CMOS LOGIC STRUCTURESCMOS LOGIC STRUCTURES
CMOS LOGIC STRUCTURES
 
Data types in verilog
Data types in verilogData types in verilog
Data types in verilog
 
VHDL- data types
VHDL- data typesVHDL- data types
VHDL- data types
 
adc dac converter
adc dac converteradc dac converter
adc dac converter
 
gate level modeling
gate level modelinggate level modeling
gate level modeling
 
8051 MICROCONTROLLER ARCHITECTURE.pptx
 8051 MICROCONTROLLER ARCHITECTURE.pptx 8051 MICROCONTROLLER ARCHITECTURE.pptx
8051 MICROCONTROLLER ARCHITECTURE.pptx
 
Verilog presentation final
Verilog presentation finalVerilog presentation final
Verilog presentation final
 
Phase shift keying Presentation
Phase shift keying PresentationPhase shift keying Presentation
Phase shift keying Presentation
 
Verilog HDL
Verilog HDLVerilog HDL
Verilog HDL
 
Programmable Logic Devices Plds
Programmable Logic Devices PldsProgrammable Logic Devices Plds
Programmable Logic Devices Plds
 
Analog to digital converters, adc
Analog to digital converters, adcAnalog to digital converters, adc
Analog to digital converters, adc
 
Switch level modeling
Switch level modelingSwitch level modeling
Switch level modeling
 
Data converter fundamentals
Data converter fundamentalsData converter fundamentals
Data converter fundamentals
 
Verilog hdl
Verilog hdlVerilog hdl
Verilog hdl
 
Verilog Tasks and functions
Verilog Tasks and functionsVerilog Tasks and functions
Verilog Tasks and functions
 
Verilog
VerilogVerilog
Verilog
 
Uart
UartUart
Uart
 
VHDL Part 4
VHDL Part 4VHDL Part 4
VHDL Part 4
 
Introduction to VHDL - Part 1
Introduction to VHDL - Part 1Introduction to VHDL - Part 1
Introduction to VHDL - Part 1
 
Line codes
Line codesLine codes
Line codes
 

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 
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
 
Tech Days 2015: A quick tour of Ada 2012
Tech Days 2015: A quick tour of Ada 2012Tech Days 2015: A quick tour of Ada 2012
Tech Days 2015: A quick tour of Ada 2012AdaCore
 

Similar to 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
 
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
 
Tech Days 2015: A quick tour of Ada 2012
Tech Days 2015: A quick tour of Ada 2012Tech Days 2015: A quick tour of Ada 2012
Tech Days 2015: A quick tour of Ada 2012
 

More from 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
 

More from 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
 

Recently uploaded

SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
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
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 
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
 
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
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
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
 
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
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
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
 
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
 

Recently uploaded (20)

SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
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
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 
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
 
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
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
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
 
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
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
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
 
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...
 
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
 

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