欢迎来到天天文库
浏览记录
ID:52063762
大小:810.50 KB
页数:77页
时间:2020-03-31
《VHDL语言的主要描述语句.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章VHDL语言的主要描述语句VHDL语言描述系统硬件行为时,按语句执行顺序可以分为顺序(Sequential)描述语句和并发(Concurrent)描述语句。灵活运用这两类语句就可以正确地描述系统的并发行为和顺序行为。例如,进程语句(ProcessStatement)是一个并发语句。在一个构造体内可以有几个进程语句同时存在,各进程语句是并发执行的。但是,在进程内部所有语句应是顺序描述语句,也就是说,是按书写的顺序自上至下,一个语句一个语句地执行的。例如,IF语句、LOOP语句等都属于此类顺序描述语句。6.1顺序描述语句执行顺序与书写顺序一致,与传统软件设计语言的
2、特点相似。顺序语句只能用在进程与子程序中。在VHDL语言中顺序描述语句有以下几种:*WAIT语句;*断言语句;*信号代入语句;*变量赋值语句;*IF语句;*CASE语句;*LOOP语句;*NEXT语句;*EXIT语句;*过程调用语句;*NULL语句6.1.1WAIT语句进程在仿真时的两个状态:执行或挂起。进程状态的变化受WAIT语句的控制。当进程执行到WAIT语句时,就将被挂起,并设置好再次执行的条件。WAIT语句可以设置4种不同的条件:无限等待、时间到、条件满足以及敏感信号量变化。其书写格式为:WAIT:无限等待WAITON:敏感信号量变化WAITUNTIL:条件
3、满足WAITFOR:时间到1、WAITONWAITON语句的完整书写格式为:WAITON信号[,信号];WAITON后面跟着的是一个或多个信号量,例如:WAITONa,b;该语句表明,等待信号量a或b中只要有一个发生变化,进程将结束挂起状态,而继续执行WAITON语句的后继语句,从而再次启动进程的执行。从这一点来看,与进程指定的敏感信号量有新的变化时,也会启动进程的情况相类似。举例1PROCESS(a,b)BEGINy<=aANDb;ENDPROCESS;PROCESSBEGINy<=aANDb;WAITONa,b;ENDPROCESS;上面两个进程的描述是完全等价
4、的,只是WAITON和PROCESS中所使用的敏感信号量的书写方法有区别。在使用WAITON语句的进程中,敏感信号量应写在进程中的WAITON语句后面;而在不使用WAITON语句的进程中,敏感信号量只应在进程开头的PROCESS后跟的括号中说明。敏感信号量列表和waiton语句只能选其一,两者不能同时使用。注意举例2如果PROCESS语句已有敏感信号量说明,那么在进程中再不能使用WAITON语句。例如,下面的描述是非法的。PROCESS(a,b)BEGINy<=aANDb;WAITONa,b;错误语句ENDPROCESS;2、WAITUNTILWAITUNTIL语句
5、的完整书写格式为:WAITUNTIL表达式;当表达式的值为“真”时,进程被启动,否则进程被挂起。该语句在表达式中将建立一个隐式的敏感信号量表,当表中的任何一个信号量发生变化时,就立即对表达式进行一次评估。如果评估结果使表达式返回一个“真”值,则进程脱离等待状态,继续执行下一个语句。例如:WAITUNTIL((X*10)<100);在这个例子中,当信号量X的值大于或等于10时,进程执行到该语句将被挂起;当X的值小于10时进程再次被启动,继续执行WAIT语句的后继语句。例:用waituntil语句描述时钟沿,实现D触发器architecturertlofdisbegin
6、processbeginwaituntilclk'eventandclk='1';q<=d;endprocess;endrtl;举例3、WAITFORWAITFOR语句的完整书写格式为:WAITFOR时间表达式;WAITFOR语句后面跟着的是时间表达式,当进程执行到该语句时将被挂起,直到指定的等待时间到时,进程再开始执行WAITFOR语句后继的语句。例如:WAITFOR20ns;这个语句中时间表达式是一个常数值20ns,当进程执行到该语句时将等待20ns。一旦20ns时间到,进程将执行WAITFOR语句的后继语句。例如:WAITFOR(a*(b+c));此语句中,F
7、OR后面是一个时间表达式,a*(b+c)是时间量。WAITFOR语句在等待过程中,要对表达式进行一次计算,计算结果返回的值就作为该语句的等待时间。例如,a=2,b=50ns,c=70ns。那么WAITFOR(a*(b+c))这个语句将等待240ns,也就是说该语句和WAITFOR240ns是等价的。4、多条件WAIT语句在前面已叙述的3个WAIT语句中,等待的条件都是单一的,要么是信号量,要么是布尔量,要么是时间量。实际上WAIT语句还可以同时使用多个等待条件。例如:WAITONnmi,interruptUNTIL((nmi=TRUE)OR(interrupt=
此文档下载收益归作者所有