EDA技术P5-VHDL行为与结构描述.ppt

上传人:max****ui 文档编号:6341661 上传时间:2020-02-23 格式:PPT 页数:82 大小:606.31KB
返回 下载 相关 举报
EDA技术P5-VHDL行为与结构描述.ppt_第1页
第1页 / 共82页
EDA技术P5-VHDL行为与结构描述.ppt_第2页
第2页 / 共82页
EDA技术P5-VHDL行为与结构描述.ppt_第3页
第3页 / 共82页
点击查看更多>>
资源描述
1 EDA技术 VHDL行为与结构描述 2 VHDL的行为描述与结构描述 Deeperatbehavioraldescriptions BehavioralandStructuralDescriptionsinVHDL Howtowritestructuraldescriptions AnimportantofVHDL theprocess Wewillstudy 进一步学习行为描述 如何进行结构描述 一个VHDL重要特征 进程 3 5 1Anexample anadder 加法器例子 ItisageneralprincipleofVHDLdesignthatasfaraspossible thehumandesignershoudworkatahighlevel andleavethelowleveldetailofthecircuitstotheconstructedbythesynthesistool VHDL程序设计的基本原则就是尽可能地使设计者进行顶层设计 而将底层具体电路的设计留给逻辑综合工具生成 sum x y Example Describea4 bitadderinVHDL sum xandyarealldeclaredasbeingSIGNED 3downto0 sum x和y已声明为4位有符号型标准逻辑矢量 例如 用VHDL描述一个四位加法器 4 5 1Anexample anadder 加法器例子 Thesynthesistoolwillthenconstructacircuitthatfulfillsthisfunctions Ifthedesignergivesfurtherrestrictions e g maximumspeedorminimumcostinlogicgates thenthesynthesistoolwilladjustthecircuitproducedinordertoobeytheconstraintsasfarasispossible sum x y Example 逻辑综合工具将自动生成该功能的电路 若设计者对电路设计还提出进一步限制条件 如逻辑电路的最高工作速度或最低成本等 则逻辑综合工具将适当调整电路 以便最大限度地满足约束要求 5 5 1Anexample anadder 加法器例子 WewillassumethatwewanttoproduceourowndetaileddescriptionofanaddercircuitinVHDL Now thedesignstarswithafulladder 假设我们要生成一个我们自己用VHDL描述具体细节的电路 现在 从一个全加器开始设计 Truthtableforafulladder 6 5 1Anexample anadder 加法器例子 Therearemanypossiblecircuitsthatwouldimplementthistruthtable oneexample 有很多电路能实现这种真值表 例如 Circuitdiagram 7 5 2Thedataflowdescription VHDL结构体中 数据流描述 8 Inordertowriteabehavioraldescription onewayissimplytousethetruthtable LIBRARYieee USEieee std logic 1164 ALL ENTITYfulladdISPORT x y cin INSTD LOGIC sum cout OUTSTD LOGIC ENDENTITYfulladd ARCHITECTUREsimple easyOFfulladdISBEGINsum 0 WHENx 0 ANDy 0 ANDcin 0 ELSE 1 WHENx 0 ANDy 0 ANDcin 1 ELSE 1 WHENx 0 ANDy 1 ANDcin 0 ELSE 0 WHENx 0 ANDy 1 ANDcin 1 ELSE 1 WHENx 1 ANDy 0 ANDcin 0 ELSE 0 WHENx 1 ANDy 0 ANDcin 1 ELSE 0 WHENx 1 ANDy 1 ANDcin 0 ELSE 1 WHENx 1 ANDy 1 ANDcin 1 为写出行为描述 一种方法就是利用真值表 5 2Thedataflowdescription 数据流描述 9 cout 0 WHENx 0 ANDy 0 ANDcin 0 ELSE 0 WHENx 0 ANDy 0 ANDcin 1 ELSE 0 WHENx 0 ANDy 1 ANDcin 0 ELSE 1 WHENx 0 ANDy 1 ANDcin 1 ELSE 0 WHENx 1 ANDy 0 ANDcin 0 ELSE 1 WHENx 1 ANDy 1 ANDcin 0 ELSE 1 WHENx 1 ANDy 1 ANDcin 1 ELSE 1 WHENx 1 ANDy 1 ANDcin 1 ENDARCHITECTUREsimple easy Thisiseasyandobvious butalsotedious Wecouldtakeinspirationfromthegateleveldesign 这种方法虽然显而易见 但太繁琐 我们可以从门级电路的设计方法得到启发 5 2Thedataflowdescription 数据流描述 10 LIBRARYieee USEieee std logic 1164 ALL ENTITYfulladdISPORT x y cin INSTD LOGIC sum cout OUTSTD LOGIC ENDENTITYfulladd ARCHITECTUREsimpleOFfulladdISBEGINsum cinXORxXORy cout xANDy OR cinANDx OR yANDcin ENDARCHITECTUREsimple abehavioraldescriptionofthefulladder 5 2Thedataflowdescription 数据流描述 11 1 Localsignals Fulladdercircuitwiththeinternalnodes Wegivenamestotheinternalofthecircuit n1 n2 n3 n4 arethenodesofthecircuit thenwearefreetousetheminourdescription 局部信号 我们给电路的内部节点命名 如n1 n2 n3 n4 那么就可以在程序中任意使用它们了 5 2Thedataflowdescription 数据流描述 12 1 Localsignals 局部信号 ARCHITECTUREnumber3OFfulladdISSIGNALn1 n2 n3 n4 STD LOGIC BEGINn1 xXORy sum cinXORn1 n2 xANDy n3 cinANDx n4 yANDcin cout n2ORn3ORn4 ENDARCHITECTUREnumber3 theVHDLdescriptionischangedto Localsignalsn1 n2 n3andn4aspartofthedescription VHDL描述变为 局部信号n1 n2 n3和n4作为描述的一部分 5 2Thedataflowdescription 数据流描述 13 1 Localsignals 局部信号 Inordertousethelocalsignals wehavedeclarethattheyexist thattheyaresignal thattheyareofname andthattheyareoftype ThedeclarationLocalsignalstakeplacebetweentheARCHITECTUREstatementandthefirstBEGIN 要使用局部信号 我们必须先声明它们的存在 它们是信号 它们的命名 它们的类型 局部信号的说明位于ARCHITECTURE语句和第一个BEGIN语句之间 5 2Thedataflowdescription 数据流描述 14 语法8 声明信号格式 SIGNAL信号名 信号名 数据类型 表达式 信号是实体间动态交换数据的手段 用信号对象可以把实体连接在一起形成模块 作为一种硬件描述语言的元素 信号在硬件电路设计中具有一定的物理意义 它通常用来表示硬件电路中的一条硬件连接线 在VHDL中 信号说明的范围也十分广泛 它可以在程序包 实体说明和结构体的说明部分进行说明 与常量说明十分类似 程序包中说明的信号可以在其所包含的任何实体和结构体中使用 实体说明中说明的信号可以在其对应的结构体中使用 结构体中说明的信号只能在本结构体中使用 VHDL语言对象类语法 表达式 用来对信号进行初始赋值 它是一个可选项 赋值符号为 注意 在VHDL语言程序中 信号赋值的符号与此不同 它应为 5 2Thedataflowdescription 数据流描述 15 赋值运算符3 信号赋值符号 表达式 y a 对singal 信号 赋初始值 一般在信号声明语句中 对VARIABLE 变量 CONSTANT 常量 赋值 a赋予y 对GENERIC 类属 参量赋值 这种赋值是针对表现为存储器的量 不是电路互联节点量 所以对singal只是赋初值用 立即发生 对后面的语句可直接有作用 运算符类语法 5 2Thedataflowdescription 数据流描述 16 2 Concurrentprocessing Let sConsiderthetwodescriptions 并发处理 我们观察这两个描述 ARCHITECTUREnu3OFfulladdISSIGNALn1 n2 n3 n4 STD LOGIC BEGINn1 xXORy sum cinXORn1 n2 xANDy n3 cinANDx n4 yANDcin cout n2ORn3ORn4 ENDARCHITECTUREnu3 ARCHITECTUREnu4OFfulladdISSIGNALn1 n2 n3 n4 STD LOGIC BEGINsum cinXORn1 cout n2ORn3ORn4 n1 xXORy n2 xANDy n3 cinANDx n4 yANDcin ENDARCHITECTUREnu4 Theyarethesameasrunningit 它们的执行结果一样吗 5 2Thedataflowdescription 数据流描述 17 2 Concurrentprocessing 并发处理 Althoughtheyarewritteninadifferentorder theydoexactlythesamething Unlikeprogramminglanguages VHDLnormallymonitorsallstatementsatthesametime andexecutesastatementwhenoneofitsrighthandside RHS valueschanges Thisiscalled Concurrentexecution 虽然他们的书写顺序不同 但他们实现的功能完全相同 不同于编程语言 VHDL语言同时监视所有语句 一旦某代入语句右边 RHS 有值的变化 就立即执行该语句 这就是所谓的 并行执行 5 2Thedataflowdescription 数据流描述 18 VHDL语言的并行执行 HDL用于描述PLD器件的硬件连接关系 所以不同于一般的编程语言 其语句有并行和顺序之分 并行语句不分先后 只要条件满足就会同时执行 19 VHDL的数据流 3 DataflowVHDL InthejargonofVHDL thestyleofcodingthattheoutputsandinputsarerelatedthroughBooleanorarithmeticoperatorsandallstatementsoperateconcurrently iscalleddataflow 用VHDL语言的术语来说 输出与输入之间的关系是通过布尔或算术表达式描述的 且所有语句都是并发执行的 这种代码描述方式 被称为数据流描述 5 2Thedataflowdescription 数据流描述 20 结构体描述法1 数据流描述法数据流描述 dataflowdescription 是结构体描述方法之一 它描述了数据流程的运动路径 运动方向和运动结果 when else 条件信号赋值语句 with select when 选择信号赋值语句 这两种语句是数据流描述法常用的语法 采用布尔方程 也可用数据流描述法 结构体描述法 5 2Thedataflowdescription 数据流描述 21 VHDL 结构体中 结构描述 5 3StructuralVHDL 22 VHDL结构描述 Nowlet slookathowtousesimpledesignasbuildingblockstomakemorecomplexdesign We lldothisbuildingastructuraldescriptionofa4 bitadder 现在 我们看看如何把简单的设计作为构建块 来构成更复杂的设计 5 3StructuralVHDL 我们将如此建立4位加法器的结构描述 23 VHDL结构描述 5 3StructuralVHDL 1 Theworklibrary Whendesignsarecompiledtheyareplacedintoalibraryreadytobeusedbyotherdesigns Bydefault thecurrentworkinglibraryiscalledwork Whencompiled itisaddedtotheworklibrary Itnamewithinthelibraryis ARCHITECTUREsimpleOFfulladdISBEGINsum cinXORxXORy cout xANDy OR cinANDx OR yANDcin ENDARCHITECTUREsimple work fulladd simple 当设计编译后 就存放在 当前工作 库中 准备被其他设计调用 默认情况下 当前工作库名为work 编译后 被加到工作库中 它在库中的名字是 24 VHDL结构描述 5 3StructuralVHDL 2 Placinglibrarycomponentsintoadesign Astructuraldescriptionshowshowweconnectanumberofunitstogethertomakeamorecomplicateddesign The4 bitaddercanbebuiltupfromchainingfourofthesefulladdersunitstogether 设计中的库元件调用 一个结构描述展示了我们如何把多个单元电路连接起来完成更复杂的设计 4位加法器可以用四个全加器单元电路级联而成 25 VHDL结构描述 5 3StructuralVHDL 2 Placinglibrarycomponentsintoadesign 设计中的库元件调用 LIBRARYieee USEieee std logic 1164 ALL ENTITYadderISPORT x y INSTD LOGIC VECTOR 3DOWNTO0 cin INSTD LOGIC sum OUTSTD LOGIC VECTOR 3DOWNTO0 cout OUTSTD LOGIC ENDENTITYadder Thestructuraldescriptionofthe4 bitadder 后继续 26 VHDL结构描述 5 3StructuralVHDL 2 Placinglibrarycomponentsintoadesign 设计中的库元件调用 ARCHITECTUREstructuralOFadderISSIGNALcarry STD LOGIC VECTOR 4DOWNTO0 BEGINc0 entitywork fulladd simple PORTMAP x 0 y 0 cin sum 0 carry 1 c1 entitywork fulladd simple PORTMAP x 1 y 1 carry 1 sum 1 carry 2 c2 entitywork fulladd simple PORTMAP x 2 x y 2 y carry 2 cin sum 2 sum carry 3 cout c3 entitywork fulladd simple PORTMAP x 3 y 3 carry 3 sum 3 sum cout coun ENDARCHITECTUREstructural Continued 位置关联 名子关联 混合关联 27 VHDL结构描述 5 3StructuralVHDL 2 Placinglibrarycomponentsintoadesign 设计中的库元件调用 Eachofthecomponentsthatwehaveusedisdefinedbyastatementprovding alableforthecomponent thekeywordENTITY thefullnameofthegate thekewordPORTMAP alistofthewiresthatareconnectedtotheandoutputofthegate 每个被调用元件都可由包括下列各项的语句来定义 元件标号名 关键字ENTITY 被调元件的全称 关键字PORTMAP 元件的输入输出连线表 这种语句称为元件例化 aninstantiation 28 语法9 元件调用语句格式 例化名 ENTITY库名 实体名 结构体名 PORTMAP 端口名 连接端口名 例化名必须存在 相当于当前电路的一个插座名 ENTITY库名 实体名 结构体名 定义了调用元件的具体路径 PORTMAP端口映射 说明调用元件和本实体的信号关系 即任何一用户设计的实体 无论功能多复杂都可标准化成一个元件 现在EDA工程中 把复杂的模块程序称为软核 softcore或IPcore 调试仿真通过的集成电路版图称为硬核 把简单的通用模块称为元件 它放在结构体中直接应用 并行语句类语法 VHDL结构描述 5 3StructuralVHDL 29 VHDL结构描述 5 3StructuralVHDL 3 Positionalassociation HowdotheVHDLtoolsknowwhichofthewiresconnectedtoc0areinputsandwhichareoutputs c0 entitywork fulladd simple PORTMAP x 0 y 0 cin sum 0 carry 1 Ifwecomparetheinstantiation withthedefinitionofthefulladder VHDL工具是怎么知道连接到c0的是那些输入和输出 如果我们对照这个例化 和一位全加器的定义 位置关联 30 ENTITYfulladdISPORT x y cin INSTD LOGIC sum cout OUTSTD LOGIC ENDENTITYfulladd Weseethatthefirstthreesignalsintheportmapareinputsandthelasttwoareoutputs Sothefirstthreesignalsintheinstantiationx 0 y 0 andcinwillbeattachedtotheinputsx yandcin Similarly sum 0 willbeconnectedtosumandcarry 1 willbeconnectedtocout Thisiscalledpositionalassociation 我们看端口映射图中前三个信号是输入端口 后两个是输出 这样 例化中前三个信号x 0 y 0 cin将被关联到元件的输入x y和cin 以此类推sum 0 连接到sumcarry 1 连接到cout这就是位置关联 c0 entitywork fulladd simple PORTMAP x 0 y 0 cin sum 0 carry 1 31 VHDL结构描述 5 3StructuralVHDL 4 Namedassociation Alternatively wecanexplicitlysaywhichwireisconnectedtowhichinputoroutputoftheinstantiatedcomponent c0 entitywork fulladd simple PORTMAP x x 0 y y 0 cin cin sum sum 0 cout carry 1 Thisiscallednamedassociation Withnamedassociation theorderdoesn tmatter 名称关联 另一种方法 就是将已经存于库中的现成元件的各个的名称分别赋予设计电路中元件的输入和输出信号 这种映射的方法称为名称映射法 用名称关联与 书写 顺序无关 32 结构体描述法2 结构化描述法在结构体中 通过调用库中元件 例化 实现模块化描述电路结构的方法 无论功能多么复杂 都可以标准化成一个元件 多层次设计的每个层次都可以作为一个元件 再构成一个模块或构成一个系统 每个元件可以分别仿真 然后再整体调试 对于一个复杂的电子系统 可以分解成许多子系统 子系统再分解成模块 多层次设计可以使设计多人协作 并行同时进行 结构化描述不仅是一个设计方法 而且是一种设计思想 是大型电子系统设计高层主管人员必须掌握的 结构体描述法 VHDL结构描述 5 3StructuralVHDL 33 语法10 端口映射语句格式 例化名 元件名PORTMAP 端口名 连接端口名 作用 调用 元件名 这元件到本电路中 并命名为 标号名 并说明其引脚和本电路信号的关系 用来实现各模块之间 各元件之间的信号连接关系映射 其中元件名应是事先通过COMPONENT语句声明例化的 或元件名指定了元件所在的库 实体 和结构体并用ENTITY引导如 ENTITY库名 实体名 结构体名 即是元件调用语句 并行语句类语法 元件的端口名 调用的元件在本电路中的名称 本电路的端口名 具体的标准元件 VHDL结构描述 5 3StructuralVHDL 有3种关联方式 34 VHDL结构描述 5 3StructuralVHDL 补1 元件例化语句 作用与元件调用类似 是先定义某预先设计好的实体为一个元件 然后在利用端口映射语句将此元件例化 说明元件的例化名和当前电路信号的连接关系 这种形式的元件例化 在对某元件多次调用时要方便 元件例化语句分两部分组成 第一部分 对一现成实体定义为一个元件 相当于对一个现成的设计实体进行封装 只留出对外的接口界面 注意 这部分必须放在结构体的ARCHITETURE和BEGIN之间 COMPONENT元件名ISGENERIC 类属表 PORT 端口名表 ENDCOMPONENT 35 VHDL结构描述 5 3StructuralVHDL 补1 元件例化语句 第二部分 将定义好的元件调用 进行端口映射 说明调用后和与当前设计实体中元件间及端口的连接关系 例化名 元件名PORTMAP 端口名 连接端口名 注意 这部分必须放在结构体中 可以多次使用 如电路中可使用多个加法器等电路 同样有位置关联 名子关联 混合关联 这两部分必须同时存在 36 语法11 元件例化语句格式 COMPONENT元件名IS GENERIC 类属表 PORT 端口名表 ENDCOMPONENT例化名 元件名PORTMAP 端口名 连接端口名 类属表可列出端口的数据类型和参数 MAX PLUSII不支持 PORTMAP端口映射 说明调用元件和本实体的信号关系 并行语句类语法 VHDL结构描述 5 3StructuralVHDL 在结构体中 在ARCHITETURE和BEGIN之间 37 VHDL结构描述 5 3StructuralVHDL USEwork fulladd all 包集合的打开ARCHITECTUREstructuralOFadderISCOMPONENTfulladdISPORT x y cin INSTD LOGIC sum cout OUTSTD LOGIC ENDCOMPONENTSIGNALcarry STD LOGIC VECTOR 4DOWNTO0 BEGINc0 fulladdPORTMAP x 0 y 0 cin sum 0 carry 1 c1 fulladdPORTMAP x 1 y 1 carry 1 sum 1 carry 2 c2 fulladdPORTMAP x 2 x y 2 y carry 2 cin sum 2 sum carry 3 cout c3 fulladdPORTMAP x 3 y 3 carry 3 sum 3 sum cout coun ENDARCHITECTUREstructural 用例化语句 则我们前面的结构描述可变为 38 课堂练习 采用元件例化 调用4位全加器 设计8位全加器 4位全加器实体说明如下 LIBRARYieee USEieee std logic 1164 ALL ENTITYadderISPORT x y INSTD LOGIC VECTOR 3DOWNTO0 cin INSTD LOGIC sum OUTSTD LOGIC VECTOR 3DOWNTO0 cout OUTSTD LOGIC ENDENTITYadder 39 课堂练习 参考答案 LIBRARYieee USEieee std logic 1164 ALL ENTITYadder8ISPORT x y INSTD LOGIC VECTOR 7DOWNTO0 Cin INSTD LOGIC Sum OUTSTD LOGIC VECTOR 7DOWNTO0 cout OUTSTD LOGIC ENDENTITYadder8 40 ARCHITECTUREstructuralOFadderISCOMPONENTadderISPORT x y INSTD LOGIC VECTOR 3DOWNTO0 Cin INSTD LOGIC Sum OUTSTD LOGIC VECTOR 3DOWNTO0 Cout OUTSTD LOGIC ENDCOMPONENT SIGNALcarry STD LOGIC BEGINc0 adderPORTMAP x x 3downto0 y y 3downto0 cin Cin sum Sum 3downto0 Cout carry c1 adderPORTMAP x x 7downto4 y y 7downto4 cin carry sum Sum 7downto4 Cout Cout ENDARCHITECTUREstructural 41 进程 5 4Processes 前面所讲结构描述法是类似原理图模式的电路结构描述 数据流描述是类似真值表的组合逻辑描述方法 如果要实现 沿触发 的概念 即由信号的变化触发某电路的工作过程 就是进程 这个信号对进程来说就是敏感信号 这可实现有时间 拍 的路径概念 和同步 42 进程 5 4Processes 1 Sensitivitylists ARCHITECTUREsimpleOFfulladdIS 1BEGIN 2cout xANDy OR cinANDx OR yANDcin 3sum cinXORxXORy 4ENDARCHITECTUREsimple 5 Statement3willrunwheneverarighthandsidevaluechanges Soitrunswhenx yorcinchanges 敏感信号 HereistheVHDLdataflowcodethatwesawpreviously 这是前面看过的用数据流描述的 全加器 VHDL代码 每当代入 赋值 符号 右边的信号值改变时 语句3就将被执行 即当x y cin变化时 43 进程 5 4Processes 1 Sensitivitylists InthejargonofVHDL statement3issensitivetosignalsx y cin Itssensitivitylistisx y cin Achangeinasignaliscalledaneventonthatsignal Sostatement3runswheneverthereisaneventonasignalonitssensitivitylist 敏感信号 用VHDL语言术语讲 语句3对信号x y cin敏感 它的敏感信号表包括x y cin VHDL中 一个信号的变化称之为那个信号的事件 因此 只要敏感信号表中有一个信号事件 语句3就被执行 注意 语句3的描述是组合逻辑电路 不是触发电路 cout xANDy OR cinANDx OR yANDcin 44 进程 5 4Processes 1 Sensitivitylists 敏感信号 Statements3and4areconcurrent i e theyarebothactiveatthesametime andaretriggeredbyaneventonasignalontheirsensitivitylists cout xANDy OR cinANDx OR yANDcin 3sum cinXORxXORy 4 语句3和语句4是并行处理的 即 它们同时都在工作着 并可被各自敏感信号表中的信号事件所触发 ThisapproachtowritingVHDLisfineaslongasourdesignconsistsofblockswhoseoutputarealwayssenstivetoalloftheirinputs 如果我们的设计电路组成 是输出总一直敏感于它们的所有输入 那么 这是一种好的表达方式 45 进程 5 4Processes 1 Sensitivitylists 敏感信号 Itisusefultobeabletoexplicitysaywhatwewantthesensitivitylistofapieceofcodetobe ThisisdonebyaVHDLfeaturecalledaPROCESS 明确敏感信号表 触发 去执行一段代码的 这是非常有用的 一种功能 这可由VHDL的进程语句实现 46 进程 5 4Processes 进程语句结构 2 Thestructureofaprocess PROCESS sensitivitylist BEGINStatement1 Statement2 Statement3 ENDPROCESS ARCHITECTURE BEGINStatement PROCESS sensitivitylist BEGINStatement ENDPROCESS Statement PROCESS sensitivitylist BEGINStatement ENDPROCESS ENDARCHITECTURE 47 进程 5 4Processes 进程语句结构 2 Thestructureofaprocess 1 Theprocesswaitsuntilitistriggeredbyaneventononeofthesignalsinitssensitivitylist 2 Whenitistriggereditexecuteseachofthestatementsinitsbodysequentially 进程一直等待 直到敏感信号表中任何一个信号事件才触发 执行 一旦触发 进程结构中的所有语句按顺序执行 Thewaythisworksisasfollows 工作方式如下 48 进程 5 4Processes 进程语句结构 2 Thestructureofaprocess 3 Duringexecutionoftheprocess allsignalvaluesarefrozenandarenotupdatedorchangedinanywayduringtheexecutionoftheprocess 4 TheLHSsignalsallreceivetheirnewvalueaftertheprocesshassuspendeditsexecution 在进程执行期间 所有信号值都被冻结 不允许以任何形式更新或改变 进程执行挂起后 代入符号 左边的各个信号值才能更新 49 进程 5 4Processes 进程语句结构 2 Thestructureofaprocess 5 Aprocesscanbeusedanywherethatitwouldbelegitimatetousealineofconcurrentcode 6 Ifweusemultipleprocesseswithinanarchitecture thentheprocessesoprateconcurrentlywithoneanotherandanylinesofconcurrentcodewithinarchiteture 一个进程语句可以用在任何地方 它将是一条合法的并行代码 若一结构体中有多个进程语句 则进程语句和其他进程语句以及结构体中的其他并行语句都是同时运行的 50 进程 5 4Processes 进程语句结构 2 Thestructureofaprocess VHDLdescriptioninprocesses ARCHITECTUREwith processOFfulladdISBEGINPROCESS x y cin BEGINcout xANDy OR cinANDx OR yANDcin ENDPROCESS sum cinXORxXORy ENDARCHITECTUREwith process 并行语句 1 51 进程 5 4Processes 进程语句结构 2 Thestructureofaprocess ARCHITECTUREwith 2processOFfulladdISBEGINPROCESS x y cin BEGINcout xANDy OR cinANDx OR yANDcin ENDPROCESS PROCESS x y cin BEGINsum cinXORxXORy ENDPROCESS ENDARCHITECTUREwith 2process 2 52 进程 5 4Processes 进程语句结构 2 Thestructureofaprocess ARCHITECTUREOFfulladdISBEGINPROCESS x y cin BEGINcout xANDy OR cinANDx OR yANDcin sum cinXORxXORy ENDPROCESS ENDARCHITECTUREall in one x y cin有变化先执行 进程结束后 cout sum才变化 x y cin有变化后执行 以上三个结构体完成的功能相同 但电路结构不同 3 53 语法13 Wait语句即等待语句 是提供给设计人员挂起一个进程或子程序顺序执行的手段 被挂起的进程或子程序继续执行的条件可以通过下列三种不同的方法 WAITON敏感信号表 等待信号变化WAITUNTIL布尔表达式 等待表达式为真WAITFOR时间表达式 等待时间到继续 程序结构类语法 进程 5 4Processes 54 进程 5 4Processes WAIT语句 3 TheWAITstatement Insteadofusingasensitivitylist wecanthetimingofexecutionofaprocessbyusingaWAITstatement ARCHITECTUREusing waitOFfulladdISBEGINPROCESSBEGINWAITONx y cin cout xANDy OR cinANDx OR yANDcin sum cinXORxXORy ENDPROCESS ENDARCHITECTUREusing wait 我们可以用WAIT语句代替敏感信号 来同步进程的执行 运行到此处挂起 x y cin有变化继续执行 顺序 55 语法13 进程的声明格式 进程名 PROCESS 敏感信号表 变量说明语句BEGIN顺序说明语句ENDPROCESS 进程名 程序结构类语法 1 进程结构内部的所有语句都是顺序执行的 2 多进程之间是并行的 都可访问结构体或实体中定义的信号 3 进程的启动是由信号敏感表所标明的信号来触发的 也可以用WAIT语句等待一个触发条件的成立 4 各进程之间的通信是由信号来传递的 5 进程的启动与执行过程 进程 5 4Processes 56 进程 5 4Processes 进程中 组合逻辑的描述方法 4 Rulesfordescribingcombinationallogic WecandescribecombinationallogicInaprocess theinputsofthatareallonthesensitivitylist andapartfromtheoutputnoothersignalexist 组合逻辑所有输入都是进程的敏感信号 除输出外无任何其他信号 我们可这样用进程描述组合逻辑 ThesituationbecomeslightlymorecomplicatedIfweuseintermediatesingnals 如果引用中间信号 情况会变得稍微复杂一些 57 进程 5 4Processes 进程中 组合逻辑的描述方法 4 Rulesfordescribingcombinationallogic ARCHITECTUREOFfulladdISBEGINSIGNALn1 STD LOGICPROCESS x y cin BEGINn1 xXORy cout xANDy OR cinANDx OR yANDcin sum cinXORn1 ENDPROCESS ENDARCHITECTUREall in one 这是错误的 因为进程中所有信号值是冻结的 58 进程 5 4Processes 进程中 组合逻辑的描述方法 4 Rulesfordescribingcombinationallogic PROCESS x y cin n1 BEGINn1 xXORy cout xANDy OR cinANDx OR yANDcin sum cinXORn1 ENDPROCESS 这是对的 因为n1因x y cin变化而变化会再次触发进程 Wecanremedytheproblemwiththeprocessbyaddingtheinternalnoden1tothesensitivitylist 我们可以通过将内部节点n1加到进程的敏感信号表 来解决这个问题 59 进程 5 4Processes 进程中 组合逻辑的描述方法 4 Rulesfordescribingcombinationallogic Ingeneral theruletodescribecombinationallogicusingaprocessisthatallinputsandinternalnodeappearonthesensitivitylist 总之 用进程描述组合逻辑的原则 就是必须将所有输入信号和所有内部节点都列入敏感信号表 60 VHDL的顺序描述与并行描述 VHDL结构体采用顺序 并行描述方法实现对电路按算法路径的描述 行为描述 5 5SequentialandconcurrentVHDL 1 Insideaprocess thelineofcodeareinterpretedsequentially 2 Outsideofaprocess codeisinterpretedconcurrently 3 Theprocessoperateconcurrentlywithanotherprocess 进程内部的所有语句都是按顺序执行的 进程外部的所有语句都是并发执行的 进程和进程是并发进行的 61 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL InVHDL eachconcurrentstatementiscompletelyindependentofneighboringstatement Sowhateverbehaviorwearetryingtodescribeforaparticularsignalhastobebunchedtogetherintoasignalstatementofcode VHDL语言中 各种并发处理语句与相邻语句间彼此完全独立的 这样 我们对特定信号的任何行为都只能用一条并发语句描述 Thiscanmakedescriptionofcertaintypesofbehaviordifficultorevenimpossible 这使某些类型的行为描述难以描述 甚至根本就无法实现 Therearemanyconstructsofalanguagethatdomakesenseifthereisaflowofcodefromonelinetothenext 程序语言中的许多结构 只有当从上至下顺序执行才有意义 62 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL 1 Sequentialandconcurrentconditionals 顺序条件语句与并发条件语句 1 SequentialIFblock IFcondition 1THENsequenceofstatements ELSIFcondition 2THENsequenceofstatements ELSEsequenceofstatements ENDIF 注意 ELSIF是一个关键字不是ELSEIFIF语句只能用在进程内 TheIFblockcanonlybeusedinsideaprocess 顺序条件语句 63 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL 1 Sequentialandconcurrentconditionals 顺序条件语句与并发条件语句 2 ConcurrentWHENstatement a value1WHENcondition1ELSEvalue2WHENconditon2ELSEvalue3 并发条件语句 WHEN语句不能用在进程内 Inconcurrentcode eachlinestandsaloneandistriggeredintolifebyachangeonitsRHS 并发处理语句 彼此独立并且是由各自的代入符号右边的信号触发的 64 语法14 顺序条件IF语句 顺序语句类语法 格式3 IF 条件1 THENELSIF 条件2 THEN ELSIF 条件n THENELSEENDIF 用多选控制 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL IF语句指明的条件是布尔量 即 真 true 和 假 false 所以条件表达式中只能用逻辑运算符和关系运算符 IF语句是有序的 先处理最起始 最优先的条件 后处理次优先的条件 65 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYdff1ISPORT clk d INSTD LOGIC q OUTSTD LOGIC ENDENTITYdff1 ARCHITECTUREstructureOFdff1ISBEGINPROCESS clk BEGINIF clk eventandclk 1 THENq d ENDIF ENDPROCESS ENDARCHITECTUREstructure 当clk变化且clk l时 条件成立 输入信号d代入给输出信号q 即输出端口再现输入端口的值 当条件不成立时 输出值不变化 例 用IF语句设计D型触发器 对沿的判断 66 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux2ISPORT a b sel INSTD LOGIC C OUTSTD LOGIC ENDENTITYmux2 ARCHITECTUREexampleOFmux2ISBEGINPROCESS a b sel BEGINIF sel 1 THENC a ELSEC b ENDIF ENDPROCESS ENDARCHITECTUREexample 当条件sel 1 时 输出端C等于输入端a的值 当条件不成立时 输出端C等于输入端b的值 这是一个典型的二选一逻辑电路 例 用IF语句设计二选一电路 67 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL 例 用IF语句设计优先级编码器 优先级编码器的真值表 其中x表示任意 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYpriority encoderISPORT d INSTD LOGIC VECTOR 7DOWNTO0 q OUTSTD LOGIC VECTOR 2DOWNTO0 ENDENTITYpriority encoder 68 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL 例 用IF语句设计优先级编码器 ARCHITECTUREexample IFOFpriority encoderISBEGINPROCESS d BEGINIF d 0 0 THENq 111 ELSIF d 1 0 THENq 110 ELSIF d 2 0 THENq 101 ELSIF d 3 0 THENq 100 ELSIF d 4 0 THENq 011 ELSIF d 5 0 THENq 010 ELSIF d 6 0 THENq 001 ELSEq 000 ENDIF ENDPROCESS ENDARCHITECTUREexample If 69 VHDL的顺序描述与并行描述 5 5SequentialandconcurrentVHDL 顺序选择语句与并发选择语句 2 Sequentialandconcurrentselect 根据输入地址 从4路输入数据中选择一个 接至输出y LIBRARYieee USEieee std logic 1164 all ENTITYmux4to1ISPORT address INSTD LOGIC VECTOR 1DOWNTO0 data INSTD LOGIC VECTOR 3DOWNTO0 y outSTD LOGIC ENDmux4to1 先建立实体 70 VHDL的顺序描述与并行描述 5 5Sequentialandconc
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!