VHDL语言数据类型和对象.ppt

上传人:牧羊曲112 文档编号:6522943 上传时间:2023-11-08 格式:PPT 页数:25 大小:242.49KB
返回 下载 相关 举报
VHDL语言数据类型和对象.ppt_第1页
第1页 / 共25页
VHDL语言数据类型和对象.ppt_第2页
第2页 / 共25页
VHDL语言数据类型和对象.ppt_第3页
第3页 / 共25页
VHDL语言数据类型和对象.ppt_第4页
第4页 / 共25页
VHDL语言数据类型和对象.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《VHDL语言数据类型和对象.ppt》由会员分享,可在线阅读,更多相关《VHDL语言数据类型和对象.ppt(25页珍藏版)》请在三一办公上搜索。

1、1,第七讲 VHDL语言的对象,本讲知识点:VHDL文字规则VHDL的对象,2,VHDL语言要素,VHDL的文字规则,与其他计算机高级语言一样,VHDL也有自己的文字规则 VHDL文字主要包括数字和标识符。,1.标识符,标识符主要用来为端口、信号、变量、子程序、常数和参数等命名。,3,有效的字符:包括26个大小写英文字母,数字包括09 以及下划线“_”任何标识符必须以英文字母开头 下划线“_”的前后必须有英文字母或数字 标识符中的英语字母不分大小写 标识符的命名不能与保留字(关键字)相同,其规则如下:,例:_Decoder_1,2FFT,sig_#n,return,Decoder_1,FFT,

2、sig_n,Not_ACK,P84 例4-1,4,VHDL93标准在VHDL87基础上进行了扩展,为了便于区分,将VHDL87标准中的标识符称为短标识符,将扩展的标识符称为扩展标识符。扩展标识符规则如:P84,举例:P84 例4-2,1.标识符(续),5,2.数字,(1)整数:整数都是十进制的数 如:5,156E2(=15600),45_234_287(=45234287),(2)实数:实数也都是十进制的数,但必须带有小数点,如:88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499),6,(3)以数值基数表示的数:用这种方式表示的数

3、由五部分组成:基#整数#指数 第一部分:用十进制数标明数值进位的基数;第二部分:数值隔离符“#”;第三部分:表达的数值;第四部分:指数隔离符“#”;第五部分:用十进制数表示的指数部分,若为0可省略不写。,2.数字(续),7,例如:10#17#;-(表示第三部分为十进制数,等于17)16#FE#;-(表示第三部分十六进制数,等于254)2#1111_1110#;-(表示第三部分为二进制数,等于 254)8#376#;-(表示第三部分为八进制数,等于254)16#E#1;-(表示十六进制数,等于14161,等于224),8,3.字符和字符串,(1)字符是用单引号括起来的ASC码 一般情况下VHDL

4、对字母的大小写不敏感,但对字符的大小写是敏感的,例:A 和 a 是不同的。(2)字符串是用双引号括起来的字符序列 在VHDL中字符串常用来作为说明文字出现。例:“it is time out”,“ERROR”,“Both S and Q equal to 1”注意:“a”和 a是不同的,9,B:二进制基数符号,可以省略O:八进制基数符号X:十六进制基数符号(0F)采用位串的优点是为了增加源代码的可读性。,例:B1_1101_1110-二进制数数组,位矢数组长度是9O15-八进制数数组,位矢数组长度是6,4.位串,位串是用双引号括起来的数字序列,数字序列前面加上一个基数说明符:,10,XAD0-

5、十六进制数数组,位矢数组长度是12101_010_101_010-二进制数数组,位矢数组长度是120AD0-表达错误,缺X,4.位串(续),11,例:P85 例4-3,注意:写程序时,应用关键字时用大写,定义的标识符用小写。或者关键字用小写,定义的标识符用大写,以便于区分。,12,数据对象(DATA OBJECTS),VHDL是一种硬件描述语言,硬件电路的工作过程实际上是信号的传输和存储的过程,所以VHDL最基本的描述对象是信号。为了便于描述,还定义了另外三类数据对象:变量、常量和文件。,1.常量(CONSTANT),定义:常量也称常数,是指在设计实体中不会发生 变化的值。作用:增加了设计文件

