数据类型数据对象.ppt

上传人:wuy****n92 文档编号:88499575 上传时间:2023-04-26 格式:PPT 页数:30 大小:249.50KB
返回 下载 相关 举报
数据类型数据对象.ppt_第1页
第1页 / 共30页
数据类型数据对象.ppt_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《数据类型数据对象.ppt》由会员分享,可在线阅读,更多相关《数据类型数据对象.ppt(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、4 VHDL4 VHDL语言的数据类型语言的数据类型及运算操作符及运算操作符数据对象数据对象数据对象数据对象数据类型数据类型数据类型数据类型运算操作符运算操作符运算操作符运算操作符常量常量常量常量变量变量变量变量信号信号信号信号标准数据类型标准数据类型标准数据类型标准数据类型自定义数据类型自定义数据类型自定义数据类型自定义数据类型算术算术算术算术逻辑逻辑逻辑逻辑关系关系关系关系并置并置并置并置4.1 4.1 4.1 4.1 数据对象数据对象数据对象数据对象(Data ObjectData ObjectData ObjectData Object)及其分类及其分类及其分类及其分类凡是可以赋予一个

2、值的对象称为数据对象凡是可以赋予一个值的对象称为数据对象凡是可以赋予一个值的对象称为数据对象凡是可以赋予一个值的对象称为数据对象。数据对象数据对象数据对象数据对象 类(类(类(类(CLASSCLASS):信号(:信号(:信号(:信号(signalsignal),变量(),变量(),变量(),变量(variablevariable),常量),常量),常量),常量(constantconstant)类型(类型(类型(类型(DATA TYPESDATA TYPES):位、位矢量、:位、位矢量、:位、位矢量、:位、位矢量、stdstd、整数、实数等整数、实数等整数、实数等整数、实数等例:例:例:例:类

3、类类类 对象对象对象对象 数据类型数据类型数据类型数据类型 signal asignal a:bit bit;类(类(类(类(CLASSCLASS)数据类型(数据类型(数据类型(数据类型(DATA TYPESDATA TYPES)、)、)、)、名字(名字(名字(名字(NAMENAME)。)。)。)。数据对象的分类:信号数据对象的分类:信号数据对象的分类:信号数据对象的分类:信号、变量变量变量变量、常数常数常数常数。常数:常数:常数:常数:表示物理设计中那些不变的量表示物理设计中那些不变的量表示物理设计中那些不变的量表示物理设计中那些不变的量信信信信号号号号:表表表表示示示示物物物物理理理理设设

4、设设计计计计中中中中的的的的某某某某一一一一条条条条硬硬硬硬件件件件连连连连接接接接线线线线,也也也也可可可可以以以以表示寄存器。表示寄存器。表示寄存器。表示寄存器。变量:变量:变量:变量:电路暂存某些值的载体电路暂存某些值的载体电路暂存某些值的载体电路暂存某些值的载体数据对象的特征:允许被赋值、具有一定的数据类型数据对象的特征:允许被赋值、具有一定的数据类型数据对象的特征:允许被赋值、具有一定的数据类型数据对象的特征:允许被赋值、具有一定的数据类型对象仅在其说明区域可见,区域外不可见对象仅在其说明区域可见,区域外不可见对象仅在其说明区域可见,区域外不可见对象仅在其说明区域可见,区域外不可见例

5、:作用域为整个构造体的客体的定义例:作用域为整个构造体的客体的定义例:作用域为整个构造体的客体的定义例:作用域为整个构造体的客体的定义 ARCHITECTURE rtl Of name ISARCHITECTURE rtl Of name IS SIGNAL a SIGNAL a:BITBIT;BEGINBEGIN .END rtl;END rtl;在构造体中的任何位置,都可以使用这个信号在构造体中的任何位置,都可以使用这个信号在构造体中的任何位置,都可以使用这个信号在构造体中的任何位置,都可以使用这个信号a a。4.1.1 4.1.1 4.1.1 4.1.1 常数常数常数常数:在设计描述之中

6、不会变化的值在设计描述之中不会变化的值在设计描述之中不会变化的值在设计描述之中不会变化的值CONSTANT CONSTANT 常数名:数据类型:常数名:数据类型:常数名:数据类型:常数名:数据类型:=表达式;表达式;表达式;表达式;常数所赋的值应和所定义的数据类型一致常数所赋的值应和所定义的数据类型一致常数所赋的值应和所定义的数据类型一致常数所赋的值应和所定义的数据类型一致例:例:例:例:CONSTANT VccCONSTANT Vcc:realreal:=“0101”=“0101”;错错错错误误误误,因因因因为为为为所所所所赋赋赋赋的的的的值值值值与与与与所所所所定定定定义义义义的的的的数数

7、数数据据据据类类类类型型型型不不不不一一一一致致致致,一个为实数,一个为位矢量。一个为实数,一个为位矢量。一个为实数,一个为位矢量。一个为实数,一个为位矢量。物理含义:可以代表数字电路中的电源、接地、计数物理含义:可以代表数字电路中的电源、接地、计数物理含义:可以代表数字电路中的电源、接地、计数物理含义:可以代表数字电路中的电源、接地、计数器模值等器模值等器模值等器模值等例:例:例:例:CONSTANT VccCONSTANT Vcc:realreal:=5.0=5.0;4.1.2 4.1.2 4.1.2 4.1.2 变量变量变量变量(variable(variable(variable(va

8、riable)变量仅仅用于进程和子程序,是一个局部量,作用范围变量仅仅用于进程和子程序,是一个局部量,作用范围变量仅仅用于进程和子程序,是一个局部量,作用范围变量仅仅用于进程和子程序,是一个局部量,作用范围仅限于定义该变量的模块。仅限于定义该变量的模块。仅限于定义该变量的模块。仅限于定义该变量的模块。说明格式如下:说明格式如下:说明格式如下:说明格式如下:VARIABLE VARIABLE 变量名变量名变量名变量名:数据类型数据类型数据类型数据类型:=:=表达式表达式表达式表达式;变量的赋值采用变量的赋值采用变量的赋值采用变量的赋值采用“:=:=”,赋值后立即生效。,赋值后立即生效。,赋值后立

9、即生效。,赋值后立即生效。例:变量在定义时赋值例:变量在定义时赋值例:变量在定义时赋值例:变量在定义时赋值 VARIABLE B:INTEGER:=1;VARIABLE B:INTEGER:=1;变量可以在定义时被赋初值;也可以在进程中被赋值变量可以在定义时被赋初值;也可以在进程中被赋值变量可以在定义时被赋初值;也可以在进程中被赋值变量可以在定义时被赋初值;也可以在进程中被赋值例:变量在进程中被赋值例:变量在进程中被赋值例:变量在进程中被赋值例:变量在进程中被赋值PROCESSPROCESS()variable A variable A:BIT_VECTOR;BIT_VECTOR;BEGINB

10、EGIN .A:=”01010”;A:=”01010”;.END PROCESS;END PROCESS;对对于于综综合合来来说说,变变量量通通常常用用于于计计算算的的目目的的,但但它它的的综综合合比比较较难难于于定定义义,或或者者综综合合后后占占用用大大量量的的资资源源。因因此此,在在设设计计中中尽尽量量避避免免采采用用变变量量。除除非非在在那那些我们有信心可预言结果的场合。些我们有信心可预言结果的场合。4.1.3 4.1.3 4.1.3 4.1.3 信号(信号(信号(信号(signalsignalsignalsignal)信号能够代表连线,是电子电路内硬件连接的抽象信号能够代表连线,是电子

11、电路内硬件连接的抽象信号能够代表连线,是电子电路内硬件连接的抽象信号能够代表连线,是电子电路内硬件连接的抽象声明内部信号声明内部信号声明内部信号声明内部信号没有数据流动方向没有数据流动方向没有数据流动方向没有数据流动方向SIGNAL SIGNAL 信号名信号名信号名信号名:数据类型数据类型数据类型数据类型:=:=表达式表达式表达式表达式;例例例例:SIGNAL COUNT:BIT:=0;SIGNAL COUNT:BIT:=0;信号在定义时赋初值,信号在定义时赋初值,信号在定义时赋初值,信号在定义时赋初值,用用用用“:“:=”代入符代入符代入符代入符在程序中,信号的赋值采用在程序中,信号的赋值采

12、用在程序中,信号的赋值采用在程序中,信号的赋值采用“=”“=”代入符代入符代入符代入符例:例:例:例:SIGNAL S1,S2:STD_LOGIC;SIGNAL S1,S2:STD_LOGIC;S2=1;S2=1;S1=S2;S1=S2;信号的代入可以附加延时信号的代入可以附加延时信号的代入可以附加延时信号的代入可以附加延时例如:例如:例如:例如:signal countsignal count:bitbit:=0 after 10ns;=0 after 10ns;信号可以在程序中被重新赋值信号可以在程序中被重新赋值信号可以在程序中被重新赋值信号可以在程序中被重新赋值4.4.4.4.2 2 2

13、 2 运算操作符运算操作符运算操作符运算操作符按优先级的顺序依次(低到高)为按优先级的顺序依次(低到高)为按优先级的顺序依次(低到高)为按优先级的顺序依次(低到高)为:逻辑运算符(逻辑运算符(逻辑运算符(逻辑运算符(LogicalLogical)关系运算符(关系运算符(关系运算符(关系运算符(RelationalRelational)并置运算符(并置运算符(并置运算符(并置运算符(ConcatenationConcatenation)算术运算符(算术运算符(算术运算符(算术运算符(ArithmeticArithmetic)。)。)。)。要求操作数的类型必须和操作符所要求的类型一致。要求操作数的

14、类型必须和操作符所要求的类型一致。要求操作数的类型必须和操作符所要求的类型一致。要求操作数的类型必须和操作符所要求的类型一致。4.4.4.4.2.1 2.1 2.1 2.1 逻辑运算符(逻辑运算符(逻辑运算符(逻辑运算符(LogicalLogicalLogicalLogical)1 1、逻辑运算符(、逻辑运算符(、逻辑运算符(、逻辑运算符(LogicalLogical)2 2、逻辑运算符的操作对象、逻辑运算符的操作对象、逻辑运算符的操作对象、逻辑运算符的操作对象“STD_LOGIC”STD_LOGIC”;“BIT”“BIT”;“STD_LOGIC_VECTOR”“STD_LOGIC_VECTO

15、R”;“布尔量布尔量布尔量布尔量”(BooleanBoolean)没有优先级差别,按自左至右的优先级顺序运算。没有优先级差别,按自左至右的优先级顺序运算。没有优先级差别,按自左至右的优先级顺序运算。没有优先级差别,按自左至右的优先级顺序运算。例:下式去掉括号就会产生错误:例:下式去掉括号就会产生错误:例:下式去掉括号就会产生错误:例:下式去掉括号就会产生错误:X=(A AND B)OR(NOT C AND D)X=(A AND B)OR(NOT C AND D);去掉括号:去掉括号:去掉括号:去掉括号:X=A AND B OR NOT C AND DX=A AND B OR NOT C AND

16、 D;以上两式的运算次序是完全不同的。以上两式的运算次序是完全不同的。以上两式的运算次序是完全不同的。以上两式的运算次序是完全不同的。逻辑运算符常用于书写逻辑表达式逻辑运算符常用于书写逻辑表达式逻辑运算符常用于书写逻辑表达式逻辑运算符常用于书写逻辑表达式例例例例:entity and2 isentity and2 is port(a,b,c,d:in bit;port(a,b,c,d:in bit;q:out bit);q:out bit);end and2;end and2;architecture rtl of and2 is architecture rtl of and2 is beg

17、in begin q=(a and b)or(c nand d);q=(a and b)or(c nand d);end rtl;end rtl;4.4.4.4.2.2 2.2 2.2 2.2 关系运算符(关系运算符(关系运算符(关系运算符(RelationalRelationalRelationalRelational)1 1、关系运算符(、关系运算符(、关系运算符(、关系运算符(RelationalRelational)2 2、操作对象、操作对象、操作对象、操作对象1 1)“=”“=”和和和和“/=”“/=”适适适适用用用用于于于于所所所所有有有有类类类类型型型型的的的的数数数数据。据。据

18、。据。2 2)其它关系运算符则适用于)其它关系运算符则适用于)其它关系运算符则适用于)其它关系运算符则适用于 “STD_LOGIC”STD_LOGIC”;“INTEGER”“INTEGER”;“REAL”“REAL”;“STD_LOGIC_VECTOR”“STD_LOGIC_VECTOR”比较时,按自左至右的比较结果作为运算结果比较时,按自左至右的比较结果作为运算结果比较时,按自左至右的比较结果作为运算结果比较时,按自左至右的比较结果作为运算结果。例:下式比较就会产生错误例:下式比较就会产生错误例:下式比较就会产生错误例:下式比较就会产生错误X=“1010”X=“1010”;1010Y=“11

19、1”YYXY)THEN THEN上式比较结果为上式比较结果为上式比较结果为上式比较结果为YXYX。显然错误。显然错误。显然错误。显然错误。关系运算符常用于条件的判断关系运算符常用于条件的判断关系运算符常用于条件的判断关系运算符常用于条件的判断例:最大值选取例:最大值选取例:最大值选取例:最大值选取library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_1164.all;entity max isentity max is port(a,b:in std_logic_vector(3 downto 0);p

20、ort(a,b:in std_logic_vector(3 downto 0);q:out std_logic_vector(3 downto 0);q:out std_logic_vector(3 downto 0);end max;end max;architecture rtl of max isarchitecture rtl of max isbeginbegin qb)else b;qb)else b;end rtl;end rtl;4.4.4.4.2.3 2.3 2.3 2.3 并置运算符(并置运算符(并置运算符(并置运算符(ConcatenationConcatenationC

21、oncatenationConcatenation)并置运算符并置运算符并置运算符并置运算符&:用于位的连接用于位的连接用于位的连接用于位的连接操作对象操作对象操作对象操作对象“STD_LOGIC”STD_LOGIC”;“BIT”“BIT”;“STD_LOGIC_VECTOR”“STD_LOGIC_VECTOR”;“BIT_VECTOR”“BIT_VECTOR”;“STD_ULOGIC_VECTOR”“STD_ULOGIC_VECTOR”;例:例:例:例:a=”1010”;a=”1010”;b=”1001”;b=”1001”;c=a&b c=a&b 结果为:结果为:结果为:结果为:c=”c=”

22、101010101001”1001”。4.4.4.4.2.4 2.4 2.4 2.4 算术运算符(算术运算符(算术运算符(算术运算符(ArithmeticArithmeticArithmeticArithmetic)对对对对std_logic_vectorstd_logic_vector类型的对象进行算术运算时,要类型的对象进行算术运算时,要类型的对象进行算术运算时,要类型的对象进行算术运算时,要用用用用“use use ieee.std_logic_unsignedieee.std_logic_unsigned”提前声明包集合提前声明包集合提前声明包集合提前声明包集合1 1 算术运算符算术运

23、算符算术运算符算术运算符例:利用算术运算符设计一个矢量乘法器例:利用算术运算符设计一个矢量乘法器例:利用算术运算符设计一个矢量乘法器例:利用算术运算符设计一个矢量乘法器library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_1164.all;use;use;entity mult isentity mult is port(a,b:in std_logic_vector(3 downto 0);port(a,b:in std_logic_vector(3 downto 0);q:out std_logic

24、_vector(7 downto 0);q:out std_logic_vector(7 downto 0);end mult;end mult;architecture rtl of mult isarchitecture rtl of mult isbeginbegin q=a*b;q=a*b;end rtl;end rtl;所有数据对象均需说明它的数据类型所有数据对象均需说明它的数据类型所有数据对象均需说明它的数据类型所有数据对象均需说明它的数据类型包括:包括:包括:包括:标准数据类型标准数据类型标准数据类型标准数据类型;自定义数据类型自定义数据类型自定义数据类型自定义数据类型4.3 数

25、据类型数据类型标准的数据类型标准的数据类型标准的数据类型标准的数据类型整数(整数(整数(整数(IntegerInteger):):):):-2147483647-2147483647(-2-23131)21474836472147483647(2 23131)3232位有符号数位有符号数位有符号数位有符号数 实数(实数(实数(实数(RealReal):):):):-1.0-1.0E+381.0E+38E+381.0E+38,书写时一定要有,书写时一定要有,书写时一定要有,书写时一定要有小数点,目前只能仿真,不能综合。小数点,目前只能仿真,不能综合。小数点,目前只能仿真,不能综合。小数点,目前只

26、能仿真,不能综合。例:例:例:例:signal a:integer;signal a:integer;.a=8;a=8;例:例:例:例:signal a:real;signal a:real;.a=8.0 a=8.0;位(位(位(位(BitBit):):):):11和和和和0 0,只代表一个位的两种,只代表一个位的两种,只代表一个位的两种,只代表一个位的两种取值。取值。取值。取值。位矢量(位矢量(位矢量(位矢量(Bit-VectorBit-Vector):):):):是位的一种组合类型。是位的一种组合类型。是位的一种组合类型。是位的一种组合类型。例:例:例:例:signal a:bit;sig

27、nal a:bit;.a=1;a=1;例:例:例:例:signal a:bit_vector(3 downto 0);signal a:bit_vector(3 downto 0);.a=“0101”;a=“0101”;布尔量(布尔量(布尔量(布尔量(BooleanBoolean):):):):TrueTrue和和和和 FalseFalse。例:例:例:例:signal a:boolean;signal a:boolean;.a=true;a=true;字符(字符(字符(字符(CharacterCharacter):包括包括包括包括2626个字母的大小写、个字母的大小写、个字母的大小写、个字母

28、的大小写、0909的数字、空格、特殊字符等等。的数字、空格、特殊字符等等。的数字、空格、特殊字符等等。的数字、空格、特殊字符等等。例:例:例:例:signal a:signal a:character;character;.a=a;a=a;字符串(字符串(字符串(字符串(StringString):):):):用双引号括起来的一组字符序列。用双引号括起来的一组字符序列。用双引号括起来的一组字符序列。用双引号括起来的一组字符序列。时间(时间(时间(时间(TIMETIME):):):):是一个物理量数据。是一个物理量数据。是一个物理量数据。是一个物理量数据。例:例:例:例:signal a:sig

29、nal a:string;string;.a=“work”;a=“work”;例:例:例:例:signal a:time;signal a:time;.a=10 us;a=10 us;自然数和正整数:自然数和正整数:自然数和正整数:自然数和正整数:自然数(自然数(自然数(自然数(NaturalNatural):大于或等于零的整数:大于或等于零的整数:大于或等于零的整数:大于或等于零的整数 正整数(正整数(正整数(正整数(PositivePositive):):):):大于零的整数大于零的整数大于零的整数大于零的整数VHDL VHDL 的的 标标 识识 符符第一个字符必须是字母;第一个字符必须是

30、字母;第一个字符必须是字母;第一个字符必须是字母;最后一个字符不能是下划线;最后一个字符不能是下划线;最后一个字符不能是下划线;最后一个字符不能是下划线;不允许连续两个下划线;不允许连续两个下划线;不允许连续两个下划线;不允许连续两个下划线;VHDLVHDL的保留字不能用作标示符;的保留字不能用作标示符;的保留字不能用作标示符;的保留字不能用作标示符;大、小写字母等效。大、小写字母等效。大、小写字母等效。大、小写字母等效。entity 3encoder38 is port(a:in bit_vector(2 downto 0);y:out bit_vector(7 downto 0);end;

31、entity encoder38 is port(a:in bit_vector(2 downto 0);y:out bit_vector(7 downto 0);end;错误的标识符错误的标识符错误的标识符错误的标识符正确的标识符正确的标识符正确的标识符正确的标识符VHDL VHDL 的的 保保 留留 字字absabs;accessaccess;afterafter;aliasalias;allall;andand;architecturearchitecture;arrayarray;assertassert;attributeattribute;beginbegin;blockblock

32、;bodybody;bufferbuffer;busbus;casecase;componentcomponent;configurationconfiguration;constantconstant;disconnectdisconnect;downtodownto;elseelse;elsifelsif;endend;entityentity;exitexit;filefile;forfor;functionfunction;generategenerate;groupgroup;guardedguarded;genericgeneric;if if;impureimpure;inin;

33、intertialintertial;inoutinout;librarylibrary;linkagelinkage;literalliteral;looploop;mapmap;modmod;nandnand;newnew;nextnext;nornor;notnot;nullnull;ofof;on on ;openopen;oror;thersthers;outout;packagepackage;portport;postponedpostponed;procedureprocedure;processprocess;purepure;rangerange;recordrecord;

34、registerregister;rejectreject;remrem;reportreport;returnreturn;rolrol;rorror;selectselect;severityseverity;signalsignal;shsredshsred;slasla;sllsll;srasra;srlsrl;subtypesubtype;thenthen;toto;transporttransport;typetype;unaffectedunaffected;unitsunits;untilluntill;useuse;variablewaitvariablewait;whenwhen;whilewhile;withwith;xnorxnor;xorxor

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com