




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 VHDL语言的基本语法 1 VHDL语言的标识符 VHDL中的标识符可以是常数 变量 信号 端口 子程序或参数的名字 使用标识符要遵守如下规则 标识符由字母 A Z a z 数字和下划线字符组成 任何标识符必须以英文字母开头 末字符不能为下划线 不允许出现两个连续下划线 标识符中不区分大小写字母 VHDL定义的保留字或称关键字 不能用作标识符 VHDL中的注释由两个连续的虚线 开始 直到行尾 VHDL语言要素 1 例 Decoder 1 起始为非英文字母 3DOP 起始为数字 Large number 不能成为标识符的构成符号 Date bus 不能有双下划线 Copper 最后字符不能为下划线 on 关键字 2 2 VHDL语言的数字 2 1数字型文字的值有多种表达方式 现列举如下 1 整数文字 整数文字都是十进制的数 如 5 678 0 156E2 15600 45 234 287 45234287 2 实数文字 实数文字也都是十进制的数 但必须带有小数点 如 188 993 88 670 551 453 909 88670551 453909 1 0 44 99E 2 0 4499 1 335 0 0 数字前可加0 数字中间不能有空格 3 2 2以数制基数表示的文字 数制 基数 指数数制和指数部分是用十进制数表示的数 指数部分的数如果是0可以省去不写 现举例如下 10 170 十进制数表示 等于170 2 1111 1110 二进制数表示 等于254 16 E E1 十六进制数表示 等于2 11100000 等于224 16 F 01 E 2 十六进制数表示 等于3841 00 8 377 与16 FF 016 0FF 2 11111111都为255 4 3 字符串型文字字符是用单引号引起来的ASCII字符 可以是数值 也可以是符号或字母 如 R A Z 而字符串则是一维的字符数组 须放在双引号中 VHDL中有两种类型的字符串 文字字符串和数位字符串 5 文字字符串是用双引号引起来的一串文字 如 ERROR BOTHSANDQEQUATOL X BB CC 进制基数符号 数位字符串 1 文字字符串 2 数位字符串 也称数值字符串 位矢量 是预定义的数据类型BIT的一维数组 它们所代表的是二进制 八进制或十六进制的数组 其位矢量的长度即为等值的二进制数的位数 6 例如 B 1 1101 1110 二进制数数组 位矢数组长度是9X AD0 十六进制数数组 位矢数组长度是12 B 二进制基数符号 表示二进制数位0或1 O 八进制基数符号 X 十六进制基数符号 0 F 7 4 下标名及下标段名下标名用于指示数组型变量或信号的某一元素 如 a 2 b n 下标段名则用于指示数组型变量或信号的某一段元素 其语句格式如下 数组类型信号名或变量名 表达式1 TO DOWNTO表达式2 8 SIGNALA B C BIT VECTOR 0TO7 SIGNALM INTEGERRANGE0TO3 SIGNALY Z BIT Y A M M是不可计算型下标表示Z B 3 3是可计算型下标表示C 0TO3 A 4TO7 以段的方式进行赋值C 4TO7 A 0TO3 以段的方式进行赋值 如下是下标名及下标段名使用示例 9 1 常数 Constant 常数是一个固定的值 主要是为了使设计实体中的常数更容易阅读和修改 常数一旦被赋值就不能再改变 一般格式 CONSTANT常数名 数据类型 表达式 例 CONSTANTfbus BIT VECTOR 01011001 总线上数据设备向量 CONSTANTdely TIME 25ns 输入 输出的延迟时间常数所赋的值应与定义的数据类型一致 二 VHDL语言的数据对象 10 常量的使用范围取决于它被定义的位置 1 程序包中定义的常量具有最大的全局化特性 可以用在调用此程序包的所有设计实体中 2 设计实体中定义的常量 其有效范围为这个实体定义的所有的结构体 3 设计实体中某一结构体中定义的常量只能用于此结构体 4 结构体中某一单元定义的常量 如一个进程中 这个常量只能用在这一进程中 11 2 变量 Variable 变量是一个局部变量 它只能在进程语句 函数语句和过程语句结构中使用 用作局部数据存储 变量常用在实现某种算法的赋值语句中 VARIABLE变量名 数据类型约束条件 表达式 例 VARIABLEx y INTEGER 定义x y为整数变量 VARIABLEcount INTEGERRANGE0TO255 10 定义计数变量范围 一般格式 12 变量赋值语句的语法格式如下 目标变量 表达式 1 赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值 4 若将变量用于进程之外 必须将该值赋给一个相同的类型的信号 即进程之间传递数据靠的是信号 2 变量不能用于硬件连线和存储元件 3 变量的适用范围仅限于定义了变量的进程或子程序中 13 例 VARIABLEx y REAL VARIABLEa b BIT VECTOR 0TO7 x 100 0 实数赋值 x是实数变量 y 1 5 x 运算表达式赋值 y也是实数变量 a b a 1010101 位矢量赋值 a的数据类型是位矢量 a 3TO6 1 1 0 1 段赋值 a 0TO5 b 2TO7 a 7 0 位赋值 14 3 信号 Signal 信号是描述硬件系统的基本数据对象 它类似于连接线 它除了没有数据流动方向说明以外 其他性质与实体的端口 Port 概念一致 信号说明格式为 SIGNAL信号名 数据类型约束条件 初始值 信号初始值的设置不是必需的 而且初始值仅在VHDL的行为仿真中有效 例 SIGNALtemp STD LOGIC 0 SIGNALflaga flagb BIT SIGNALdate STD LOGIC VECTOR 15DOWNTO0 信号的使用和定义范围是实体 结构体和程序包 15 在程序中 1 信号值的代入采用 代入符 而且信号代入时可以附加延时 2 变量赋值时用 不可附加延时 3 信号的初始赋值符号仍是 例 X YAFTER10ns X Y都是信号 且Y的值经过10ns延时以后才被代入X 信号是一个全局量 它可以用来进行进程之间的通信 16 例进程1 PROCESS A B C D BEGIND A X B D D C Y B D ENDPROCESS D中最初代入的值是A 接着又代入C值 尽管D中先代入A值 后代入C值 在时间上有一个 的延时 但是 在代入时由于不进行处理 因此仿真时认为是时间0值延时 所以D的最终值应为C 这样执行的结果 X Y的内容都为B C 进程2 PROCESS A B C VARIABLED STD LOGIC VECTOR 3DOWNTO0 BEGIND A X B D D C Y B D ENDPROCESS 在执行 D A 语句后 A的值就被赋给D 所以X为B A 此后又执行 D C 从而使Y为B C 由此可看出 信号的值将进程语句最后所代入的值作为最终代入值 而变量的值一经赋值就变成新的值 在仿真过程中 信号到了规定的仿真时间才进行赋值 变量的赋值是立即生效的 17 信号与变量的区别 2 赋值符不同 信号signalcount std logic vector 7downto0 变量variabletema std logic vector 3downto0 信号在结构体中声明 变量在进程中声明 1 声明的形式与位置不同 count 00000000 count ZZZZZZZZ count tema tema 0000 18 3 赋值生效的时间不同 信号 进程结束时变量 立即生效 4 进程对信号敏感 对变量不敏感 5 作用域不同 信号可以是多个进程的全局信号 变量只在定义后的顺序域可见 19 三 VHDL语言的数据类型 标量型 ScalarType 复合类型 CompositeType 存取类型 AccessType 文件类型 FilesType VHDL中的数据类型可以分成四大类 20 标量型 SCALARTYPE 属单元素的最基本的数据类型 通常用于描述一个单值数据对象 它包括实数类型 整数类型 枚举类型和时间类型 复合类型 COMPOSITETYPE 可以由细小的数据类型复合而成 如可由标量复合而成 复合类型主要有数组型 ARRAY 和记录型 RECORD 存取类型 ACCESSTYPE 为给定的数据类型的数据对象提供存取方式 文件类型 FILESTYPE 用于提供多值存取类型 21 1 VHDL的预定义数据类型VHDL的预定义数据类型都是在VHDL标准程序包STANDARD中定义的 在实际使用中 已自动包含进VHDL的源文件中 因而不必通过USE语句以显式调用 1 布尔 BOOLEAN 数据类型 2 位 BIT 数据类型 3 位矢量 BIT VECTOR 数据类型 4 字符 CHARACTER 数据类型 5 整数 INTEGER 数据类型 6 实数 REAL 数据类型 7 字符串 STRING 数据类型 8 时间 TIME 数据类型 9 错误等级 SEVERITY LEVEL 22 1 布尔 BOOLEAN 数据类型 程序包STANDARD中定义布尔数据类型的源代码如下 TYPEBOOLEANIS FALSE TRUE 布尔数据类型实际上是一个二值枚举型数据类型 它的取值有FALSE和TRUE两种 23 位数据类型也属于枚举型 取值只能是1或0 位数据类型的数据对象 如变量 信号等 可以参与逻辑运算 运算结果仍是位的数据类型 VHDL综合器用一个二进制位表示BIT 在程序包STANDARD中定义的源代码是 TYPEBITIS 0 1 2 位 BIT 数据类型 24 位矢量只是基于BIT数据类型的数组 在程序包STANDARD中定义的源代码是 TYPEBIT VECTORISARRAY NATURALRANGE OFBIT 3 位矢量 BIT VECTOR 数据类型 4 字符 CHARACTER 数据类型 字符类型通常用单引号引起来 如 A 字符类型区分大小写 如 B 不同于 b 字符类型已在STANDARD程序包中作了定义 25 整数类型的数代表正整数 负整数和零 5 整数 INTEGER 数据类型 常用整数常量的书写方式示例如下 2 十进制整数10E4 十进制整数16 D2 十六进制整数2 11011010 二进制整数 26 自然数和正整数是整数的一个子类型 在STANDARD程序包中定义的源代码如下 SUBTYPENATURALISINTEGERRANGE0TOINTEGER HIGH SUBTYPEPOSITIVEISINTEGERRANGE1TOINTEGER HIGH 自然数 NATURAL 和正整数 POSITIVE 数据类型 27 实数常量的书写方式举例如下 65971 333333 十进制浮点数8 43 6 E 4 八进制浮点数43 6E 4 十进制浮点数 6 实数 REAL 数据类型 VHDL的实数类型类似于数学上的实数 或称浮点数 实数的取值范围为 1 0E38 1 0E38 通常情况下 实数类型仅能在VHDL仿真器中使用 VHDL综合器不支持实数 因为实数类型的实现相当复杂 目前在电路规模上难以承受 28 字符串数据类型是字符数据类型的一个非约束型数组 或称为字符串数组 字符串必须用双引号标明 如 7 字符串 STRING 数据类型 VARIABLEstring var STRING 1TO7 string var abcd 29 VHDL中唯一的预定义物理类型是时间 完整的时间类型包括整数和物理量单位两部分 整数和单位之间至少留一个空格 如55ms 20ns 8 时间 TIME 数据类型 TYPEtimeISRANGE 2147483647TO2147483647unitsfs 飞秒 VHDL中的最小时间单位ps 1000fs 皮秒ns 1000ps 纳秒us 1000ns 微秒ms 1000us 毫秒sec 1000ms 秒min 60sec 分hr 60min 时endunits STANDARD程序包中定义时间如下 30 在VHDL仿真器中 错误等级用来指示设计系统的工作状态 共有四种可能的状态值 NOTE 注意 WARNING 警告 ERROR 出错 FAILURE 失败 在仿真过程中 可输出这四种值来提示被仿真系统当前的工作情况 STANDARD程序包中定义如下 TYPESEVERITY LEVELIS NOTE WARNING ERROR FAILURE 9 错误等级 SEVERITY LEVEL 31 在IEEE库的程序包STD LOGIC 1164中 定义了两个非常重要的数据类型 即 标准逻辑位STD LOGIC标准逻辑矢量STD LOGIC VECTOR 1 标准逻辑位STD LOGIC数据类型 2 IEEE预定义标准逻辑位与矢量 TYPESTD LOGICIS U X 0 1 Z W L H 在IEEE库程序包STD LOGIC 1164中的数据类型STD LOGIC的定义如下所示 32 U 未初始化 X 强不定 0 0 1 1 Z 高阻 W 弱信号不定 L 弱信号0 H 弱信号1 忽略 或不可能情况 注意在使用该类型数据时 在程序中必须写出库说明语句和使用包集合的说明语句 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL 33 STD LOGIC VECTOR类型定义如下 TYPESTD LOGIC VECTORISARRAY NATURALRANGE OFSTD LOGIC 2 标准逻辑矢量 STD LOGIC VECTOR 34 VHDL综合工具配带的扩展程序包中 定义了一些有用的类型 如Synopsys公司在IEEE库中加入的程序包STD LOGIC ARITH中定义了如下的数据类型 无符号型 UNSIGNED 有符号型 SIGNED 小整型 SMALL INT 3 其他预定义标准数据类型 35 TYPEUNSIGNEDISARRAY NATURALRANGE OFSTD LOGIC TYPESIGNEDISARRAY NATURALRANGE OFSTD LOGIC SUBTYPESMALL INTISINTEGERRANGE0TO1 如果将信号或变量定义为这几个数据类型 就可以使用本程序包中定义的运算符 在使用之前 请注意必须加入下面的语句 在程序包STD LOGIC ARITH中的类型定义如下 LIBRARYIEEE USEIEEE STD LOGIC ARITH ALL 36 1 无符号数据类型 UNSIGNEDTYPE UNSIGNED数据类型代表一个无符号的数值 在综合器中 这个数值被解释为一个二进制数 这个二进制数的最左位是其最高位 2 有符号数据类型 SIGNEDTYPE SIGNED数据类型表示一个有符号的数值 综合器将其解释为补码 此数的最高位是符号位 例如 SIGNED 0101 代表 5 5 SIGNED 1101 代表 5 37 VHDL允许用户自行定义新的数据类型 它们可以有多种 如 4 用户自定义数据类型方式 可由用户定义的数据类型常见的有8种 枚举 Enumerated 类型 整数 Integer 类型 实数 Real 浮点数 Floating 类型 数组 Array 类型 存取 Access 类型 文件 File 类型 记录 Recode 类型 时间 Time 类型 38 语法结构如下 1 TYPE语句用法 TYPE数据类型名IS数据类型定义 OF基本数据类型 TYPE数据类型名IS数据类型定义 OF基本数据类型 约束范围 TYPEcurrentISREALRANGE 1E4TO1E4 TYPEdigitISINTEGER TYPEdigit1ISINTEGERRANGE0TO9 例如 数据类型如果没有被指定 则默认为整数类型 39 子类型SUBTYPE只是由TYPE所定义的原数据类型的一个子集 子类型SUBTYPE的语句格式如下 2 SUBTYPE语句用法 SUBTYPE子类型名IS基本数据类型RANGE约束范围 SUBTYPEN1ISINTEGERRANGE10TO100 例如 40 VHDL中的枚举数据类型是用文字符号来表示一组实际的二进制数的类型 若直接用数值来定义 则必须使用单引号 例 TYPEM STATEIS STATE1 STATE2 STATE3 STATE4 STATE5 3 枚举类型 41 4 数组类型 数组类型属复合类型 它是将一组具有相同数据类型的元素集合在一起 作为一个数据对象来处理的数据类型 数组可以是一维 每个元素只有一个下标 数组或多维数组 每个元素有多个下标 VHDL仿真器支持多维数组 但VHDL综合器只支持一维数组 数组的元素可以是任何一种数据类型 用以定义数组元素的下标范围子句决定了数组中元素的个数以及元素的排序方向 即下标数是由低到高 或是由高到低 42 限定性数组定义语句格式如下 TYPE数组名ISARRAY 数组范围 OF数据类型 例 TYPESTBISARRAY 7DOWNTO0 OFSTD LOGIC 例 TYPEXIS LOW HIGH TYPEDATA BUSISARRAY 0TO7 X OFBIT 首先定义X为两元素的枚举数据类型 然后将DATA BUS定义为一个数组类型 其中每一元素的数据类型是BIT 43 非限制性数组的定义语句格式如下 TYPE数组名ISARRAY 数组下标名RANGE OF数据类型 其中 数组名是定义的非限制性数组类型的取名 数组下标名是以整数类型设定的一个数组下标名称 符号 是下标范围待定符号 用到该数组类型时 再填入具体的数值范围 数据类型是数组中每一元素的数据类型 44 例 TYPEBIT VECTORISARRAY NATURALRANE OFBIT VARIABLEVA BIT VECTOR 1TO6 将数组取值范围定在1 6 例 TYPELOGIC VECTORISARRAY NATURALRANGE POSITIVERANGE OFLOGIC VARIABLEL16 OBJECT LOGIC VECTOR 0TO7 1TO2 限定范围 45 由已定义的 数据类型不同的对象元素构成的数组称为记录类型的对象 定义记录类型的语句格式如下 TYPE记录类型名ISRECORD元素名 元素数据类型 元素名 元素数据类型 ENDRECORD 记录类型名 5 记录类型 46 例 TYPERECDATAISRECORDelement1 TIME element2 TIME element3 STD LOGIC ENDRECORDRECDATA 例 利用记录类型定义的一个微处理器命令信息表 TYPEREGNAMEIS AX BX CX DX TYPEOPERATIONISRECORDOPSTR STRING 1TO10 OPCODE BIT VECT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖北-湖北热处理工四级(中级工)历年参考题库典型考点含答案解析
- 2025年消费与零售行业食品行业行业热点追踪报告
- 新零售时代实体书店如何打造线上线下无缝对接策略研究报告
- 2025年事业单位工勤技能-湖北-湖北保健按摩师三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南热力运行工三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-河南-河南园林绿化工四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-河北-河北计算机操作员二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河北-河北城管监察员五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江西-江西林木种苗工五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏殡葬服务工四级(中级工)历年参考题库含答案解析
- 2025年内江市总工会公开招聘工会社会工作者(14人)笔试模拟试题及答案解析
- 2025云南辅警笔试题目及答案
- 2025四川内江市总工会招聘工会社会工作者14人笔试备考试题及答案解析
- 2025年三支扶陕西试题及答案
- NB-T 10316-2019 风电场动态无功补偿装置并网性能测试规范
- JJF(纺织)010-2012纱线捻度仪校准规范
- GB/T 16288-2008塑料制品的标志
- GB/T 14486-2008塑料模塑件尺寸公差
- 第三单元名著导读《朝花夕拾-二十四孝图》课件(15张PPT) 部编版语文七年级上册
- 口部运动功能评估分级标准
- 《汉服发展史》PPT课件
评论
0/150
提交评论