




已阅读5页,还剩189页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019 12 26 南京理工大学机械工程学院 1 第四章vhdl硬件描述语言 张志安南京理工大学 2019 12 26 南京理工大学机械工程学院 2 主要内容4 1vhdl语言概述4 2vhdl语言程序的基本结构4 3vhdl语言的数据类型及运算操作符4 4vhdl语言的顺序描述语句4 5vhdl语言的并发描述语句4 6vhdl语言在数字电路中的应用 2019 12 26 南京理工大学机械工程学院 3 4 1vhdl语言概述 vhdl vhsic veryhighspeedintegratedcircuit hardwaredescriptionlanguage 80年代初由美国国防部在实施超高速集成电路 vhsic 项目时开发的 1987年由ieee协会批准为ieee工业标准 称为ieee1076 1987 各eda公司相继推出支持vhdl的设计环境 1993年被更新为93标准 即ieee1076 1993 进一步提高抽象描述层次 扩展系统描述能力 数字电子技术的基本知识回顾 组合逻辑电路编码器 译码器 数据选择器 加法器 数值比较器等时序逻辑电路同步时序逻辑电路异步时序逻辑电路寄存器 移位寄存器 计数器 序列信号发生器 一 传统设计方法 1 首先确定可用的元器件 2 根据这些器件进行逻辑设计 完成各模块 3 将各模块进行连接 最后形成系统 4 而后经调试 测量观察整个系统是否达到规定的性能指标 传统的设计方法是基于中小规模集成电路器件进行设计 如74系列及其改进系列 74hc系列等都属于通用型数字集成电路 而且是采用自底向上进行设计 eda electronicsdesignautomation 即电子设计自动化技术 是利用计算机工作平台 从事电子系统和电路设计的一项技术 eda技术为电子系统设计带来了这样的变化 1 设计效率提高 设计周期缩短 2 设计质量提高 3 设计成本降低 4 能更充分地发挥设计人员的创造性 5 设计成果的重用性大大提高 省去了不必要的重复劳动 二 eda设计方法 自顶向下的设计方法 数字电路的eda设计是基于pld进行设计的 支持自顶向下的设计方法 1 首先从系统设计入手 在顶层进行功能划分和结构设计 2 然后再逐级设计底层的结构 3 并在系统级采用仿真手段验证设计的正确性 4 最后完成整个系统的设计 实现从设计 仿真 测试一体化 传统设计方法vseda设计方法 三 pld器件 如果能把所设计的数字系统做成一片大规模集成电路 则不仅能减小电路的体积 重量 功耗 而且会使电路的可靠性大为提高 为某种专门用途而设计的集成电路叫做专用集成电路 即所谓的asic applicationspecificintegratedcircuit的缩写 在用量不大的情况下 设计和制造这样的专用集成电路成本很高 而且设计 制造的周期也较长 可编程逻辑器件的研制成功为解决上述问题提供了比较理想的途径 一 出现的背景 二 pld概述 pld 可编程逻辑器件 programmablelogicdevice 可编程逻辑器件是一种数字集成电路的半成品 在其芯片上按一定排列方式集成了大量的逻辑门和触发器等基本逻辑元件 通过编程可以设置其逻辑功能 pld编程 利用开发工具对pld进行加工 即按设计要求将这些片内的元件连接起来 使之完成某个逻辑电路或系统的功能 成为一个专用集成电路 asic applicationspecificintegratedcircuit pld开发系统 pld开发系统包括硬件和软件两部分 硬件部分 计算机 下载电缆或编程器 软件部分 集成开发系统 altera公司 maxplus quartus xilinx公司 foundation iselattice公司 synariosystem ispexpertsystem 2019 12 26 南京理工大学机械工程学院 12 四 pld设计流程 1 pld设计准备 在设计之前 首先要进行方案论证和器件选择等设计准备工作 设计者首先要根据任务要求 判断系统的可行性 系统的可行性要受到逻辑要求合理性 成本 开发条件 器件供应等方面的约束 若系统可行 则根据系统所完成的功能及复杂程度 对器件本身的资源和成本 工作速度及连线的可布性等方面进行权衡 选择合适的设计方案和合适的器件类型 2 设计输入 将所设计的电路的逻辑功能按照开发系统要求的形式表达出来的过程称为设计输入 通常 设计输入有如下三种方式 1 原理图输入方式适用于对系统及各部分电路很熟悉的场合 2 硬件描述语言输入方式硬件描述语言是用文本方式描述设计 硬件描述语言有abel ahdl vhdl verilog等 其中vhdl和verilog已成为ieee标准 3 波形输入方式 3 设计处理 逻辑优化把逻辑描述转变为最适合在器件中实现的形式 优化使设计所占用的资源最少 逻辑综合根据设计描述 对给定的硬件结构组件 最终获得门级电路甚至更底层的电路描述文件 即将多个模块化设计文件合并为一个网表文件 适配确定优化后的逻辑能否与器件中的宏单元和i o单元适配 分割将大的设计分割为多个便于器件内部资源实现的逻辑小块的形式 2019 12 26 南京理工大学机械工程学院 16 4 设计校验 设计校验过程包括功能仿真和时序仿真 功能仿真时序仿真 5 器件编程 器件编程就是将开发系统生成的目标文件下载到可编程逻辑器件中 来定义内部模块的逻辑功能以及它们的相互连接关系 两种编程方式 编程器下载电缆 返回 2019 12 26 南京理工大学机械工程学院 17 4 2vhdl语言程序的基本结构 librarystd usestd standard all entityand2isport a b inbit c outbit endand2 architecturea1ofand2isbeginc aandb enda1 vhdl程序 2019 12 26 南京理工大学机械工程学院 18 库 library 是经编译后的数据的集合 它用于存放包集合定义 实体定义 构造体定义和配置定义 声明格式 library库名 1 库 library 4 2vhdl语言程序的基本结构 vhdl库可分为5种 1 ieee库 2 std库 标准库 3 面向asic的库 4 work库 默认库 5 用户定义库 2019 12 26 南京理工大学机械工程学院 19 4 2vhdl语言程序的基本结构 2 包集合 package 包集合 package 中定义了基本的常数 信号 数据类型 元件语句 函数定义及过程定义等 是库结构中的一个层次 声明格式 use库名 包集合名 项目名 use库名 package名 all 包集合的结构包括 包集合标题 包首 包集合主体 包体 2019 12 26 南京理工大学机械工程学院 20 package包集合名is 包说明项 end包集合名 4 2vhdl语言程序的基本结构 2 包集合 package packagebody包集合名is 包体说明项 end包集合名 包集合标题 包集合主体 包集合体并非必须 只有在包集合中要说明子程序时 包集合体才是必须的 2019 12 26 南京理工大学机械工程学院 21 作用 entity 实体 用于定义电路的外观 即i o端口的类型和数量 定义格式 entity实体名isport a inbit b inbit c outbit end实体名 3 实体 entity 定义区 端口名 数据类型 端口模式 4 2vhdl语言程序的基本结构 2019 12 26 南京理工大学机械工程学院 22 端口说明 port 端口为设计实体和其外部环境提供动态通信的通道 是对基本设计单元与外部接口的描述 其功能相当电路图符号的外部引脚 端口可以被赋值 也可以当做逻辑变量用在逻辑表达式中 其一般书写格式为 port 端口名 端口模式数据类型 端口名 端口模式数据类型 3 实体 entity 定义区 4 2vhdl语言程序的基本结构 2019 12 26 南京理工大学机械工程学院 23 标识符的定义原则 1 标识符由字母 数字和下划线组成 a 7 2 标识符不区分大小写 ab和ab是一样的 3 第一个字符必须是字母 即a666 4 不允许有两个连续的下划线 a b错误 5 末尾不能是下划线 mname 错误 6 标识符不能和关键字相同 如entity is等 3 实体 entity 定义区 4 2vhdl语言程序的基本结构 2019 12 26 南京理工大学机械工程学院 24 端口模式 mode 有以下几种类型 in out inout buffer端口模式可用下图说明 黑框代表一个设计或模块 inoutbufferinout 3 实体 entity 定义区 4 2vhdl语言程序的基本结构 2019 12 26 南京理工大学机械工程学院 25 3 实体 entity 定义区 4 2vhdl语言程序的基本结构 输入 in 允许信号进入实体 主要用于时钟输入 控制输入 如load reset enable clk 和单向的数据输入 如地址数据信号address 等 输出 out 输出模式只允许信号离开实体 常用于计数输出 单向数据输出 被设计实体产生的控制其他实体的信号等 注意 输出模式不能用于被设计实体的内部反馈 因为输出端口在实体内不能看做是可读的 2019 12 26 南京理工大学机械工程学院 26 3 实体 entity 定义区 4 2vhdl语言程序的基本结构 双向模式 inout 双向模式允许信号双向传输 既可以进入实体 也可以离开实体 双向模式端口允许引入内部反馈 缓冲 buffer 缓冲模式允许信号输出到实体外部 但同时也可以在实体内部引用该端口的信号 缓冲端口既能用于输出也能用于反馈 缓冲模式用于在实体内部建立一个可读的输出端口 例如计数器输出 计数器的现态用来决定计数器的次态 2019 12 26 南京理工大学机械工程学院 27 3 实体 entity 定义区 4 2vhdl语言程序的基本结构 out和buffer的区别 2019 12 26 南京理工大学机械工程学院 28 结构体也叫构造体 结构体描述了基本设计单元 实体 的结构 行为 元件及内部连接关系 也就是说它定义了设计实体的功能 规定了设计实体的数据流程 制定了实体内部元件的连接关系 结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述 即行为描述 基本设计单元的数学模型描述 寄存器传输描述 数据流描述 和结构描述 逻辑元件连接描述 结构体是对实体功能的具体描述 因此它一定要跟在实体的后面 4 结构体 architecture 定义区 4 2vhdl语言程序的基本结构 2019 12 26 南京理工大学机械工程学院 29 4 结构体 architecture 定义区 定义格式 architecture结构体名of实体名is 声明语句 内部信号 变量 常数 元件 子程序声明 begin并行描述语句 end结构体名 4 2vhdl语言程序的基本结构 2019 12 26 南京理工大学机械工程学院 30 结构体 architecture 构造图 2019 12 26 南京理工大学机械工程学院 31 图中5种功能描述语句的基本组成和功能分别是 块语句是由一系列并行语句构成的组合体 它的功能是将结构体中的并行语句组成一个或多个子模块 进程语句定义顺序语句模块 用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值 信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值 子程序调用语句可以调用进程或参数 并将获得的结果赋值于信号 元件例化语句对其他的设计实体做元件调用说明 并将此元件的端口与其他元件 信号或高层实体的界面端口进行连接 4 结构体 architecture 定义区 4 2vhdl语言程序的基本结构 2019 12 26 南京理工大学机械工程学院 32 4 2vhdl语言程序的基本结构 实体与结构体的关系 一个设计实体可有多个结构体 代表实体的多种实现方式 各个结构体的地位相同 2019 12 26 南京理工大学机械工程学院 33 4 2vhdl语言程序的基本结构 5 配置 configuration 配置 从某个实体的多种结构体描述方式中选择特定的一个 2019 12 26 南京理工大学机械工程学院 34 configuration配置名of实体名isfor选配结构体名endfor end配置名 4 2vhdl语言程序的基本结构 5 配置 configuration 在用vhdl描述硬件电路时 常常采用结构描述方式和混合描述方式 在这两种描述方式中 常常需要将其他设计实体作为元件进行引用 这时就需要将不同元件通过配置安装到不同的设计实体中 vhdl提供了配置语句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系 2019 12 26 南京理工大学机械工程学院 35 libraryieee useieee std logic 1164 all entitynandisport a instd logic b instd logic c outstd logic endentitynand architectureart1ofnandisbeginc not aandb endarchitectureart1 例 一个与非门不同实现方式的配置如下 2019 12 26 南京理工大学机械工程学院 36 architectureart2ofnandisbeginc 1 when a 0 and b 0 else 1 when a 0 and b 1 else 1 when a 1 and b 0 else 0 when a 1 and b 1 else 0 endarchitectureart2 例 一个与非门不同实现方式的配置如下 2019 12 26 南京理工大学机械工程学院 37 configurationfirstofnandisforart1 endfor endfirst configurationsecondofnandisforart2endfor endsecond 例 一个与非门不同实现方式的配置如下 2019 12 26 南京理工大学机械工程学院 38 二输入与门电路设计范例 电路真值表 2019 12 26 南京理工大学机械工程学院 39 librarystd usestd standard all entityand2isport a inbit b inbit c outbit endand2 实体定义结束 双减号 为vhdl程序的注释符 类似c语言中的 注释符 二输入与门电路设计范例 2019 12 26 南京理工大学机械工程学院 40 二输入与门电路设计范例 architecturenaofand1isbeginc 0 whena 0 andb 0 else 0 whena 1 andb 0 else 0 whena 0 andb 1 else 1 符号 为信号直接赋值符 endna 结构体naarchitecturenbofand2isbeginc aandb and为逻辑与操作endnb 结构体nb 2019 12 26 南京理工大学机械工程学院 41 二输入与门电路设计范例 configurations1ofand1isfornaendfor endconfigurations1 configurations2ofand2isfornbendfor endconfigurations2 结构体配置结束 2019 12 26 南京理工大学机械工程学院 42 2选1多路选择器的vhdl描述 2019 12 26 南京理工大学机械工程学院 43 2选1多路选择器的vhdl描述 entitymux21aisport a b inbit s inbit y outbit endentitymux21a architectureoneofmux21aisbeginy awhens 0 elseb endarchitectureone 实体 结构体 2019 12 26 南京理工大学机械工程学院 44 2选1多路选择器的vhdl描述 entitymux21aisport a b inbit s inbit y outbit endentitymux21a architectureoneofmux21aissignald e bit begind aand nots e bands y dore endarchitectureone 2019 12 26 南京理工大学机械工程学院 45 2选1多路选择器的vhdl描述 entitymux21aisport a b s inbit y outbit endentitymux21a architectureoneofmux21aisbeginprocess a b s beginifs 0 theny a elsey b endif endprocess endarchitectureone 2019 12 26 南京理工大学机械工程学院 46 mux21a功能时序波形 2选1多路选择器的vhdl描述 返回 2019 12 26 南京理工大学机械工程学院 47 4 3vhdl语言的数据类型及运算操作符 1 数据对象2 数据类型3 运算操作符4 数据对象属性5 vhdl语言词法规则 2019 12 26 南京理工大学机械工程学院 48 1 数据对象 三种对象 常量 constant 变量 variable 信号 signal 三种对象的物理含义 常量代表数字电路中的电源 地 恒定逻辑值等常数 变量代表暂存某些值的载体 常用于描述算法 信号代表物理设计中的某一条硬件连接线 包括输入 输出端口 2019 12 26 南京理工大学机械工程学院 49 1 数据对象 三种对象的特点及说明场合 信号 全局量 用于architecture package entitiy 变量 局部量 用于process function procedure 常量 全局量 可用于上面两种场合 2019 12 26 南京理工大学机械工程学院 50 1 数据对象 常量说明常量说明 对某一个常量名赋予一个固定的值 格式 例 constantdata bit vector 3downto0 1010 constantwidth integer 8 constantx new bit x 常量数据类型必须与表达式的数据类型一致 constant常数名 数据类型 表达式 2019 12 26 南京理工大学机械工程学院 51 常量的可视性 作用范围 常量是全局量 其作用范围取决于常量被定义的位置 2019 12 26 南京理工大学机械工程学院 52 1 数据对象 变量说明变量是一个局部量 只能在进程和子程序中定义 使用 其作用范围仅限于定义了变量的进程和子程序中 格式 例 variablea b bit variablecount integerrange0to255 10 变量的初值可用于仿真 但综合时被忽略 variable变量名 数据类型约束条件 表达式 2019 12 26 南京理工大学机械工程学院 53 1 数据对象 信号说明电子硬件系统运行的基本特性 各部分电路工作的并行特性 信号传输过程中的延时特性 多驱动源的总线特性 时序电路中触发器的记忆特性等 信号是电子系统内部硬件连接和硬件特性的抽象表示 用来描述硬件系统的基本特性 格式 signal信号名 数据类型约束条件 表达式 2019 12 26 南京理工大学机械工程学院 54 1 数据对象 例 signala b bit signalinit integer 1 signals1 std logic 0 signals2 std logic vector 15downto0 注 a 综合时初值被忽略 b 信号是全局量 可在结构体 实体 块中说明和使用信号 c 在进程和子程序中只能使用信号 不能说明信号 2019 12 26 南京理工大学机械工程学院 55 例 进程中信号与变量的使用 entityexisport endex architecturearch exofexissignala b std logic beginprocess a b variablec d std logic beginc a b d a b endprocess endarch ex 2019 12 26 南京理工大学机械工程学院 56 1 数据对象 信号与端口的区别 除没有方向说明外 信号与实体的 端口 port 概念相似 端口是一种隐形的信号 entityexamisport signal a b instd logic signal c outstd logic endexam 端口是一种有方向的信号 即输出端口不能读出数据 只能写入数据 输入端口不能写入数据 只能读出数据 信号本身无方向 可读可写 2019 12 26 南京理工大学机械工程学院 57 信号与变量的区别 信号和变量是vhdl中重要的客体 他们之间的主要区别有 信号赋值至少要有 延时 而变量赋值没有 信号除当前值外有许多相关的信息 如历史信息和投影波形 而变量只有当前值 进程对信号敏感而不对变量敏感 信号可以是多个进程的全局信号 而变量只在定义他们的顺序域可见 共享变量除外 信号是硬件中连线的抽象描述 他们的功能是保存变化的数据值和连接子元件 变量在硬件中没有类似的对应关系 他们用于硬件特性的高层次建模所需要的计算中 2019 12 26 南京理工大学机械工程学院 58 process a b c d begind a x b d d c y b d endprocess process a b c variabled std logic vector 0to3 begind a x b d d c y b d endprocess 结果 x b c x b c 结果 x b a x b c 信号量的值将进程语句最后所带入的值作为最终代入值 而变量的值一经赋值就变成新的值 2019 12 26 南京理工大学机械工程学院 59 2 数据类型 在vhdl程序中 经常会遇到这样的语句 signala std logic variableb std logic vector 7downto0 constantc integer 数据对象类型 数据类型 数据对象名 vhdl是一种强数据类型语言 要求设计实体中的每一个常数 信号 变量 函数以及设定的各种参量都必须具有确定的数据类型 并且相同数据类型的量才能互相传递和作用 2019 12 26 南京理工大学机械工程学院 60 2 数据类型 标准数据类型 ieee预定义标准 用户自定义数据类型vhdl的标准数据类型 十种1 布尔量 boolean 布尔量具有两种状态 false和true常用于逻辑函数 如相等 比较 等中作逻辑比较 如 bit值转化成boolean值 boolean var bit var 1 2019 12 26 南京理工大学机械工程学院 61 2 数据类型 2 位 bit bit表示一位的信号值 放在单引号中 如 0 或 1 3 位矢量 bit vector bit vector是用双引号括起来的一组位数据 如 001100 x 00b10b 4 字符 character 用单引号将字符括起来 variablecharacter var character character var a 2019 12 26 南京理工大学机械工程学院 62 2 数据类型 5 整数 integer integer表示所有正的和负的整数 硬件实现时 利用32位的位矢量来表示 可实现的整数范围为 231 1 to 231 1 vhdl综合器要求对具体的整数作出范围限定 否则无法综合成硬件电路 如 signals integerrange0to15 信号s的取值范围是0 15 可用4位二进制数表示 因此s将被综合成由四条信号线构成的信号 2019 12 26 南京理工大学机械工程学院 63 2 数据类型 6 自然数 natural 和正整数 positive natural是integer的子类型 表示非负整数 positive是integer的子类型 表示正整数 定义如下 subtypenaturalisintegerrange0tointeger high subtypepositiveisintegerrange1tointeger high 2019 12 26 南京理工大学机械工程学院 64 2 数据类型 7 实数 real 或称浮点数取值范围 1 0e38 1 0e38实数类型仅能用于vhdl仿真器 一般综合器不支持 8 字符串 string string是character类型的一个非限定数组 用双引号将一串字符括起来 如 variablestring var string 1to7 string var rosebud 2019 12 26 南京理工大学机械工程学院 65 9 时间 time 由整数和物理单位组成如 55ms 20nstypetimeisrange 2147483647to2147483647unitefs 飞秒 10 15s vhdl中的最小时间单位ps 1000fs 皮秒ns 1000ps 纳秒us 1000ns 微秒ms 1000us 毫秒sec 1000ms 秒min 60sec 分hr 60min 时endunits 2 数据类型 2019 12 26 南京理工大学机械工程学院 66 2 数据类型 10 错误等级 severity level 仿真中用来指示系统的工作状态 共有四种 note 注意 warning 警告 error 出错 failure 失败 其定义如下 typeseverity levelis note warning error failure 2019 12 26 南京理工大学机械工程学院 67 2 数据类型 ieee预定义标准逻辑位与矢量1 std logic类型由ieee库中的std logic 1164程序包定义 为九值逻辑系统 如下 u x 0 1 z w l h u 初始值 x 不定 0 0 1 1 z 高阻 w 弱信号不定 l 弱信号0 h 弱信号1 不可能情况 2019 12 26 南京理工大学机械工程学院 68 2 数据类型 ieee预定义标准逻辑位与矢量由std logic类型代替bit类型可以完成电子系统的精确模拟 并可实现常见的三态总线电路 2 std logic vector类型由std logic构成的数组 定义如下 typestd logic vectorisarray naturalrange ofstd logic 赋值的原则 相同位宽 相同数据类型 2019 12 26 南京理工大学机械工程学院 69 2 数据类型 用户自定义数据类型用户自定义类型是vhdl语言的一大特色 可由用户定义的数据类型有 枚举类型 整数和实数类型 数组类型 记录类型 子类型 2019 12 26 南京理工大学机械工程学院 70 2 数据类型 2019 12 26 南京理工大学机械工程学院 71 subtype语句格式 例 subtypedigitsisintegerrange0to9 由subtype语句定义的数据类型称为子类型 2 数据类型 subtype子类型名is基本数据类型约束范围 2019 12 26 南京理工大学机械工程学院 72 2 数据类型 自定义整数类型用户定义的整数类型是标准包中整数类型的子范围 格式 例 typemy integerisintegerrange0to15 自定义数组类型数组 同类型元素的集合 vhdl支持多维数组 多维数组的声明 typebyteisarray 7downto0 ofbit 1维8位数组typevectorisarray 3downto0 ofbyte 2维4x8数组 type类型名称isinteger整数范围 2019 12 26 南京理工大学机械工程学院 73 3 运算操作符 vhdl运算操作符的分类 逻辑运算符 logicaloperator 关系运算符 relationaloperator 算术运算符 arithmeticoperator 并置运算符 overloadingoperator 2019 12 26 南京理工大学机械工程学院 74 1 逻辑运算符6种 and or nand nor xor not要求 操作数类型必须相同 可为如下类型 bit bit vector std logic std logic vector boolean数组操作数的维数 大小必须相同 注 当有两个以上的逻辑表达式时 左右没有优先级差别 必须使用括号 如 x aandb or notcandd 2019 12 26 南京理工大学机械工程学院 75 例外 当逻辑表达式中只有 and or xor 运算符时 可以省略括号 如 a bandcanddande a borcordore a bxorcxordxore 上述逻辑运算在库ieee的程序包std logic 1164中定义 2019 12 26 南京理工大学机械工程学院 76 libraryieee useieee std logic 1164 all entitylitiis port a b c d instd logic e outstd logic endliti achitectureaa1oflitiis begin e aandb ortmp signaltmp std logic tmp cxord endaa1 2019 12 26 南京理工大学机械工程学院 77 2 关系运算符6种 用于比较相同父类的两个操作数 返回boolean值 在关系运算符中小于等于符 和代入符 是相同的 在读vhdl语言的语句时 应按照上下文关系来判断此符号到底是关系符还是代入符 上述运算在库ieee的程序包std logic arith中定义 2019 12 26 南京理工大学机械工程学院 78 entitymy1is port a b inbit vector 0to3 m outboolean endmy1 architecturea1ofmy1 begin m a b enda1 entitymy1is port a b inbit vector 0to3 m outboolean architecturea1ofmy1 begin m b enda1 endmy1 libraryieee useieee std logic arith all 2019 12 26 南京理工大学机械工程学院 79 3 算术运算符 vhdl语言中有5类算术运算符 他们分别是 求和操作符 加 减 求积操作符 乘 除 mod 求模 rem 取余 符号操作符 正 负 混合操作符 指数 abs 取绝对值 移位操作符 sll 逻辑左移 srl 逻辑右移 sla 算术左移 sra 算术右移 rol 逻辑循环左移 ror逻辑循环右移 只能是bit vetor类型 上述运算在库ieee的程序包std logic arith中定义 2019 12 26 南京理工大学机械工程学院 80 移位操作语法结构 左操作数必须是bit vetor类型右操作数必须是integer类型 sll逻辑左移 右端空出来的位置填 0 srl逻辑右移 左端空出来的位置填 0 sla算术左移 复制右端位 填充右端空出位置上 sra算术右移 复制左端位 填充左端空出位置上 2019 12 26 南京理工大学机械工程学院 81 4 并置运算符 用于位的连接 signalg h i std logic signalc d e std logic vector 0to1 signala std logic vector 0to3 d i noth 元素与元素并置 形成长度为2的数组a c d 数组与数组并置 形成长度为4的数组 2019 12 26 南京理工大学机械工程学院 82 运算操作符的优先顺序 运算符优先级not abs 最高优先级 mod rem 正号 负号 sll sla srl sra rol ror and or nand nor xor xnor最低优先级 2019 12 26 南京理工大学机械工程学院 83 1 数值类属性 数组类型的数据对象 数值类属性有 left right low high length 其中用符号 隔开对象名及其属性 left表示数组的左边界 right表示数组的右边界 low表示数组的下边界 high表示数组的上边界 length表示数组的长度 4 数据对象属性 如 signala std logic vector 7downto0 signalb std logic vector 0to3 则这两个信号的属性值分别为 a left 7 a right 0 a low 0 a high 7 a length 8 b left 0 b right 3 b low 0 b high 3 b length 4 left表示数组的左边界 right表示数组的右边界 low表示数组的下边界 high表示数组的上边界 length表示数组的长度 2019 12 26 南京理工大学机械工程学院 85 2 event属性 event属性 它的值为布尔型 如果刚好有事件发生在该属性所附着的信号上 即信号有变化 则其取值为ture 否则为false 利用此属性可决定时钟信号的变化情况 即时钟是否发生 4 数据对象属性 2019 12 26 南京理工大学机械工程学院 86 2 event属性 例如 时钟边沿表示signalclk instd logic 则clk eventandclk 1 表示时钟的上升沿 即时钟变化了 且其值为1 clk eventandclk 0 表示时钟的下降沿 即时钟变化了 且其值为0 此外 还可利用两个函数来表示时钟的边沿 rising edge clk 表示时钟的上升沿falling edge clk 表示时钟的下降沿这两个函数分别在库ieee的程序包std logic 1164中定义 4 数据对象属性 2019 12 26 南京理工大学机械工程学院 87 5 vhdl语言词法规则 1 注释为了提高vhdl源程序的可读性 在vhdl中可以写入注释 注释以 开头直到本行末尾的一段文字 在软件中可以看见 敲入 之后 后面字体的颜色就发生改变 注释不是vhdl设计描述的一部分 编译后存入数据库中的信息不包含注释 注释举例 q outstd logic vector 11downto0 a d转换数据输出显示 行注释 sram数据写入控制状态机 段注释 writ state process clk rst sram写入控制状态机时序电路进程 2019 12 26 南京理工大学机械工程学院 88 2 数字数字型文字可以有多种表达方式 可以是十进制数 也可以表示为二进制 八进制或十六进制等为基的数 可以是整数 也可以是含有小数点的浮点数 现举例如下 十进制整数表示法 如012578 456 78456 2e6在相邻数字之间插入下划线 对十进制数值不产生影响 仅仅是为了提高文字的可读性 允许在数字之前冠以若干个0 但不允许在数字之间存在空格 以基表示的数 用这种方式表示的数由五个部分组成 第一部分 用十进制数标明数值进位的基数 第二部分 数值隔离符号 第三部分 表达的文字 第四部分 指数隔离符号 第五部分 用十进制表示的指数部分 这一部分的数如果为0可以省去不写 如2 111 1011 8 1473 16 a8对以基表示的数而言 相邻数字间插入下划线不影响数值 基的最小数为2 最大数为16 以基表示的数中允许出现a至f的字母 大小写字母意义无区别 2019 12 26 南京理工大学机械工程学院 89 实数 实数必须带有小数点 如12 00 03 146 741 113 66652 6e 2 物理量文字 综合器不支持物理量文字的综合 如60s 秒 100m 米 177a 安培 3 字符和字符串字符是用单引号引起来的asc 字符 可以是数值 也可以是符号或字母 如 e e 23 a 字符串是一维的字符数组 需放在双引号中 有两种类型的字符串 文字字符串和位矢量字符串 文字字符串是用双引号引起来的一串文字 如 false x thisisend 2019 12 26 南京理工大学机械工程学院 90 位矢量字符串是被双引号引起来的扩展的数字序列 数字序列前冠以基数说明符 基数符有 b o x 他们的含义如下 b 二进制基数符号 表示二进制位0或1 在字符串中每一个位表示一个bit o 八进制基数符号 在字符串中每一个数代表一个八进制数 即代表一个3位 bit 的二进制数 x 十六进制基数符号 代表一个十六进制数 即代表一个4位二进制数 例如 b 1011 1111 o 152 x f821 2019 12 26 南京理工大学机械工程学院 91 4 下标名下标名用于指示数组型变量或信号的某一元素 signala b bit vector 0to3 signals integerrange0to2 signalx y bit x a s y b 3 上例中 a s 为一下标语句 s是不可计算的下标名 只能在特定情况下进行综合 b 3 的下标为3 可以进行综合 返回 2019 12 26 南京理工大学机械工程学院 92 4 4vhdl语言的顺序描述语句 1 顺序语句每一条语句的执行都是顺序进行的 如同高级编程语言中的命令执行方式 一次一条命令 按书写顺序由上而下执行 2 顺序语句只能出现在进程和子程序内部 3 由于顺序语句的次序很重要 因此 顺序语句要与并行语句分割开 这可以通过process语句来实现 process语句出现在结构体中 它将其内部的语句进行封装 顺序语句有三个特点 a 所有语句的执行是顺序进行的 b 每条语句的执行和其所在的位置有关 c 顺序语句的输出不仅依赖于输入 而且还受位置的影响 2019 12 26 南京理工大学机械工程学院 93 4 4vhdl语言的顺序描述语句 1 代入语句和延时语句 2 if语句 3 case语句 4 null语句 5 loop语句 6 next和exit语句 7 wait语句 8 procedure 过程 调用语句 2019 12 26 南京理工大学机械工程学院 94 1 代入语句和延时语句 代入语句是vhdl语言中进行行为描述的最基本的语句 例如 a b该语句的功能是a得到b的值 当该语句有效时 现行信号b的值将代入信号a 只要b的值有一个新的变化 那么该语句将被执行 所以 b是该代入语句的一个敏感量 代入语句最普遍的格式为 信号量 敏感信号量表达式例如 z anor bnandc 2019 12 26 南京理工大学机械工程学院 95 1 代入语句和延时语句 延时语句有两种 惯性延时和传输延时惯性延时 在vhdl语言中 惯性延时是缺省的 即在语句中如果不作特别说明 产生的延时一定是惯性延时 几乎所有器件都存在惯性延时 因此 硬件电路的设计人员为了逼真地仿真硬件电路的实际工作情况 在代入语句中总要加上惯性延时时间的说明 例如 b aafter10ns 惯性延时说明只在行为仿真时有意义 逻辑综合时将被忽略 或者在逻辑综合前必须去掉延时说明 2019 12 26 南京理工大学机械工程学院 96 1 代入语句和延时语句 惯性延时 在惯性模型中 系统或器件输出信号要发生变化必须有一段时间的延时 这段延时时间称为系统或器件的惯性或称惯性延时 惯性延时有一个重要特点 即当一个系统或器件 它的输入信号变化周期小于系统或器件的惯性延时时 其输出将保持不变 2019 12 26 南京理工大学机械工程学院 97 1 代入语句和延时语句 惯性延时 如有一个门电路 其惯性延时时间为20ns 当该门电路的输入端a输入一个10ns的脉冲信号时 其输出端b的输出仍维持低电平 没有发生变化 对于惯性时间等于20ns的门电路 为使其实现正常的功能 输入信号的变化周期一定要大于20ns 2019 12 26 南京理工大学机械工程学院 98 1 代入语句和延时语句 传输延时 在vhdl语言中 传输延时不是缺省的 必须在语句中明确说明 传输延时常用于描述总线延时 连接线的延时及asic芯片中的路径延时 对于相同的门电路 用传输延时来代替惯性延时 就可以得到正确的输出结果 也就是说 输出端的信号除延时规定时间外 将完全复现输入端的输入波形 而不管输入波形的形状和宽窄如何 2019 12 26 南京理工大学机械工程学院 99 1 代入语句和延时语句 传输延时 具有传输延时的代入语句如下所示 b transportaafter20ns语句中 transport 是专门用于说明传输延时的前置词 2019 12 26 南京理工大学机械工程学院 100 2 if语句 if语句是根据所指定的条件来确定执行那些语句的 其书写格式通常有3种类型 第一种 格式if条件then顺序处理语句 endif 2019 12 26 南京理工大学机械工程学院 101 libraryieee useieee std logic 1164 all entitydffisport clk d instd logic q outstd logic enddff architectureaofdffisbeginprocess clk beginif clk eventandclk 1 thenq d endif endprocess enda d触发器 2019 12 26 南京理工大学机械工程学院 102 2 if语句 第二种 格式if条件then顺序处理语句 else顺序处理语句 endif entitymux21isport a b s inbit y outbit endentitymux21 architectureoneofmux21isbeginprocess a b s beginif s 0 theny a elsey b endif endprocess endarchitectureone 2选1电路 2019 12 26 南京理工大学机械工程学院 103 2 if语句 第三种 格式if条件then顺序处理语句 elsif条件then顺序处理语句 else顺序处理语句 endif 自上而下逐一判断条件是否成立 若条件成立 则执行相应的顺序语句 并不再判断其它表达式 直接结束if语句的执行 这种语法格式能够进行优先级的判断 因此各条件表达式中的条件可以重叠 2019 12 26 南京理工大学机械工程学院 104 libraryieee useieee std logic 1164 all entitymux4isport input instd logic vector
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 传热考试题及答案
- 中西文明比较与互鉴知到智慧树答案
- 建筑施工技术第阶段测试题(附答案)
- 汽车维修工中级考试模拟题含参考答案
- 中小学教师资格考试专题知到智慧树见面课答案
- 介入手术室理论知识考核试题及答案
- 电梯安全管理人员考评习题跟答案
- 2025电子商务合同监管与电子商务行业发展趋势研究
- 2025二手房买卖违约金及原房产证遗失补办服务合同
- 2025年土地整治与开发土地租赁承包合同范本详解
- 篮球教练培训课课件
- 危重症患者护理常规及工作流程
- 2025至2030中国汽车空调压缩机行业产业运行态势及投资规划深度研究报告
- 2025年人工流产并发症及其护理试题
- 2025至2030年中国自动化生产线行业市场运行态势及未来发展潜力报告
- 2026版步步高大一轮高考数学复习110练第四章 §4.4 简单的三角恒等变换含答案
- 培训学校上墙管理制度
- 评估业务咨询顾问协议4篇
- 2025年中国化学纤维市场现状分析及前景预测报告
- DB65╱T 3953-2016 反恐怖防范设置规范 商业场所
- B型脑钠肽BNP课件
评论
0/150
提交评论