已阅读5页,还剩96页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 VHDL语言的语言要素 5VHDL语言的语言要素 语言要素是组成编程语句的基本单元 主要有 数据对象 Object 数据类型 Type 操作数 Operands 运算操作符 Operator 2 任何一种程序设计语言都有自己的一套书写符号和语法规则 这些符号和语法规则构成了程序设计语言的文字规则 VHDL语言的语言要素 5 1VHDL语言的文字规则 1 数字型文字 数字型文字有多种表达方式 包括 整数型文字 实数型文字 数制基数型文字 物理量型文字 3 VHDL语言的语言要素 1 数字型文字 1 整数型文字 整数型文字都是十进制数 由数字和下划线组成 例如 0 6 876 516E2 23 456 789156E2 1560023 456 789 23456789 4 VHDL语言的语言要素 1 数字型文字 2 实数型文字 也是十进制数 但必须带小数点 由数字 小数点和下划线组成 例如 98 76 12 345 678 986 54 3 055 66E 2 0 012 345 678 986 54 12345678 9865455 66E 2 0 5566 5 VHDL语言的语言要素 1 数字型文字 3 数值基数型文字 用数制基数表示的文字 格式 数制 数值 E数值 由五部分组成 用十进制数表明数制的基数 数制隔离符号 用数值表达的文字 指数隔离符号 用十进制表示的指数部分 6 VHDL语言的语言要素 1 数字型文字 3 数值基数型文字 用数制基数表示的文字 例如 10 234 2 1101 1110 8 374 16 E E116 F 01 E 2 十进制数表示 等于234 二进制数表示 等于222 八进制表示 等于252 十六进制数表示 等于224 十六进制数表示 等于3841 00 7 VHDL语言的语言要素 1 数字型文字 物理量型文字用来表示时间 长度等物理量 例如 50s100m1k 100mA 表示50秒 时间 表示100米 长度 表示1千欧姆 电阻 表示100毫安培 电流 4 物理量型文字 8 VHDL语言的语言要素 2 字符串型文字 字符是用单引号括起来的ASCII字符 可以是数字 也可以是字母或符号 例如 0 2 A a 等 字符串是一维的字符数组 用双引号括起来 分为文字字符串和数值字符串 1 文字字符串用双引号括起来的一维字符文字 例如 ABC ERROR A B 9 VHDL语言的语言要素 2 数值字符串 数值字符串也称为矢量 是预定义的数据类型BIT的一位数组 格式 数制基数符号 数值字符串 数制基数符号 B 二进制基数符号 O 八进制基数符号 X 16进制基数符号 例如 B 111010110 位矢量数组 长度为9O 12 等效B 001010 长度为6X BC6 等效B 101111000110 长度为12 10 VHDL语言的语言要素 3 标识符 标识符是设计人员为书写程序所规定的一些词 用来给常数 变量 信号 端口 子程序 实体和结构体等定义的名称 VHDL语言的标准版本分为VHDL 87版和VHDL 93版 VHDL 87版的标识符称为短标识符或标识符 VHDL 93版的标识符是基于VHDL 87标准扩展后形成的 故称作扩展标识符 11 VHDL语言的语言要素 3 标识符 短标识符为VHDL 87版规定的标识符 但VHDL 93版同样支持短标识符 1 短标识符 规则 以字母开头 后跟若干字母 数字或下划线构成 标识符不能以下划线结尾 标识符中的下划线不能连续使用 标识符中的字母不分大小写 VHDL的保留字不能用作标识符 例如 h adder mux21 example为合法标识符2adder mux21 ful adder adder 为非法标识符 12 VHDL语言的语言要素 3 标识符 满足VHDL 93版标准的标识符 2 扩展标识符 规则 扩展标识符用反斜杠 定界 如 ABOY 扩展标识符允许以数字开头 如 74LS193 扩展标识符允许使用空格符 图形符号及两个以上的下划线 如 SIG N 扩展标识符仍区分大小写字母 如 END 不同于 end 扩展标识符允许使用保留字 如 END 扩展标识符与同名的短标识符不同 如 CAD 不同于CAD 13 VHDL语言的语言要素 3 标识符 3 下标名 用于指示数组型变量或信号的某一元素 格式 标识符 表达式 注意 表达式的数值必须在数组元素下标号范围以内 并且必须是可计算的 例如 a 2 b n 14 VHDL语言的语言要素 3 标识符 4 段名 多个下标名的组合 用于指示数组型变量或信号的某一段元素 格式 标识符 表达式方向表达式 标识符 数组类型信号或变量方向 TO 数组下标序号由低到高DOWNTO 数组下标序号由高到低 例如 D 7DOWNTO0 表示数据总线D7 D0D 0TO7 表示数据总线D0 D7D 4TO6 表示数据总线D4 D6 15 VHDL语言的语言要素 3 标识符 5 保留字 保留字又称关键字 是具有特殊含义的标识符 只能作为固定的用途 不能直接作为标识符 扩展标识符除外 16 VHDL语言的语言要素 3 标识符 5 保留字 17 VHDL语言的语言要素 4 注释 VHDL语言与其他程序设计语言一样 为了便于理解和阅读 常在编写的程序中加上注释 VHDL语言的注释符用双减号 表示 注释语句以注释符引导 到行尾结束 注释可以加在程序语句结束符 之后 也可以加在空行处 18 VHDL语言除了具有一定的语法规则外 还定义了可以接受不同数据类型赋值的数据对象 VHDL语言的语言要素 5 2VHDL语言的数据对象 常量 CONSTANT 变量 VARIABLE 信号 SIGNAL 文件 FILE 数据对象主要有四种类型 19 常量为全局量 是指在设计描述过程中保持某一规定类型特定值不变的量 VHDL语言的语言要素 1 常量 CONSTANT 定义格式 规则 常量的定义应在程序开始前进行 常量一旦被赋值就不能再改变 常量所赋的值应和定义的数据类型一致 定义在程序包中的常量 可在调用此程序包的所有设计实体中使用 定义在设计实体内的常量 仅在该实体内使用 定义在某结构体中的常量 只能在该结构体使用 定义在结构体中某单元的常量 只能用于该单元 CONSTANT常量名 数据类型 表达式 20 VHDL语言的语言要素 1 常量 CONSTANT 例如 CONSTANTwidth INTEGER 16 CONSTANTdelay TIME 20ns CONSTANTfbus BIT VECTOR 11010111 CONSTANTVcc REAL 5 0 width是整数类型常量 值为16 delay是时间型常量 值为20ns fbus是位矢量型常数其值为11010111 Vcc是实数型常量 其值为5 0 21 变量为局部量 常用来存储中间数据 以便实现程序的算法 它只能在进程语句 函数语句和过程语句的结构中使用 变量的赋值是一种理想化的数据传输 即赋值是立即生效的 不存在任何延时的行为 VHDL语言的语言要素 2 变量 VARIABLE 定义格式 VARIABLE变量名1 变量名2 数据类型 初始值 例如 VARIABLEb INTEGER VARIABLEa INTEGER 2 定义b为整数型变量 定义a为整数型变量 初值为2 22 VHDL语言的语言要素 2 变量 VARIABLE 变量的使用规则 变量不能用于硬件连线和存储元件 变量赋值和初始化赋值都用 表示 变量的初值不是预设的 某一时刻只能有一个值 变量不能用于在进程间传递数据 仿真时 变量用于建模 综合时 变量充当数据的暂存 23 VHDL语言的语言要素 2 变量 VARIABLE 变量数值的改变是通过变量赋值来实现 变量赋值语句的格式 目标变量名 表达式 例如 VARIABLEx y REAL VARIABLEa b BITVECTOR 7DOWNTO0 x 100 0 y 1 5 x a 1011101 a 4TO7 1 0 1 0 b 0TO5 a 2TO7 24 信号是描述硬件系统的基本数据对象 它是电子电路内部硬件连接的抽象 可以作为设计实体中并行语句模块间的信息交流通道 信号是一个全局量 只有定义后才能使用 通常用于在结构体 程序包和实体说明中 VHDL语言的语言要素 3 信号 SIGNAL 信号定义格式 SIGNAL信号名 数据类型 初值 例如 SIGNALS0 STDLOGIC 0 SIGNALFA FB BIT SIGNALD STDLOOGICVECTOR 0TO15 定义一个标准逻辑位信号S0 初值为0 定义两个BIT位信号FA和FB 定义标准逻辑16位矢量信号D 25 VHDL语言的语言要素 3 信号 SIGNAL 信号赋值语句 目标信号名 表达式 例如 x 9 y x z xAFTER5ns 26 VHDL语言的语言要素 3 信号 SIGNAL 信号与变量的区别 使用场合不同变量在进程 函数和过程中说明 信号在结构体中说明 赋值符号不同变量用 号赋值 其值被立即使用 无时间延时 信号用 赋值 其值可以附加延时 27 VHDL是一种强类型语言 编程时非常注重数据类型的匹配问题 要求设计实体中的数据对象必须具有确定的数据类型 并且相同数据类型的量才能进行相互传递或赋值 VHDL语言的语言要素 5 3VHDL语言的数据类型 标量型 ScalarType 复合型 CompositeType 存取型 AccessType 文件型 FilesType 1 数据类型的分类 VHDL语言与其他硬件描述语言相比有较多的数据类型 因此它能够创建高层次的系统和算法模型 根据数据用途的不同 VHDL中的数据类型可分为四大类 28 VHDL语言的语言要素 标量型 1 数据类型的分类 是单元素的最基本数据类型 通常用于描述一个单值数据对象 包括 实数类型 整数类型 枚举类型 时间类型 29 VHDL语言的语言要素 复合型 1 数据类型的分类 可以由最基本的数据类型复合而成 如可由标量复合而成 分为 数组型 Array 记录型 Record 存取型 为给定的数据对象提供存取方式 文件型 用于提供多值存取类型 30 VHDL语言的语言要素 1 数据类型的分类 上述的四种数据类型又可分为两大类 预定义数据类型 用户自定义数据类型 是VHDL中最常用 最基本的数据类型 这些数据类型都已在VHDL的标准库中作了定义 用户可在设计中随时调用 由用户根据需要而自定义的数据类型 31 VHDL语言的语言要素 是一种已在标准程序包 STANDARD 中预先定义的数据类型 在实际使用中能自动包含在VHDL的源文件中 2 VHDL的预定义数据类型 分为 布尔数据类型位数据类型位矢量数据类型字符数据类型整数数据类型自然数数据类型 正整数数据类型实数数据类型字符串数据类型时间数据类型错误等级数据类型 32 VHDL语言的语言要素 1 布尔 BOOLEAN 数据类型 是一个二值枚举型数据类型 常用于关系运算和逻辑判断 布尔数据量包括逻辑 假 FALSE 和逻辑 真 TRUE 两种取值 例如 在IFA B语句中 若A B成立 则布尔数据量为TRUE 否则布尔数据量为FALSE 定义格式 TYPEBOOLEANIS FALSE TRUE 若某个信号或变量被定义为布尔数据 则在仿真中将自动对其赋值进行核查 布尔数据没有数值的含义 不能进行算术运算 只能用于关系运算和逻辑判断 33 VHDL语言的语言要素 2 位 BIT 数据类型 位数据类型也属于二值枚举型 通常用来表示信号的取值 它的取值只有 0 和 1 定义格式 TYPEBITIS 0 1 位数据类型的数据对象为信号和变量 可以进行逻辑运算 其结果仍为位数据类型 34 VHDL语言的语言要素 3 位矢量 BIT VECTOR 数据类型 定义格式 TYPEBITVECTORISARRAY NATURALRANGE OFBIT 位矢量是基于位数据类型的数组 常用来表示总线的状态 位矢量是用双引号括起来的数字序列 如 1011 X 00EA 其中 表示数据范围未定界 规则 使用位矢量必须注明位宽 即数组中的元素个数和排列 例如 SIGNALb BITVECTOR 0TO7 定义b由b 0 b 7 构成的矢量 左为b 0 右为b 7 35 VHDL语言的语言要素 4 字符 CHARACTER 数据类型 定义格式 TYPECHARACTERIS ASCII码字符表中的全部字符 字符数据类型是用单引号括起来的ASCII码字符 如 X y 6 3 等 规则 字符型数据用单引号括起来 字符型数据的字母有大小写之分 字符型数据仅包括ASCII码字符表中的全部字符 36 VHDL语言的语言要素 5 字符串 STRING 数据类型 定义格式 TYPESTRINGISARRAY POSITIVERANGE OFCHARACTER 字符串数据类型是用双引号括起来的字符序列 是由字符型数据组成的数组 也称字符矢量或字符串数组 常用于程序的提示和说明 例如 ABOY 10101011 37 VHDL语言的语言要素 6 整数 INTEGER 数据类型 定义格式 TYPEINTEGERISRANGE 2147483647TO 2147483647 整数数据类型与数学中的整数定义相同 包括 正整数 负整数和零 取值范围 32位带符号数原码 231 1 231 1 即 2147483647 2147483647 规则 整数不能作为矢量 不能单独对某一位进行操作 整数不能用于逻辑运算 只能用于算术运算 如 15 10E3 16 D5 2 11011010 8 653 整数可以用进制来表示 整数可以用来抽象地表达总线的状态 38 VHDL语言的语言要素 7 正整数 POSITIVE 数据类型 定义格式 SUBTYPEPOSITIVEISINTEGERRANGE1TOINTEGER HIGH 正整数数据类型是整数数据类型的子类型 是不包括0的正整数 取值范围 32位带符号数原码 1 231 1 即1 2147483647 其中 INTEGER HIGH是数值类属性 表示整数的上限值231 1 39 VHDL语言的语言要素 8 自然数 NATURAL 数据类型 定义格式 SUBTYPENATURALISINTEGERRANGE0TOINTEGER HIGH 是整数数据类型的子类型 即非负的整数 包括 0和正整数 40 VHDL语言的语言要素 9 实数 REAL 数据类型 定义格式 TYPEREALISRANGE 1 0E38TO 1 0E38 实数数据类型类似于数学中的实数 也称为浮点数数据类型 只能在仿真中使用 取值范围 1 0E 38 1 0E 38由正号 负号 小数点和数字组成 例如 2 5 1 0E8 41 VHDL语言的语言要素 10 时间 TIME 数据类型 定义格式 TYPETIMEISRANGE 2147483647TO2147483647 用来表示时间的数据类型 由整数数据和单位两部分组成 取值范围是整数所定义的范围 仅在系统仿真时 用来表示信号延时的时间 不能用于逻辑综合 例如 55ms 20ns 42 VHDL语言的语言要素 10 时间 TIME 数据类型 unitsfs 飞秒 10 15S ps 1000fs 皮秒ns 1000ps 纳秒us 1000ns 微秒ms 1000us 毫秒sec 1000ms 秒min 60sec 分hr 60min 时ENDunits 43 VHDL语言的语言要素 11 错误等级 SEVERITY LEVEL 定义格式 TYPEseverity levelIS note warning error failure 错误等级数据用于表征系统的工作状态 包括 NOTE 注意 WARNING 警告 ERROR 出错 FAILURE 失败 在仿真过程中 可输出这4种值来提示被仿真系统当前的工作状态 44 VHDL语言的语言要素 3 IEEE预定义的标准逻辑位和标准逻辑矢量 在IEEE库的程序包STD LOGIC 1164中 定义了两个非常重要的数据类型 标准逻辑位STD LOGIC 标准逻辑矢量STD LOGIC VECTOR 使用时可打开IEEE库 调用STD LOGIC 1164程序包 如 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL 45 VHDL语言的语言要素 1 STD LOGIC 标准逻辑位 数据类型 是用IEEE1164标准定义的一种常用的9值逻辑位数据类型 是位 BIT 数据类型的扩展 STD LOGIC的9种逻辑值 U 未初始化的 X 强未知的 0 强0 1 强1 Z 高阻态 W 弱未知的 L 弱0 H 弱1 忽略 定义格式 TYPESTDLOGICIS U X 0 1 Z W L H 注意 逻辑值的字母必须用大写 46 VHDL语言的语言要素 2 STD LOGIC VECTOR 标准逻辑矢量 数据类型 是基于STD LOGIC数据类型的一维标准逻辑数组 常用于描述数字系统中的总线 数组中每一个元素的数据类型都应是STD LOGIC中定义的逻辑值 定义格式 TYPESTDLOGICVECTORISARRAY NATURALRANGE OFSTDLOGIC 赋值原则 同位宽 同类型矢量间才能进行赋值 47 VHDL语言的语言要素 4 其他预定义的标准数据类型 在IEEE库的STD LOGIC ARITH程序包中 包含有两个符合IEEE标准的数据类型 分别为 无符号型 UNSIGNED 有符号型 SIGNED 这两种数据类型主要用于算术运算 使用时可打开IEEE库 调用STD LOGIC ARITH程序包 如 LIBRARYIEEE USEIEEE STD LOGIC ARITH ALL 定义格式 TYPEUNSIGNEDISARRAY NATURALRANGE OFSTDLOGIC TYPESIGNEDISARRAY NATURALRANGE OFSTDLOGIC 48 VHDL语言的语言要素 用于程序中无符号数的运算 是由STD LOGIC数据类型构成的一维数组 代表一个无符号的数值 即一个二进制数 当一个数据除了执行算术运算外 还要执行逻辑运算时 就必须将该数据定义为无符号数据类型 而不是SIGNED或INTEGER类型 例如 SIGNALDATA UNSIGNED 3DOWNTO0 DATA 1000 如十进制数的9 可以表示为UNSIGNED 1001 1 无符号 UNSIGNED 数据类型 定义信号DATA是无符号数据 其数值为8 49 VHDL语言的语言要素 用于程序中有符号数的运算 表示一个有符号二进制整数 例如 VARIABLEDATA1 DATA2 SIGNED 3DOWNTO0 DATA1 1001 DATA2 0111 定义变量DATA1和DATA2分别为 7和7 有符号数的最高位为符号位 其余位代表数值大小 并用补码表示 2 有符号 SIGNED 数据类型 50 VHDL语言的语言要素 5 用户自定义的数据类型 除了一些标准的预定义数据类型外 用户还可以根据设计需要 自己定义新的数据类型 称为用户自定义的数据类型 用户自定义数据有多种类型 枚举型 ENUMERATION 整数型 INTEGER 数组型 ARRAY 记录型 RECORD 时间型 TIME 实数型 REAL 51 VHDL语言的语言要素 是用文字 符号表示的一组实际的二进制数 例如 TYPEBITIS 0 1 定义BIT数据类型为枚举型 取值为0和1 1 枚举型 定义格式 TYPE数据类型名IS 取值1 取值2 又如 TYPESIS S0 S1 S2 S3 定义S数据类型为状态变量S0 S1 S2 S3 这四个状态变量分别代表四种不同的状态取值 即00 01 10 11 52 VHDL语言的语言要素 数组是一组具有相同数据类型的元素组合 数组型属于复合类型 是将相同类型的单个数据组合在一起而形成的数据类型 可以是一维数组 一个下标 和多维数组 多个下标 根据数组元素下标的范围是否被指定 可分为限定性数组和非限定性数组 限定性数组下标的取值范围在数组定义时就已确定 并用整数指定 排列顺序可以由低到高 如 0TO7 也可以由高到低 如 7DOWNTO0 2 数组型 非限定性数组不具体指明下标的取值范围 当用到该数组时 再进行定义 53 VHDL语言的语言要素 限定性数组定义格式 例如 TYPEDATA BUSISARRAY 7DOWNTO0 OFSTD LOGIC 定义八位数据总线DATA BUS 下标由高到低排列 2 数组型 非限定性数组定义格式 TYPE数组名ISARRAY 数组范围 OF基本数据类型 TYPE数组名ISARRAY 数组下标名RANGE OF基本数据类型 例如 TYPEBIT VECTORISARRAY NATURALRANGE OFBIT VARABLEDATA BIT VECTOR 1TO6 数组DATA是BIT VECTOR的子集 其下标取值按自然数1 6排列 54 VHDL语言的语言要素 记录型是一个数组 由已定义的 不同的数据类型元素构成 3 记录型 定义格式 记录型也是一种多值的数据类型 但是记录型是由多个不同类型的元素集合而成的 TYPE记录类型名ISRECORD元素名 元素数据类型 元素名 元素数据类型 ENDRECORD 记录类型名 55 VHDL语言的语言要素 3 记录型 例如 将DATA定义为四元素的记录类型 TYPEDATAISRECORDD0 TIME D1 TIME D2 STD LOGIC D3 STD LOGIC ENDRECORDDATA 定义DATA为四元素的记录类型 定义D0为时间类型 定义D1为时间类型 定义D2为标准位类型 定义D3为标准位类型 56 VHDL语言的语言要素 6 数据类型的转换 在IEEE库中 有三个程序包为VHDL语言提供了多条数据类型转换函数 用户使用这些函数 可以完成数据类型的转换 57 VHDL语言的语言要素 6 数据类型的转换 例如 将INTEGER类型转换为STD LOGIC VECTOR类型 SIGNALA INTEGERRANGER0TO15 SIGNALB STD LOGIC VECTOR 3DOWNTO0 B CONV STD LOGIC VECTOR A 第1条语句 将信号A定义为INTEGER类型 第2条语句 将信号B定义为STD LOGIC VECTOR类型 第3条语句 将信号A的数据类型转换为STD LOGIC VECTOR类型 并赋值给B 58 VHDL语言的语言要素 VHDL语言中的各种表达式都是由运算符和操作数组成的 操作数是表达式中各种运算的对象 而运算符 又称操作符 则规定操作数的运算方式 VHDL语言预定义了五种运算符 逻辑运算符 算术运算符 关系运算符 符号运算符 移位运算符 5 4VHDL语言的运算符 59 VHDL语言的语言要素 1 逻辑运算符 用于完成逻辑运算 包括逻辑与 逻辑或 逻辑非 逻辑与非 逻辑或非 运算逻辑异或 逻辑异或非 同或 等运算 60 VHDL语言的语言要素 1 逻辑运算符 逻辑运算的操作数可以是BIT BOOLEAN和STD LOGIC数据类型 以及一位数组BIT VECTOR和STD LOGIC VECTOR类型 要求运算符两边操作数的数据类型相同 位宽相同 逻辑运算按位进行操作 运算结果的数据类型与操作数的数据类型相同 一个表达式中有两种以上逻辑运算符时 应用括号对这些运算进行分组 如果一个表达式中只有AND OR和XOR三种运算符中的一种 则改变运算顺序不会影响电路的逻辑关系 逻辑运算符NOT处于最高优先级 而其余的逻辑运算符处于最低优先级 例如 Y1 AANDB OR CANDD Y2 AORB ANDC 61 VHDL语言的语言要素 2 算术运算符 是完成算术运算的最基本的操作符 包括加法运算 减法运算 并置运算 乘法运算 除法运算 取模运算 求余运算 乘方运算和取绝对值等 62 VHDL语言的语言要素 2 算术运算符 在算术运算表达式中 两个参与运算的操作数必须具有相同的数据类型 VHDL语言共有九种用于算术运算的操作符 可分为 求和操作 求积操作 混合操作 63 VHDL语言的语言要素 包括加法操作 减法操作 和并置操作 三种 1 求和操作 加 减操作符要求操作对象的数据类型可以是整数 实数或物理量 用于实现操作数加法和减法操作 其运算规则与常规的加减法相同 并置操作符 又称连接运算符 可以将多个数据元素合并成一个新的一维数组 也可以将两个一维数组中的元素分解连接成新的一维数组 新产生的一维数组位宽等于两个操作数的位宽之和 而数组元素的顺序取决于操作数的位置 并置操作常用于字符串的连接和数组的位数扩展 参与操作的操作数可以是BIT和STD LOGIC数据类型 64 VHDL语言的语言要素 例5 1 将单个元素组成一个四位数组和一个八位数组 设组成的数组分别为 SIGNALX STD LOGIC VECTOR 3DOWNTO0 SIGNALY STD LOGIC VECTOR 7DOWNTO0 SIGNALZ STD LOGIC VECTOR 3DOWNTO0 SIGNALa b c d e f g hSTD LOGIC X a b c d Z e f g h Y X Z 定义数组X 定义数组Y 定义数组Z 定义逻辑位a h 单元素并置为4位数组 单元素并置为4位数组 两个四位数组并置为8位数组 X a b c d Y a b c d e f g h 65 VHDL语言的语言要素 例5 2 用加法运算符实现八位加法器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYadder8ISPORT ci INSTD LOGIC a b INSTD LOGIC VECTOR 7DOWNTO0 s OUTSTD LOGIC VECTOR 7DOWNTO0 co OUTSTD LOGIC ENDadder8 设加法器的输入为a b ci 输出为s co 66 VHDL语言的语言要素 例5 2 用加法运算符实现八位加法器 ARCHITECTUREbehaviorOFadder8ISSIGNALss STD LOGIC VECTOR 8DOWNTO0 SIGNALaa bb STD LOGIC VECTOR 8DOWNTO0 BEGINaa 0 a bb 0 b ss aa bb ci s ss 7DOWNTO0 co ss 8 ENDbehavior 设加法器的输入为a b ci 输出为s co 67 VHDL语言的语言要素 包括乘法 除法 取模 MOD 和求余 REM 四种操作 2 求积操作 乘除法的操作数可以是整数或实数 在设计中 通常选用BIT VECTOR STD LOGIC VECTOR或INTEGER等数据类型 取模和求余操作与除法操作相同 要求其操作数必须是以2为底的幂 操作数的数据类型只能是整数型 其运算结果也是整数型 68 VHDL语言的语言要素 混合操作只有乘方 和取绝对值 ABS 两种运算 其数据类型一般为整数 3 混合操作 乘方运算符的左边可以是整数或浮点数 而右边必须为整数 当操作符左边为浮点时 其右边的可以是负数 例如 X ABS A Y 2 B 69 VHDL语言的语言要素 3 关系运算符 关系运算是对两个相同类型的操作数进行大小比较或排序判断 比较结果以BOOLEAN数据类型表示 可能是TRUE 也可能是FALSE 共有六种运算符 70 VHDL语言的语言要素 3 关系运算符 使用关系运算时 应注意以下几点 和 的操作数可以是所有类型的数据 而其余四种运算符可以使用整数类型 实数类型 枚举类型和数组类型 操作符两边操作数的数据类型必须相同 但位数可以不同 整数和实数的比较与数学中的比较方法相同 枚举型数据大小的排序方法与它们的定义顺序一致 对位矢量数据进行比较 排序判断 时 比较过程是按从左向右的顺序按位进行比较的 操作数的位宽可以不同 但有时会产生错误结果 71 VHDL语言的语言要素 4 符号运算符 有正号 和符号 两个操作符 用于整数的符号操作 正号操作符 对操作数的符号不做任何改变 负号操作符 将对原操作数取负 72 VHDL语言的语言要素 5 移位运算符 移位运算符是VHDL 93标准版新增加的运算符 在VHDL 87版中没有定义 共有六种操作符号 73 VHDL语言的语言要素 5 移位运算符 书写格式 操作数名称移位运算符移位位数 操作数 BIT VECTOR或STD LOGIC VECTOR等一维数组 其元素为BIT或BLOOEAN型数据 移位位数 整数型 例如 X 11010111 Y XSLL2 运行结果 Y 01011100 74 VHDL语言的语言要素 移位运算符功能 5 移位运算符 SLL是将位矢量向左移位 每移一位 右边移位产生的空位补零 SLL A2 A1 A0 0 SRL是将位矢量向右移位 每移一位 左边移位产生的空位补零 SRL 0 A3 A2 A1 75 VHDL语言的语言要素 移位运算符功能 5 移位运算符 SLA是将位矢量向左移位 每移一位 右边第一位的数值保持不变 SLA A2 A1 A0 A0 SRA是将位矢量向右移位 每移一位 左边第一位的数值保持不变 SRA A3 A3 A2 A1 76 VHDL语言的语言要素 移位运算符功能 5 移位运算符 ROL是将位矢量向左循环移位 每移一位 右边第一位由左边第一位移出的数值补位 ROL A2 A1 A0 A3 ROR是将位矢量向右循环移位 每移一位 左边第一位由右边第一位移出的数值补位 ROR A0 A3 A2 A1 77 VHDL语言的语言要素 6 运算符的优先级 最高优先级 最低优先级 78 VHDL语言的语言要素 6 运算符的优先级 表达式中运算符执行的顺序 最先进行括号内的运算 NOT ABS 运算 MOD REM运算 正号 负号 加法 减法 SLL SLA SRL SRA ROL ROR 关系运算符 逻辑运算中的AND OR NAND NOR XOR XNOR 79 VHDL语言的语言要素 在VHDL中 具有属性的项目主要有 实体 结构体 配置 程序包 类型 子类型 过程 函数 信号 变量 常量 元件 语句标号等 属性为这些项目提供了表现特征 可通过属性对这些项目的表现特征进行检测或统计 通常 某一个项目的特定属性 特征 可以用一个值或一个表达式来表示 可通过VHDL预定义属性来描述 5 5VHDL语言的属性 80 VHDL语言的语言要素 5 5VHDL语言的属性 81 VHDL语言的语言要素 5 5VHDL语言的属性 82 VHDL语言的语言要素 5 5VHDL语言的属性 83 VHDL语言的语言要素 5 5VHDL语言的属性 84 VHDL语言的语言要素 预定义属性格式 5 5VHDL语言的属性 属性测试项目名 属性标识符 属性测试项目 为要测试的属性对象 可用相应的标识符表示 属性标识符 属性名 常用的可综合属性有 信号类属性 数值类属性 数组类属性 范围类属性 85 VHDL语言的语言要素 主要用来返回有关信号行为功能的信息 最为常用的是 EVENT属性 它可以在一个极小的时间段内对信号所发生的事件情况进行检测 若信号有事件发生 则返回值为TRUE 否则返回值为FALSE 1 信号类属性 例如 假定时序电路的时钟信号为CLK 则CLK EVENT 表示对CLK信号在当前一个极小的时间段内所发生的事件进行检测 即用来检测时钟信号的边沿 CLK EVENTANDCLK 1 表示检测CLK的上升沿 CLK EVENTANDCLK 0 表示检测CLK的下降沿 86 VHDL语言的语言要素 利用下列两个函数也可以检测信号的变化状态 1 信号类属性 RISING EDGE CLK 表示时钟的上升沿 与CLK EVENTANDCLK 1 等效 FALLING EDGE CLK 表示时钟的下降沿 与CLK EVENTANDCLK 0 等效 属性LAST EVENT用来对从信号最近一次事件发生至今所经历的时间进行测试 常用于检查定时时间 建立时间 保持时间和脉冲宽度等 87 VHDL语言的语言要素 主要对属性对象 项目 的相关数值特性进行测试 并返回它们的测试值 常用的属性函数有 LEFT 左边界 RIGHT 右边界 HIGH 上边界 LOW 下边界 等 2 数值类属性 例如 num1为整数型数据 定义范围为9到0 返回左边界 H1 9 返回右边界 H2 0 返回上边界 H3 9 返回下边界 H4 0 TYPEnum1ISINTEGERRANGE9DOWNTO0 VARIABLEH1 H2 H3 H4 INTEGER H1 num1 LEFT H2 num1 RIGTH H3 num1 HIGH H4 num1 LOW 88 VHDL语言的语言要素 数组类属性是对数组宽度或元素的个数进行测试 并返回测试值 3 数组类属性 例如 返回值 WTH 16 TYPEnum2ISARRAY 0TO15 OFBIT VARIABLEWTH INTEGER WTH num2 LENGTH 89 VHDL语言的语言要素 范围类属性也称作数据区间类属性 用来产生一个限制性数据对象的范围 即对属性对象的区间进行测试 返回一个区间范围 而不是一个具体的值 4 范围类属性 常用的属性函数有 RANGE和 REVERSE RANGE 例如 对数据总线data bus定义如下 SIGNALdata bus STD LOGIC VECTOR 15DOWNTO0 data bus的范围属性为 data bus RANGE 15DOWNTO0 90 VHDL语言的语言要素 注意 一个属性对象可以有多个属性值 4 范围类属性 例如 对某数组变量的定义如下 VARIABLEbyte BIT VECTOR 7DOWNTO0 数组变量bity的相关属性如下 数值类属性 byte LEFT 7 byte RIGHT 0 byte HIGH 7 byte LOW 0 数组类属性 byte LENGTH 8 范围类属性 byte RANGE 7DOWNTO0 byte REVERSE RANGE 0TO7 91 课堂练习 Thefrist 5 1名词解释 VHDL 实体说明 结构体 数据对象 并行语句 库 程序包 5 2简述VHDL的程序结构 5 3写出ENTITY定义区的命令格式 并叙述它的作用时什么 5 4写出ARCHITECTURE定义区的命令格式 并叙述它的作用时什么 5 5结构体的描述方式有几种 各有什么特点 92 5 6简述配置的作用及类型 并写出每种类型的格式 5 7VHDL 87版本标识符的规则 5 8简述信号与变量的说明格式 赋值格式 及它们的区别 5 9VHDL的数据类型有哪些 93 课堂练习 Thefrist 5 1名词解释 VHDL 实体说明 结构体 数据对象 并行语句 库 程序包 VHDL VHDL语言全称是 超高速集成电路硬件描述语言 它诞生于1982年 由美国国防部于20世纪七 八十年代组织研制开发 其目的首先是用这种语言描述复杂电路 其次是希望这种语言能够成为一种标准语言实体说明 实体说明是VHDL程序设计中最基本的组成部分 主要用来描述设计实体的外部接口信号 定义设计单元的输入 输出端口 是设计实体对外的一个通信界面 但它不描述设计的具体功能结构体 结构体是设计实体的核心 它具体指明了设计实体的行为 元件及内部连接关系数据对象 VHDL语言除了具有一定的语法规则外 还定义了可以接受不同数据类型赋值的数据对象 是数据类型的载体库 用来存放已设计好的程序包 数据集合体 元件的仓库 供用户进行VHDL设计时调用程序包 用VHDL语言编写的共享文件 定义了将要使用的常数 数据类型 子程序和设计好的电路单元等 94 5 2简述VHDL的程序结构 一个完整的VHDL设计实体 设计文件 通常包括 实体说明 Entity 结构体 Architecture 配置 Configuration 库 Library 和程序包 Package 五部分 5 3写出ENTITY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 侯家居委会工作制度
- 停尸间管理工作制度
- 代述职评议工作制度
- 中专共青团工作制度
- 信息公开科工作制度
- 五官科医师工作制度
- 办公室卫生工作制度
- 加拿大通勤工作制度
- 医学类指导工作制度
- 医调委建设工作制度
- 本科生毕业论文写作指导-课件
- 现场检查(勘验)笔录
- 电力电子技术-新能源变换技术教学课件:4.2.3 单相半桥逆变电路
- 《高速公路机电系统集成与维护》课件-07.ETC门架系统
- 进料检验作业控制程序(最全面-不下你会后悔的)
- 《文字录入》课程标准
- 隔油池化粪池清理方案
- 婴幼儿学习环境的评价量表
- 阀门基础知识培训课件
- GB/T 7674-2020额定电压72.5 kV及以上气体绝缘金属封闭开关设备
- 北师大版小学数学年级总复习知识点汇总
评论
0/150
提交评论