版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第二章第二章 VHDLVHDL语言元素语言元素 2.1 VHDL语言的客体语言的客体2.2 VHDL语言的数据类型语言的数据类型 2.3 VHDL数据类型转换数据类型转换 2.4 VHDL词法规则与标识符词法规则与标识符 2.1 VHDL2.1 VHDL语言的客体语言的客体 VHDL语言中,可以赋予一个质的对象就称为客体。客语言中,可以赋予一个质的对象就称为客体。客体主要包括以下三种:变量(体主要包括以下三种:变量(VARIABLE)、常量)、常量(CONSTANT)、信号()、信号(SIGNAL)。)。 2.1.1 常量(常量(CONSTANT)(常数常数)定义一个常数主要是为了使设计实体
2、中的某些量易定义一个常数主要是为了使设计实体中的某些量易于阅读和修改。常数说明就是对某一常数名赋予一于阅读和修改。常数说明就是对某一常数名赋予一个固定的值。通常在程序开始前进行赋值,该值的个固定的值。通常在程序开始前进行赋值,该值的数据类型在说明语句中说明。数据类型在说明语句中说明。常数说明语句格式为:常数说明语句格式为:CONSTANT 常数名常数名:数据类型:数据类型 := 表达式;表达式; 例如:例如:CONSTANT Vcc : REAL := 5.0;CONSTANT Fbus : BIT_VECTOR := “1011”; CONSTANT Delay : TIME := 10ns
3、; 注注:常量是一个恒定不变的值,一旦做了数据类型和常量是一个恒定不变的值,一旦做了数据类型和赋值定义,它在程序中就不能再改变。赋值定义,它在程序中就不能再改变。 2.1.2 变量(变量(VARIABLE)变量只能在进程和子程序中用,是一个局部量,不能将信变量只能在进程和子程序中用,是一个局部量,不能将信息带出对它做出定义的当前设计单元。与信号不同,变量息带出对它做出定义的当前设计单元。与信号不同,变量的赋值是理想化数据传输,其赋值是立即生效的,不存在的赋值是理想化数据传输,其赋值是立即生效的,不存在任何的延时行为。任何的延时行为。变量定义语句的格式为:变量定义语句的格式为:VARIABLE
4、变量名变量名 : 数据类型数据类型 : 约束条件约束条件 := 初始值;初始值;例如:例如:VARIABLE n: INTEGER RANGE 0 TO 15 := 2;VARIABLE a: INTEGER; 变量赋值语句的格式为:变量赋值语句的格式为:目标变量名目标变量名 := 表达式;表达式;赋值语句赋值语句 “:=” 右边的表达式必须与目标变量具有相同右边的表达式必须与目标变量具有相同的数据类型,这个表达式可以是一个运算表达式也可以的数据类型,这个表达式可以是一个运算表达式也可以是一个数值。变量赋值语句左边的目标变量可以是单值是一个数值。变量赋值语句左边的目标变量可以是单值变量,也可以
5、是变量的集合。变量,也可以是变量的集合。例如定义变量:例如定义变量:VARIABLE a,b := REAL; VARIABLE x,y := BIT_VECTOR(0 TO 7);); 2.1.3 信号(信号(SIGNAL)信号是电子电路内部硬件连接的抽象。它可以作为设计实信号是电子电路内部硬件连接的抽象。它可以作为设计实体中的并行语句模块间交流信息的通道。体中的并行语句模块间交流信息的通道。信号及其相关的信号及其相关的延时语句延时语句明显地体现了硬件系统的特征。明显地体现了硬件系统的特征。信号定义语句的格式为:信号定义语句的格式为:SIGNAL 信号名信号名:数据类型:约束条件:数据类型:
6、约束条件 := 表达式;表达式; 例如:例如:SIGNAL gnd :BIT := 0; SIGNAL data :STD_LOGIC_VECTOR (7 DOWNTO 0); 信号赋值语句表达式为:信号赋值语句表达式为:目标信号名目标信号名 =表达式;表达式;符号符号 “=” 表示赋值操作,即将数据信息传入。数据信息传表示赋值操作,即将数据信息传入。数据信息传入时可以设置延时过程,这与器件的实际传播延时十分接近。入时可以设置延时过程,这与器件的实际传播延时十分接近。因此信号值的代入采用因此信号值的代入采用“=”代入符,而不是像变量赋值时那代入符,而不是像变量赋值时那样用样用“:”。但。但信号
7、信号定义时定义时初始初始赋值符号赋值符号“:”,即仿真的,即仿真的时间坐标是从赋初始值开始的。时间坐标是从赋初始值开始的。信号赋值语句举例:信号赋值语句举例:x = y;a = 1;s1 = s2 AFTER 10 ns;注意注意:变量和信号都必须先变量和信号都必须先定义定义,后赋值。注意赋值符后赋值。注意赋值符“0,1/H =1,OTHERS=0););SIGNAL b:BIT; SIGNAL s:STD_ULOGIC; BEGIN b= typecon_con (s); 2.4 VHDL操作符操作符 与其他程序设计语言相似,与其他程序设计语言相似,VHDL中的表达式也是由运算符将中的表达式
8、也是由运算符将基本元素连接起来形成。这里的基本元素包括对象名、文字、基本元素连接起来形成。这里的基本元素包括对象名、文字、函数调用及用括号括起来的表达式。函数调用及用括号括起来的表达式。在在VHDL语言中共有语言中共有4类操作符类操作符,可以分别进行,可以分别进行逻辑运算逻辑运算(LOGICAL)、)、关系运算关系运算(RELATIONAL)、)、算术运算算术运算(ARITHMETIC)和)和并置运算并置运算(CONCATENATION)。需要)。需要指出的是指出的是操作符操作的对象是操作数,且操作数的类型应该和操作符操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致操作符所要求
9、的类型相一致。另外,运算。另外,运算操作符是有优先级的操作符是有优先级的,例如,逻辑运算符例如,逻辑运算符not,在所有操作符中优先级最高。,在所有操作符中优先级最高。 1.逻辑运算符逻辑运算符在在VHDL语言中,共有语言中,共有6种逻辑运算符,他们分别是:种逻辑运算符,他们分别是: NOT 取反;取反; AND 与;与; OR 或;或; NAND 与非;与非; NOR 或非;或非; XOR 异或。异或。 这这6种逻辑运算符可以对种逻辑运算符可以对“STD_LOGIC ”和和“BIT”等逻等逻辑型数据、辑型数据、“STD_LOGIC _VECTOR”逻辑型数组及逻辑型数组及布布尔数据尔数据进行
10、逻辑运算。进行逻辑运算。必须注意,运算符的左边和右边,必须注意,运算符的左边和右边,以及代入的信号的数据类型必须是相同的以及代入的信号的数据类型必须是相同的。 2.算术运算符算术运算符VHDL语言中有语言中有5类算术运算符,他们分别是:类算术运算符,他们分别是:求和操作符求和操作符: (加)、(减)(加)、(减)求积操作符求积操作符:*(乘)、(乘)、/(除)、(除)、MOD(求模)、(求模)、REM(取余)(取余)符号操作符符号操作符: (正)、(负)(正)、(负)混合操作符混合操作符: *(指数)、(指数)、ABS(取绝对值)(取绝对值)移位操作符移位操作符:SLL(逻辑左移)、(逻辑左移
11、)、SRL(逻辑右移)、(逻辑右移)、SLA(算术左移)、(算术左移)、SRA(算术右移)、(算术右移)、ROL(逻辑循环左移)、(逻辑循环左移)、ROR逻辑循环右移)逻辑循环右移) 3.关系运算符关系运算符VHDL语言中有语言中有6种关系运算符,他们分别是:种关系运算符,他们分别是: = 等于;等于; /= 不等于;不等于; 小于;小于; 大于;大于; = 大于等于;大于等于;4.并置运算符并置运算符& 连接连接 SIGNAL g,h,i:STD_LOGIC;SIGNAL c,d,e:STD_LOGIC _VECTOR(1 TO 0);); d = i & NOT h;- -
12、元素与元素并置,形成长度为元素与元素并置,形成长度为2的数组的数组 a = c & d; - -数组与数组并置,形成长度为数组与数组并置,形成长度为4的数组的数组 5.VHDL操作符的优先顺序操作符的优先顺序 运算符运算符 优先级优先级NOT,ABS,* 最高优先级最高优先级 *,/,MOD,REM +(正号),(负号)(正号),(负号)+,& SLL,SLA,SRL,SRA,ROL,ROR =,/=,= AND,OR,NAND,NOR,XOR,XNOR 最低优先级最低优先级 2.4 VHDL词法规则与标识符词法规则与标识符 2.4.1 词法规则词法规则1.注释注释 为了提高为
13、了提高VHDL源程序的可读性,在源程序的可读性,在VHDL中可以写入注释。中可以写入注释。注释以注释以- -开头直到本行末尾的一段文字。在开头直到本行末尾的一段文字。在MUX+PLUS中中可以看见,可以看见,敲入敲入- -之后,后面字体的颜色就发生改变之后,后面字体的颜色就发生改变。注释不注释不是是VHDL设计描述的一部分,编译后存入数据库中的信息不包设计描述的一部分,编译后存入数据库中的信息不包含注释。含注释。 注释举例:注释举例:Q:OUT STD_LOGIC _VECTOR(11 DOWNTO 0););-A/D转换数据输出显示(转换数据输出显示(行行注释注释)-SRAM 数据写入控制状
14、态机(数据写入控制状态机(段注释段注释)WRIT_STATE:PROCESS(clk,rst)-SRAM写入控制状态机时序电路进程写入控制状态机时序电路进程 2.数字数字数字型文字可以有多种表达方式:可以是十进制数,也可以表示为二进制、数字型文字可以有多种表达方式:可以是十进制数,也可以表示为二进制、八进制或十六进制等为基的数,可以是整数,也可以是含有小数点的浮点数。八进制或十六进制等为基的数,可以是整数,也可以是含有小数点的浮点数。现举例如下。现举例如下。十进制整数表示法:如十进制整数表示法:如012 5 78_456 (=78456) 2E6在相邻数字之间插入下划线,对十进制数值不产生影响
15、,仅仅是为了提高文在相邻数字之间插入下划线,对十进制数值不产生影响,仅仅是为了提高文字的可读性。允许在数字之前冠以若干个字的可读性。允许在数字之前冠以若干个0,但不允许在数字之间存在空格,但不允许在数字之间存在空格。以基表示的数:以基表示的数:用这种方式表示的数由五个部分组成。第一部分,用十进用这种方式表示的数由五个部分组成。第一部分,用十进制数标明数值进位的基数;第二部分,数值隔离符号制数标明数值进位的基数;第二部分,数值隔离符号“#”;第三部分,表达;第三部分,表达的文字;第四部分,指数隔离符号的文字;第四部分,指数隔离符号“#”;第五部分,用十进制表示的指数部;第五部分,用十进制表示的指
16、数部分,这一部分的数如果为分,这一部分的数如果为0可以省去不写。如可以省去不写。如2#111_1011# 8#1473# 16#A8#E1 016#F.01#E+4对以基表示的数而言,相邻数字间插入下划线不影响数值。基的最小数为对以基表示的数而言,相邻数字间插入下划线不影响数值。基的最小数为2,最大数为最大数为16,以基表示的数中允许出现,以基表示的数中允许出现A至至F的字母,大小写字母意义无区的字母,大小写字母意义无区别。别。 实数:实数必须带有小数点。如实数:实数必须带有小数点。如 12.0 0.0 3.14 6_741_113.666 52.6 E2物理量文字:综合器不支持物理量物理量文
17、字:综合器不支持物理量文字文字的综合。如的综合。如 60 s(秒)(秒) 100 m (米)(米) 177 A(安培)(安培) 3.字符和字符串字符和字符串字符是用单引号引起来的字符是用单引号引起来的ASC字符,可以是数值,也字符,可以是数值,也可以是符号或字母,如可以是符号或字母,如 E, e, $, 23, A 字符串是一维的字符数组,需放在双引号中。有两种类字符串是一维的字符数组,需放在双引号中。有两种类型的字符串:文字字符串和位矢量字符串。型的字符串:文字字符串和位矢量字符串。文字字符串是用双引号引起来的一串文字。如文字字符串是用双引号引起来的一串文字。如 “FALSE”, “X”,
18、“THIS IS END” 位矢量字符串位矢量字符串是被双引号引起来的扩展的数字序列,数字序是被双引号引起来的扩展的数字序列,数字序列前冠以基数说明符。基数符有列前冠以基数说明符。基数符有“B”、“O”、“X”,他们的他们的含义如下。含义如下。B:二进制基数符号,表示二进制位二进制基数符号,表示二进制位0或或1,在字符串中每一个,在字符串中每一个位表示一个位表示一个BIT。O:八进制基数符号,在字符串中每一个数代表一个八进制数,八进制基数符号,在字符串中每一个数代表一个八进制数,即代表一个即代表一个3位(位(BIT)的二进制数。)的二进制数。X:十六进制基数符号,代表一个十六进制数,即代表一个
19、十六进制基数符号,代表一个十六进制数,即代表一个4位二进制数。位二进制数。例如:例如: B“1011_1111”, O“152”, X“F821” 4.下标名下标名下标名用于指示数组型变量或信号的某一元素。下标名用于指示数组型变量或信号的某一元素。SIGNAL a,b:BIT _VECTOR(0 TO 3););SIGNAL s:INTEGER RANGE 0 TO 2;SIGNAL x,y:BIT;x = a (s);y = b (3);上例中,上例中,a (s)为一下标语句,为一下标语句,s是不可计算的下标名,只能在是不可计算的下标名,只能在特定情况下进行综合;特定情况下进行综合;b (3
20、)的下标为的下标为3,可以进行综合。,可以进行综合。 2.4.2 标识符标识符 标识符是最常用的操作符,可以是常数、变量、信号、端口、标识符是最常用的操作符,可以是常数、变量、信号、端口、子程序或参数的名字。标识符规则是子程序或参数的名字。标识符规则是VHDL语言中符号书写的语言中符号书写的一般规则,为一般规则,为EDA工具提供了标准的书写规范。工具提供了标准的书写规范。VHDL93对对VHDL87版本的标识符语法规则进行了扩展,通常称版本的标识符语法规则进行了扩展,通常称VHDL87版本标识符为短标识符,版本标识符为短标识符,VHDL93版标识符为扩展标识符。版标识符为扩展标识符。1.短标识
21、符短标识符VHDL短标识符需遵守以下规则:短标识符需遵守以下规则:(1)必须以)必须以英文字母开头英文字母开头;(2)英文字母英文字母、数字(、数字(09)和)和下划线下划线都是有效的字符;都是有效的字符;(3)短标识符不区分大小写;)短标识符不区分大小写;(4)下划线()下划线(_)的前后都必须有英文字母或数字。)的前后都必须有英文字母或数字。 一般的,在书写程序时,应将一般的,在书写程序时,应将VHDL的的保留字保留字大写或黑体大写或黑体,设计者设计者自己定义的字符小写自己定义的字符小写,以使得程序,以使得程序便于阅读和检查便于阅读和检查。尽管尽管VHDL仿真综合时不区分大小写,但一个优秀的硬件程仿真综合时不区分大小写,但一个优秀的硬件程序设计师应该养成良好的习惯。序设计师应该养成良好的习惯。例:例:一些合法的标识符:一些合法的标识符:S_MACHINE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光学数控磨工持续改进能力考核试卷含答案
- 公厕保洁员安全技能测试竞赛考核试卷含答案
- 磁法勘探工岗中质量综合考核试卷含答案
- 2026年休闲上衣行业洞察报告及未来五至十年发展趋势报告
- 2026年嵌入式处理器行业洞察报告及未来五至十年发展趋势报告
- 2026年比较难的护考题目及答案
- 2025-2026粤教版五年级信息测试题
- 安全知识竞赛介绍
- 2026年七年级上册第6章 平面图形的初步认识 第6套 能力提高
- 2026年新能源技术与环境保护试题及答案
- 煤矿机电运输培训课件
- 蜱虫防治教学课件
- GB/T 17456.2-2025球墨铸铁管、管件和附件外表面锌基涂层第2部分:带终饰层的富锌涂料涂层
- 工地车辆作业安全培训课件
- 比亚迪组长培训答辩
- 腰椎小关节紊乱
- 环境科学与工程专业职业生涯规划书4100字数
- 2025民航招飞英语测试题及答案
- 血浆置换操作规范与流程解析
- 小学生认识农具课件
- (中级)四级有机合成工职业技能鉴定理论考试题库(含答案)
评论
0/150
提交评论