欢迎来到天天文库
浏览记录
ID:40223880
大小:686.00 KB
页数:263页
时间:2019-07-27
《第6章-vhdl语言的主要描述语句》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章VHDL语言的主要描述语句6.1顺序描述语句6.2并发描述语句6.3其它语句和有关规定的说明在用VHDL语言描述系统硬件行为时,按语句执行顺序对其进行分类,可以分为顺序(Sequential)描序语句和并发(Concurrent)描述语句。例如,进程语句(ProcessStatement)是一个并发语句。在一个构造体内可以有几个进程语句同时存在,各进程语句是并发执行的。但是,在进程内部所有语句应是顺序描述语句。也就是说,是按书写的顺序自上至下一个语句一个语句地执行的。例如,IF语句、LOOP语句等都属
2、于此类顺序描述语句。灵活运用这两类语句就可以正确地描述系统的并发行为和顺序行为。顺序描述语句只能出现在进程或子程序中,由它定义进程或子程序所执行的算法。顺序描述语句中所涉及到的系统行为有时序流、控制、条件和迭代等。顺序描述语句的功能操作有算术、逻辑运算,信号和变量的赋值,子程序调用等。顺序描述语句像在一般高级语言中一样,其语句是按出现的次序加以执行的。在VHDL语言中,顺序描述语句主要有以下几种:6.1顺序描述语句●WAIT语句; ●断言语句; ●信号代入语句; ●变量赋值语句; ●IF语句
3、; ●CASE语句; ●LOOP语句; ●NEXT语句; ●EXIT语句; ●过程调用语句; ●NULL语句。NULL(空)语句表示只占位置的一种空处理操作,但是它可以用来为所对应信号赋一个空值,表示该驱动器被关闭。该语句在下面不作介绍,其余语句将通过具体实例作详细介绍。6.1.1WAIT语句进程在仿真运行中总是处于下述两种状态之一:执行或挂起。进程状态的变化受等待语句的控制,当进程执行到等待语句时,会被挂起,并设置好再次执行的条件。WAIT语句可以设置4种不同的条件:无限等待、时间
4、到、条件满足以及敏感信号量变化。这几类条件可以混用,其书写格式如下:WAIT——无限等待WAITON——敏感信号量变化WAITUNTIL——条件满足WAITFOR——时间到1.WAITON语句WAITON语句的完整书写格式如下:WAITON信号[,信号];WAITON语句后面跟着的是一个或多个信号量。例如:WAITONa,b; 该语句表明:它等待信号量a或b发生变化。a或者b中只要有一个信号量发生变化,进程就结束挂起状态,而继续执行WAITON语句后继的语句。WAITON可以再次启动进程的执行,其
5、条件是指定的信号量必须有一个新的变化。【例6-1】WAITON可以再次启动进程的条件。PROCESS(a,b)ISPROCESSBEGINBEGINy<=aANDb;y<=aANDb;ENDPROCESS;WAITONa,b;ENDPROCESS;例6-1中的两个进程的描述是完全等价的,只是WAITON和PROCESS中所使用的敏感信号量的书写方法有区别。在使用WAITON语句的进程中,敏感信号量应写在进程中的WAITON语句后面;在不使用WAITON语句的进程中,敏感信号量只应在进程开头的PROC
6、ESS后跟的括号中说明。需要注意的是,如果PROCESS语句已有敏感信号量说明,那么在进程中再不能使用WAITON语句。例如,例6-2的描述是非法的。【例6-2】PROCESS语句已有敏感信号量说明的情况。PROCESS(a,b)ISBEGINy<=aANDb;WAITONa,b;--错误语句ENDPROCESS;2.WAITUNTIL语句WAITUNTIL语句的完整书写格式如下:WAITUNTIL表达式;WAITUNTIL语句后面跟的是布尔表达式,当进程执行到该语句时将被挂起,直到表达式返回一个
7、“真”值,进程才被再次启动。 该语句在表达式中将建立一个隐式的敏感信号量表。当表中的任何一个信号量发生变化时,立即对表达式进行一次评估。如果评估结果使表达式返回一个“真”值,则进程脱离等待状态,继续执行下一个语句。例如:WAITUNTIL((x*10)<100);在这个例子中,当信号量x的值大于或等于10时,进程执行到该语句将被挂起;当x的值小于10时,进程再次被启动,继续执行WAIT语句的后继语句。3.WAITFOR语句WAITFOR语句的完整书写格式如下:WAITFOR时间表达式;WAITFOR语句
8、后面跟的是时间表达式。当进程执行到该语句时将被挂起,直到指定的等待时间到时,进程再开始执行WAITFOR语句后继的语句。例如:WAITFOR20ns;WAITFOR(a*(b+c)); 在上例的第一个语句中,时间表达式是一个常数值20ns,当进程执行到该语句时将等待20ns。一旦20ns时间到,进程将执行WAITFOR语句的后继语句。在上述第二个语句中,FOR后面是一个时间表达式,a*(b+c)是时间量。WA
此文档下载收益归作者所有