6、的可读性和可维护性。,13,常量定义的一般表述:CONSTANT 常量名:数据类型:=表达式;例如:CONSTANT a,b:INTEGER:=2;例:P85 例4-4,注意:,常量可以在程序包、实体说明、结构体和进程的说明区域进行说明常量一旦被赋值就不能再改变,14,2.变量(VARIABLE),变量主要用于对暂时数据进行存储,它不能将信息带出对它作出定义的当前单元。定义变量的一般表述:VARIABLE 变量名:数据类型:=初始值;,常量所赋的值应与其所定义的数据类型一致,否则出错常量的使用范围取决于它被定义的位置。,15,例:VARIABLE a:STD_LOGIC;VARIABLE b,

7、c:INTEGER:=2;VARIABLE count1,count2,count3:INTEGER range 0 to 255:=0;例中定义a为标准逻辑位变量,b,c为整数型变量,初始值为2等。变量也可以被连续地进行赋值,变量的赋值采用的符号是“:=”,例2,3中的变量已赋给了初始值。,16,变量赋值格式:变量名:=表达式;例:a:=“1010101”;-位矢量赋值 b:=0;-位赋值 x:=100.0;-实数赋值,注意:(1)赋值语句右边的表达式必须是一个与目标变量具有相同数据类型的数值。(2)变量是一个局部量,只能在进程和子程序中使用。,17,(3)变量的赋值是一种理想化的数据传输,

8、是立即发生的,不存在任何延时的行为,不能用于硬件连线。(4)如果将变量用于进程之外,必须将它赋给一个相同类型的信号,即进程之间传递数据靠的是信号。P86 例4-6,18,3.信号(SIGNAL),信号是描述硬件系统的基本数据对象,代表电路内部各元件之间的连接线,是实体间动态交换数据的手段。信号定义语句格式:SIGNAL 信号名:数据类型:=初始值;,19,例:SIGNAL clk:std_logic:=0;SIGNAL a:integer range 0 to 15;SIGNAL data:std_logic_vector(15 downto 0);信号的初始值不是必须的,而且仅在VHDL的行

9、为仿真中有效;信号的使用和定义范围是实体、结构体和程序包。,20,信号赋值采用如下格式:信号名=表达式;例:x=9;y=x;,说明:同一信号不能在两个进程中赋值。在同一进程中,可以允许多次对同一信号赋值。即在同一进程中存在多个同名的信号被赋值。但是因为信号的赋值是有延时的,其结果只是最后的赋值语句被启动。,21,SIGNAL a,b,c,y,z:integer;PROCESS(a,b,c)BEGIN y=a*b;-不对y进行赋值 z=c-y;y=b;-y的最后赋值END PROCESS;,22,信号与变量赋值语句功能的比较,变量VARIABLE 基本用法:在进程中作为局部数据存储单元使用 适用

10、范围:只能在所定义的进程或子程序中使用 行为特性:赋值是没有延迟的 在进程中是立即赋值 赋值符号:用“:=”表示,23,信号SIGNAL 基本用法:在电路中作为信号连线使用 适用范围:在整个结构体内的任何地方都能适用 行为特性:赋值具有一定的延迟 在进程中,只在进程的最后才对信号赋值 代入符号:用“=“表示注:初始赋值时仍采用”:=“,且不可附加延时。,24,label1:processvariable a,b:integer;begin wait until clk=1;a:=10;b:=20;a:=b;b:=a;end process;,signal a,b:integer;label2:process(a,b)begin a=10;b=20;wait for 10ns a=b;b=a;wait for 10nsend process;,分析下面两个程序中a,b的结果,25,a=20,b=20;a=20,b=10,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号