VHDL学习资料6.ppt

上传人:b****2 文档编号:2644000 上传时间:2022-11-04 格式:PPT 页数:81 大小:1.89MB
下载 相关 举报
VHDL学习资料6.ppt_第1页
第1页 / 共81页
VHDL学习资料6.ppt_第2页
第2页 / 共81页
VHDL学习资料6.ppt_第3页
第3页 / 共81页
VHDL学习资料6.ppt_第4页
第4页 / 共81页
VHDL学习资料6.ppt_第5页
第5页 / 共81页
点击查看更多>>
下载资源
资源描述

VHDL学习资料6.ppt

《VHDL学习资料6.ppt》由会员分享,可在线阅读,更多相关《VHDL学习资料6.ppt(81页珍藏版)》请在冰豆网上搜索。

VHDL学习资料6.ppt

第六章VHDL并行语句在在结构体中结构体中的执行是同步进行的的执行是同步进行的其执行方式与书写的顺序无关其执行方式与书写的顺序无关在执行中,并行语句之间可以有信息往来,在执行中,并行语句之间可以有信息往来,也可以互为独立、互不相关也可以互为独立、互不相关每一并行语句内部的语句运行方式可以是并每一并行语句内部的语句运行方式可以是并行执行方式和顺序执行方式。

行执行方式和顺序执行方式。

并行语句特点在结构体语句中,并行语句的位置是:

在结构体语句中,并行语句的位置是:

ARCHITECTURE结构体名结构体名OF实体名实体名IS说明语句说明语句BEGIN并行语句并行语句END结构体名;结构体名;结构体中可综合的并行语句有:

结构体中可综合的并行语句有:

