




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第二章VHDL语言程序的基本结构,2,本章内容:,VHDL语言设计的基本单元及其构成VHDL语言构造体的子结构描述块语句进程语句子程序语句包集合、库及配置,3,完整VHDL语言程序结构,存放已经编译的包集合、实体、构造体和配置。,声明在实体中将用到的常数定义、数据类型、函数定义和过程定义等。,定义所设计电路系统的外部接口。,描述电路内部的功能。一个实体可以对应很多个构造体,但在同一时间,只有一个构造体被使用。,决定哪一个构造体被使用。,4,2.1VHDL语言设计的基本单元及其构成,VHDL语言程序是用于描述硬件连接的结构性程序,采用文本文件编写。硬件电路模块具有外部接口和内部结构。,VHDL用程序模块表达硬件模块:设定外部端口、设计内部结构。,5,VHDL语言程序设计的基本单元由实体说明(EntityDeclaration)和构造体定义(ArchitectureDefinition)两部分构成。,实体说明部分:规定设计单元的输入输出接口信号或引脚;它对应于电路外观图。构造体定义部分:定义设计单元的具体构造和操作(行为);它对应于电路原理图。,6,VHDL语言程序设计的基本单元,VHDL语言程序设计的基本单元由实体说明(EntityDeclaration)和构造体定义(ArchitectureDefinition)两部分构成。实体说明部分:规定设计单元的输入输出接口信号或引脚。构造体定义部分:定义设计单元的具体构造和操作(行为)。,7,architectureconnectofmuxissignaltmp:bit;begincale:process(d0,d1,sel)isvariabletmp1,tmp2,tmp3:bit;begintmp1:=d0andsel;tmp2:=d1and(notsel);tmp3:=tmp1ortmp2;tmp=tmp3;q=tmpafterm;endprocess;endarchitectureconnect;,二选一电路的VHDL语言描述,entitymuxisgeneric(m:time:=1ns);port(d0,d1,sel:inbit;q:outbit);endentitymux;,实体说明,构造体定义,8,1.实体说明,entity实体名is类属参数说明;-确定局部常量或实体时限端口说明;-确定输入/输出端口数量及类型endentity实体名;,entitymuxisgeneric(m:time:=1ns);port(d0,d1,sel:inbit;q:outbit);endentitymux;,1)实体说明的基本格式:,9,VHDL语言不区分大小写;除了第一行entityis以外,每一句以分号“;”结束;编写程序时,一行可以含若干句(以分号间隔),一句也可以写若干行;在一句结束后,可以在“-”符号后接说明文字,有助于理解程序,不会对编译产生影响;单词之间必须使用空格;并列信号间使用逗号;根据不同的层次关系最好设定不同的缩进。,10,generic(类属常量名:类型:=静态表达式;类属常量名:类型:=静态表达式);,要点:(1)类属说明必须在端口说明之前,为设计实体和外部环境提供静态数据传输通道;(2)generic为关键字,静态表达式为可选项;(3)示例:generic(m:time:=1ns);q=tmpafterm;,2)类属参数说明格式:,11,3)端口说明格式:,port(端口名,端口名:方向数据类型名;端口名,端口名:方向数据类型名);,端口说明是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称,数据类型和输入、输出方向的描述。,注:port为关键字,12,端口说明语法要点,(1)端口名是赋予每个外部引脚的名称;,命名规则:英文字母和数字构成,字母开头;可在名称中使用单个下划线符号_;字母不分大小写;名称应具有意义,方便记忆;名称不能重复使用;VHDL中的关键字保留字不能用做名称。,注:该命名规则适用于实体、端口、信号、变量、文件的命名,13,(2)端口方向:定义外部引脚的信号方向是输入还是输出。,14,15,(3)端口数据类型,所有端口都必须规定其数据类型,VHDL语言中有10种数据类型,在数字电路设计中最常用的类型为:bit和bit_vector。Bit:单个逻辑量Bit_vector:逻辑数组、总线逻辑量在VHDL语言的标准库IEEE库当中的包集合std_logic_1164提供的std_logic和std_logic_vector分别与bit和bit_vector对应,完全等效。只是在使用时要声明使用了该包集合。下面给出一个例子。,16,例2-1entitymuisport(d0,d1,sel:inbit;q:outbit;bus:outbit_vector(7downto0);endmu;,例2-2libraryieee;useieee.std_logic_1164.all;entitymuisport(d0,d1,sel:instd_logic;q:outstd_logic;bus:outstd_logic_vector(7downto0);endmu;,实体说明示例,17,2.构造体(结构体),具体指明基本设计单元的行为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。,architecture构造体名of实体名is定义语句;-内部信号、常数、数据类型、函数等的定义begin并行处理语句;-构造体中所有语句同时执行,不以书写顺序为执行顺序endarchitecture构造体名;,1)构造体的基本格式:,18,2)构造体的命名,每个构造体必须属于一个实体;每个构造体必须有一个名称:命名要符合命名规则命名可根据设计者采用何种描述方式来描述模块的功能来命名,给阅读程序的人带来方便。如:beh(行为描述,基本设计单元的数学模型描述)rtl(寄存器传输描述,数据流描述)str(结构描述,逻辑元件的连接)例:architecturestrofmux2_1is,19,3)定义语句位于is-begin之间:,例:architecturebehofmux2_1issignalnes1:bit;-内部连接信号无须说明方向beginendarchitecturebeh;,typedeclarations;类型说明signaldeclarations;信号说明constantdeclarations;常量说明componentdeclarations;元件说明functiondefinitions;函数说明proceduredefinitions;过程说明,20,4)并行处理语句,begin-end之间语句部分是各种并行语句,具体地描述构造体的行为及其连接关系,各语句处于并列状态,执行时不分先后次序。,entitymuxisport(d0,d1,sel:inbit;q:outbit);endentitymux;,architecturedataflowofmuxissignalq0,q1:bit;beginq0=d0andsel;q1=notselandd1;q=q0orq1;endarchitecturedataflow;,21,并行语句,块语句:由一系列并行语句组成,从形式上划分出模块,改善程序的可读性。,进程语句:进程内部为顺序语句,而不同进程间则是并行执行的,进程只有在某个敏感信号发生变化时才会触发。,子程序调用:调用过程或函数,并将获得的结果赋给信号。,信号代入语句:将实体内的处理结果向定义的信号或端口进行赋值。,元件例化语句:调用其他设计实体描述的电路,将其作为本设计实体的一个元件,元件例化是实现层次化设计的重要语句。,22,练习,libraryieee;useieee.std_logic_1164.all;entitykdecoder38isport(din:instd_logic_vector(2downto0);en:instd_logic;dout:outstd_logic_vector(7downto0);endentitykdecoder38;,为3-8线译码器编写实体说明,23,练习,编写一个n选1数据选择器的实体说明,n在类属参数说明中设定,数据类型为整型integer,设n4,输入输出端口数据类型使用std_logic和std_logic_vector。,libraryieee;useieee.std_logic_1164.all;entitykmux_nisgeneric(n:integer:=4;m:integer:=2);port(din:instd_logic_vector(n-1downto0);sel:instd_logic_vector(m-1downto0);y:outstd_logic);endentitykmux_n;,24,2.2VHDL语言构造体的子结构描述,一个构造体可以用几个子结构来构成,即使用相对比较独立的几个模块来构成。VHDL有以下三种形式的子结构描述语句:块(block)语句结构;进程(process)语句结构;子程序(subprograms)语句结构。过程(procedure)语句函数(function)语句,25,1.块语句结构描述,architectureconnectofmuxissignaltmp1,tmp2,tmp3:bit;begincale:blockbegintmp1=d0andsel;tmp2=d1and(notsel);tmp3=tmp1ortmp2;q=tmp3;endblockcale;endarchitectureconnect;,块结构名:blockbegin并发语句;endblock块结构名;,entitymuxisport(d0,d1,sel:inbit;q:outbit);endentitymux;,1)格式,26,2)块和子原理图的关系,27,3)块内语句的并发性begin到endblockcale之间的语句为并发执行语句。4)卫式块(guardedblock)实现块的执行控制:当某种条件满足时,块语句执行;否则,块语句不执行。,block卫式布尔表达式,格式:,注意:卫式块不能进行逻辑综合!,28,entitylatchisport(d,clk:inbit;q,qb:outbit);endentitylatch;,architecturelatch_guardoflatchisbeging1:block(clk=1)beginq=guardeddafter5ns;qb=guardednot(d)after7ns;endblockg1;endarchitecturelatch_guard;,卫式块举例,卫式布尔表达式,前卫关键字,只有卫式布尔表达式为真时,该语句执行,29,2.进程语句结构描述,进程名:process(敏感量列表)is声明部分;begin顺序语句;endprocess;,architectureconnectofmuxisbegincale:process(d0,d1,sel)isvariabletmp1,tmp2,tmp3:bit;begintmp1:=d0andsel;tmp2:=d1and(notsel);tmp3:=tmp1ortmp2;q=tmp3;endprocess;endarchitectureconnect;,entitymuxisport(d0,d1,sel:inbit;q:outbit);endentitymux;,1)格式,30,2)进程内部语句的顺序性进程结构中的语句是按顺序一条一条向下执行的,与C语言的执行一样。3)进程的启动敏感量列表中任意一个信号发生变化就可以启动这个进程的执行。,31,sensitivitylistincludesallinputsusedinthecombinatoriallogic,sensitivitylistdoesnotincludethedinput,onlytheclockor/andcontrolsignals,SequentialProcessSensitivetoSpecificInputs(i.e.Clockand/orControlSignals)Exampleprocess(clr,clk),CombinatorialProcessSensitivetoAllInputsExampleprocess(a,b,sel),TypesofProcesses,32,例:具有两个进程的构造体,entitypros_comisport(event_a:inbit);endentitypros_com;architecturecatch_ballofpros_comissignalto_a,to_b:bit:=0;begin,4)进程的同步描述构造体中的多个进程可以进行通信、并行同步执行。,33,a:process(event_a,to_a)isbeginif(event_aeventandevent_a=1)or(to_aeventandto_a=1)thento_b=1after20ns,0after30ns;endif;endprocessa;,b:process(to_b)isbeginif(to_beventandto_b=1)thento_a=1after10ns,0after20ns;endif;endprocessb;endarchitecturecatch_ball;,34,两个进程a,b,一个结构体中有两个进程a和b。当a进程处理结束,就使信号量to_b=1。to_b是进程B的输入信号,当进程B敏感到to_b有变化,且to_b=1时,则进程b就被启动;同样,进程B处理结束或当进程a敏感到to_a有变化,且to_a=1,则进程a就启动。如此反复循环,使两个进程能并发地同步工作。,35,3.子程序语句结构描述,子程序就是在主程序调用它以后能将处理结果返回主程序的程序模块,其含义和其它高级语言中的子程序概念相当。它可以反复调用,使用非常方便。子程序在调用时首先要进行初始化,执行结束后子程序就终止。再调用时要再进行初始化。因此子程序内部的值不能保持,子程序返回以后才能被再调用,它是个非重入的程序。子程序的两种类型:过程(procedure);函数(function).,36,1)过程语句,procedure过程名(参量1:方向类型;参量n:方向类型)is定义语句;begin顺序语句;endprocedure过程名;,(2)过程的调用格式,(1)语句格式,过程名(信号列表);,37,(3)procedure语法要点,a过程依靠参量与主程序交换信息,参量说明紧跟在过程名后面的括号中;可视为多输入/多输出电路模块。b参量方向为in输入作为常量out输出作为变量或信号inout输入输出作为变量或信号若要作为信号,则应在参量名前加注signal。,38,c在主程序中,函数调用通常在表达式中,过程调用通常在语句中;调用结束时,输出量将赋值给调用时指定的信号或变量;d过程内部可以定义局部使用的类型、常量、变量、函数、过程,不能定义信号;e过程可以进行并行调用,也可以进行顺序调用;并行过程的参量应该为信号量;顺序过程的参量为变量,可以利用顺序赋值语句将输出结果传递给信号量;,39,(4)过程语句及过程调用举例,libraryieee;useieee.std_logic_1164.all;entitybutnot1isport(x,y:instd_logic;z:outstd_logic);endentitybutnot1;architecturestrofbutnot1isprocedurekinv1(a:instd_logic;f:outstd_logic)isbeginf:=nota;endprocedurekinv1;,procedurekand21(a,b:instd_logic;f:outstd_logic)isbeginf:=aandb;endprocedurekand21;beginprocess(x,y)isvariablez1,temp:std_logic;beginkinv1(y,temp);kand21(x,temp,z1);z=z1;endprocess;endarchitecturestr;,40,2)函数语句,function函数名(参量1:类型;参量n:类型)return数据类型名is定义语句;begin顺序处理语句;return返回变量名;endfunction函数名;,(1)格式,41,(2)函数调用格式,函数名(信号列表);,(3)function语法要点,a函数可以看作是一种多输入/单输出的电路模块;b函数参量表中带有若干形式参量,在调用时由实际信号取代,实现主程序向函数的输入;在函数内部,信号被作为常量对待;,42,c函数应用时,为了返回函数值,可在函数体中设置变量,在函数执行过程中为该变量赋值;然后用return语句将该变量返回(赋值给函数名);该变量应与规定的返回类型一致;在一次调用中,只有一个返回语句带回函数值;d函数内部可以定义局部使用的类型、常量、变量、函数、过程;但不能定义信号;e函数的可执行部分由顺序语句构成;不包含信号代入语句;f函数通常在代入语句的表达式中调用,函数返回类型应与该表达式类型一致;,43,(4)函数语句及函数调用举例,libraryieee;useieee.std_logic_1164.all;entitykdec38isport(x,y,z:instd_logic;f:outstd_logic_vector(7downto0);endentitykdec38;,architecturedofkdec38isfunctionkand3(a,b,c:std_logic)returnstd_logicisvariableresult:std_logic;beginresult:=aandbandc;returnresult;endfunctionkand3;,函数,44,(4)函数语句及函数调用举例,beginf(0)=kand3(notx,noty,notz);f(1)=kand3(notx,noty,z);f(2)=kand3(notx,y,notz);f(3)=kand3(notx,y,z);f(4)=kand3(x,noty,notz);f(5)=kand3(x,noty,z);f(6)result:=result+1;whenothers=null;endcase;endloop;returnresult;endfunctionconv_integer;endpackagebodyupac;,使用该用户自定义包集合的格式:usework.upac.cpu_bus;,packageupacisconstantk:integer:=4;subtypecpu_busisstd_logic_vector(k-1downto0);functionconv_integer(x:std_logic_vector)returninteger;endpackageupac;,54,3.配置(Configuration),在一个实体内可以编写多种不同的构造体,通过配置语句来进行选择;便于在仿真时进行性能对比试验,得到性能最佳的构造体。配置语句格式,configuration配置名of实体名is说明语句;endconfiguration配置名;,55,configuration配置名of实体名isfor选择的构造体名endfor;endconfiguration配置名;,1)不含元件的构造体配置语句,例2-14两种形式计数器的配置,libraryieee;useieee.std_logic_1164.all;entitycounterisport(load,clear,clk:instd_logic;data_in:ininteger;data_out:outinteger);endentitycounter;,56,architecturecount_255ofcounterisbeginendarchitecturecount_255;,architecturecount_64kofcounterisbeginendarchitecturecount_64k;,configurationsmall_countofcounterisforcount_225endfor;endconfigurationsmall_count;configurationbig_countofcounterisforcount_64kendfor;endconfigurationbig_count;,57,2)包含元件的构造体配置语句,configuration配置名of实体名isfor选择的构造体名for元件标号:元件名useconfiguration库名.配置名;endfor;for元件标号:元件名useentity库名.实体名(构造体名);endfor;endfor;endconfiguration配置名;,58,例2-15反相器和三输入与门电路描述,libraryieee;useieee.std_logic_1164.all;entityinvisport(a:instd_logic;b:outstd_logic);endentityinv;architecturebehaveofinvisbeginb=not(a)after5ns;endarchitecturebehave;configurationinvconofinvisforbehaveendfor;endconfigurationinvcon;,配置,实体,构造体,59,libraryieee;useieee.std_logic_1164.all;entityand3isport(a1,a2,a3:instd_logic;o1:outstd_logic);endentityand3;architecturebehave1ofand3isbegino1=a1anda2anda3after5ns;endarchitecturebehave1;architecturebehave2ofand3isbegino1=a1anda2anda3after10ns;endarchitecturebehave2;,configurationand3con1ofand3isforbehave1endfor;endconfigurationand3con1;configurationand3con2ofand3isforbehave2endfor;endconfigurationand3con2;,两个不同延时的三输入与门,60,例2-16构成译码器的程序,libra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软考知识体系优化方案试题及答案
- 行政法学知识整合试题及答案探讨
- 2025年公司运营中战略适应性的探讨试题及答案
- 软件开发中的用例分析试题及答案
- 数据库设计中的正则化与规范化试题及答案
- 网络管理员考试备考资源与试题及答案
- 领导力发展的不同阶段及策略计划
- 测试方法与工具选型的思考试题及答案
- 高效会议与工作计划的制定
- 生产计划中的成本控制
- 工程勘察收费标准
- DB11T 1399-2017 城市道路与管线地下病害探测及评价技术规范
- 工业固体废弃物的资源化处理
- DB11 637-2015 房屋结构综合安全性鉴定标准
- 大国兵器学习通超星期末考试答案章节答案2024年
- 24秋国家开放大学《马克思主义基本原理》专题测试参考答案
- 下月监理工作计划模板
- 经阴道全子宫切除术专家共识(2024年版)解读
- 陕西省2024年中考地理试卷(附解析)
- 土地互换永久合同范本
- 血源性传染病职业暴露的预防处理
评论
0/150
提交评论