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

Verilog Tutorial - Verilog HDL Tutorial with Examples
Verilog Tutorial - Verilog HDL Tutorial with ExamplesVerilog Tutorial - Verilog HDL Tutorial with Examples
Verilog Tutorial - Verilog HDL Tutorial with ExamplesE2MATRIX
 
Vestigial side band (vsb)
Vestigial side band (vsb)Vestigial side band (vsb)
Vestigial side band (vsb)ggpriya me
 
Passive and active devices
Passive and active devicesPassive and active devices
Passive and active devicessrirenga
 
Half wave control rectifier with RL load
Half wave control rectifier with RL loadHalf wave control rectifier with RL load
Half wave control rectifier with RL loadSmit Shah
 
Colpitts Oscillator - Working and Applications
Colpitts Oscillator - Working and ApplicationsColpitts Oscillator - Working and Applications
Colpitts Oscillator - Working and Applicationselprocus
 
Operational amplifier
Operational amplifierOperational amplifier
Operational amplifierUnsa Shakir
 
19EEC03 Linear Integrated Circuits and its Applications
19EEC03 Linear Integrated Circuits and its Applications19EEC03 Linear Integrated Circuits and its Applications
19EEC03 Linear Integrated Circuits and its ApplicationsDr.Raja R
 

What's hot (20)

Antenna slide
Antenna slideAntenna slide
Antenna slide
 
Verilog Tutorial - Verilog HDL Tutorial with Examples
Verilog Tutorial - Verilog HDL Tutorial with ExamplesVerilog Tutorial - Verilog HDL Tutorial with Examples
Verilog Tutorial - Verilog HDL Tutorial with Examples
 
Vestigial side band (vsb)
Vestigial side band (vsb)Vestigial side band (vsb)
Vestigial side band (vsb)
 
98788885 ic-lab-maual
98788885 ic-lab-maual98788885 ic-lab-maual
98788885 ic-lab-maual
 
Op amp
Op ampOp amp
Op amp
 
Power Divider
Power DividerPower Divider
Power Divider
 
Pulse shaping
Pulse shapingPulse shaping
Pulse shaping
 
Passive and active devices
Passive and active devicesPassive and active devices
Passive and active devices
 
Verilog hdl
Verilog hdlVerilog hdl
Verilog hdl
 
filters
filtersfilters
filters
 
Half wave control rectifier with RL load
Half wave control rectifier with RL loadHalf wave control rectifier with RL load
Half wave control rectifier with RL load
 
Colpitts Oscillator - Working and Applications
Colpitts Oscillator - Working and ApplicationsColpitts Oscillator - Working and Applications
Colpitts Oscillator - Working and Applications
 
Directional couplers 22
Directional couplers 22Directional couplers 22
Directional couplers 22
 
Operational amplifier
Operational amplifierOperational amplifier
Operational amplifier
 
Reflector antennas
Reflector antennasReflector antennas
Reflector antennas
 
Filters
FiltersFilters
Filters
 
19EEC03 Linear Integrated Circuits and its Applications
19EEC03 Linear Integrated Circuits and its Applications19EEC03 Linear Integrated Circuits and its Applications
19EEC03 Linear Integrated Circuits and its Applications
 
Low pass filters
Low pass filtersLow pass filters
Low pass filters
 
Behavioral modelling in VHDL
Behavioral modelling in VHDLBehavioral modelling in VHDL
Behavioral modelling in VHDL
 
Comparator
ComparatorComparator
Comparator
 

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

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

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

URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppCeline George
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
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
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
Micromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersMicromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersChitralekhaTherkar
 
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
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
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
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
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
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxRoyAbrique
 

Recently uploaded (20)

URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website App
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
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
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
Micromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of PowdersMicromeritics - Fundamental and Derived Properties of Powders
Micromeritics - Fundamental and Derived Properties of Powders
 
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 ...
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
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
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
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...
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptxContemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
Contemporary philippine arts from the regions_PPT_Module_12 [Autosaved] (1).pptx
 

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