




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三讲VHDL硬件描述语言 教学课时 2学时教学内容 1 VHDL基本结构 1学时 2 VHDL的基本语法 1学时 1 数据对象 2 数据类型 3 运算操作符 4 并行赋值语句 概述 数字系统设计分为硬件设计和软件设计 但是随着计算机技术 超大规模集成电路 CPLD FPGA 的发展和硬件描述语言 HDL HardwareDescriptionLanguage 的出现 软 硬件设计之间的界限被打破 数字系统的硬件设计可以完全用软件来实现 只要掌握了HDL语言就可以设计出各种各样的数字逻辑电路 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux2 1ISPORT A B INSTD LOGIC S INSTD LOGIC Y OUTSTD LOGIC ENDmux2 1 ARCHITECTUREoneOFmux2 1ISBEGINprocess A B S beginIf S 0 thenY A ElseY B endif endprocess ENDone IEEE库说明 实体 结构体 例1 一个简单的例子 2选1数据选择器的描述 1 VHDL语言的基本结构 VHDL设计实体的基本结构由库 程序包 实体 结构体和配置等部分构成 其中 实体和结构体是设计实体的基本组成部分 它们可以构成最基本的VHDL程序 根据VHDL语法规则 在VHDL程序中使用的数据对象 数据类型都需要预先定义 为了方便使用VHDL编程 IEEE将预定义的数据类型 元件调用声明以及一些常用子程序收集在一起 形成程序包 供VHDL设计实体共享和调用 若干个程序包则形成库 常用的VHDL库有IEEE标准库 STD库和WORK库 IEEE标准库包括STD LOGIC 1164程序包 它是最重要和最常用的程序包 大部分数字系统设计都是以此程序包设定的标准为基础的 1 1 实体设计实体是一个完整的 独立的语言模块 它相当于电路中的一个器件 实体由实体声明部分和结构体组成 实体声明部分指定了设计单元的输入输出端口或引脚 它是设计实体对外的一个通信界面 是外界可以看到的部分 结构体用来描述设计实体的逻辑结构和逻辑功能 它由VHDL语句构成 是外界看不到的部分 一个实体可以拥有一个或多个结构体 ENTITY实体名IS GENERIC 类属表 PORT 端口表 ENDENTITY实体名 例 ENTITYor2ISPORT a b INSTD LOGIC C OUTSTD LOGIC ENDENTITYor2 实体语句结构如下 注意 Quartus开发工具中实体名与保存该实体的VHDL源文件名必须是一样的 在层次化系统设计中 实体说明是整个模块或整个系统的输入输出 I O 接口 在一个器件级的设计中 实体说明是一个芯片的输入输出 I O 1 1 1类属表 GENERIC 类属参量是实体说明中的可选项 放在端口说明之前 其一般格式为 GENERIC 常数名 数据类型 设定值 类属表是一种端口界面常数 常用来规定端口的大小 实体中子元件的数目及实体的定时特性等 它和常数不同 常数只能从设计实体的内部得到赋值且不能改变 而类属表的值可由设计实体的外部提供 因此设计者可以从外面通过类属表的重新设定而容易的改变一个设计实体或一个元件的内部电路结构和规模 例 GENERIC trise tfall TIME 1ns Addrwidth INTEGER 16 PORT a0 a1 INSTD LOGIC Add bus OUTSTD LOGIC VECTOR Addrwidth 1DOWNTO0 这里类属表中参数trise为上升沿宽度 tfall为下降沿宽度 用于仿真模块的设计 定义地址总线的宽度为Addrwidth位 类属值Addrwidth的改变将使结构体中所有相关的总线定义同时改变 由此使整个设计实体的硬件结构发生变化 1 1 2端口说明 PORT 端口的功能相当电路图符号中的外部引脚 端口可以被赋值 也可以当做逻辑变量用在逻辑表达式中 其一般书写格式为 PORT 端口名 端口方向数据类型 端口名 端口方向数据类型 其中端口名是设计者为实体的每一个引脚所取的名字 通常为英文字母加数字 名字的定义有一定的惯例 如clk表示时钟 D开头的端口名表示数据 A开头的端口名表示地址 端口方向是指这些通道上的数据流动的方式 如输入或输出等 端口方向有以下几种类型 1 输入 IN 允许信号进入实体 主要用于时钟输入 控制输入 如load reset enable clk 和单向的数据输入 如地址数据信号address 等 2 输出 OUT 输出模式只允许信号离开实体 常用于计数输出 单向数据输出 被设计实体产生的控制其他实体的信号等 注意 输出模式不能用于被设计实体的内部反馈 因为输出端口在实体内不能看做是可读的 3 双向模式 INOUT 双向模式允许信号双向传输 既可以进入实体 也可以离开实体 双向模式端口允许引入内部反馈 4 缓冲 BUFFER 缓冲模式允许信号输出到实体外部 但同时也可以在实体内部引用该端口的信号 缓冲端口既能用于输出也能用于反馈 缓冲模式用于在实体内部建立一个可读的输出端口 例如计数器输出 计数器的现态用来决定计数器的次态 端口模式可用图下说明 图中方框代表一个设计实体或模块 在VHDL设计中 通常将输入信号端口指定为输入模式 输出信号端口指定为输出模式 而双向数据通信信号 如计算机PCI总线的地址 数据复用总线 DMA控制器数据总线等纯双向的信号采用双向端口模式 从端口的名称 模式就能一目了然地知道信号的用途 性质 来源和去向 1 2 结构体 结构体是用来描述设计实体的内部结构与实体端口间的逻辑关系的 在电路上相当于器件的内部电路结构 结构体是对实体功能的具体描述 因此它一定要跟在实体的后面 结构体一般由两大部分组成 1 信号声明部分 用于结构体内部使用的信号名称及信号类型的说明 2 功能语句部分 描述实体的逻辑行为 结构体的语句格式为 ARCHITECTURE结构体名OF实体名IS 定义语句 BEGIN功能描述语句 END结构体名 1 2 1结构体名结构体名由设计者自行定义 OF后面的实体名指明了该结构体所对应的是哪个实体 有些设计实体有多个结构体 这些结构体的结构体名不可相同 1 2 2结构体的信号定义语句结构体的信号定义语句必须放在关键词ARCHITECTURE和BEGIN之间 用于对结构体内部将要使用的信号 常数 数据类型 元件 函数和过程加以说明 需要注意的是实体说明中定义的信号是外部信号 而结构体定义的信号为该结构体的内部信号 它只能用于这个结构体中 结构体中的信号定义和端口说明一样 应有信号名称和数据类型定义 因为它是内部连接用的信号 因此不需要方向说明 ARCHITECTURErtlOFmujISSIGNALs1 BITSIGNALs2 s3 STD LOGIC VECTOR 0TO3 BEGIN ENDrtl 实体名 结构体名 功能描述语句 结构体信号定义语句 例 结构体的信号定义实例 1 2 3结构体功能描述语句结构体功能描述语句位于BEGIN和END之间 具体地描述了构造体的行为及其连接关系 结构体的功能描述语句可以含有5种不同类型的并行语句 如图所示 每一语句结构内部可以使用并行语句 也可以是顺序语句 结构体构造图 例题演示 例1 用VHDL文本输入法描述2输入与门 并仿真验证其功能 具体演示见操作 libraryieee useieee std logic 1164 all entityand 2isport a b instd logic c outstd logic endand 2 architectureoneofand 2isbeginprocess a b beginc aandb endprocess endone 2 VHDL的基本语法 VHDL是一种计算机编程语言 其语言要素包括数据对象 数据类型和运算操作符 2 1数据对象数据对象包括变量 信号和常数 1 变量变量是局部量 只能用于进程 函数和子程序中 任何变量都要声明后才能使用 其语法格式为 variable变量名 数据类型 初始值 例 variableA bit variableB boolean false variableD E integer 2 为变量取名时 须遵循以下规则 以英文字母开头 英文字母 数字和下划线是有效的字符 关键字不能作为标识符使用 见P231 变量赋值语句的格式为 变量名 表达式 例 A 0 D 5 2 信号VHDL中的信号类似于硬件电路中的连接线 信号只能在结构体中声明 不能在进程和子程序中声明 信号语句包括信号声明语句和信号赋值语句 信号声明语句的其格式为 signal信号名 数据类型 初始值 例 signalX Y integer 3 信号赋值语句的格式为 信号名 表达式 例 X 5 例 信号声明与赋值语句举例 architectureoneofhadderissignaly bit beginy AxorB S y y AandB C0 y endone 3 常数VHDL设计实体中的常数可以使程序容易阅读和修改 定义常数后 程序中所有用到该常数值的地方都用定义的常数名表示 需要修改该常数时 只要在该常数名定义处修改即可 常数定义的语法格式为 constant常数名 数据类型 表达式 例 constantDelay time 25ns 2 2数据类型 VHDL有多种标准的数据类型 并且允许用户自定义数据类型 一 标准数据类型VHDL标准程序包STANDARD中定义 在应用中自动包含进VHDL的源文件 不需要USE语句显示调用 标准数据类型说明如下 1 整数 INTEGER 整数包括正 负整数和零 可以使用预定义运算操作符 如加 减 乘 除 进行算术运算 在VHDL语言中 整数的表示范围为 2147483647 2147483647 即从 231 1 到 231 1 2 实数 REAL 实数的定义值范围为 1 0E 38 1 0E 38 实数有正负数 书写时一定要有小数点 例如 1 0 2 5 1 0E 38 3 位 BIT 位值用字符 0 或者 1 将值放在引号中 表示 4 位矢量 BIT VECTOR 位矢量是用双引号括起来的一组数据 例如 001100 X 00bb 在这里位矢量前面的X表示是十六进制 用位矢量数据表示总线最形象也最方便 在VHDL程序中将会经常遇到 使用位矢量时必须注明位宽 即数组中元素个数和排列 例如 SIGNALS BIT VECTOR 15DOWNTO0 SIGNALY BIT VECTOR 0TO7 5 布尔量 BOOLEAN 取值是TRUE或者FALSE 6 字符 CHARACTER 字符也是一种数据类型 所定义的字符量通常用单引号括起来 如 a 一般情况下VHDL对大小写不敏感 但对字符量中的大小写则认为是不一样的 例如 B 不同于 b 字符量中的字符可以是从a到z中的任一个字母 从0到9中的任一个数以及空格或者特殊字符 如 等等 包集合standard中给出了预定义的128个ASC 码字符 不能打印的用标识符给出 字符 1 与整数1和实数1 0都是不相同的 当要明确指出1的字符数据时 则可写为 CHARACTER 1 7 字符串 STRING 字符串是由双引号括起来的一个字符序列 也称字符矢量或字符串组 字符串常用于程序的提示和说明 字符串举例如下 VATIABLEstring 1 STRING 0TO3 string 1 abcd 8 时间 TIME 时间是一个物理量数据 完整的时间量数据应包含整数和单位两部分 而且整数和单位之间至少应留一个空格的位置 例如55sec 2min等 在包集合STANDARD中给出了时间的预定义 其单位为fs ps ns s ms sec min和hr 例如 20 s 100ns 3sec 在系统仿真时 时间数据特别有用 用它可以表示信号延时 从而使模型系统能更逼近实际系统的运行环境 9 错误等级 SEVERITYLEVEL 错误等级类型数据用来表征系统的状态 共有4种 note 注意 warning 警告 error 出错 failure 失败 在系统仿真过程中可以用这4种状态来提示系统当前的工作情况 从而使设计人员随时了解当前系统工作的情况 并根据系统的不同状态采取相应的对策 10 大于等于零的整数 自然数 NATURAL 正整数 POSITIVE 这两种数据是整数的子类 NATURAL类数据为取0和0以上的正整数 而POSITIVE则只能为正整数 二 IEEE标准化数据类型IEEE的STD LOGIC 1164程序包中定义了两种应用十分广泛的数据类型 其定义如下所示 1 TYPEstd logicIS U 初始值 X 不定 0 0 1 1 Z 高阻 W 弱信号不定 L 弱信号0 H 弱信号1 不可能情况 2 std logic vector 标准逻辑失量型 是多个std logic型数据的组合 三 用户自定义的数据类型 可以由用户定义的数据类型有 用户可以选择VHDL标准数据类型的一个子集作为自定义数据类型 例如 typedigitisintegerrange0to9 它定义digit的数据类型是0 9的整数 2 3VHDL的运算操作符 在VHDL语言可以进行逻辑运算 LOGICAL 算术运算 ARITHMETIC 关系运算 RELATIONAL 使用操作符时 应注意操作符和操作数类型匹配 一 逻辑运算符 表中各运算符的优先级由低到高排列 二 算术运算 并置运算符用于将位或位失量组合起来 如 0 1 的结果是 01 表中各运算符的优先级由低到高排列 三 关系运算 比较相同类型的数据 比较结果为true或false 表中各运算符的优先级由低到高排列 2 4并行赋值语句 VHDL语言提供三种形式的并行信号赋值语句 1 简单信号赋值语句 2 条件信号赋值语句 3 选择信号赋值语句 这三种信号赋值语句的共同特点是 赋值目标都必须是信号 所有并行赋值语句在结构体内的执行是并发的 与它们书写的顺序没有关系 2 4 1简单信号赋值语句 格式 赋值目标 表达式 式中 赋值目标的数据对象必须是信号 它的数据类型必须与表达式的数据类型一致 如 F A B Q 0000 例 基本RS触发器的VHDL描述 entityRSisport R S inbit Q bufferbit endRS architectureoneofRSissignalQ NOT bit beginQ NOT RnandQ Q SnandQ NOT endone 2 4 2条件信号赋值语句 格式 赋值目标 表达式1when赋值条件1else表达式2when赋值条件2else 表达式n 例 使用条件信号赋值语句描述4选1数据选择器 entitymux4 1isport d0 d1 d2 d3 inbit s0 s1 inbit y outbit endmux4 1 architectureoneofmux4 1issignals bit vector 1downto0 begins s1 4选1数据选择器 从4个输入中选1个作为输出 因此 该电路有 输入信号 4个 可命名为d0 d1 d2 d3 选择信号 2个 可命名为s0 s1 输出信号 1个 可命名为y 2 4 3选择信号赋值语句 格式 with表达式select信号 表达式1when值1 表达式2when值2 表达式nwhen值n 例 使用选择信号赋值语句描述3 8译码器 en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 正常分娩护理查房范文
- 出租房安全培训讲稿课件
- 出渣车行车安全培训课件
- 出海应急避险安全培训课件
- 企业安全培训资格课件
- 出国安全培训讲话课件
- 出口押汇课件
- 舆情引导算法设计-洞察及研究
- 芯恩招聘笔试题库2025
- 2025新版本:试用期解除劳动合同的范本
- 复变函数与积分变换教案
- 品管圈计划书(模板)
- 湖北厂房施工进度计划网络图和横道图
- GB/T 7424.2-2008光缆总规范第2部分:光缆基本试验方法
- GB/T 2423.22-2012环境试验第2部分:试验方法试验N:温度变化
- 最新低压电工安全培训课件
- 水土保持工程质量评定表
- 整机部整机出货检验重点标准
- 人像摄影:户外人像摄影课件
- 美丽中国中英文字幕
- 《教育技术学导论》课程教学大纲
评论
0/150
提交评论