EDA技术与VHDL程序设计基础教程-PPT.ppt_第1页
EDA技术与VHDL程序设计基础教程-PPT.ppt_第2页
EDA技术与VHDL程序设计基础教程-PPT.ppt_第3页
EDA技术与VHDL程序设计基础教程-PPT.ppt_第4页
EDA技术与VHDL程序设计基础教程-PPT.ppt_第5页
免费预览已结束,剩余170页可下载查看

下载本文档

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

文档简介

重点内容 EDA技术发展和应用EDA工程设计流程EDA集成开发工具 第1章EDA概述 一 EDA工程简介 EDA ElectronicDesignAutomation 工程是现代电子信息工程领域中一门发展迅速的新技术 EDA的定义有广义和狭义之分 广义定义EDA包括半导体工艺设计自动化 可编程器件设计自动化 电子系统设计自动化 印制电路板设计自动化 仿真与测试故障诊断自动化等 狭义定义的EDA就是电子设计自动化 EDA技术主要有四个方面 1 可编程逻辑器件 即应用EDA技术完成电子系统设计的载体 2 硬件描述语言 VHDL或者Verilog 它用来描述系统的结构和功能 是EDA的主要表达手段 3 配套的软件工具 它用来完成电子系统的智能化设计 4 实验开发系统 在整个EDA设计电子系统的过程中 实验开发系统是实现可编程器件下载和验证的工具 二 EDA技术的发展历程和未来展望 现代EDA技术是20世纪90年代初从计算机辅助设计 辅助制造和辅助测试等工程概念发展而来的 它的成熟主要经历了三个阶段 即 计算机辅助设计 CAD ComputerAidedDesign 计算机辅助工程设计 CAED ComputerAidedEngineeringDesign 电子设计自动化 EDA ElectronicSystemDesignAutomation 随着工艺的进步和EDA技术的不断发展 软硬件协同设计将显得越来越重要 EDA技术的应用也将向广度和深度两个方向继续发展 今后还会超越电子设计的范畴 从而进入其他领域 随着SOC和SOPC的发展 IP核复用的概念越来越为业界所接受 这也正符合VHDL语言的设计理念 所以 未来电子系统的设计与规划将不再是电子工程师的专利 三 EDA技术的应用 EDA技术的应用范畴很广主要有 1 PCB印制电路板的设计2 ASIC全定制数字电路的设计3 FPGA CPLD等可编程器件上的电子系统设计 三 EDA技术的应用 PCB设计 PCB PrintedCircuitBoard 印制电路板主要用作电子系统的载体 工程师通常将集成电路元件焊接在PCB板上完成整个电子系统的搭建 控制 通信等功能 点阵系统的原理图和版图 点阵系统的版图 三 EDA技术的应用 ASIC设计 ASIC ApplicationSpecificIntergratedCircuits 专用集成电路是EDA技术应用在电子系统设计的高端产物 这种芯片的集成度极高 有全定制和半定制两种 ASIC设计流程和所个步骤所使用的软件工具 三 EDA技术的应用 CPLD FPGA设计 CPLD ComplexProgrammableLogicDevice 复杂可编程逻辑器件和FPGA FieldProgrammableGarryArray 现场可编程门阵列随着EDA技术的发展已经成为电子设计领域的重要角色 其应用相当广泛 高集成度 高速度和高可靠性是CPLD FPGA最明显的特点 CPLD FPGA的一般设计流程 四 EDA工程的设计流程 一个完整的EDA工程通常要涉及到系统建模 逻辑综合 故障测试 功能仿真 时序分析 形式验证等内容 1 设计输入2 逻辑综合和优化3 布局布线和适配4 工程设计的仿真5 目标器件的编程和下载6 硬件电路的后仿真验证和测试 VHDL开发FPGA CPLD电子系统的流程图 五 EDA集成开发工具 目前比较流行的用于可编程器件的EDA集成开发工具主要有Altera公司的MAX PlusII和QuartusII Xilinx公司的Foundation和ISE以及Lattice公司的ispDesignEXPERT和ispLEVER QuartusII QuartusII的GUI界面 它支持原理图 VHDL和Verilog语言文本输入方式和波形或EDIF格式的文件作为输入 且支持这些文件的混合设计 五 EDA集成开发工具 ISE ModelSim ispLEVER 五 EDA集成开发工具 其它开发工具 SystemGenerator和Matlab联合开发DSP系统 六 EDA技术的学习重点和学习方法 1 EDA技术的学习方法从实用角度讲 EDA技术需要掌握四个方面 即 1 可编程逻辑器件 2 硬件描述语言 VHDL或者Verilog 3 配套的软件工具 4 实验开发系统 2 EDA技术的学习方法读者在学习EDA技术的过程中首先接触的就是VHDL的基本编程 在这里应该熟练掌握基本门电路 多路选择器和状态机的编写 然后掌握配套的CPLD FPGA开发软件 通过实际的案例和应用设计边学边用 重点内容 CPLD结构和工作原理FPGA结构和工作原理FPGA配置方式CPLD FPGA应用选型 第2章 一 可编程逻辑器件概述 可编程逻辑器件PROM PLA和PAL的原理和特性 PROM 基于二极管和三极管的一次可编程PROM单元 一 可编程逻辑器件概述 PLA PLA是ProgrammableLogicArray的缩写 它的出现主要是为了解决PROM的速度和输入端受到限制的问题 右图通过这种阵列结构PLA可以实现大量的组合函数 虽然不能完全覆盖所有的输入组合 但其较多的输入端和更快的速度使得它的应用超过了PROM 一 可编程逻辑器件概述 PAL 可编程阵列逻辑PAL是PLA的一个发展版 与PLA类似 它也有一个宽输入 可编程的 与 阵列 最大的不同是PAL的 或 阵列不再可编程 而是变成了固定的 可编程特性分类 从可编程特性分类可将PLD分为一次可编程和重复可编程两类 一次可编程器件主要以PROM PAL和熔丝型FPGA为代表 其他的器件大多数是可重复编程的 熔丝型器件编程的主要原理是利用较大的编程电流将特定位置的熔丝烧断 从而完成所需的逻辑函数输出 一 可编程逻辑器件概述 对于多次可编程的器件而言 用紫外线擦除的器件一般只能使用几十次 而采用电擦除方式的器件编程次数会比紫外线方式的稍多一些 如果是采用E2MOS工艺的器件 擦写次数可以达到上千次 一 可编程逻辑器件概述 可编程逻辑器件中的编程元件通常有五种 熔丝型开关可编程低阻电路EPROMEEPROMSRAM 内部互联结构分类如果从内部互联结构分类 可编程逻辑器件可以分为CPLD和FPGA两类 二 PLD内部结构的表示方法 描述PLD内部电路结构的方法与普通逻辑电路的表示方法不同 它需要将芯片内部结构配置与逻辑图一一对应起来 从而使得器件制造商和电路设计这较容易掌握 PLD的表示方法在电路层 物理层以及版图的布局之间都有非常巧妙的映射 因而读起来十分方便 1 互补输入缓冲电路 2 三态输出缓冲电路 二 PLD内部结构的表示方法 3 与或逻辑与或逻辑是可编程器件的核心部件 如图所示 a 中三条竖线A B C均为输入线 输入到与门的横线为乘积线 乘积线与输入线的交叉点为编程点 在编程点处有编程器件 如熔丝或可编程的MOS器件等 当输入线与乘积线相连通时 在编程点处以 表示 b 中三条竖线A B C也为输入线 输入到或门的横线为和线 和线与输入线的交叉点为编程点 当输入线与和线相连通时 在编程点处以 表示 可以看出 图中电路表示的逻辑表达式分别为Y AB和Y A B C 三 CPLD的基本结构和工作原理 CPLD的基本结构可编程逻辑阵列块类似于一个低密度的PAL GAL 包括乘积项的与阵列 乘积项分配和逻辑宏单元等 基于乘积项阵列型CPLD的基本结构 三 CPLD的基本结构和工作原理 ispLSI2128的结构示意图 它由输入 Input 全局布线区 GRP 通用逻辑块 GLB I O单元 宏块和控制电路等组成 每个宏块包括8个通用逻辑块 GLB 2个输出布线区 ORP 1个32位输入总线和33个引脚 三 CPLD的基本结构和工作原理 GLB结构 通用逻辑块GLB是GernericLogicBlock的缩写 也是整个器件的逻辑核心 它由与阵列 乘积项共享阵列 ProductTermSharingArray 输出逻辑宏单元 OLMC 和控制电路四部分组成 分布在GRP的四周 可实现类似GAL PAL的功能 三 CPLD的基本结构和工作原理 1 输出逻辑宏单元2 控制电路 3 全局布线区 属于ispLSI中的一种专用内部互联结构 起作用是将GLB的输出信号或I O单元的输入信号与GLB的输入端连接 三 CPLD的基本结构和工作原理 4 I O单元结构I O单元常称为输入 输出单元 是器件外部封装引脚与内部信号之间的接口电路 5 宏块结构每个宏块包含8个GLB 16位输入总线 2个输出布线区 ORP 32个I O单元 2个专用输入和1个公用乘积项GOE 三 CPLD的基本结构和工作原理 三 CPLD的基本结构和工作原理 Altera公司的CPLD器件总结起来可以概括为五个部分 可编程逻辑阵列块 LAB 宏单元 扩展乘积项 输入 输出块 互联资源 MAX7128结构原理图 2 宏单元 由3个功能块组成 逻辑阵列 乘积项选择矩阵和可编程寄存器 各部分可以被独自配置为时序逻辑和组合逻辑工作方式 三 CPLD的基本结构和工作原理 1 可编程逻辑阵列块 LAB 对于每个LAB有下列输入信号 A 来自作为通用逻辑输入的PIA的36个信号B 全局控制信号 用于寄存器辅助功能C 从I O引脚到寄存器的直接输入通道 三 CPLD的基本结构和工作原理 3 扩展乘积项利用扩展项可保证在实现逻辑综合时 用尽可能少的逻辑资源实现尽可能快的工作速度 具体的扩展乘积项分为共享扩展项和并联扩展项 并联扩展项的原理图 共享扩展乘积项结构 三 CPLD的基本结构和工作原理 4 可编程连线阵列PIA 5 输入 输出控制块 I O 四 FPGA的结构和工作原理 1 基于SRAM编程的FPGA基于SRAM编程的FPGA以Xilinx的逻辑单元阵列 LCA LogicCellArray 为例FPGA由可配置逻辑模块 CLB ConfigurableLogicBlock 可编程布线资源 PI ProgammableInterconnection 和可编程输入 输出模块 IOB Input OutputBlock 三部分组成 四 FPGA的结构和工作原理 2 基于反熔丝编程的FPGA 采用反熔丝编程的FPGA具有集成度高 功耗低 保密性强 抗辐射和抗干扰性好等优点 四 FPGA的结构和工作原理 Altera公司的FPGAFLEX10K系列的FPGA是工业界第一款嵌入式PLD器件 采用了可重复配置的CMOSSRAM工艺和灵活逻辑单元矩阵 FLEX FlexbleLogicElementMatrix 框架 具有高密度 低成本 低功耗等特点 内部包括四个部分 嵌入式阵列块逻辑阵列块快速通道 互联通道输入 输出单元 四 FPGA的结构和工作原理 逻辑阵列块 LAB 2 嵌入式阵列块 四 FPGA的结构和工作原理 3 快速通道 互联通道 4 输入 输出单元 四 FPGA的结构和工作原理 Xilinx公司的FPGA 主要包含 1 可配置的逻辑模块 CLB 2 可编程布线资源 PI 由纵横分布在CLB阵列之间的金属线网络和位于纵横线交叉点上的可编程开关矩阵组成 3 可编程的输入 输出模块 IOB 由输入触发器 输入缓冲器和输出触发 锁存器 输出缓冲器组成 每个IOB控制一个外部引出端 四 FPGA的结构和工作原理 五 FPGA的配置方式 FPGA的配置方式是指FPGA用来完成设计师的逻辑配置和外部连接方式 逻辑配置是指FPGA的下载 即开发系统将用户的设计输入进行编译产生配置数据文件 然后装入FPGA芯片内部的可配置存储器的过程 1 主动串行配置主动串行配置模式需要附加一个外部串行存储器EPROM或PROM 在配置之前需事先将配置数据写入外部存储器 每当电源接通后 FPGA将自动地从外部串行PROM或EPROM中读取串行配置数据 2 主动并行配置主动并行配置同样适用EPROM做外部存储器 事先将配置数据写入EPROM芯片内 五 FPGA的配置方式 3 菊花链配置在数字系统的应用设计中 当单片FPGA不足以实现完整的功能时 可以采用多个FPGA芯片 五 FPGA的配置方式 六 CPLD FPGA的应用选型 1 器件逻辑资源的选择能够影响逻辑资源占用的因素有很多 主要有 A 描述语言和描述风格 B HDL综合器的选择 C 综合策略的选择 D 逻辑功能单元的性质额实现方法 2 芯片速度的选择 芯片速度的选择应与系统工作频率相吻合 3 器件功耗的选择 就低功耗而言 FPGA具有绝对的优势 4 器件封装的选择5 CPLD FPGA的选择 FPGA的主要应用有三个方面 A 直接使用与电路系统 B 硬拷贝 C 逻辑验证 重点内容 VHDL程序基本结构VHDL基本词法与基本语句VHDL描述风格 第3章VHDL硬件描述语言 一 硬件描述语言概述 HDL语言的种类 1 ABEL HDL 是一种早期的硬件描述语言 可方便准确的描述所设计的电路逻辑功能 并被很多电子系统设计自动化 EDA 软件所支持 2 AHDL 是Altera公司开发一种HDL语言 它的特点是易学易用 3 VHDL 中文全称为超高速集成电路硬件描述语言4 Verilog 是1983年由GD GateWayDesignAutomation 公司的PhilMoorby首创的 一 硬件描述语言概述 VHDL语言的特点 硬件描述能力强 设计技术齐全 方法灵活 支持广泛 对设计描述具有相对的独立性 具有很强的移植能力 易于共享和复用 具有丰富的仿真语句和库函数 设计结构清晰 易读易懂 容易实现系统的更新和升级 数据类型丰富 安全性好 VHDL和Verilog的比较 一 硬件描述语言概述 VerilogHDL在底层建模方面要强于VHDL 但系统建模覆盖面较小 而VHDL在系统级建模方面则可以像高级语言一样更灵活的描述系统行为 二 VHDL程序的基本结构 用VHDL进行数字电路设计时 无论电路规模的大小 均要使用一个完整的VHDL程序结构 这个完整的程序结构包括五部分 它们分别是 参见上一节给出的VHDL七段译码器代码 实体 Entity 结构体 Architecture 配置 Configuration 包集合 Package 库 Library 二 VHDL程序的基本结构 VHDL的设计简述 其描述结构中包括IEEE标准库说明 程序包 实体和结构体等几个部分 四选一多路数据选择器 结构体 Architecture 是占VHDL程序比重最大的部分也是VHDL的核心部分 二 VHDL程序的基本结构 实体说明是VHDL程序设计中最基本的组成部分 主要用来描述设计实体的外部接口信号 定义设计单元的输入输出端口 属于整个VHDL所描述电路结构的通信界面 为可视部分 但它并不描述所要设计系统的具体功能 端口说明语句描述了目标系统与外界通信的接口 即指明实体的输入输出信号 以及一些端口的模式信息 包括端口的名称 数据的类型和数据的传输方向 端口模式 二 VHDL程序的基本结构 结构体是VHDL程序的核心 它描述了目标系统的行为 元件以及它们之间的连接关系 结构体的基本格式包括四个部分 结构体引导语句 ARCHITECTURE 结构体说明语句功能描述语句结束语句 END VHDL的结构体 三 VHDL的基本词法 VHDL语言与其他高级语言一样 具有计算机编程语言的一般特性 其语言要素是组成编程语句的基本单元 主要有数据对象 Object 数据类型 Type 操作数 Operations 和运算操作符 Operator 1 标识符 包括短标识符和扩展标识符2 对象 在VHDL语言中 凡是可以赋值的客体叫做对象 Object VHDL对象包括专门的数据类型 即常量 CONSTANT 信号 SIGNAL 变量 VARIABLE 和文件 FILES 3 数据类型 在VHDL标准中 IEEE一共定义了10种基本的数据类型 同时 为了方便设计 VHDL还容许工程师根据自己需要自定义数据类型 这就给数字系统设计提供了很大的自由空间 从而为EDA工具的高层次综合 仿真提供可能 常用数据类型 整数 实数类型 位类型 位矢量类型 布尔类型 时间类型 枚举类型 数组类型 三 VHDL的基本词法 类型转换 由于VHDL对数据类型的限制比较严格 不同类型的对象不能带入 因而很多程序设计常常会遇到数据转换的问题 为了进行不同数据类型的转换 VHDL提供了三种方法来完成这一功能 即类型标记法 函数转换法和常数转换法 运算操作符 与其他程序设计语言相似 VHDL中的表达式也是由运算符将基本元素连接起来形成 这里的基本元素包括对象名 文字 函数调用及用括号括起来的表达式 在VHDL语言中共有4类操作符 即逻辑运算符 LOGICAL 关系运算符 RELATIONAL 算术运算符 ARITHMETIC 并置运算 CONCATENATION 四 VHDL的基本语句 VHDL语言的的描述语句主要用来描述系统的硬件结构 行为功能以及信号之间的逻辑关系 这些语句按执行的顺序可以分为顺序语句和并行语句两类 顺序语句主要包括四种 赋值语句 流程控制语句 等待语句 空操作语句 并行语句主要有7种 进程语句 并行信号赋值语句 块语句 元件例化语句 生成语句 条件信号赋值语句 并行过程调用语句 1 赋值语句 赋值语句分为简单信号赋值语句 条件信号赋值语句和选择信号赋值语句三种2IF语句 属于流控制语句 有单选控制 二选控制和多选控制三种 3 CASE语句 CASE语句也是顺序语句的一种 且可读性非常强 4 LOOP语句 是一种循环语句有三种格式 即a FOR LOOP b WHILE LOOP c LOOP 5 PROCESS进程语句 从电路的工作方式上可以包括组合逻辑运行方式 同步逻辑运行方式和异步逻辑运行方式等 6 COMPONENT元件例化语句7 PORTMAP端口映射语句 在上一小节元件例化语句的示例代码中 各个元件之间的连线关系是通过端口映射语句 PORTMAP 来实现的 四 VHDL的基本语句 五 VHDL的描述风格 在VHDL语言中 不同的描述方式或建模方式又称为VHDL语言的描述风格 常用的主要有三种或它们的混合 这三种描述方式为 行为描述 数据流描述 门级描述 1 行为级描述 是按照目标系统的功能或算法来描述结构体 不必给出实现这些行为的硬件结构 而只强调电路的行为和功能 五 VHDL的描述风格 2 数据流描述利用VHDL语言中的赋值符和逻辑运算符进行描述 其中既包含逻辑单元的结构信息有隐含的表示某种行为 主要采用非结构化的并行语句描述 3 门级描述门级描述属于比较底层的描述方法 就是描述出元件之间的互连方式 其具体步骤如下 1 元件说明2 元件例化3 元件配置 重点内容 QuartusII基本设计流程SignalTapII模块使用LPM ROM宏模块使用 第4章QuartusII操作指南 一 QuartusII基本设计流程 1 创建工程 1 新建文件夹 2 输入源程序 3 保存文件 一 QuartusII基本设计流程 4 创建工程并添加源程序 5 选择目标芯片 6 设置EDA工具 7 结束设置 一 QuartusII基本设计流程 一 QuartusII基本设计流程 2 编译工程 通过NewProjectWizard建立了目标系统的工程之后 工程师可以对所建工程进行全程编译 QuartusII编译器是由一系列处理模块构成的 这些模块负责对设计项目的检错 逻辑综合 结构综合 输出结果的编辑配置以及时序分析 一 QuartusII基本设计流程 3 时序仿真 工程编译成功后 必须对其功能和时序特性进行仿真测试 以了解设计结果是否满足原设计要求 QuartusII提供的波形文件为VectorWaveformFile 即VWF 具体的流程为 新建波形编辑文件 设置仿真时间区域 保存文件 导入欲观察的信号节点 编辑激励信号 设置数据格式 设置仿真器参数 启动仿真观察仿真结果 一 QuartusII基本设计流程 波形编辑器 仿真时间长的设置 导入欲观察的信号 将端口信号导入波形文件编辑器 一 QuartusII基本设计流程 一 QuartusII基本设计流程 设置好激励波形的波形编辑器 端口信号属性设置 一 QuartusII基本设计流程 仿真器设置 仿真波形输出 一 QuartusII基本设计流程 4 Viewer工具 1 RTLViewerRTLViewer可以根据VHDL语言或网表文件直接生成RTL级电路 选择Tools NetlistViewers RTLViewer可以看到MEALY的RTL电路 一 QuartusII基本设计流程 2 TechnologyMapViewer与RTLViewer不同 QuartusIITechnologyMapViewer提供的是设计的底级或基元极专用技术原理表征 它展示的是综合后的电路结构 一 QuartusII基本设计流程 3 StateMachineViewer如果目标系统是是按照状态机机理设计的 状态机的概念在第五章介绍 StateMachineViewer直观的看到各个状态转移的关系 一 QuartusII基本设计流程 5 引脚锁定和下载 为了能对此工程进行硬件测试 应将编译成功后的程序下载到目标芯片上 并指定输入输出信号的管脚 以便添加激励信号和测试输出信号 QuartusII的引脚配置 FPGA CPLD的编程下载 二 嵌入式逻辑分析仪SignalTapII 嵌入式逻辑分析仪SignalTapII允许对设计中所有层次的模块的信号节点进行测试 可以使用多时钟驱动 而且还能通过设置来确定前后触发捕捉信号信息的比例 本节将以一个计数器cnts为例介绍SignalTapII的使用方法 具体流程为 启动SignalTapII 调入待测信号 设置SignalTapII的参数 保存文件 编译下载 启动SignalTapII进行采样分析 SignalTapII的编辑窗口 二 嵌入式逻辑分析仪SignalTapII SignalTapII的参数设置 利用SignalTap采样分析5位计数器的工作状态 三 LPM ROM宏模块的使用 正弦信号发生器的模块化结构 可以看出该信号发生器由4部分组成 即 计数器 正选信号数据ROM VHDL顶层设计 D A转换器 使用步骤 初始化数据文件定制LPM ROM元件 1 打开MegaWizardPlug InManager 2 选择ROM控制线和地址 数据线 三 LPM ROM宏模块的使用 MegaWizardPlug InManager对话框 LPM宏功能设定 三 LPM ROM宏模块的使用 选择data rom模块数据线和地址线宽度 选择地址锁存信号inclock 三 LPM ROM宏模块的使用 调入ROM初始化数据文件并选择在系统读写功能 三 LPM ROM宏模块的使用 4 顶层文件的仿真测试 正弦信号发生器的仿真波形 用SignalTapII实时观察正弦信号发生器的结果 重点内容 组合逻辑电路设计时序逻辑电路设计存储器设计状态机设计 第5章VHDL基本逻辑电路设计 一 组合逻辑电路设计 组合逻辑电路是一种在任何时刻的输出仅取决于当时输入信号的逻辑电路 常用的组合逻辑电路主要有编码器 译码器 数据选择器 运算电路和数值比较器等 1 基本门电路的设计 基本逻辑门 基本逻辑门的逻辑结果 一 组合逻辑电路设计 2 三态门及总线缓冲器的设计 三态门及三态门总线的表示方法 三态门及三态门总线的仿真结果 一 组合逻辑电路设计 3 优先编码器的设计 优先编码器和普通编码器的符号表示 普通10 4编码器和优先10 4编码器的仿真波形 一 组合逻辑电路设计 4 译码器的设计 普通4 10译码器和优先4 10译码器的仿真波形 普通4 10译码器和优先4 10译码器的仿真波形 一 组合逻辑电路设计 6 多路选择器的设计 多路数据选择器的符号表示 16 1多路数据选择器的仿真波形 一 组合逻辑电路设计 5 运算器的设计 8位加 减运算器逻辑符号 8位加 减运算器的仿真波形 二 时序逻辑电路设计 1 触发器的设计 触发器的符号表示 各触发器的仿真波形 二 时序逻辑电路设计 2 寄存器的设计 8位三态锁存器的仿真波形 8位串入串出移位寄存器 8位串入串出移位寄存器的仿真波形 二 时序逻辑电路设计 3 计数器的设计 在数字系统中计数器的使用非常频繁 它不仅可以统计输入脉冲信号的个数 进行计时和计数 还可以实现信号的分频 定时 产生节拍脉冲和脉冲序列等 计数器有很多种 大致可分为同步计数 异步计数 加法计数 减法计数和可逆计数等 12进制计数器的仿真波形 三 存储器设计 1 只读存储器ROM的设计 ROM存储器曾经是最常用的存储器 例5 11描述了一个256 4的只读存储器 USESTD TEXTIO ALL调用了程序包TEXTIO 使得可以从数据文件中读取数据 2 静态数据存储器SRAM的设计 RAM和ROM的主要区别在于RAM可读可写 换言之RAM有一定的读写标准 SRAM读写操作 三 存储器设计 3 先进先出堆栈FIFO的设计 8 4先进先出堆栈引脚 FIFO的仿真波形 FIFO是先进先出堆栈 常作为数据缓冲期 其数据存放结构与RAM相同 只是存取方式不同 四 状态机设计 1 状态机概述 无论与基于VHDL的其他设计方案相比还是与完成相似功能的CPU相比 状态机都有难以超越的优越性 具体表现在以下几个方面 既保证了数字系统的顺序运行又不失灵活性 结构简单 易于优化 容易构成良好的同步模块 利于消除竞争冒险现象 VHDL描述方法多样 层次鲜明 结构清晰易读易懂 单时钟周期变化 速度快 可靠性高 状态机结构示意图 四 状态机设计 2 Moore状态机的设计 摩尔状态机的结构示意图 摩尔状态机状态转移图 摩尔状态机仿真波形 四 状态机设计 3 Mealy状态机的设计 米勒型状态机结构示意图 米勒型状态机的仿真波形 四 状态机设计 4 容错状态机的设计 在状态机设计中 不可避免地会出现大量剩余状态 若不对剩余状态进行合理的处理 状态机可能进入不可预测的状态 从而导致对外界出现短暂失控或者始终无法摆脱剩余状态而失去正常的功能 但是 剩余状态的处理要不同程度地耗用逻辑资源 因此设计者在选用状态机结构 状态编码方式 容错技术及系统的工作速度与资源利用率方面需要做权衡比较 以适应自己的设计要求 剩余状态的转移去向大致有如下几种 1 转入空闲状态 等待下一个工作任务的到来 2 转入指定的状态 去执行特定任务 3 转入预定义的专门处理错误的状态 如预警状态 对于多余状态的处理方法有2种 一种是在语句中对每一个非法状态都做出明确的状态转换指示 另一种是利用others语句对未提到的状态作统一处理 重点内容 并行语句的使用顺序语句的使用 第6章VHDL语句进阶 一 并行语句 1 块语句 BLOCK 块语句 BLOCK 的应用类似于利用PROTEL画原理图时 可将一个总的原理图分成多个子模块 而这个总的原理图则是由一个或多个子模块的原理图连接而成的定成模块图 当子模块的原理图仍然很大是 可以将其变成更底层的模块的原理图 即块语句 BLOCK 的嵌套 块语句 BLOCK 实现的是从结构体形式上的划分 并非功能上的划分 块的表达格式是 块标号 BLOCK 块保护表达式 接口说明 类属说明 BEGIN 并行语句 ENDBLOCK块标号 块中的并行语句可包含结构体中的任何并行语句结构 BLOCK语句本身属于并行语句 其包含的语句也是并行语句 在较大的VHDL程序中 恰当的块语句可以提高工作效率 对于技术交流 程序移植 排错和仿真都是有益的 一 并行语句 2 生成语句 GENERATE 生成语句有一种复制作用 建立0个或多个备份 在设计中 只要根据某些条件 设定好某一元件或设计单位 就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构 生成语句的格式有如下两种形式 标号 FOR循环变量IN取值范围GENERATE说明部分BEGIN并行语句ENDGENERATE 标号 标号 IF条件GENERATE说明部分BEGIN并行语句ENDGENERATE 标号 一 并行语句 COMPONENT语句对将要例化的器件进行了接口声明 它对应一个已经设计好的实体 综合器根据COMPONENT指定的器件名和接口信息进行装配 生成语句产生的8个相同LATCH模块 一 并行语句 3 报告语句 REPORT VHDL仿真中 REPORT语句是报告相关信息的语句 类似于C语言中的printf语句 该语句本身不可综合 综合中不能生成电路 主要用以提高人机对话的可读性 见识某些电路的状态 REPORT语句本身虽不带任何条件 但需根据描述的条件给出状态报告 REPORT语句是93版VHDL标准新增加的语句 其中只定义了一个报告信息的子句 由条件语句的布尔表达式判断是否给出信息报告 使用起来比断言语句更简单 具体书写格式如下 REPORT 字符串 字符串需要在外部加上双引号括起来 例6 6描述了一个RS触发器 其中由IF语句的布尔条件给出信息报告 当R与S同时为高电平是 报告出错信息 BOTH 一 并行语句 4 并行断言语句 ASSERT VHDL中的断言语句包括并行和顺行两种 主要用于程序调试 时序仿真时的人机对话 也属于不可综合语句 综合中被忽略而不会生成逻辑电路 只用于检测某些电路模型是否正常工作等 例如RS触发器要求R与S两输入端不能同时为 1 若在电路仿真时遇到R与S输入同时为 1 则提示出错 因此RS触发器设计仿真中可用断言语句进行检测 并行断言语句的书写格式如下 ASSERT 条件表达式 REPORT 出错信息 SEVERITY 错误级别 一 并行语句 5 过程调用语句 PROCEDURE 过程调用语句属于VHDL子程序的一种类型 子程序是一个VHDL程序模块 利用顺序语句来定义和完成算法 应用它能更有效地完成重复性的设计工作 子程序不能从所在的结构体的其他块或进程结构中直接读取信号值或者向量信号赋值 而只能通过子程序调用及与子程序的界面端口进行通信才能实现这些功能 过程调用调用可通过其界面获得多个返回值 通常被看作一种语句结构 可以单独存在 子过程调用语句的具体用法如下 PROCEDURE过程名 参数声明 参数声明指明输入输出端口的数目和类型 注意 通常 可在参量表中定义3中流向模式 即IN OUT和INOUT 如果只定义了IN模式而未定义目标参量类型 则默认为常量 若定义了INOUT或OUT 则默认目标参量是变量 二 顺序语句 顺序语句 SequentialStatements 是相对于并行语句而言的 顺序语句的特点是每一条语句的执行 指仿真执行 顺序是与它们的书写顺序基本一致 顺序语句只能出现在进程和子程序用 子程序仅包括函数和过程 1 WAIT语句 对于不同结束挂起条件的设置 WAIT语句游种不同的书写格式 WAIT WAITON信号表 WAITUNTIL条件表达式 WAITFOR时间表达式 二 顺序语句 2 NEXT语句 NEXT语句主要用于在LOOP语句执行中进行有条件的或无条件的转向控制 他的语句有3种格式 即 NEXT NEXTLOOP标号 NEXTLOOP标号WHEN条件表达式 3 EXIT语句 EXIT语句与NEXT语句具有十分相似的语句格式和跳转功能 他们均是LOOP语句的内部循环控制语句 EXIT的语句格式有3中 即 EXIT EXITLOOP标号 EXITLOOP标号WHEN条件表达式 二 顺序语句 4 NULL语句 空操作语句NULL不完成任何操作 它唯一的功能就是是逻辑运行流程跨如下一步语句的执行 NULL常用于CASE语句中 为了满足尽可能多的条件 利用NULL来表示剩余的不用条件下的操作行为 具体的语句格式如下 NULL 例 6 12 VHDL的空语句 NULL CASEopcodeISWHEN 001 tmp regaANDregb WHEN 101 tmp regaORregb WHEN 110 tmp NOTrega WHENOTHERS NULL ENDCASE 二 顺序语句 4 RETURN语句 返回语句RETURN有两种语句格式 即RETURN RETURN表达式 第一种语句格式只能用于过程 他只是结束过程 并不返回任何值 第二种语句格式只能用于函数 并且必须返回一个值 返回语句只能用于子程序体重 执行返回语句将结束子程序的执行 无条件的跳转至子程序结尾处 用于函数的语句中的表达式提供函数返回值 每一个函数必须至少包含一个返回结构 但是在函数调用时 只有其中一个返回语句可以将值返回 T 重点内容 数值类属性函数使用信号属性使用数据类型和数据区间属性函数使用VHDL设计仿真时间数字转化器 TDC 的设计 第7章VHDL的属性描述和仿真延时 一 预定义属性 VHDL中预定义属性语句有很多实际的应用 可用于对信号或其它项目的多种属性检测或统计 VHDL中具有属性的项目有类型 子类型过程 函数 信号 变量 常量 实体 结构体 配置 程序包 元件和语句标号等 属性是这些项目的特性 VHDL还允许设计者自己定义属性 常用的属性可以分为5大类 即 数值属性 ValueAttributes 函数属性 FunctionAttributes 信号属性 SignalAttributes 类型属性 TypeAttributes 范围属性 RangeAttributes 二 数值类属性函数 数值属性 ValueAttributes 顾名思义 当程序调用它时 所返回的是一个数值 包括布尔型的真 假二值 在VHDL语言中 这类指令可以用来返回一个数据类型 Datatype 一个数组 Array 或一个程序块 Block 的属性 1 数值类型属性函数 数值类型属性用于返回一个数据类型 Datatype 或者是一个子数据类型 Subtype 的最左边或最右边 或上限或下限的数值 其基本语法为 Type name High返回Type name的上限值Type name Low返回Type name的下限值Type name Left返回Type name的左边值Type name Right返回Type name的右边值 二 数值类属性函数 2 数值数组属性函数 数值数组属性函数用于返回指定数组长度的信息 基本语法为 array name Lengtharray name Length i 其中 array name Length用来返回指定数组array name的长度 array name Length i 用来返回指定多维数组array name第i维的长度 3 数值块属性函数 数值块属性用于返回指定的架构 ARCHITECTURE 或块 BLOCK 内描述的电路风格是否为行为模式或者结构模式 基本语法去为 name Behavior 返回是否为行为模式name Structure 返回是否为结构模式 三 函数属性 1 函数类型属性 函数类型属性用于返回指定数据类型 Datatype 的相关信息 相对于这些信息 在VHDL语言中 系统总共定义了下列6中指令供我们使用 其基本的语法为 Type name POS Value Type name VAL Value Type name SUCC Value Type name PRED Value Type name LEFTOF Value Type name RIGHTOF Value 2 函数数组属性 函数数组属性用于返回某一特定数组数据对象的边界范围及高低值 其基本语法为 Array name LEFT n Array name RIGHT n Array name High n Array name Low n 三 函数属性 3 函数信号属性 函数信号属性用于返回某一指定信号 Signal 对象的变动状况 在VHDL语言中 系统总共定义了5中指令供设计者使用 其基本语法为 Signal name EVENTSignal name ACTIVESignal name LAST EVENTSignal name LAST ACTIVESignal name LAST VALUE 触发器信号时序图 四 信号 SIGNAL 属性 信号属性 SignalAttributes 用于返回指定信号 Signal 的信息或产生某一相同的信号 与前面讨论的个属性的不同之处在于信号属性只能使用在程序的架构 ARCHITECTURE 内 他不可以在子程序内使用也不可以在函数或过程内调用 1 带DELAYED time 属性的信号SIGNAL CLK信号波形及延时信号波形 2 带STABLE time 属性的信号SIGNAL 四 信号 SIGNAL 属性 带STABLE time 属性的信号通过Sinal name STABLE Time 函数生成 该语句能够检测信号在指定时间内是否发生了变化 如果信号发生了变化 则返回真 True 反之 则返回假 False 其中 Signal name是指定信号的名称 Time时所要监测的时间 CLK信号波形及STABLE信号波形 3 带QUIET time 属性的信号SIGNAL 四 信号 SIGNAL 属性 4 带TRANSACTION属性的信号SIGNAL 五 数据类型的属性函数 数据类型属性 TypeAttributes 用于返回指定类型 Type 或子类型 Subtype 的基本 BASE 类型 Type 在VHDL语言中 系统只定义了一种类型属性供设计者使用 其基本语法为 Type name BASE其中 Type name为指定数据类型或子类型的名称 BASE为返回所指定的Type或Subtype的基本类型 类属属性返回值 六 数据区间的属性函数 数据区间的属性函数又称为范围属性 RangeAttribute 用于返回有限制的指定数组类型的范围 在VHDL语言中 系统提供了两个范围属性指令供设计者使用 其基本语法为 Array name RANGEArray name REVERSE RANGE 范围属性返回值 七 VHDL的设计仿真 在VHDL设计流程中 设计的仿真验证是一个重要且费时的环节 由于现代EDA工程的快速发展 EDA软件工具已经可以贯穿整个硬件系统设计的行为仿真 RTL仿真和门级仿真 其中 行为仿真和RTL仿真为功能仿真 门级仿真为时序仿真 1 仿真延迟延迟是VHDL仿真中最重要的特性设置 为建立精确的延时模型 甚至可以不使用VHDL仿真器得到更接近实际的结果 1 惯性延时惯性延时也成为固有延时 InertialDelay 是所有电子器件均存在的一种延时特性 2 传输延时传输延时是传输模型计算出的信号延时 TransportDelay 2 仿真周期 七 VHDL的设计仿真 硬件模型由VHDL语言描述行为之后还需要经过两个仿真阶段即初始化阶段和进程的重复执行阶段 仿真周期包括三部分 即 1 敏感条件成立或等待条件成立 2 更新进程中的信号值 3 执行每一个被激活的进程 直到被再次挂起 八 时间数字转化器 TDC 的设计 1 时间数字转化器 TDC 的应用 CMOS集成技术的提高 不仅提供了稳定 低功耗 高集成度环境 同时减小了模拟信号与数字信号的互扰 提高系统噪声性能 2 TDC的工作原理 TDC测量时间间隔的基本原理对所有具体的电路结构都是相同的 即将连续的时间划分为可测量的基本时间单位 从而实现时间量化 八 时间数字转化器 TDC 的设计 3 TDC的分类 TDC实现了连续时间到离散数字量的转化 按目前常用的TDC结构可以分为双转化和单转化两种结构 双转化结构TDC 八 时间数字转化器 TDC 的设计 基于延时链结构的TDC a 延时链结构TDC结构框图 b 延时链结构TDC工作时序波形 八 时间数字转化器 TDC 的设计 基于延时链结构的TDC 测量值超出测量范围的两种情况 八 时间数字转化器 TDC 的设计 振荡器结构的TDC 振荡器结构的TDC与延时链结构的TDC都是利用反相器门延时测量时间误差 但是振荡器结构是通过对振荡器相位输出判断测量时间间隔的量化值 在结构上更加巧妙 环形振荡器结构TDC结构框图 八 时间数字转化器 TDC 的设计 4 延时链结构TDC在FPGA上的实现 1 电路设计 FPGA实现TDC的结构图 2 程序设计 八 时间数字转化器 TDC 的设计 3 仿真结果及分析 TDC仿真结果 TDC元件模型 重点内容 库和程序包的使用文件输入 输出程序包的使用元件的配置子程序的使用 第8章VHDL层次化程序设计 一 层次化程序设计方法 层次化设计是指在一个大型设计任务中 将目标层层分解 在各个层次上分别设计系统的某一个简单的某块 然后再将这些小模块组合起来 从而完成整个大系统的设计 从事IP模块设计的工程师 重在设计模块结构 从事系统集成的工程师 重在设计目标的行为 层次化设计方法可以通过一个树形文件清楚的表达出来 层次化设计结构 二 库和程序包 库的作用是存储和防治可编译的设计单元 并通过其目录可以方便的查询和调用 设计库中的设计单元可以用作其他VHDL描述的资源 1 库 VHDL语言的库可以分为设计库 资源库和工作库 设计库对当前项目是可见的 默认的 无需用LIBRARY子句或USE子句声明 资源库是常规元件和标准模块存放的库 使用哪个资源库需要预先声明 使用哪个程序包也要说明是 可见 的 2 程序包 程序包是一种使包体中的元件 函数 类型说明 对其他设计单元是 可见 可调用的设计单元 程序包的主要任务是使不同的设计项目可以共享一个相同的单元 而这个单元封装在两个不同的设计实体中 二 库和程序包 1 常用的程序包 1 STD库的程序包 它与现在STD库中编译 它定义了若干类型 子类型和函数 再设计每个单元指出 以假设一条隐含的调用该程序包的子句 用户不能修改该程序包 2 TEXTIO 3 STD LOGIC 1164 它定义了一些常用的函数和数据类型 日常设计中大部分函数均出自该库 4 NUMERIC STD 它定义了用于综合的数值类型和算术函数 其中数值类型包括UNSIGNED和SIGNED 该包还包含了数值类型的算术运算函数以及类型转换函数 始终监测函数和其他比较实用的函数 5 NUMERIC BIT 它的基本元素类型为BIT型而非STD LOGIC型 在一些VHDL仿真中 这个包被预先编译在IEEE库中 三 文件输入 输出程序包 TEXTIO程序包是STD库的一个通用程序包 也是VHDL语言提供的预定义的程序包之一 TEXTIO程序包允许设计者读出或写入格式化的文本文件 过程和函数 这些文本文件是某些设计者要求的ASCII文件 1 TEXTIO程序包语法 通过TEXTIO程序包读写文件的过程可知 TEXTIO按行对文件进行处理 一行为一个字符串 并以回车 换行符作为结束符 例 8 2 TEXTIO读写文件 READLINE fd L 读取fd中的L行READ L data 读L行的data数据WRITELINE fd L 写入fd的L行WRITE L data 写L行的data数据ENDFILE fd 文件结束检查 三 文件输入

温馨提示

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

评论

0/150

提交评论