资源描述:
《《VHDL并行语句》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、六、VHDL语言的并行语句1、并行信号赋值语句4、进程语句3、块语句2、条件信号赋值语句5、元件例化语句6、生成语句7、并行过程调用语句结构体结构体中的并行语句模块1、并行信号赋值语句赋值目标=表达式例ARCHITECTUREcurtOFbc1ISSIGNALs1,e,f,g,h:STD_LOGIC;BEGINoutput1<=aANDb;output2<=c+d;g<=eORf;h<=eXORf;s1<=g;ENDARCHITECTUREcurt;2、条件信号赋值语句赋值目标<=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE...表达式;例ENTITYmuxISP
2、ORT(a,b,c:INBIT;p1,p2:INBIT;z:OUTBIT);END;ARCHITECTUREbehvOFmuxISBEGINz<=aWHENp1='1'ELSEbWHENp2='1'ELSEc;END;选择信号赋值语句WITH选择表达式SELECT赋值目标信号<=表达式WHEN选择值,表达式WHEN选择值,...,表达式WHEN选择值;例...WITHseltSELECTmuxout<=aWHEN0
3、1,--0或1bWHEN2TO5,--2或3,或4或5cWHEN6,dWHEN7,'Z'WHENOTHERS;...3、块语句块标号:BLOCK[(块保护表达式)]接口
4、说明;类属说明;BEGIN并行语句;ENDBLOCK块标号;与大部分的VHDL语句不同,BLOCK语句的应用,包括其中的类属说明和端口定义,都不会影响对原结构体的逻辑功能的仿真结果。例...b1:BLOCKSIGNALs1:BIT;BEGINS1<=aANDb;b2:BLOCKSIGNALs2:BIT;BEGINs2<=cANDd;b3:BLOCKBEGINZ<=s2;ENDBLOCKb3;ENDBLOCKb2;y<=s1;ENDBLOCKb1;...4、进程语句[进程标号:]PROCESS[(敏感信号参数表)][IS][进程说明部分]BEGIN顺序描述语句;ENDPROCESS[
5、进程标号];PROCESS语句结构的一般表达格式如下在一个结构体中多个PROCESS语句可以同时并发运行,而进程内部语句之间是顺序关系。PROCESS语句在VHDL程序中,是描述硬件并行工作行为的最常用、最基本的语句。PROCESS组成PROCESS语句结构进程说明顺序描述语句敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句(1)进程说明部分主要定义一些局部量,可包括数据类型、常数、属性、子程序等。但需注意,在进程说明部分中不允许定义信号和共享变量。(2)顺序描述语句部分可分为赋值语句、进程启动语句、子程序调用语句、顺序描述语句和进程跳出语句
6、等。(3)为启动进程,在进程中必须包含有一个显式的敏感信号量表或者包含一个WAIT语句;敏感信号表应当紧跟在PROCESS之后,含有敏感信号表的进程语句中不允许再显式出现WAIT语句。说明1.PROCESS为一无限循环语句2.PROCESS语句具有顺序/并行运行双重性3.进程必须由敏感信号的变化来启动4.信号是多个进程间的通信线PROCESS语句特点5.一个进程中只允许描述对应于一个时钟信号的同步时序逻辑例:ENTITYmulISPORT(a,b,c,selx,sely:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNA
7、Ltemp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGINIF(selx='0')THENtemp<=a;ELSEtemp<=b;ENDIF;ENDPROCESSp_a;p_b:PROCESS(temp,c,sely)BEGINIF(sely='0')THENdata_out<=temp;ELSEdata_out<=c;ENDIF;ENDPROCESSp_b;ENDex;上例的综合结果例:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPOR
8、T(CLR:INSTD_LOGIC;IN1:INSTD_LOGIC_VECTOR(3DOWNTO0);OUT1:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYCNT10;ARCHITECTUREARTOFCNT10ISBEGINPROCESS(IN1,CLR)ISBEGINIF(CLR=‘1’ORIN1="1001")THENOUT1<="0000";--有清零信号,或计数已达9,OUT1输出0ELSE--否则作加1操作OUT1<=I