版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VHDL字符及数据类型,1,VHDL词法规则与标识符 VHDL语言的数据类型,VHDL的语言要素,作为硬件描述语言的基本结构元素,主要有: 数据对象 数据类型 各类操作数及运算操作符,VHDL词法规则与标识符,而这些基本元素都是由VHDL文字组成,而VHDL文字主要包括词法构成(注释,数字,字符(串),下标)和标识符。,词法规则 注释 为了提高VHDL源程序的可读性,在VHDL中可以写入注释。 注释以- -开头直到本行末尾的一段文字。在quartus中可以看见,敲入- -之后,后面字体的颜色就发生改变。 注释不是VHDL设计描述的一部分,编译后存入数据库中的信息不包含注释。,注释举例: Q:O
2、UT STD_LOGIC_VECTOR( 0 TO 11 ); -A/D转换数据输出显示(行注释) -SRAM 数据写入控制状态机(段注释) WRIT_STATE:PROCESS(clk,rst) -SRAM写入控制状态机时序电路进程,数字型文字可以有多种表达方式:可以是十进制数,也可以表示为二进制、八进制或十六进制等为基的数,可以是整数,也可以是含有小数点的浮点数。,数字,十进制整数表示法: 如: 012 5 78_456 (=78456) 2E6 在相邻数字之间插入下划线,对十进制数值不产生影响,仅仅是为了提高文字的可读性。允许在数字之前冠以若干个0,但不允许在数字之间存在空格。,以基表示
3、的数: 用这种方式表示的数由五个部分组成。 第一部分,用十进制数标明数值进位的基数; 第二部分,数值隔离符号“#”; 第三部分,表达的文字; 第四部分,指数隔离符号“#”; 第五部分,用十进制表示的指数部分,这一部分的数如 果为0可以省去不写。,SIGNAL d1,d2,d3,d4,d5: INTEGER RANGE 0 TO 255; d1 = 10#170# ; - (十进制表示,等于 170) d2 = 16#FE#; - (十六进制表示,等于 254) d3 =2#1111_1110#; -(二进制表示,等于 254) d4 = 8#376#; - (八进制表示,等于 254) d5
4、= 16#E#E1 ; - (十六进制表示,等于2#1110000#,等于224),实数:实数必须带有小数点。 如: 12.0 0.0 3.14 6_741_113.666 52.6 E-2 物理量文字:综合器不支持物理量文字的综合。 如: 60 s(秒) 100 m (米) 10 A(安培),字符和字符串 字符 用单引号引起来的ASC字符,可以是数值,也可以是符号或字母。 如: E, e, $, 23, A 字符串 一维的字符数组,需放在双引号中。有两种类型的字符串:文字字符串和位矢量字符串。 文字字符串是用双引号引起来的一串文字。 如: “FALSE”, “X”, “THIS IS END
5、”,位矢量字符串 被双引号引起来的扩展的数字序列,数字序列前冠以基数说明符。 基数符有“B”、“O”、“X”,他们的含义如下。 B:二进制基数符号,表示二进制位0或1,在字符串中每一个位表示一个BIT。 O:八进制基数符号,在字符串中每一个数代表一个八进制数,即代表一个3位(BIT)的二进制数。 X:十六进制基数符号,代表一个十六进制数,即代表一个4位二进制数。 例如: B“1011_1111”, O“152”, X“F821”,下标名 下标名用于指示数组型变量或信号的某一元素。 SIGNAL a,b:BIT _VECTOR(0 TO 3); SIGNAL s:INTEGER RANGE 0
6、TO 2; SIGNAL x,y:BIT; x = a (s); y = b (3); 上例中,a (s)为一下标语句,s是不可计算的下标名,只能在特定情况下进行综合;b (3)的下标为3,可以进行综合。,s,3 均为下标!,标识符是最常用的操作符,可以是常数、变量、信号、端口、子程序或参数的名字。 标识符规则是VHDL语言中符号书写的一般规则,为EDA工具提供了标准的书写规范。 VHDL87版本标识符为短标识符 VHDL93版标识符为扩展标识符。,标识符,短标识符 VHDL短标识符需遵守以下规则: 必须以英文字母开头; 英文字母、数字(09)和下划线都是有效的字符; 短标识符不区分大小写;
7、下划线(_)的前后都必须有英文字母或数字。,一般的,在书写程序时,应将VHDL的保留字大写或黑体,设计者自己定义的字符小写,以使得程序便于阅读和检查。尽管VHDL仿真综合时不区分大小写,但一个优秀的硬件程序设计师应该养成良好的习惯。,例: 合法的标识符: S_MACHINE,present_state,sig3 不合法的标识符: present-state,3states,cons_,_now , entity , _sig,为什么它们是不合法的?,扩展标识符 扩展标识符的识别和书写有下面的规则: 用反斜杠来界定扩展标识符 如 control_machine,s_block 等都是合法的扩展标
8、识符 扩展标识符允许包含图形符号和空格 如 s string_1:= “a b c d”;,时间是一个物理量数据。完整的时间量数据应包含整数和单位两部分,而且整数和单位之间至少应留一个空格的位置。 例如55 sec,2 min等。,时间(TIME),字符串(STRING),在包集合STANDARD中给出了时间的预定义,其单位为fs,ps,ns,s,ms,sec,min和hr。例如:20 s,100 ns,3 sec。 在系统仿真时,时间数据特别有用,用它可以表示信号延时,从而使模型系统能更逼近实际系统的运行环境。,错误等级类型数据用来表征系统的状态,共有4种:note(注意),warning(
9、警告),error(出错),failure(失败)。 在系统仿真过程中可以用这4种状态来提示系统当前的工作情况,从而使设计人员随时了解当前系统工作的情况,并根据系统的不同状态采取相应的对策。,错误等级(SEVERITY LEVEL),这两种数据是整数的子类,NATURAL类数据为取0和0以上的正整数;而POSITIVE 则只能为正整数。,上述10种数据类型是VHDL语言中标准的数据类型,在编程时可以直接引用。 如果用户需使用这10种以外的数据类型,则必须进行自定义。但大多数的CAD厂商已在包集合中对标准数据类型进行了扩展。 例如,数组型数据等,请同学们注意。,大于等于零的整数NATURAL),
10、正整数(POSITIVE),标准化数据类型 IEEE93增加了多值逻辑包STD_LOGIC_1164,使得“STD_LOGIC”数据具有9种不同的值。 其定义如右所示:,IEEE预定义标准,TYPE STD_LOGIC IS ( U, - - 初始值 X, - - 不定 0, - - 0 1, - - 1 Z, - - 高阻 W, - - 弱信号不定 L, - - 弱信号0 H, - - 弱信号1 - - 不可能情况 );,有符号数和无符号数,在ieee库中有一个名为std_logic_arith的包集,其中包括有符号数(signed)和无符号数(unsigned ) 例 SIGNAL x:
11、signed(7 DOWNTO 0); SIGNAL y: signed( 0 TO 7 ); 注意:signed 和unsigned的合法和非法运算,同时和标准逻辑位和逻辑位矢量一样,应用前必须进行包声明。,可以由用户定义的数据类型有: 枚举(ENUMERATED)类型;,用户自定义的数据类型,TYPE bit IS (0,1);,TYPE state IS (idle, forward, backward, stop);,TYPE bit_vector IS ARRAY( NATURAL RANGE) OF BIT;,TYPE my_logic IS (0,1,z);,TYPE color
12、 IS (red, green, blue, white);,整数(INTEGER)类型,TYPE integer IS RANGE -2147483647 TO + 2147483647,TYPE natural IS RANGE 0 TO + 2147483647,TYPE my_integer IS RANGE -32 TO + 32,TYPE student_grade IS RANGE 0 TO 100,子类型,在原有的已定义数据类型基础上加上一些约束条件,可以定义数据类型的子类型。,SUBTYPE natural IS INTEGER RANGE 0 TO INTEGERS HIG
13、H;,SUBTYPE my_color IS color RANGE red TO blue;,SUBTYPE my_logic IS STD_lOGIC RANGE 0 TO z;,数组(ARRAY)类型,数组(array)是将相同数据类型的数据结合在一起形成的一种新的数据类型,它可以是一维的,也可以是二维的。,数组定义语句格式如下: TYPE 数组名 IS ARRAY (数组范围)OF 数据类型 ;,TYPE row IS ARRAY(7 DOWNTO 0 ) OF STD_LOGIC -一维数组,TYPE matrix IS ARRAY(0 TO 2 ) OF row -1*1维数组,T
14、YPE matrix IS ARRAY(0 TO 2 ) OF STD_LOGIC_VECTOR(7 DOWNTO 0) -1*1维数组,TYPE matrix IS ARRAY(0 TO 3,7 DOWNTO 0 ) OF STD_LOGIC -二维数组,0 1 0 0 0 1 1 1,0 1 0 0 0 1 1 1,0 1 0 1 0 1 0 0,1 0 0 1 1 0 1 0,1D*1D数组,1D数组,2D数组,端口数组类型,由于预定义的数据类型都没有超过一维。然而在定义电路的输入输出端口时,又是需要把端口定义为矢量阵列,而在entity中不允许使用TYPE进行类型定义,所以必须在包集合
15、中进行设计。,LIBRARY IEEE; USE IEE.STD_LOGIC_1164.ALL; PACKAGE my_data_types IS TYPE vector_array is ARRAY(NATIRAL) OF STD_LOGIC_VECTOR(7 DOWNTO 0); END my_data_types,在包集合中定义了端口数组类型,LIBRARY IEEE; USE IEE.STD_LOGIC_1164.ALL; USE IEE.work.my_data_types.ALL; ENTITY mux IS PORT( inp:IN vector_array(0 TO 3); )
16、; END mux; ;,在实体中声明端口数组类型,记录(RECORDE)类型,记录类型和数组类型有些相似,RECORD类型内部可以包含不同类型的数据,而ARRAY只能包含相同类型的数据。,例 TYPE birthday IS RECORD day: INTEGER RANGE 1 TO 31 month:month_name; END RECORD;,定义记录数据类型,用函数进行类型转换,VHDL语言中,程序包中提供了变换函数,这些程序包有3种,每个程序包中的变换函数不一样。现列表如下。,STD_LOGIC_1164包集合函数 函数 TO_ STDLOGICVECTOR(A): -由BIT_
17、VECTOR转换为STD_LOGIC_VECTOR 函数 TO_ BITVECTOR(A): -由STD_LOGIC_VECTOR转换为BIT_VECTOR 函数 TO_ STDLOGIC(A): -由BIT转换为STD_LOGIC 函数 TO_ BIT(A): -由STD_LOGIC转换为BIT,STD_LOGIC_ARITH包集合函数 函数:CONV_STD_LOGIC_VECTOR (A,位长) : -由UNSINGED,SINGED转换为 STD_LOGIC_ UNSINGED包集合 函数:CONV_INTEGER (A): -由STD_LOGIC_VECTOR转换为INTEGER S
18、TD_LOGIC_ UNSINGED包集合 函数:CONV_INTEGER (A) : -由INTEGER,UNSINGED,SINGED转换为 STD_LOGIC_VECTOR,类型标记就是类型的名称。类型标记法适合那些关系密切的标量类型之间的类型转换,即整数和实数的类型转换。 例如: VARIABLE I:INTEGER; VARIABLE R:REAL; I := INTEGER(R); R := REAL(I);,类型标记法实现类型转换,就模拟效率而言,利用常数实现类型转换比利用类型转换函数的效率更高。 下面的例子使用常数把类型为STD_LOGIC的值转换为BIT型的值。,常数实现类型转换,例: L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年天津市蓟州区面向甘肃省天祝县对口招聘工作人员备考题库含答案详解(黄金题型)
- 2026浙大宁波理工学院招聘派遣制工作人员1人备考题库及完整答案详解
- 2026浙江杭州市临空建设投资集团有限公司“星火备考题库”校园招聘37人备考题库带答案详解(完整版)
- 2026年陕西省安康市蚕种场有限公司招聘(5人)笔试模拟试题及答案解析
- 2026中国中煤能源集团有限公司华中分公司第一次招聘15人备考题库含答案详解(黄金题型)
- 2026江门公共资源交易控股集团有限公司基层业务文员岗招聘备考题库附答案详解
- 2026浙江杭州市西湖职业高级中学招聘中西面点培训教师(非事业)1人备考题库附答案详解(典型题)
- 2026锦泰财产保险股份有限公司重庆分公司招聘人伤查勘岗1人备考题库附答案详解(a卷)
- 2026江苏南京航空航天大学金城学院招聘备考题库附答案详解
- 慈善公益领域资金透明承诺函(5篇)
- 高中数学复习专题08 排列组合与二项式定理(学生版)
- 红外线光浴治疗
- 教学课件-积极心理学(第2版)刘翔平
- 包钢集团笔试题库2025
- 《橡胶沥青应力吸收层应用技术指南》
- 钻孔灌注桩试桩方案
- 输血相关传染病病原学标志物检测(临床输血检验课件)
- 【机电实务】达为 教材精讲班课件 65-第3章-3.4-智能化系统工程施工技术(四)
- 五年级下册综合实践活动课件-中国结-吉祥结
- 政府项目融资合同模板
- 华南理工大学《神经网络与深度学习》2023-2024学年期末试卷
评论
0/150
提交评论