并行信号赋值语句并行信号赋值语句进程语句进程语句块语句块语句元件例化语句元件例化语句生成语句生成语句并行过程调用语句并行过程调用语句进程语句(进程语句(PROCESS)进进程程语语句句是是最最主主要要的的并并行行语语句句,它它在在VHDL程程序序设设计计中中使使用用频频率率最最高高,也也是是最最能能体体现现硬硬件件描描述述语语言言特特点点的的一一条条语语句句。

进进程程语语句句的的内内部部是是是是顺顺序序语语句句,而而进进程程语语句句本本身是一种并行语句。

身是一种并行语句。

Process语句的格式为:

语句的格式为:

进程程标号号:

Process(敏感信号列表敏感信号列表)变量声明量声明Begin顺序序语句;句;EndProcess进程程标号号;敏感信号列表敏感信号列表进程赖以启动的敏感表。

对于表中列出的任何进程赖以启动的敏感表。

对于表中列出的任何信号的改变,都将启动进程,执行进程内相应信号的改变,都将启动进程,执行进程内相应顺序语句。

顺序语句。

一些一些VHDL综合器,综合后,对应进程的硬件系综合器,综合后,对应进程的硬件系统对进程中的所有输入的信号都是敏感的,不统对进程中的所有输入的信号都是敏感的,不论在源程序的进程中是否把所有的信号都列人论在源程序的进程中是否把所有的信号都列人敏感表中。

敏感表中。

为了使软件仿真与综合后的硬件仿真对应起来,为了使软件仿真与综合后的硬件仿真对应起来,应当将进程中的所有输人信号都列入敏感表中。

应当将进程中的所有输人信号都列入敏感表中。

敏感表举例latchlabel:

PROCESS(oe)BEGINIFoe=1THENy=a;ENDIF;ENDPROCESSlatchlabel;仿真结果错误仿真结果错误仿真结果错误仿真结果错误仿真结果错误仿真结果错误敏感表举例latchlabel:

PROCESS(oe,a)BEGINIFoe=1THENy=a;ENDIF;ENDPROCESSlatchlabel;仿真结果正确仿真结果正确仿真结果正确仿真结果正确仿真结果正确仿真结果正确进程的激活与挂起由敏感信号表或等待程的激活与挂起由敏感信号表或等待语句句wait控制。

控制。

敏感信号控制敏感信号控制:

敏感信号的:

敏感信号的变化激活化激活该进程。

程。

当当执行到最后一条行到最后一条语句句时,进程挂起,等待敏程挂起,等待敏感信号的感信号的变化。

化。

进程挂起程挂起时,进程中的信号、程中的信号、变量的状量的状态保持不保持不变。

wait控制控制:

运行开始(初始化):

运行开始(初始化)时,所有,所有进程程均被激活,并均被激活,并执行。

当行。

当执行到等待行到等待语句句时,进程挂起。

当等待程挂起。

当等待语句条件句条件满足足时,进程再次被程再次被激活,并从等待激活,并从等待语句句处接着运行,直到遇到下接着运行,直到遇到下一个等待一个等待语句,句,进程再次被挂起如此循程再次被挂起如此循环反复,反复,直到运行直到运行结束。

束。

对含有敏感信号表的含有敏感信号表的进程,其程,其执行行过程相当于程相当于进程末程末尾有一个关于敏感信号的尾有一个关于敏感信号的wait语句。

下面的两个句。

下面的两个进程是等价程是等价的:

的:

process(A,B)beginOutput=AorB;endprocess;processbeginOutput=AorB;waitonA,B;endprocess;若有敏感信号表指定,若有敏感信号表指定,则不能有不能有wait语句。

句。

进程语句进程语句PROCESS1PROCESSnsignalsignalAARRCCHHIITTEECCTTUURREE一个构造体可以一个构造体可以一个构造体可以一个构造体可以有多个进程语句有多个进程语句有多个进程语句有多个进程语句进程和进程进程和进程进程和进程进程和进程之间是并行之间是并行之间是并行之间是并行的的的的进程和进程进程和进程进程和进程进程和进程之间的数据之间的数据之间的数据之间的数据交换通过信交换通过信交换通过信交换通过信号完成号完成号完成号完成进程内部是进程内部是进程内部是进程内部是顺序语句顺序语句顺序语句顺序语句一般用于组合电路进程模式一般用于组合电路进程模式l进程标记进程标记:

lPROCESS(信号名信号名1,信号名信号名2,信号名信号名n)lVARIABLE_变量名变量名:

STD_LOGIC;lVARIABLE_变量名变量名:

STD_LOGIC;lBEGINl-信号赋值信号赋值l-变量赋值变量赋值l-过程调用过程调用l-IF语句语句l-CASE语句语句l-LOOP语句语句lENDPROCESS进程标记进程标记;用于时序电路进程模式用于时序电路进程模式l进程标记进程标记:

lPROCESSlVARIABLE变量名变量名:

STD_LOGIC;lVARIABLE变量名变量名:

STD_LOGIC;lBEGINlWAITUNTIL时钟信号时钟信号=1;l或或CLKeventandCLK=1l-指定信号指定信号l-指定变量指定变量l-过程调用过程调用l-如果语句如果语句l-CASE语句语句l-循环语句循环语句lENDPROCESS进程标记进程标记;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYif_caseISPORT(a,b,c,d:

INStd_Logic;sel:

INStd_Logic_Vector(1downto0);y,z:

OUTStd_Logic);ENDif_case;ARCHITECTURElogicOFif_caseISBEGINif_label:

PROCESS(a,b,c,d,sel)BEGINIFsel=00THENy=a;ELSIFsel=01THENy=b;ELSIFsel=10THENy=c;ELSEyzzzzz=0;ENDCASE;ENDPROCESScase_label;ENDlogic;进程语句举例两个进程两个进程是并发的是并发的进程的运行进程的运行依赖于敏感依赖于敏感表内参数的表内参数的变化变化例:

一个构造体中有两个进程通信例:

一个构造体中有两个进程通信LibraryIEEE;useieee.std_logic_1164.all;entitycproisport(ina:

instd_logic;outa,outb:

outstd_logic);endentitycpr;architecturedyofcproissignalcom_a,com_b:

STD_LOGIC:

=0;beginJC1:

PROCESS(ina,com_a)beginif(inaorcom_a)thencom_b=1after25ns;0after50ns;outa=1after20ns;0after20ns;endif;endprocessJC1;JC2:

PROCESS(com_b)beginif(com_beventandcom_b=1)thencom_a=0after25ns;1after50ns;outb=1after20ns;0after20ns;endif;endprocessJC2;endarchitecturedy;进程A进程B信号inA启动进程A信号comm_A启动进程A信号comm_B启动进程B输出信号outB输出信号outA注意进程内的语句是顺序执行注意进程内的语句是顺序执行结果结果f总是总是等于等于a块语句(课本(课本29页)页)块语句(块语句(BLOCK)格式:

)格式:

(课本(课本29页)页)块标号:

块标号:

BLOCK(块保护表达式)块保护表达式)接口说明接口说明类属说明类属说明BEGIN并行语句并行语句ENDBLOCK块标号;块标号;说明说明块语句应用只是一种将结构体中的并行描述语块语句应用只是一种将结构体中的并行描述语句进行组合的方法,它的主要目的是改善并行句进行组合的方法,它的主要目的是改善并行语句及其结构的可读性语句及其结构的可读性从综合的角度来说,块语句的存在没有实际意从综合的角度来说,块语句的存在没有实际意义,综合器会略去所有的块语句义,综合器会略去所有的块语句保护表达式保护表达式是可选项,它是一个是可选项,它是一个布尔表达式。

