




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编程逻辑器件,第四章:VHDL语言初步,通过几个简单、完整而典型的VHDL设计实例,初步了解用VHDL描述和设计电路的方法,从整体上把握VHDL程序的基本结构和设计特点。,本节课教学目的,4.1概述,VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,VHDL语言是随着集成电路系统化和高度集成化的发展而逐步发展起来的一种用于数字系统设计和测试的硬件描述语言。,4.1.1VHDL简介,VHDL:,80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。1987年被IEEE协会批准为标准硬件描述语言,公布了VHDL的标准版本IEEE1076-1987。1993年公布了VHDL的新版本IEEE1076-1993。,4.1.2VHDL发展,4.1.3VHDL程序设计约定,ENTITYmux21IS-实体描述PORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21;ARCHITECTUREconnectOFmux21IS-结构体描述BEGINy=aWHENs=0ELSEb;ENDARCHITECTUREconnect;,1.VHDL语言对字母大小写不敏感2.每条VHDL语句由一个分号(;)结束3.在“-”之后的是VHDL的注释语句4.使用层次缩进格式,以便于程序的阅读5.实体名和源程序文件必须一致6.语句结构描述中方括号内的内容为可选内容,逻辑功能:s=0y=as=1y=b,4.2VHDL语言的基本单元及其构成,4.2.12选1多路选择器的VHDL描述,ENTITYmux21IS-实体描述PORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21;ARCHITECTUREconnectOFmux21IS-结构体描述BEGINy=aWHENs=0ELSEb;ENDARCHITECTUREconnect;,q=(aAND(NOTs)OR(bANDs);,实体和结构体这两个基本结构是必需的,它们可以构成VHDL程序。设计实体是VHDL语言设计的基本单元,简单的可以是一个与门,复杂的可以是一个微处理器或一个数字系统,其结构基本是一致的,都是会有实体和结构体两部分。,4.2.2VHDL语言的基本结构,在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(I/O)接口;在一个器件级的设计中,实体说明是一个芯片的输入输出(I/O)。,实体是对设计实体与外部电路接的口进行描述,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的一个通信界面。,实体应以语句“ENTITY实体名IS”开始,语句“ENDENTITY实体名;”结束。,4.2.3实体(ENTITY),1.实体语句结构:ENTITY实体名ISGENERIC(类属表);PORT(端口表);ENDENTITY实体名;,例:ENTITYor2ISPORT(a,b:INBIT;C:OUTBIT);ENDENTITYor2;,2.类属(GENERIC)说明语句类属参量是一种端口界面常数,常用来规定端口的大小、实体中子元件的数目及实体的定时特性等。利用类属参量设计者可以从外面通过类属参量的重新设定而容易的改变一个设计实体或一个元件的内部电路结构和规模。类属说明的一般格式:GENERIC(常数名:数据类型:=设定值常数名:数据类型:=设定值),例:GENERIC(trise,tfall:TIME:=1ns;Addrwidth:INTEGER:=16);PORT(a0,a1:INBIT;Add_bus:OUTBIT_VECTOR(addrwidth-1DOWNTO0);,这里类属参量中参数trise为上升沿宽度,tfall为下降沿宽度,用于仿真模块的设计;定义地址总线的宽度为Addrwidth位,类属值Addrwidth的改变将使结构体中所有相关的总线定义同时改变,由此使整个设计实体的硬件结构发生变化。,端口说明一般书写格式为:PORT(端口名:端口模式数据类型;端口名,端口名:端口模式数据类型;);,端口为设计实体和其外部环境提供动态通信的通道,是对基本设计单元与外部接口的描述,其功能相当电路图符号的外部引脚。端口可以被赋值,也可以当做逻辑变量用在逻辑表达式中。,3.端口说明(PORT),(1)端口名其中端口名是设计者为实体的每一个对外通道所取的名字,通常为英文字母加数字。,名字的定义有一定的惯例,如clk表示时钟,D开头的端口名表示数据,A开头的端口名表示地址。,(2)端口模式是指这些通道上的数据流动的方式,如输入或输出等。,端口模式有以下几种类型:,1输入(IN)允许信号进入实体,主要用于时钟输入、控制输入(如load、reset、enable、clk)和单向的数据输入(如地址数据信号address)等。2输出(OUT)输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体的信号等。注意:输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做是可读的。,3双向模式(INOUT)双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。如计算机PCI总线的地址/数据复用总线,DMA控制器数据总线等纯双向的信号采用双向端口模式。,4缓冲(BUFFER)缓冲模式允许信号输出到实体外部,但同时也可以在实体内部引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲模式用于在实体内部建立一个可读的输出端口,例如计数器输出、计数器的现态用来决定计数器的次态。,out和buffer的区别:,Entitytest1isport(a,d:inbit;b,c:outbit;);endtest1;architecturejgtoftest1isbeginb=not(a);c=b+d;endjgt;,Entitytest2isport(a,d:inbit;b:bufferbit;c:outbit;);endtest2;architecturejgtoftest2isbeginb=not(a);c=b+d;endjgt;,Out与Buffer的区别,-Error,例:entitynand2isentitym81isport(port(a,b:inbit;a:inbit_vector(7downto0);z:outbitsel:inbit_vector(2downto0););b:outbit);endentitynand2;endentitym81;,(3)数据类型:,如:bit、bit_vector、integer、std_logic、std_logic_vector等。,指端口上流动的数据的表达格式。,结构体用来描述设计实体的结构或行为,即描述一个实体的功能,把设计实体的输入和输出之间的联系建立起来。,4.2.4结构体(Architecture),结构体的语句格式为:,ARCHITECTURE结构体名OF实体名IS说明语句BEGIN功能描述语句END结构体名;,结构体说明:对数据类型、常数、信号、子程序、元件等元素的说明部分。结构体功能描述:以各种不同的描述风格描述的系统的逻辑功能实现的部分,(1)结构体的一般语句格式,实体与结构体的关系,一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。,结构体名由设计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。有些设计实体有多个结构体,这些结构体的结构体名不可相同,通常用dataflow(数据流)、behavior(行为)、structural(结构)命名。,结构体名,(2)功能描述语句结构体功能描述语句位于BEGIN和END之间,具体地描述了构造体的行为及其连接关系。结构体的功能描述语句可以含有5种不同类型的并行语句。,信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值。子程序调用语句可以调用进程或参数,并将获得的结果赋值于信号。元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口进行连接。块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。,并行语句的并发执行关系,并行语句是在architecture的begin和end之间的语句。并行语句执行是同步的,或者说是并发执行的,执行方式与书写顺序无关。,D=A+E;A=B+C;,A=B+C;D=A+E;,赋值目标=表达式;,例:并行信号赋值语句,1.条件信号赋值语句格式:,目的信号量=表达式1when条件1else表达式2when条件2else表达式3when条件3else表达式n;,ENTITYmux41ISPORT(a,b,c,d:INBIT;s1,s2:INBIT;q:OUTBIT);ENDENTITYmux41;ARCHITECTUREconnectOFmux41ISBEGINq=aWHENs1=0ANDs2=0ELSEbWHENs1=1ANDs2=0ELSEaWHENs1=0ANDs2=1ELSEd;ENDARCHITECTUREconnect;,例:4选1多路选择器VHDL描述,ENTITYmux2lbISPORT(a,b:INBIT;s:INBIT;q:OUTBIT);ENDENTITYmux2lb;ARCHITECTUREbehaveOFmux21bISBEGINPROCESS(a,b,s)BEGINIFs0THENqa;ELSEqb;ENDIF;ENDPROCESS;ENDARCHITECTUREbehave;,例:2选1多路选择器VHDL描述,进程标号PROCESS(敏感信号表)IS进程说明语句BEGIN顺序描述语句ENDPROCESS进程标号;,注意:在多个进程的结构体描述中,进程标号是区分各个进程的标志。,2.进程语句(PROCESS),进程语句实际上是用顺序语句描述的一种过程,也即是说提供了一个描述顺序事件的空间。,进程语句是一个并行语句,进程和进程之间是并发执行的,但在进程中是一系列顺序语句。,D触发器的VHDL描述,由LIBRARY引导的库的说明部分,使用了另一种数据类型:STD_LOGIC,出现了上升沿检测表达式和信号属性函数EVENT,使用了一种新的条件判断表达式,LIBRARYIEEE;USEIEEESTD_LOGIC_1164.ALL;ENTITYDFFlISPORT(clk:INSTD_LOGIC;d:INSTD_LOGIC;q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFFlISSIGNALql:STD_LOGIC;BEGINPROCESS(clk)BEGINIFCLKEVENTANDCLK1THENq1d;ENDIF;qq1ENDPROCESS;ENDbhv;,设计库和标准设计包,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;,第l句中的LIBRARY是关键词LIBRARYIEEE表示打开IEEE库第2句的USE和ALL是关键词,USEIEEE.STD_LOGIC_1164.ALL表示允许使用IEEE库中STD_LOGlC_1164程序包中的所有内容,程序包:已定义的常数、数据类型、元件调用说明、子程序的一个集合。目的:方便公共信息、资源的访问和共享。,库:多个程序包构成库。,STD_LOGIC(标准逻辑位),STD_LOGIC类型代替BIT类型可以完成电子系统的精确模拟,并可实现常见的三态总线电路。,由IEEE库中的STD_LOGIC_1164.ALL程序包定义,为九值逻辑系统,如下:,U:未初始化的,X:强未知的,0:强0,1:强1,Z:高阻态,W:弱未知的,L:弱0,H:弱1,-:忽略,其中X或-,0,1,Z:能够在数字器件中实现。,STD_LOGIC_VECTOR(标准逻辑矢量),STD_LOGIC_VECTOR是定义在STD_LOGIC_1164程序包中的标准一维数组,数组中的每一个元素的数据类型都是以上定义的标准逻辑位STD_LOGIC。,TYPESTD_LOGIC_VECTORISARRAY(NATURALRANGE)OFSTD_LOGIC;,STD_LOGIC_VECTOR类型定义如下:,SIGNAL(信号),信号是电子电路内部硬件连接的抽象。它可以作为设计实体中的并行语句模块间交流信息的通道。信号及其相关的延时语句明显地体现了硬件系统的特征。,信号定义语句的格式为:,SIGNAL信号名:数据类型:=表达式;,例如:SIGNALgnd:BIT:=0;SIGNALdata:STD_LOGIC_VECTOR(7DOWNTO0);,数据对象,数据对象(DataObjects)类似于一种容器,它接受不同数据类型的赋值。,常量(CONSTANT)变量(VARIABLE)信号(SIGNAL),常量(CONSTANT),在程序中,常量是一个恒定不变的值,一旦作了数据类型的赋值定义后,在程序中不能再改变,因而具有全局意义。,常量定义语句的格式为:,CONSTANT常数名:数据类型:=表达式;,例如:CONSTANTVcc:REAL:=5.0;CONSTANTFbus:BIT_VECTOR:=“1011”;CONSTANTDelay:TIME:=10ns;,变量(VARIABLE),变量只能在进程和子程序中用,是一个局部量,不能将信息带出对它做出定义的当前设计单元。与信号不同,变量的赋值是理想化数据传输,其赋值是立即生效的,不存在任何的延时行为。,变量定义语句的格式为:,VARIABLE变量名:数据类型:约束条件:=初始值;,例如:VARIABLEn:INTEGERRANGE0TO15:=2;VARIABLEa:INTEGER;,信号与变量的区别:,信号赋值至少要有延时;而变量赋值没有。信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义它们的顺序域可见(共享变量除外)。信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,它们用于硬件特性的高层次建模所需要的计算中。,信号与变量,信号是和变量类似,在设计实体中其值会发生变化,可以从中取值或对其赋值。,信号定义语句的格式为:,SIGNAL信号名:数据类型:=表达式;,例如:SIGNALgnd:BIT:=0;SIGNALdata:STD_LOGIC_VECTOR(7DOWNTO0);,信号的赋值,当信号定义了数据类型和表达方式后,在VHDL中就能对信号进行赋值了。信号的赋值语句表达式如下:,目标信号名表达式;,例如:ay;a1;s1s2AFTER10ns;,目标信号获得传入的数据并不是即时的,要经历一个特定的延时。因此,符号“”两边的数值并不马上一致的,这与实际器件的传播延迟特性是吻合的。,端口与信号的区别:,除有方向说明外,实体的“端口(PORT)”与信号概念相似。端口是一种隐形的信号。,PORT(signala,b:INBIT;(signals:INBIT;(signaly:OUTBIT);,端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。,信号本身无方向,可读可写。,中间信号的作用,LIBRARYIEEE;USEIEEESTD_LOGIC_1164.ALL;ENTITYDFFlISPORT(clk:INSTD_LOGIC;d:INSTD_LOGIC;q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFFlISSIGNALql:STD_LOGIC;BEGINPROCESS(clk)BEGINIFCLKEVENTANDCLK1THENq1d;ENDIF;qq1ENDPROCESS;ENDbhv;,ARCHITECTUREbhvOFDFFlISBEGINPROCESS(clk)BEGINIFCLKEVENTANDCLK1THENqd;ENDIF;ENDPROCESS;ENDbhv;,Entitytest2isport(a,d:inbit;b:bufferbit;c:outbit;);endtest2;architecturejgtoftest2isbeginb=not(a);c=bORd;endjgt;,Entitytest1isport(a,d:inbit;b,c:outbit;);endtest1;architecturejgtoftest1isbeginb=NOT(a);c=bORd;endjgt;,Entitytest3isport(a,d:inbit;b,c:outbit;);endtest3;architecturejgtoftest3issignale:bitbegine=NOT(a);b=e;c=eORd;endjgt;,Entitytest4isport(a,d:inbit;b,c:outbit;);endtest4;architecturejgtoftest4isbeginb=NOT(a);c=NOT(a)ORd;endjgt;,CLKEVENTANDCLK1,clockEVENT就是对clock标识符信号是否发生事件的情况进行标示。,clockEVENTANDclock1表示clock发生一个跳变后在极小时间段之后又检测clock是否为高电平1,,如果clockEVENTANDclock1结果为TRUE说明clock发生一个跳变后又为高电平,即检测到一个上升沿。,此表达方式是检测上升沿的标准方法。,不完整条件语句与时序电路,PROCESS(clk)BEGINIFCLKEVENTANDCLK1THENq1d;ENDIF;qq1ENDPROCESS;,4位加法计数器功能,clk,q(3downto0),4位加法器工作时序,4位加法计数器VHDL描述,ENTITYcnt4_1ISPORT(clk:INBIT;q:BUFFERINTEGERRANGE15DOWNTO0);ENDcnt4_1;ARCHITECTUREbehaveOFcnt4_1ISBEGINPROCESS(clk)BEGINIFclkEVENTANDclk=1THENq=q+1;ENDIF;ENDPROCESS;ENDbehave;,整数数据类型(INTEGER),C语言:说明符:int,在内存中占2个字节,其取值范围32768+32767。,VHDL:说明符:INTEGER,可用32位有符号的二进制数表示,其取值范围2147483647+2147483647。,整数数据类型INTEGER也定义在VHDL标准程序包STANDARD中。STANDARD是默认打开的。,VHDL综合器要求必须用“RANGE”子句为所定义的数限定范围,然后根据所限定的范围来决定表示此信号或变量的二进制数的位数。,整数和位的表达方式,整数的表达不加单引号如:0、l及9等,逻辑位的数据必须加引号一位逻辑位用单引号:0、1,例如:clk=1多位逻辑位用双引号:1001例如:q(3DOWNTO1)=1001
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民爆驾驶员安全培训试题及答案解析
- 2025年合肥市瑶海区银龄领航教师招募考前自测高频考点模拟试题及答案详解1套
- 2025年安徽省三支一扶招聘考试(962人)考前自测高频考点模拟试题及完整答案详解1套
- 2025年宜昌市消防救援支队政府专职消防员招聘48人考前自测高频考点模拟试题附答案详解(典型题)
- 2025年芜湖宜居投资(集团)有限公司招聘10人考前自测高频考点模拟试题附答案详解(典型题)
- 2025年职业健康培训考试试题及答案
- 2025福建漳州市东山县哨所女哨员招聘2人考前自测高频考点模拟试题及一套完整答案详解
- 2025年海南勘察设计注册土木工程师考试(岩土专业知识)模拟试题及答案
- 2025年甘肃省兰州新区石化产业投资集团有限公司急需紧缺专业技术岗位招聘14人考前自测高频考点模拟试题及参考答案详解1套
- 2025年肾脏病理学病例分析及诊断试卷答案及解析
- 国家管网集团合同范本
- 中医全科学科
- Unit 1 Teenage life单词变形-学生背诵与默写清单-2024-2025学年高中英语人教版(2019)必修第一册
- 铁路技术规章:018铁路军事运输管理办法
- 生物发酵安全培训
- 2024-2025学年广东省深圳市九年级上学期期中数学试题及答案
- 《疯狂的头发》幼儿园大班艺术课件
- 高标准农田晒场工程施工方案与技术措施
- 中考语文名著总复习-三年中考真题《红星照耀中国》(教师版)
- 《张仲景活血通络法研究》
- 工程造价预算及成本控制手册
评论
0/150
提交评论