EDA 第二章 VHDL语言应用基础1(基本结构、数据类型).ppt_第1页
EDA 第二章 VHDL语言应用基础1(基本结构、数据类型).ppt_第2页
EDA 第二章 VHDL语言应用基础1(基本结构、数据类型).ppt_第3页
EDA 第二章 VHDL语言应用基础1(基本结构、数据类型).ppt_第4页
EDA 第二章 VHDL语言应用基础1(基本结构、数据类型).ppt_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

第二章VHDL语言应用基础 参考书目及网络资源 VHDL硬件描述语言与数字逻辑电路设计 侯伯亨 西安电子科技大学出版社 VHDL与数字电路设计 卢毅科学出版社 VerilogHDL硬件描述语言 清华大学出版社 CPLD技术及应用 宋万杰等西安电子科技大学出版社 可编程逻辑系统的VHDL设计技术 KevinSkahill东南大学出版社 ALTERA可编程器件及其应用 刘宝琴清华大学出版社 Xinlinx数字系统现场集成技术 朱明程东南大学出版社 学术科学 电路设计与调试版 PART1HDL VHDL具有强大的行为描述能力 丰富的仿真语句和库函数 对设计的描述也具有相对独立性Verilog最大特点就是易学易用 语法比较自由ABEL一种早期的硬件描述语言支持逻辑电路的多种表达形式 其中包括逻辑方程 真值表和状态图 AHDL AlteraHDL 是ALTERA公司发明的HDL 特点是非常易学易用 学过高级语言的人可以在很短的时间 如几周 内掌握AHDL 它的缺点是移植性不好 通常只用于ALTERA自己的开发系统 VHDL VHDL语言最初于1981年由美国国防部为解决所有电子产品存档而提出的一种统一标准语言 1983年至1985年 由IBM TI等公司对VHDL进行细致开发 1987年成为IEEE1076 87标准 1993年 修订版IEEE1076 93出台 随后 IEEE分别提出IEEE1076 3 可综合标准 和IEEE1076 4 标准 以解决可综合VHDL描述在不同EDA厂商之间的移植问题 以及ASIC FPGA的门级库描述问题 VERILOG VERILOG语言最早由GATEWAY设计自动化公司于1981年提出 并提供相应的VERILOG仿真器 1985年 仿真器增强版VERILOG XL推出 CADENCE公司于1989年收购GATEWAY公司 并于1990年把VERILOG语言推向市场 而保留了VERILOG XL的所有权 1995年 VERILOG成为IEEE1364标准 就标准而言 两种语言并无优劣 先后可言 至于设计者采用哪种语言 与设计者的习惯 喜好以及目前EDA FPGA行业的支持有关 由于VHDL在系统设计方面的语法支持 各FPGA厂商对VHDL语言的支持明显多于Verilog 这可从各厂商所提供的设计开发包中得到明证 而Verilog由于在门级描述上的优势 从而被众多的IC设计人员所采用 VHDL VERILOG 常见的HDL工具 FPGAExpress VHDL VerilogHDL综合软件 简单易用 但有人反映其对VerilogHDL的支持不够强 Synopsys公司出品 FPGACompilerIIVHDL VerilogHDL综合软件 Synopsys公司出品 Quartus QuartusII是Altera公司的综合性PLD开发软件 支持原理图 VHDL VerilogHDL以及AHDL等多种设计输入形式 内嵌自有的综合器以及仿真器 可以完成从设计输入到硬件配置的完整PLD设计流程 常见的HDL工具 Synplify VHDL VerilogHDL综合软件 Synplicity公司出品 ActiveHDLVHDL VerilogHDL仿真软件 简单易用 Aldec公司出品 Modelsim VHDL VerilogHDL仿真软件 功能比ActiveHDL强大 使用比ActiveHDL复杂 Mentor公司出品 常见的HDL工具 NC Verilog NC VHDL Cadence公司出品 很好的Verilog VHDL仿真工具 其中NC Verilog的前身是著名的Verilog仿真软件 Verilog XL StateCAD状态机设计软件 通过画框图可自动生成状态机的VHDL VerilogHDL 或AHDL源代码文件 对熟练掌握HDL的人 实用价值不高 X HDL 可实现VHDL和Verilog语言的相互自动转化 常见的HDL工具 VisialVHDL VisalVerilog 可视化的HDL Verilog编辑工具 功能类似于Renoir Renoir通过画框图来完成PLD FPGA的系统设计 可自动生成部分VHDL VerilogHDL源代码文件 亦可由VHDL VerilogHDL源代码生成原理框图 Renoir 输入 Leonardo Spectrum 综合 和Modelsim 仿真 构成了Mentor公司引以为豪的VHDL VerilogHDL完整开发系统 FPGAAdvantage PART2TheBasicStructureofVHDL HDL hardwaredescriptionlanguageTextualHDLsreplacedgraphicalHDLsinthe1980 ies betterdescriptionofcomplexbehavior 1981年美国国防部赞助了一个硬件描述语言的工作组 1983年形成了一个VHSIC VeryHighSpeedIntegratedCircuits 硬件描述语言标准 VHDL VHSICHardwareDescriptionLanguage 1984 firstversionofthelanguagedefined basedonADA whichinturnisbasedonPASCAL 1987 revisedversionbecameIEEEstandard10761993 revisedIEEEstandardVHDL有过两个标准 IEEEStd1076 1987 calledVHDL1987 IEEEStd1076 1993 calledVHDL1993 morerecently VHDL AMS includesanalogmodeling 由于VHDL的开发环境的主体是仿真模拟器 simulator VHDL的模拟与一般语言的模拟有以下不同 模拟时间 需要强调的是 这一概念是模拟所对应硬件的运行时间 它用时间步长规定了相对时间 绝对时间等序列 程序按模拟时间运行 相互间的延迟也按模拟时间计算 并发性 并发性是模拟时间应用中的重要概念 例如 有几个加法器 他们随着模拟时间的增长并行工作 其中的每个加法器都是在输入到来后就工作 这与硬件电路实际工作情况是一致的 一个完整的VHDL语言程序通常包含实体 Entity 构造体 Architecture 配置 Configuration 包集合 Package 和库 Library 5个部分 实体用于描述所设计的系统的外部接口信号 构造体用于描述系统内部的结构和行为 包集合存放各设计模块都能共享的数据类型 常数和子程序等 配置用于从库中选取所需单元来组成系统设计的不同版本 库存放已经编译的实体 构造体 包集合和配置 2 1VHDL语言设计的基本单元及其构成 AcircuitorsubcircuitdescribedwithVHDLcodeiscalledadesignentity Thegeneralstructureofanentityhastwomainparts theentitydeclaration whichspecifiestheinputandoutputsignalsfortheentity andthearchitecture whichgivesthecircuitdetails VHDLfora2 to 1multiplexer 由上面的例子可以看出 实体说明是二选一器件外部引脚的定义 而构造体则描述了二选一器件的逻辑电路和逻辑关系 一 VHDL的基本结构 ENTITYnand 2IS 定义一个实体PORT a b INSTD LOGIC 描述输入输出y OUTSTD LOGIC 信号ENDnand 2 LIBRARYIEEE IEEE库说明USEIEEE STD Logic 1164 ALL 自定义元件库 ARCHITECTURErtlOFnand 2ISBEGIN 结构体说明y NOT aANDb ENDrtl 1 USE定义区 2 PACKAGE定义区 3 ENTITY定义区 4 ARCHITECTURE定义区 定义元件库 5 CONFIGURATION定义区 定义使用哪些自定义元件库 定义电路实体的外观 I O接口的规格 描述电路内部的逻辑功能 决定哪一个architecture被使用 1 VHDL基本结构图 2 ENTITYDECLARATION 功能 描述设计模块的输入 输出信号或引脚 并给出设计模块与外界的接口 实体类似一个 黑盒 实体描述了 黑盒 的输入输出口 格式 ENTITY实体名IS GENERIC 类属表 PORT 端口表 END ENTITY 实体名 实际上 对VHDL而言 大写小写都一视同仁 不加区分 只是为了阅读方便 我们常常做一些区分 1 Thenameoftheentity 实体名实际上是器件名 最好根据相应的电路功能确定 如4位2进制计数器用counter4b 8位加法器用add8b 3 8译码器用ym 38 实体名必须与文件名相同 否则无法编译 实体名不能用工具库中定义好的元件名 实体名不能用中文 也不能用数字开头 实体名必须以字母开头 不能以下划线结尾 2 GENERIC 类属表 用以将信息参数传递到实体 类属表的一般格式为 GENERIC 常数名 数据类型 设定值 GENERIC awidth INTEGER 3 timex time 其中 常数名由设计者确定 数据类型通常取INTEGER或time等 在表中提供时间参数 总线宽度等信息 端口表 指明实体的输入 输出信号极其模式 端口表的一般格式为 PORT 端口名 端口模式数据类型 端口模式 共四种 IN 输入 OUT 输出 INOUT 双向端口 BUFFER 输出并向内部反馈 3 PORT 数据类型 VHDL作为一种强类型语言 必须对数据对象 常量 变量 信号 规定取值范围 即对传输或存储数据的类型作明确的界定 EXAMPLE ENTITYblack boxISGeneric constantwidth integer 7 PORT clk rst INstd logic d INstd logic vector widthDOWNTO0 q OUTstd logic vector widthDOWNTO0 co OUTstd logic ENDblack box Exercise1 编写包含以下内容的实体代码端口D为12位输入总线端口OE和CLK都是1位输入端口AD为12位双向总线端口A为12位输出总线端口INT是1位输出端口AS是一位输出同时被用作内部反馈 answer LIBRARYieee USEieee std logic 1164 ALL ENTITYmy designISPORT d INstd logic vector 11DOWNTO0 oe clk INstd logic ad INOUTstd logic vector 11DOWNTO0 a OUTstd logic vector 11DOWNTO0 int OUTstd logic as BUFFERstd logic ENDmy design Exercise2 1 编写包含全加器的实体代码 2 编写4选1数据选择器的实体代码 3 ACHITECTURE 结构体 通过若干并行语句来描述设计实体的逻辑功能 行为描述 或内部电路结构 结构描述 从而建立设计实体输出与输入之间的关系 一个设计实体可以有多个结构体 格式 ARCHITECTURE结构体名OF实体名IS 说明语句 BEGIN 并行语句 END ARCHITECTURE 结构体名 VHDL结构体术语 说明语句 用于定义结构体中所用的数据对象和子程序 并对所引用的元件加以说明 但不能定义变量 并行语句并行语句有五种类型 可以把它们看成结构体的五种子结构 这五种语句结构本身是并行语句 但内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句 如进程内部包含的即为顺序语句 五种语句结构分别为块语句 进程语句 信号赋值语句 子程序调用语句和元件例化语句 结构体结构图 Therelationshipbetweentheentityandarchitecture Structure描述描述该设计单元的硬件结构 即该硬件是如何构成的 类似于数字电路中的逻辑图描述 DateFlow描述它是类似于寄存器传输级的方式描述数据的传输和变换 以规定设计中的各种寄存器形式为特征 然后在寄存器之间插入组合逻辑 与数字电路中的真值表描述相似 BehaviorProcess描述只描述所希望电路的功能或者电路行为 输入输出间转换的行为 而没有指明或涉及实现这些行为的硬件结构 与数字电路中的逻辑表达式描述相似 Threekindsofdescriptionforthearchitecture architectureoneofmux21issingled e bit begind aand not s e bands y dore endone StructureDescription architectureoneofmux21isbeginy aand nots or bands endone BehaviorProcessDescription architectureoneofmux21isbeginy awhens 0 elseb endone DateFlowDescription 结构体 行为描述举例 2X8InputANDgate ENTITYblack boxISPORT a b INstd logic vector 7DOWNTO0 y OUTstd logic vector 7DOWNTO0 ENDblack box ARCHITECTUREexampleOFblack boxISBEGINy aANDb ENDexample 操作案例 1 操作题目 通过3 8译码器的设计实例 从整体结构上初步认识VHDL的基本结构和语句特点 2 3 8译码器的电路图如图所示 有4个输入端 A0 A1 A2 EN 8个输出端 Y0 Y7 3 步骤 定义元件库 实体 结构体 编译 仿真 返回 A0 A1 A2 EN Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 3 8译码器 PART3BasicDataTypeinVHDLCode 一 DataObjects 是数据类型的载体 InformationisrepresentedinVHDLcodeasdataobjects Threekindsofdataobjectsareprovided Constant 常量 Variable 变量 Signal 信号 对象的说明格式为 对象类别标识符表 类型标识 初值 例 数据对象名 数据对象类型 数据对象值的类型 1 常量声明 常量是全局量 在结构描述 程序包说明 实体说明 过程说明 函数调用说明和进程说明中使用 例 constantWIDTH INTEGER 8 constantdelay TIME 25ns 2 变量声明 定义了给定类型的变量名称 例 variableA B BIT variableINIT NEW BIT 变量赋值 整体赋值 temp 10101010 temp x AA 逐位赋值 temp 7 1 多位赋值temp 7downto4 1010 3 信号声明 信号可以将结构体中分离的并行语句连接起来 并且通过端口其他模块与该设计内的连接起来 信号为器件内部节点信号 数据的进出不像端口信号那样受限制 不必定义其端口模式 定义信号的目的是为了在设计电路时使用该信号 用 来给信号赋值例 signalA B BIT signalINIT INTEGE 1 信号赋值 SIGNALtemp Std Logic Vector 7downto0 整体赋值 temp 10101010 temp x AA 逐位赋值 temp 7 1 多位赋值 temp 7downto4 1010 信号举例 LIBRARYieee USEieee std logic 1164 all ENTITYsimpISPORT a b c d INStd Logic g OUTStd Logic ENDsimp ARCHITECTURElogicOFsimpISSIGNALe f Std Logic BEGINe aorb f not cord g eandf ENDlogic 信号和变量的作用范围 信号和变量的区别 信号 变量 常数对比 1 定义 SignalA std logic VariableA std logic vector 7downto0 ConstantA integer 6 2 赋值及赋值时刻 A 1010 延时 A 1010 立刻 3 定义区域 信号 实体 结构体 程序包 变量 进程 子程序 常数 实体 结构体 程序包 块 进程 子程序 4 适用范围 信号 实体 结构体 程序包 变量 定义了变量的进程 子程序的顺序语句中 常数 视其定义的位置而定 若常数定义在实体中 适用范围是实体所对应的有结构体 若常数定义在结构体中 适用范围就是本结构体 现在来看一下例中两个进程描述的语句 首先 由于信号A发生变化使进程语句开始执行 这样一来 仿真器对进程中的各语句自上至下的进行处理 尽管D中先代入A值 后代入C值 在时间上有一个延时 但是在代入时由于不进行处理 因此仿真时认为是时间0值延时 因此D的最终值应为C 结果 这里D是变量 在执行 D A 语句以后 A的值就被赋给D 所以X为B A 此后又执行 D C 从而使Y为B C 所以 从这两个例题可以看出 信号量的值将进程语句最后所代入的值作为最终代入值 而变量的值一经赋值就变成新的值 这就是变量赋值和信号代入在操作上的区别 执行结果为 x cxorb y cxorb 执行结果为 x cxora y cxorb 二 DataType 1 标准定义的数据类型不必用USE说明而直接使用 1 Boolean 布尔量 取值为FALSE和TRUE 2 Character 字符 使用时用单引号括起来 如 A 注意 此时要分大小写 与 a 不一样 3 String 字符串 使用时用双引号括起来 如 111000101 4 Integer 整数 范围在 231 1 231 1 5 Real 实数 范围在 1 0E 38 1 0E 38 6 Bit 位 取值为0或1 7 Time 时间 取值范围与整数一致 一般用于仿真 整数与单位之间至少留一个空格 5sec8 Bit vector 位矢量 基于BIT数据类型的数组 使用时必需注明宽度 9 Natural 自然数 和Positive 正整数 是整数的一个子类型 10 Severitylevel 错误等级 用来设计系统的工作状态 有四种状态值 NOTE 注意 WARNING 警告 ERROR 错误 FAILURE 失败 由于VHDL语言属于强类型语言 在仿真过程中 首先要检查赋值语句中的类型和区间 任何一个信号和变量的赋值均须落入给定的约束区间中 也就是说要落入有效数值的范围中 约束区间的说明通常跟在数据类型说明的后面 例如 INTEGERRANGE100DOWNTO1BIT VECTOR 3DOWNTO0 REALRANGE2 0TO30 0这里 DOWNTO表示下降 TO表示上升 2 用户自定义的数据类型 1 EnumerationTypes 枚举类型 格式如下 TYPE数据类型名IS 枚举文字 枚举文字 例如 TYPEcolorIS red green yellow blue TYPElevelIS 0 1 Z 2 IntegerTypes 整数类型 和RealTypes 实数类型 格式为 TYPE数据类型名ISRANGE约束范围 例如 TYPEintISINTEGERRANGE 10TO10 3 ArrayTypes 数组类型 格式如下 TYPE数据类型名ISARRAY 索引范围 OF类型名称 例如 TYPEaISARRAY integer0TO9 OFstd logic 3 IEEE预定义标准逻辑位与矢量 在IEEE的程序包std logic 1164中定义了两个非常重要的数据类型 1 std logic 工业标准的逻辑类型 取值为 0 强0 1 强1 Z 高阻态 X 强未知的 2 std logic vector 工业标准的逻辑类型 std logic的组合 注意 使用这两种数据时 程序中必须声明 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL Std LogicTypes IEEEstd logic 1164中定义的一种数据类型 它包含9种取值分别为 U 未初始化用于仿真 X 强未知用于仿真 0 强0用于综合与仿真 1 强1用于综合与仿真 Z 高阻用于综合与仿真 W 弱未知用于仿真 L 弱0用于综合与仿真 H 弱1用于综合与仿真 忽略用于综合与仿真 练习 1 定义信号A1 A2 A3 A4 A5 A6 A7 A8 其中每一位信号均为标准逻辑型 2 定义信号B 其数据类型为标准逻辑型 3 定义信号C 数据类型为整数型 4 给A B赋值 其中A的值为11001101 B的值为0 LibraryIEEE Useieee std logic 1164 all SignalA std logic vector 1to8 SignalB std logic SignalC integer LibraryStd Usestd standard all A 11001101 B 0 三 DocumentationinVHDLCode 标识符是VHDL语言的最基本的要素之一 是使用VHDL语言的基础 标识符是描述VHDL语言中端口 信号 常数 变量以及函数等的名称的字符串 VHDL标识符书写规则如下 1 使用的字符由26个英文字母 数字0 9以及下划线组成 2 标识符必须以英文字母开始 不区分大小写 3 不能以下划线结尾 4 标识符中不能有空格 5 标识符不能与VHDL的关键字重名 四 OPERATORS 1 ArithmeticOperators 加 乘方 减MOD求模 乘REM求余 除ABS求绝对值 2 RelationalOperators 等于 不等于 小于 小于或等于 大于 大于或等于其中 符号也用于信号的赋值操作 3 BooleanOperators AND逻辑与SLL逻辑左移OR逻辑SRL逻辑右移NAND逻辑与非SLA算术左移NOR逻辑或非SRA算术右移XOR逻辑异或ROR逻辑循环右移NOT逻辑非ROL逻辑循环左移 PS 逻辑操作符的用法 1 操作数的数据类型必须符合操作符的要求 能进行逻辑运算的数据类型 bit bit vector boolean std logic std logic vector 例 Signala b y std logic Signalc d z integer y aandb z candd 2 表达式中有多个运算符时一般要加括号 表达式中有多个运算符时一般要加括号 但and or xnor除外 例 Signala b c d std logic vector 3downto0 Signale f g h std logic vector 1downto0 d aandbandc d aorborc d axnorbxnorc h enorfnorg h enorf norg 3 运算符两侧的操作数要对称 d enorf norg 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

温馨提示

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

评论

0/150

提交评论