保护表达式的作用布尔表达式。

保护表达式的作用是:

只有当其为真时,该块中的是:

只有当其为真时,该块中的语句才被启动执行;否则,该块语句才被启动执行;否则,该块中的语句不被执行。

中的语句不被执行。

【例例】a,b,c,d输入端口,输入端口,bit类型。

类型。

.b1:

BLOCKSIGNALs1:

BIT;BEGINS1=aANDb;b2:

BLOCKSIGNALs2:

BIT;BEGINs2=cANDd;b3:

BLOCKBEGINZ=s2;ENDBLOCKb3;ENDBLOCKb2;y=s1;ENDBLOCKb1;.块内定义的数据类型、块内定义的数据类型、数据对象(信号、变量、数据对象(信号、变量、常量)、子程序等都是常量)、子程序等都是局部的局部的。

例:

用BLOCK语句描述2选1电路的程序。

ENTITYmux2_1ISPORT(d0,d1,sel:

INSTD_LOGIC;q:

OUTSTD_LOGIC);ENDmux2_1;ARCHITECTUREamuxOFmux2_1ISSIGNALtmp1,tmp2,tmp3:

STD_LOGIC;BEGINcale:

BLOCKBEGINtmp1=d0ANDsel;tmp2=d1AND(notsel);tmp3=tmp1ORtmp2;q=tmp3;ENDBLOCKcale;ENDamux;上述结构体中只有一个BLOCK块,若电路复杂时可由几个BLOCK块组成。

22选选11数据选择器数据选择器d1d0qselu2u1u3tmp1tmp2tmp3【例例】(课本课本17页页)LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYf_adderISPORT(ain,bin,cin:

INstd_logic;sum,cout:

OUTstd_logic);ENDf_adder;ARCHITECTUREe_adOFf_adderISSIGNALe,d,f:

std_logic;BEGINh_adder1:

BLOCK-半加器半加器u1BEGINPROCESS(ain,bin)BEGINe=(ainAND(NOTbin)OR(binAND(NOTain);d=ainANDbin;ENDPROCESS;ENDBLOCKh_adder1;【例例】(课本课本17页页)h_adder2:

BLOCK-半加器半加器u2BEGINPROCESS(e,cin)BEGINsum=(eAND(NOTcin)OR(cinAND(NOTe);f=ea

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1