欢迎来到天天文库
浏览记录
ID:36293478
大小:614.50 KB
页数:54页
时间:2019-05-08
《eda技术及应用第5章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1VHDL程序的常用语句5.3VHDL并行语句(ConcurrentStatements)并行语句是指语句的执行顺序与语句的书写顺序无关,其执行是并发执行的语句,并行语句之间可以有信息的交流,也可以互为独立、互不相关。每一个并发描述语句的内部语句可以有两种不同的运行方式,即并行方式和顺序方式。VHDL结构体中的并行语句主要有八种:并行语句在结构体中的使用格式如下:ARCHITECTURE结构体名OF实体名IS说明语句;BEGIN并行语句;ENDARCHITECTURE结构体名;1、进程语句2、块语句3、并行信号赋值语句4、并行过程调用语句5、并行断言
2、语句6、类属语句7、元件例化语句8、生成语句2并行语句运行示意图块语句并行语句并行语句并行语句顺序语句1顺序语句2.··顺序语句n进程语句生成语句信号元件例化语句并行过程调用语句并行信号赋值语句信号信号信号信号ARCHITECTUREENDARCHITECTURE35.3.1进程语句(ProcessStatement)1.进程语句格式PROCESS语句结构的一般表达格式如下:一个结构体中可以有多个进程语句,同时并行执行。[进程标号:]PROCESS[(敏感信号参数表)][IS][进程说明部分;]BEGIN顺序描述语句;ENDPROCESS[进程标号]
3、;4ENTITYmulISPORT(a,b,c,x,y:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGINp_a:PROCESS(a,b,x)BEGINIF(x='0')THENtemp<=a;ELSEtemp<=b;ENDIF;ENDPROCESSp_a;p_b:PROCESS(temp,c,y)BEGINIF(y='0')THENdata_out<=temp;ELSEdata_out<=c;ENDIF;ENDPROCESSp_b;ENDex;例:2选12选
4、1abcxytempdata_out52.进程语句要点进程的设计需要注意的问题:⑴PROCESS为一无限循环语句,只有两种状态:执行和等待⑵进程必须由敏感信号的变化(变量不能作为敏感信号)来启动或具有一个显式的wait语句来激励使用了敏感表的进程不能再含有等待语句⑶进程语句本身是并行语句,但其内部则为顺序语句⑷信号是多个进程间的通信线,是进程间进行联系的重要途径在任一进程的说明部分不能定义信号⑸一个进程中只允许描述对应于一个时钟信号的同步时序逻辑进程可以描述组合电路,最重要的是用它设计时序电路6进程工作原理示意图75.3.3并行信号赋值语句(Conc
5、urrentSignalAssignmentStatement)例如:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYand_gateISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDand_gate;ARCHITECTUREbehaveOFand_gateISBEGINc<=aANDb;ENDARCHITECTUREbehave;(1)简单信号赋值语句的格式:赋值目标=表达式;结构体中的多条并发赋值语句是并行执行的。8(2)条件信号赋值语句(ConditionalSign
6、alAssignment)条件信号赋值语句的表达方式如下:赋值目标<=表达式WHEN条件1ELSE表达式WHEN条件2ELSE...表达式;条件信号赋值语句的几点说明:1)只有当条件满足时,才能将该条件前面表达式的值赋给目标信号;2)对条件的判断是有顺序的,条件1具有最高的优先级;3)条件表达式的值应该是布尔型数值;4)条件的最后一个表达式不含有when的子句。5)条件信号赋值语句允许条件重叠。9例:ENTITYmuxISPORT(a,b,c:INBIT;p1,p2:INBIT;z:OUTBIT);ENDmux;ARCHITECTUREbehvOFm
7、uxISBEGINz<=aWHENp1='1'ELSE--注意,第一句具有最高优先级bWHENp2='1‘ELSEc;END;10libraryieee;useieee.std_logic_1164.all;entityp_encoderisport(i:instd_logic_vector(7downto0);a:outstd_logic_vector(2downto0));end;architecturebehvofp_encoderisbegina<="111"wheni(7)='1'else"110"wheni(6)='1'else"101"
8、wheni(5)='1'else"100"wheni(4)='1'else"011"wheni(3)='1'
此文档下载收益归作者所有