下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 VHDL语言

VHDL语言.ppt

VHDL语言

840142534
2010-11-09 0人阅读 举报 0 0 暂无简介

简介:本文档为《VHDL语言ppt》,可适用于IT/计算机领域

第一章VHDL语言绪论第一章VHDL语言绪论EDA(ElectronicDesignAutomation)VHDL自顶向下的系统设计方法应用VHDL的EDA过程在系统编程技术FPGACPLD的优势VHDL的学习ElectronicDesignAutomationElectronicDesignAutomationEDA技术就是以计算机为工具在EDA软件平台上对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguageVeryHighSpeedIntegratedCircuitHardwareDescriptionLanguageVHDL主要用于描述数字系统的结构、行为、功能和接口。系统设计领域最佳的硬件描述语言既是硬件描述语言又是仿真语言具有类属描述语句和子程序调用等功能VHDL的硬件描述与具体的工艺技术和硬件结构无关自顶向下的系统设计方法自顶向下的系统设计方法自底向上设计方法首先确定可用的元器件然后根据这些器件进行逻辑设计完成各模块后进行连接最后形成系统。TOPTODOWN(自顶向下):采用硬件描述语言在系统的基本功能或行为级上对设计的产品进行描述和定义结合多层次的仿真技术、在确保设计的可行性与正确性的前提下完成功能确认。然后利用EDA工具的逻辑综合功能把功能描述转换成某一具体目标芯片的网表文件输出给该器件厂商的布局布线适配器进行逻辑映射及布局布线再利用产生的仿真文件进行功能和时序的验证以确保实际系统的性能。自顶向下的系统设计方法自顶向下设计方法的优越性:自顶向下设计方法的优越性:顶层的功能描述可以完全独立于目标器件的结构设计成果的再利用得到保证IntellectualPropertyCore(IP核)可实现多人多任务的并行工作方式使系统的设计规模和效率大幅度提高。在选择实现系统的目标器件的类型、规模、硬件结构等方面具有更大的自由度。应用VHDL的EDA过程InSystemProgrammabilityInSystemProgrammability采用ISP技术的CPLD/FPGA构成的系统可以在装配后进行逻辑设计和编程下载。并能根据需要对系统硬件功能实时地加以修改或按预定程序改变逻辑组态从而使整个硬件系统变得像软件那样灵活而易于修改。即利用ISP技术可在不改变硬件电路和结构的情况下重构逻辑或硬件升级。EEPROM编程下载技术FPGACPLD的优势FPGACPLD的优势高集成度、高速和高可靠是FPGACPLD最明显的特点其时钟延迟可达纳秒级结合其并行工作方式在超高速应用领域和实时测控方面有非常广阔的应用前景。美国TI公司认为一个ASIC%的功能可用IP核等现成逻辑合成。而未来大系统的FPGACPLD设计仅仅是各类再应用逻辑与IP核的拼装其设计周期将更短。第二章VHDL语言入门第二章VHDL语言入门选选择器设计锁存器设计全加器设计二选一选择器设计二选一选择器设计a和b分别是两个数据输入瑞的端口名s为通道选择控制信号输入端的端口名y为输出端的端口名。其逻辑功能可表述为:若s=则y=a若s=则y=b。仿真结果MUX的RTL图MUX的RTL图锁存器设计锁存器设计与多路选择器不同锁存器的工作状态必须用时序逻辑才能描述锁存器的引脚D是数据输入端口、ENA是数据锁存使能控制端口Q为数据输出端口。ENA=允许锁入ENA=禁止锁入Latch的RTL图Latch的RTL图VHDL语言设计实体的基本结构VHDL语言设计实体的基本结构配置(CONFIGURATION)第章VHDL语言程序结构第章VHDL语言程序结构VHDL程序设计基本结构§VHDL程序基本结构§VHDL程序基本结构一个完整的VHDL语言程序通常可含有五个部分:实体(Entity):描述系统的外部接口信号结构体(Architecture):描述系统内部的结构和行为配置(Configuration):属性选项描述层与层之间、实体与结构体之间的连接关系程序包(Package):属性选项用于把共享的定义放置其中。具体讲就是存放各模块都能共享的数据类型、常数、子程序等。库(Library):存放已编译的实体、结构体、程序包和配置可由用户生成或由ASIC芯片制造商提供。EntityArchitecturePairEntityArchitecturePairinputinputnoutputoutputnEntitySymbolclkclrmuxoutArchitectureSchematic好比PCB板上的一个IC插座好比PCB板插座上的一个IC.实体语句结构.实体语句结构实体说明单元的常用语句结构如下:ENTITY实体名ISGENERIC(类属表)PORT(端口表)ENDENTITY实体名文件名(MAXplusII)类属(Generics)参数说明类属(Generics)参数说明类属说明的一般书写格式如下:GENERIC(常数名:数据类型:设定值{常数名:数据类型:设定值})类属参量以关键词GENERIC引导一个类属参量表在表中提供时间参数或总线宽度等静态信息。类属参数的说明必须放在端口说明之前IntegertimeENTITYMCKISGENERIC(WIDTH:INTEGER:=)PORT(ADDBUS:OUTSTDLOGICVECTOR(WIDTHDOWNTO))在这里GENERIC语句对实体MCK的作为地址总线的端口ADDBUS的数据类型和宽度作了定义即定义ADDBUS为一个位的位矢量。端口说明端口说明端口一般书写格式如下:PORT(端口名{端口名}:方向数据类型┇端口名{端口名}:方向数据类型)端口名端口名赋于每个外部引脚的名称通常以个或n个英文字母或以字母打头后跟数字命名如:d、d、sel、q端口方向:端口方向:定义外部引脚是输入还是输出表明方向的说明符如下:IN输入信号从端口进入结构体内OUT输出信号从结构体内流经端口输出(结构体内不再使用)INOUT双向BUFFER输出结构体可再使用OUT、INOUT与BUFFER的区别:OUT、INOUT与BUFFER的区别:OUT、INOUT与BUFFER的区别OUT、INOUT与BUFFER的区别OUT:仅允许数据流从实体内流向外INOUT:驱动信号可以在实体内向外也可在实体外向内也允许用于内部反馈BUFFER:输出(即驱动只能在实体内向外)但也可被用于内部反馈.结构体(ArchitectureBody).结构体(ArchitectureBody)结构体是一个基本设计单元的实体它具体指明:该基本设计单元的行为单元内部的连接关系定义了设计单元具体的功能或内部操作特性结构体构造图对结构体的描述方式对结构体的描述方式有以下三种:行为描述数据流方式结构描述行为描述:行为描述:对设计实体的数学模型的描述其抽象程度远高于其他描述主要使用函数、过程或进程语句以算法形式描述数据的变换和传送描述该设计单元的功能即:描述输入与输出的行为BehavioralModelingBehavioralModelinginput,,inputnoutput,,outputnIFshiftleftTHENFORjINhighDOWNTOlowLOOPshft(j):=shft(j)ENDLOOPoutput<=shftAFTERnsDescribesFunctionalityOnlyHardwareIndependentSupportedinSynthesisSimulationLeftBitShifter数据流方式:数据流方式:又称RTL(RegisterTransferLevel)级方式对从信号到信号的数据流的路径形式进行描述描述数据的传输和变换主要使用并行的信号赋值语句既明显表示了该设计单元的行为也隐式表示了该设计单元的结构容易进行逻辑综合结构描述:结构描述:描述该设计单元的硬件结构主要使用配置指定语句元件例化语句描述元件的类型及互连关系StructuralModelingStructuralModelinginputinputnoutputoutputnHigherlevelComponentLowerlevelComponentDescribesFunctionalityStructureCallsOutSpecificHardwareorLogicSynthesisOnlyLowerlevelComponent)结构体描述的一般格式:)结构体描述的一般格式:ARCHITECTURE结构体名OF实体名IS定义语句包括:内部信号常数数据类型元件函数过程等的定义BEGIN并行处理语句包括:并行信号赋值语句进程语句生成语句元件例化语句END结构体名)结构体名称的命名)结构体名称的命名为了使阅读VHDL程序的人能了解设计者所采用的描述方式通常把采用的描述方式来对结构体名称进行命名如:ARCHITECTUREstructuralOFmuxIS如:ARCHITECTUREdataflowOFmuxIS)定义语句)定义语句定义语句位于ARCHITECTURE和BEGIN之间用于对结构体内部所使用的信号、常数、数据类型和函数进行定义,例如:ARCHITECTUREbehavOFmuxISSIGNALnes:BIT┆BEGIN┆ENDbehav)并行处理语句)并行处理语句在结构体中的语句都是可以并行执行的语句的执行不以书写的语句顺序为执行顺序并行处理语句位于BEGIN和END之间这些语句具体的描述了结构体的行为及其连接关系§结构体的子结构描述§结构体的子结构描述一个结构体可以用几个子结构即由几个比较独立的模块来构成VHDL语言可以有种形式的子结构描述语句:BLOCK语句结构PROCESS语句结构SUBPROGRAM语句结构二、进程(PROCESS)语句描述二、进程(PROCESS)语句描述PROCESS语句的格式:进程名:PROCESS(信号信号……)BEGIN┆ENDPROCESS进程名可以有也可以省略在进程说明部分中不允许定义信号和共享变量sensitivitylistincludesallinputsusedinthecombinatoriallogicsensitivitylistdoesnotincludethedinput,onlytheclockorandcontrolsignalsSequentialProcessSensitivetoSpecificInputs(ieClockandorControlSignals)ExamplePROCESS(clr,clk)CombinatorialProcessSensitivetoAllInputsExamplePROCESS(a,b,sel)TypesofProcesses进程中的信号与变量进程中的信号与变量变量只在进程中定义变量只能在进程语句、函数语句和过程语句结构中使用,它是一个局部量。变量的赋值是立即生效的而信号只有当进程执行完以后才生效。三、子程序(SUBPROGRAM)的结构描述三、子程序(SUBPROGRAM)的结构描述子程序与其它高级语言中的子程序概念相当它可以反复调用但子程序返回以后才能被再调用。VHDL子程序有两种类型:VHDL子程序有两种类型:过程(PROCEDURE)函数(FUNCTION)其中:过程与其它高级语言中的子程序相当而“函数”与其它高级语言中的函数相当.库(Library).库(Library)库是经编译后的数据的集合它存放程序包定义、实体定义、结构体定义、配置定义库的功能库的功能类似于DOS操作系统中的目录或WINDOWS中的文件夹库中存放着已编译好的实体、结构体、程序包和配置在VHDL语言中库的说明总是放在设计单元的最前面:LIBRARY库名库的种类库的种类在VHDL中存在的库大致可分为类:IEEE库STD库ASIC库WORK库用户定义库①IEEE库①IEEE库IEEE库是最常用的资源库IEEE库中的程序包有:Stdlogic程序包NumericBit程序包NumericStd程序包MathReal程序包MathComplex程序包vitalTiming程序包vitalPrimitives程序包现在有些公司现在有些公司如SYNOPSYS公司也提供一些程序包如:“STDLOGICARITH”“STDLOGICUNSIGNED”“STDLOGICSIGNED”虽然还未得到IEEE的承认但是仍汇集在IEEE库中库的使用库的使用①库的说明前面提到的种库除了WORK、STD库之外其它在使用前都要先作说明一般在使用库时先要用两条语句对库进行说明如:LIBRARY库名USE程序包项目名例如:LIBRARYIEEEUSEIEEESTDLOGICALL上例表明要使用IEEE库中STDLOGIC程序包的所有过程和函数这里项目名为ALL表示包集合中的所有项目都要用②库说明作用范围②库说明作用范围库说明语句的作用范围从一个实体说明开始到所属的结构体、配置为止即:一条库说明语句只对一个实体有效例如:LIBRARYIEEEUSEIEEESTDLOGICALLENTITYandIS┆ENDandARCHITECTURErtlOFandIS┆ENDrtlCONFIGURATIONsOFandIS┆ENDsLIBRARYIEEEUSEIEEESTDLOGICALLENTITYorIS┆第章VHDL语言语言要素第章VHDL语言语言要素VHDL文字规则VHDL数据对象VHDL数据类型VHDL操作符DataTypesDataTypesAssignmentOperatorsAssignmentOperators<=Signalassignmentoperator:=VariableassignmentandinitialvalueoperatorLibrariesandPackagesLibrariesandPackages第章VHDL语言语言要素第章VHDL语言语言要素VHDL操作符种类:有逻辑操作符(LogicalOperator)、关系操作符(RelationalOperator)和算术操作符(ArithmeticOperator)此外还有重载操作符(OverloadingOperator)。操作符列表VHDL操作符列表VHDL操作符列表VHDL操作符优先级<Choices>::=<Choice>{|Choice>}并列符号“’”属性符号“’”属性符号定义格式:属性测试项目名称‘属性标识符预定义的属性函数功能表续表续表一、检查时钟clk上升沿一、检查时钟clk上升沿有以下三种途径:、clk’EVENTANDclk=‘’、NOTclk’STABLEANDclk=‘’、RISINGEDGE(clk)发生事件就是电平发生变化。Therisingedgeandfallingedgefunctionsaredefinedinthestdlogicpackage二、检查时钟clk下降沿二、检查时钟clk下降沿有以下三种途径:、clk’EVENTANDclk=‘’、NOTclk’STABLEANDclk=‘’、FALLINGEDGE(clk)STDLOGICBIT数组属性’LENGTH对数组的宽度或元素的个数进行测定。例如:【例】…TYPEARRYARRAY(TO) OFBITVARIABLEWTH:INTEGER…WTH:=ARRY'LENGTHWTH=…信号、变量、常数的物理意义及其说明场合信号、变量、常数的物理意义及其说明场合VCCGND等暂时数据的局部存储第五章VHDL语言顺序语句第五章VHDL语言顺序语句VHDL程序设计中两大基本描述语句系列:并行语句(ConcurrentStatements)顺序语句(SequentialStatements)顺序语句:仿真执行顺序与它们的书写顺序是基本一致的语句。它可以用来描述逻辑系统中的组合逻辑、时序逻辑或它们的综合体。VHDL顺序语句VHDL顺序语句VHDL有如下六类基本顺序语句:赋值语句流程控制语句等待语句子程序调用语句返回语句空操作语句。赋值语句赋值语句赋值语句的功能就是将一个值或一个表达式的运算结果传递给某一数据对象如信号或变量或由此组成的数组。VHDL设计实体内的数据传递以及对端口外部数据的读写都必须通过赋值语句的运行来实现。变量和信号赋值语句格式:变量和信号赋值语句格式:变量赋值目标:=赋值源信号赋值目标<=赋值源当在同一进程中同一信号赋值目标有多个赋值源时信号赋值目标获得的是最后一个赋值源的赋值其前面相同的赋值目标不作任何变化数组赋值数组赋值VARIABLEab:STDLOGICVARIABLECD:STDLOGICVECTOR(TO)a=‘Z’b=‘X’C(TO):=""等效于C():=‘’C():=‘’C(DOWNTO):=“”A()=D:=“”D()=位置关联赋值和名字关联赋值位置关联赋值和名字关联赋值SIGNALABCD:STDLOGIC:SIGNALS:STDLOGICVECTOR(TO)VARIABLEEF:STDLOGICVARIABLEG:STDLOGICVECTOR(TO)VARIABLEH:STDLOGICVECTOR(TO)S<=(‘’‘’‘’‘’)(ABCD)<=S位置关联方式赋值A<=‘’B<=‘’C<=‘’D<=‘’名字关联方式赋值:(=>E=>F=>G()=>G()):=HG():=H()G():=H()E:=H()F:=H()流程控制语句流程控制语句IF语句、CASE语句、LOOP语句、NEXT语句和EXIT语句IF语句IF语句IF条件THEN顺序处理语句ENDIF引入了寄存器条件为risingedge(clk)等边沿检测时则产生同步时序逻辑电路包含此IF语句的进程为同步进程HowManyRegistersHowManyRegistersLIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(d:inSTDLOGICclk:inSTDLOGICq:outSTDLOGIC)ENDregARCHITECTUREregOFregISSIGNALa,b:STDLOGICBEGINPROCESS(clk)BEGINIFrisingedge(clk)THENa<=db<=aq<=bENDIFENDPROCESSENDreg每个<=均引入触发器否HowManyRegistersHowManyRegistersSignalAssignmentsInsidetheIFTHENStatementThatCheckstheClockConditionInferRegistersHowManyRegistersHowManyRegistersLIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(d:inSTDLOGICclk:inSTDLOGICq:outSTDLOGIC)ENDregARCHITECTUREregOFregISSIGNALa,b:STDLOGICBEGINPROCESS(clk)BEGINIFrisingedge(clk)THENa<=db<=aENDIFENDPROCESSq<=bENDreg进程外的信号赋值语句产生寄存器否?HowManyRegistersHowManyRegistersBtoQAssignmentIsNoLongerEdgesensitiveBecauseItIsNotInsidetheIfthenStatementThatCheckstheClockConditionHowManyRegistersHowManyRegistersSignalsChangedtoVariablesLIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(d:inSTDLOGICclk:inSTDLOGICq:outSTDLOGIC)ENDregARCHITECTUREregOFregISBEGINPROCESS(clk)VARIABLEa,b:STDLOGICBEGINIFrisingedge(clk)THENa:=db:=aq<=bENDIFENDPROCESSENDreg变量赋值不产生寄存器IF语句的二选择控制IF语句的二选择控制IF条件THEN顺序处理语句ELSE顺序处理语句ENDIFLIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(d,e:inSTDLOGICclk:inSTDLOGICq:outSTDLOGIC)ENDregARCHITECTUREregOFregISBEGINPROCESS(clk,d,e)BEGINIFclk=''THENq<=dELSEq<=eENDIFENDPROCESSENDreg完整的IF语句不会引入寄存器LIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(d:inSTDLOGICclk:inSTDLOGICq:outSTDLOGIC)ENDregARCHITECTUREregOFregISBEGINPROCESS(clk,d)VARIABLEa,b:STDLOGICBEGINIFclk=''THENELSEq<=da<=db<=aq<=bENDIFENDPROCESSENDreg能替换q<=d否!不完整的IF语句LIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(d:inSTDLOGICclk:inSTDLOGICq:outSTDLOGIC)ENDregARCHITECTUREregOFregISBEGINPROCESS(clk,d)VARIABLEa,b:STDLOGICBEGINq<=''IFclk=''THENELSEq<=dENDIFENDPROCESSENDregIF语句的多选择控制IF语句的多选择控制IF条件THEN顺序处理语句ELSIF条件THEN顺序处理语句…ELSIF条件THEN顺序处理语句ELSE顺序处理语句ENDIFNOT条件ANDNOT条件AND条件优条件先条件级条件PROCESS(clk,reset,preset)BEGINIFreset=''THENy<=''ELSIFpreset=''THENy<=''ELSIFrisingedge(clk)THENy<=aANDbELSEENDIFENDPROCESSQ<=yENDregLIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(a,b:inSTDLOGICclk,reset,preset:inSTDLOGICQ:outSTDLOGIC)ENDregARCHITECTUREregOFregISSIGNALy:STDLOGICBEGINPROCESS(clk,reset,preset)BEGINIFrisingedge(clk)THENIFreset=''THENy<=''ELSIFpreset=''THENy<=''ELSEy<=aANDbENDIFENDIFENDPROCESSQ<=yENDregLIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYregISPORT(a,b:inSTDLOGICclk,reset,preset:inSTDLOGICQ:outSTDLOGIC)ENDregARCHITECTUREregOFregISSIGNALy:STDLOGICBEGINQ<=yCASE语句CASE语句CASE语句的结构如下:CASE表达式ISWHEN选择值=>顺序语句WHEN选择值=>顺序语句…WHENOTHERS=>顺序语句ENDCASETHEN避免综合器插入不必要的寄存器选择值的四种不同表达方式选择值的四种不同表达方式①单个普通数值如②数值选择范围如(TO)表示取值、或③并列数值如|取值为或者④混合方式TO|LIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYMUXISPORT(S,S,S:INSTDLOGICA,B,C,D:INSTDLOGICZ:OUTSTDLOGIC)ENDENTITYMUXARCHITECTUREARTOFMUXISSIGNALS:STDLOGICVECTOR(DOWNTO)BEGINS<=SSSPROCESS(S,A,B,C,D)BEGINCASESISWHEN“"=>Z<=AWHEN“"=>Z<=BWHEN“"=>Z<=CWHEN“"=>Z<=DWHENOTHERS=>Z<='Z'ENDCASEENDPROCESSENDARTCASE语句引入三态门CASE语句引入三态门PROCESS(S,A,B,C,D)BEGINCASESISWHEN“"=>Z<=AWHEN“"=>Z<=BWHEN“"=>Z<=CWHEN“"=>Z<=DWHENOTHERS=>Z<='Z'ENDCASEENDPROCESSENDARTCASE语句引入寄存器CASE语句引入寄存器PROCESS(S,A,B,C,D)BEGINCASESISWHEN“"=>Z<=AWHEN“"=>Z<=BWHEN“"=>Z<=CWHEN“"=>Z<=DWHENOTHERS=>ENDCASEENDPROCESSENDARTLIBRARYIEEEUSEIEEEstdlogicallUSEIEEEstdlogicunsignedallENTITYMUXISPORT(S,S:INSTDLOGICA,B,C,D:INSTDLOGICZ,W:OUTSTDLOGIC)ENDENTITYMUXARCHITECTUREARTOFMUXISSIGNALS:STDLOGICVECTOR(DOWNTO)BEGINS<=SSPROCESS(S,A,B,C,D)BEGINCASESISWHEN""=>Z<=AW<=AANDBWHEN""=>Z<=BWHEN""=>W<=CANDBZ<=CWHENOTHERS=>W<=DANDBENDCASEENDPROCESSENDARTLOOP语句LOOP语句LOOP语句就是循环语句它可以使所包含的一组顺序语句被循环执行其执行次数可由设定的循环参数决定循环的方式由NEXT和EXIT语句来控制。其语句格式如下:LOOP标号:重复模式LOOP顺序语句ENDLOOP LOOP标号重复模式有两种:WHILE和FOR格式分别为:LOOP标号:FOR循环变量IN循环次数范围LOOP重复次数已知pLOOP标号:WHILE循环控制条件LOOP重复次数未知pNEXT语句NEXT语句在LOOP语句中NEXT语句用来跳出本次循环书写格式为:NEXT标号WHILE条件EXIT语句EXIT语句EXITLOOP标号WHEN条件表达式NEXT语句用来跳出本次循环而EXIT语句则是跳出LOOP循环体。WAIT语句WAIT语句在进程中(包括过程中)当执行到WAIT等待语句时运行程序将被挂起(Suspension)直到满足此语句设置的结束挂起条件后将重新开始执行进程或过程中的程序。但VHDL规定已列出敏感量的进程中不能使用任何形式的WAIT语句。WAIT语句的语句格式如下:WAITUNTIL条件表达式等待时钟的上升沿等待时钟的上升沿WAITUNTILRISINGEDGE(CLOCK)WAITUNTILNOTCLOCK'STABLEANDCLOCK=''WAITUNTILCLOCK=‘’ANDCLOCK'EVENT若无敏感参量的进程中使用此类WAIT语句则此进程为同步进程显然产生时序逻辑电路LIBRARYIEEEUSEIEEESTDLOGICALLUSEIEEESTDLOGICUNSIGNEDALLUSEIEEESTDLOGICARITHALLENTITYMUXSISPORT(CLK:INSTDLOGICcond:ININTEGERRANGETOa:INSTDLOGICVECTOR(TO)output:outSTDLOGIC)ENDARCHITECTUREoneOFMUXSISSIGNALScond:INTEGERRANGETOBEGINPROCESSBEGINWAITUNTILCLK'EVENTANDCLK=''Scond<=condENDPROCESSPROCESS(a,Scond)BEGINoutput<=a(Scond)ENDPROCESSEND产生时序逻辑电路产生组合逻辑电路能否合为一个进程?ARCHITECTUREoneOFMUXSISSIGNALScond:INTEGERRANGETOBEGINProcessBEGINWAITUNTILCLK'EVENTANDCLK=''Scond<=condoutput<=a(Scond)ENDPROCESSEND返回第章VHDL语言并行语句第章VHDL语言并行语句VHDL程序设计中两大基本描述语句:顺序语句(SequentialStatements)并行语句(ConcurrentStatements)各种并行语句在结构体中的执行是同步进行的其执行方式与书写的顺序无关。结构体中的并行语句主要有种:●进程语句(PROCESSSTATEMENTS)。●块语句(BLOCKSTATEMENTS)。●并行信号赋值语句(CONCURRENTSIGNALASSIGNMENTS)。●选择信号赋值语句(SELECTEDSIGNALASSIGNMENTS)。●元件例化语句(COMPONENTINSTANTIATIONS)。●生成语句(GENERATESTATEMENTS)。●并行过程调用语句(CONCURRENTPROCEDURECALLS)。结构体中的并行语句模块进程语句PROCESSSTATEMENTS进程语句PROCESSSTATEMENTSPROCESS语句的表达格式如下:进程标号:PROCESS(敏感信号参数表)IS进程说明部分BEGIN顺序描述语句ENDPROCESS进程标号进程说明部分用于定义数据类型、常数、属性、子程序等。在进程说明部分中不允许定义信号和共享变量。提供了一种用算法描述硬件行为的方法进程的运行方式进程的运行方式当进程中定义的任一敏感信号发生更新时由顺序语句定义的行为就要重复执行一次当进程中最后一个语句执行完成后执行过程将返回到第一个语句以等待下一次敏感信号变化如此循环往复以至无限。LIBRARYIEEEUSEIEEESTDLOGICALLUSEIEEESTDLOGICUNSIGNEDALLENTITYCNTISPORT(CLR:INSTDLOGICCLK:INSTDLOGICCNT:BUFFERSTDLOGICVECTOR(DOWNTO))ENDCNTARCHITECTUREARTOFCNTISBEGINPROCESSBEGINWAITUNTILCLK'EVENTANDCLK=''IF(CLR=''ORCNT=)THENCNT<=""ELSECNT<=CNTENDIFENDPROCESSENDART十进制时序逻辑加法计数器CNT<=?重载函数“+”算法描述的硬件电路并行信号赋值语句CONCURRENTSIGNALASSIGNMENTS并行信号赋值语句CONCURRENTSIGNALASSIGNMENTS简单信号赋值语句条件信号赋值语句选择信号赋值语句赋值目标必须都是信号都是并行语句简单信号赋值语句SimpleSignalAssignments简单信号赋值语句SimpleSignalAssignments并行简单信号赋值语句是VHDL并行语句结构的最基本的单元它的语句格式如下:信号赋值目标<=表达式数据类型必须一致。条件信号赋值语句ConditionalSignalAssignments条件信号赋值语句ConditionalSignalAssignments条件信号赋值语句的表达方式如下:赋值目标<=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE…表达式布尔变量类型最高赋值优先级LIBRARYIEEEUSEIEEESTDLOGICALLUSEIEEESTDLOGICunsignedALLUSEIEEESTDLOGICARITHALLENTITYtristateISPORT(enable:INSTDLOGICVECTOR(DOWNTO)input,input:INSTDLOGICVECTOR(DOWNTO)output:outSTDLOGICVECTOR(DOWNTO))ENDARCHITECTUREoneOFtristateISBEGINoutput<=inputWHENenable()=''else(others=>'Z')output<=inputWHENenable()=''else(others=>'Z')END一个多驱动信号的实例连接在output总线总线相与选择信号赋值语句SelectedSignalAssignments选择信号赋值语句SelectedSignalAssignments选择信号赋值语句格式如下:WITH选择值表达式SELECT赋值目标信号<=表达式WHEN选择值表达式WHEN选择值…表达式WHEN选择值LIBRARYIEEEUSEIEEESTDLOGICALLUSEIEEESTDLOGICUNSIGNEDALLENTITYDECODERISPORT(DATA,DATA:INSTDLOGICINSTRUC:STDLOGICVECTOR(DOWNTO)DATAOUT:OUTSTDLOGIC)ENDDECODERARCHITECTUREARTOFDECODERISSIGNALINSTRUCTION:STDLOGICVECTOR(DOWNTO)BEGININSTRUCTION<=INSTRUCWITHINSTRUCTIONSELECTDATAOUT<=DATAANDDATAWHEN"",DATAORDATAWHEN"",DATANANDDATAWHEN"",DATANORDATAWHEN"",DATAXORDATAWHEN"",DATAXNORDATAWHEN"",'Z'WHENOTHERSENDART指令译码器DECODER和类属映射语句GENERICMAP(类属表)类属映射语句GENERICMAP(类属表)类属映射语句用于设计从外部端口改变元件内部参数或结构规模的元件类属元件。GENERICMAP(类属表)architecturestructofhieraddiscomponentaddgeneric(size:natural)port(a:inbitvector(sizedownto)b:inbitvector(sizedownto)result:outbitvector(sizedownto))endcomponentbeginadd:componentaddgenericmap(size=>)portmap(a=>ain,b=>bin,result=>q)…元件例化语句COMPONENTINSTANTIATIONS元件例化语句COMPONENTINSTANTIATIONS元件例化语句由两部分组成:将一个现成的设计实体定义为一个元件的语句此元件与当前设计实体中的连接说明语句语句格式如下:元件定义语句COMPONENT例化元件名ISGENERIC(类属表)PORT(例化元件端口名表)ENDCOMPONENT例化元件名元件例化语句GENERICMAP(类属表)元件例化名:例化元件名PORTMAP(例化元件端口名=>连接实体端口名…)LIBRARYIEEE

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/141

VHDL语言

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利