硬件描述语言第02讲_第1页
硬件描述语言第02讲_第2页
硬件描述语言第02讲_第3页
硬件描述语言第02讲_第4页
硬件描述语言第02讲_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硬件描述语言及器件 主讲教师 苏淑靖 12 13学年第1学期 教材 侯伯亨 顾新 VHDL硬件描述语言与数字逻辑电路设计 教学安排 第1讲 VHDL概述及其基本结构第2讲 VHDL语言的基本元素第3讲 VHDL的结构体描述 进程第4讲 VHDL的顺序语句第5讲 VHDL的并行语句第6讲 基本逻辑电路设计第7讲 计数器和状态机 第2讲 VHDL语言的基本元素 标识符数据对象数据类型操作符 1标识符 VHDL语言中标识符是符号书写的一般规则 不仅对电子系统设计工程师是一个约束 也为各种EDA工具提供了标准的书写规范 使之在综合仿真过程中不产生歧义 易于仿真 VHDL语言有两个标准版 VHDL 87版和VHDL 93版 VHDL 87版的标识符语法规则经过扩展后 形成了VHDL 93版的标识符语法规则 前一部分称为短标识符 扩展部分称为扩展标识符 VHDL 93版含有短标识符和扩展标识符两部分 VHDL的短标识符遵守以下规则的字符序列 1 标示符由英文字母 数字 下划线组成 2 必须以英文字母打头 3 字符不区分大小写 数字 0 9 和下划线 4 下划线前后都必须有英文字母或数字 一般地 对VHDL的保留字 ENTITY ARCHITECTURE END BUS USE WHEN WAIT IS 在程序书写时 一般要求大写或黑体 使得程序易于阅读 易于检查错误 1短标识符 1 合法的标识符 multi screensMulti screensMulti ScreensMULTI SCREENS非法标识符 illegal nameillegal nameillegal name3decodeT 2COUNTER 同一标识符 1短标识符 1 VHDL 93版增加的标识符书写规则 1 扩展标识符用反斜杠来定界 multi screens 2 允许包含图形符号 空格符 modeA 100 等 3 反斜杠之间的字符可以用保留字 entity end 等 4 扩展标识符的界定符两个斜杠之间可以用数字打头 100 2chip 4screens 等 5 扩展标识符中允许多个下划线相连 Four screens TWO Computer sharptor 等 6 扩展标识符区分大小写 EDA 与 eda 不同 7 扩展标识符与短标识符不同 例如 COMPUTER 与Computer不同 扩展标识符 2 数据对象 在VHDL语言中 可以赋予一个值的客体 object 4种基本类型 常量 CONSTANT 信号 SIGNAL 变量 VARIABLE 和文件 FILES 其中文件类型是VHDL 93标准中新增加的 数据对象的物理意义 常量通常表示数字电路中的地和电源 信号表示设计中的某条硬件连接线 变量通常表示暂存某些值的载体 2数据对象 常量 constant 是一个固定值 常量说明是对某一常量名赋予一个固定值 常量说明格式 CONSTANT常量名 数据类型 表达式 例 CONSTANTT1 T2 time 30ns CONSTANTD BIT VECTOR 0001 注意 常量一旦赋值不能改变 常量赋的值应和数据类型一致 常量必须在实体 结构体或进程的说明区域指定 定义在实体内的常量在实体对应的结构体中可见 定义在进程内的常量仅在进程内使用 2数据对象 常量 变量 VARIABLE 是局部量 用于对中间数据的临时存储 只能在进程 函数和过程中使用 变量说明格式 VARIABLE变量名 数据类型约束条件 表达式 例 VARIABLEcount INTEGERRANGE0TO255 10 变量赋值语句 目标变量名 表达式 设定值 注意 一旦赋值立即生效 不产生赋值延时 某一时刻仅包含一个值 变量赋值和初始化赋值符号用 表示 在进程中说明的变量 若用于进程外 必须将值赋给一个相同类型的信号 即进程之间传递数据靠的是信号 2数据对象 变量 信号 signal 电子电路内部硬件实体相互连接的抽象 信号声明格式 SIGNAL信号名 数据类型约束条件 表达式 例 SIGNALsys clk BIT 0 系统时钟信号信号赋值语句 目标信号名 表达式 设定值 注意 信号是全局变量 可在进程之间通信 表示对信号直接赋值或初始赋值 不产生延时 在程序中信号值代入用 带入符 且允许产生延时 是变量之间信号的传递方式 如 T1 T2 可在结构体 实体 块 包集合中声明和使用信号 在进程和子程序中只能使用信号 不能声明信号 2数据对象 信号 适用范围 2数据对象 2数据对象 在VHDL中 单个位值 bit 用单引号 标明 而位向量值 bit vector 用双引号 标出 STD LOGIC 标准逻辑 数据类型只能取 0 或 1 没有不定状态和高阻态 也就不能用来描述双向数据总线之类的功能 93版IEEE IEEE1164 增加了标准逻辑数据类型共9种 TYPESTD LOGICIS U X 0 1 Z W L H 初始值 不定 0低电平 1高电平 高阻 弱信号不定 弱信号0 弱信号1 不可能情况 2数据对象 常量 VHDL标准定义了10种标准的数据类型 1 整数 INTEGER 2147483647 2147483647 231 1 2 实数 REAL 1 0E 38 1 0E 38 书写时一定要有小数点 3 位 BIT 信号用位值表示 位值用带单引号的 0 和 1 表示 4 位矢量 BIT VECTOR 用双引号括起来的一组位数据 00101 5 布尔量 BOOLEAN TURE或FALSE 是二值枚举量 但没有数值的含义 不能进行算术运算 6 字符 CHARACTER 字符量要用单引号括起来 其中的字符可以是a z的任一字母 0 9的任一数及空格或特殊字符等 如 A VHDL对字符量中的大小写有区别 即 A 和 a 不同 3数据类型 标准 VHDL语言标准定义了10种标准的数据类型 7 字符串 STRING 双引号括起来的一组字符序列 如 integerrange 用于程序的提示和说明 8 时间 Time 包括整数和单位 二者之间至少留一个空格 如 10s 用于表示信号时延 9 错误 NOTE WARNIING ERROR FAILURE 仿真时用来提示系统当前的工作情况 10 自然数 NATURAL 正整数类型 positive 上述10种标准数据类型在编程时可直接引用 如果用户要使用其他数据类型 则要进行自定义 2数据类型 标准 用户自定义数据类型格式 TYPE数据类型名 数据类型名 数据类型定义 常用的用户自定义数据类型 枚举类型 整数类型和实数类型 数组类型 记录类型 1 枚举类型格式 TYPE数据类型名IS 元素 元素 例 表示一周每天状态的逻辑电路TYPEweekIS sun mon tue wed thu fri sat 在综合过程中 对枚举类型的编码通常是自动的 枚举类型按二进制编码 依据类型定义时各元素自左向右的出现顺序 分配一个二进制代码 上述语句中 最左边的元素的值为000 001 010 011 100 101 综合成三根信号线表示states 2数据类型 用户自定义 2 整数类型和实数类型整数和实数类型在标准的程序包中已经作了定义 但在实际应用中 数据类型的取值范围比较小 应该重新定义 限定取值范围 以提高芯片的利用率 格式 TYPE数据类型名IS数据类型定义约束范围 例 定义一个数码管上显示数字0 9的整数TYPEdigitISINTEGERRANGE0TO9 实数类型TYPEcurrentISREALRANGE 1 0E4TO1 0E4 2数据类型 用户自定义 3 数组类型数组类型是相同类型数据集合在一起形成的一个新的数据类型 数组可以是一维数组或多维数组 格式 TYPE数据类型名ISARRAY范围OF源数据类型 例 TYPEwordISARRAY 1TO8 OFSTD LOGIC TYPEISARRAY 7downto0 ofbit 其中 7DOWNTO0 决定了数组元素的个数有8个和元素的排序方向 DOWNTO 指明下标将以降序变化 1TO8 TO 指明下标将以升序变化 按低到高的顺序排列9个元素 数组类型常用于总线 ROM RAMA等系统中 2数据类型 用户自定义 4 记录类型 记录是不同类型的名称域的集合格式 例 TYPE数据类型名ISRECORD元素名 数据类型名 元素名 数据类型名 ENDRECORD TYPEBANKISRECORDaddr0 STD LOGIC VECTOR 7DOWNTO0 addr1 STD LOGIC VECTOR 7DOWNTO0 r0 INTEGER ENDRECORDESIGNALresult BANK SIGNALaddr addr0ANDaddr1 2数据类型 用户自定义 3数据类型 数据类型的转换 VHDL是一种强类型语言 这意味着如果两个信号的数据类型不同 则不允许将其中的一个信号的值赋给另一个信号 这个问题一般可以通过将信号的数据类型转换成相同的数据类型来解决 整数类型与STD LOGIC类型可以相互转换 将STD LOGIC VECTOR类型转换成整数类型的函数为 CONV INTEGER 将整数类型转换成STD LOGIC VECTOR类型的函数为 CONV STD LOGIC VECTOR 转换函数由IEEE STD LOGIC ARITH库提供 3数据类型 数据类型的转换 3数据类型 数据类型的转换 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL 在实体说明前 必须加上这条语句 因为转换函数是由IEEE STD LOGIC ARITH库提供的ENTITYtestISPORT a INSTD LOGIC VECTOR 3DOWNTO0 b ININTEGERRANGE0TO15 c OUTSTD LOGIC VECTOR 3DOWNTO0 d OUTINTEGERRANGE0TO15 ENDtest ARCHITECTUREtest bodyOFtestISBEGINc CONV STD LOGIC VECTOR b 4 将整数转换成STD LOGIC VECTOR类型d CONV INTEGER a 将STD LOGIC VECTOR转换成整数类型ENDtest body 4运算操作符 逻辑运算符 4运算操作符 d1andd2 4运算操作符 关系运算符 在VHDL程序设计中的规则 两个对象进行比较时 数据类型一定要相同 等于 和 不等于 适用于所有数据类型的对象之间的比较 大于 小于 大于等于 小于等于适用于整数 实数位 位矢量及数组类型的比较 符号有两种含义 代入符和小于等于符 要根据上下文判断 两个位矢量类型的对象比较时 自左至右 按位比较 4运算操作符 在VHDL程序设计中 并置运算符 的使用规则 并置运算符可用于位的连接 形成位矢量 并置运算符可用两位矢量的连接构成更大的位矢量 位的连接 可以用并置符连接法 也可用集合体连接法 如 DATA C D0 D1 D2 D3 DATA C D0 D1 D2 D3 4运算操作符 ENTITYoprISPORT a IN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论