l 信号赋值语句
l IF语句
CASE语句
l LOOP语句
l NEXT语句
l EXIT语句
l RETURN语句
l NULL语句
l 过程调用语句
l 断言语句
l REPORT语句NULL语句
l 过程调用语句
l 断言语句
l REPORT语句
3.4 VHDL语言的主要描述语句
在用VHDL语言描述系统的硬件行为时,按语句执行的顺序可分为顺序语句和并行语句。顺序语句主要用来实现模型的算法部分;而并行语句则基本上用来表示黑盒的连接关系。黑盒中所包含的内容可以是算法描述或一些相互连接的黑盒。
3.4.1 顺序语句
VHDL提供了一系列丰富的顺序语句,用来定义进程、过程或函数的行为。所谓“顺序”,意味着完全按照程序中出现的顺序执行各条语句,而且还意味着在结构层次中前面语句的执行结果可能直接影响后面语句的结果。顺序语句包括
l 信号赋值语句
l IF语句
l CASE语句
l LOOP语句
l NEXT语句
l EXIT语句
l RETURN语句
l NULL语句
l 过程调用语句
l 断言语句
l REPORT语句
下面逐个介绍其中常用的一些语句:
1. 等待(WAIT)语句
进程在运行中总是处于两种状态之一:执行或挂起。当进程执行到WAIT语句时,就将被挂起来,并设置好再执行的条件。WAIT语句可以设置四种不同的条件:无限等待、时间到、条件满足以及敏感信号量变化。这几类条件可以混用。
语句格式如下:
(1)WAIT;
(2)WAIT ON 信号;
(3)WAIT UNTIL 条件表达式;
(4)WAIT FOR 时间表达式;
第1种格式为无限等待,通常不用;
第2种当指定的信号发生变化时,进程结束挂起状态,继续执行;
第3种当条件表达式的值为TRUE时,进程才被启动;
第4种当等待的时间到时,进程结束挂起状态。
l 断言(ASSERT)语句
l ASSERT语句主要用于程序仿真、调试中的人-机对话,它可以给出
一串文字作为警告和错误信息。ASSERT语句的格式如下:
ASSERT 条件 [REPORT 输出信息] [SEVERITY级别]
当执行ASSERT语句时,会对条件进行判断。如果条件为“真”,则执行下一条语句;若条件为“假”,则输出错误信息和错误严重程度的级别。
3.信号赋值语句
信号赋值语句的格式如下:
信号量 <= 信号量表达式
如:
a<= b AFTER 5 ns;
信号赋值语句指定延迟类型,并在后面指定延迟时间。但VHDL综合器忽略延迟特性。
4.变量赋值语句
在VHDL中,变量的说明和赋值限定在进程、函数和过程中。变量赋值符号为“:= ”,同时,符号“ := ”也可用来给变量、信号、常量和文件等对象赋初值。其书写格式为:
变量:= 表达式;
1. IF语句
IF语句的一般格式如下:
IF 条件 THEN
顺序处理语句;
{ELSIF 条件 THEN
顺序处理语句;
∶
ELSIF 条件 THEN
顺序处理语句;}
ELSE
顺序处理语句;
END IF;
花扩号内的嵌套语句可有可无,视具体情况而定。在IF语句中,当所设置的条件满足时,则执行该条件后面的顺序处理语句;若所有的条件均不满足时,则执行ELSE和END IF之间的顺序处理语句。
1. CASE语句
CASE语句用来描述总线或编码、译码的行为,从许多不同语句的序列中选择其中之一执行。虽然IF语句也有类似的功能,但CASE语句的可读性比IF语句要强得多,程序的阅读者很容易找出条件和动作的对应关系。
CASE语句的一般格式如下:
CASE 表达式 IS
WHEN 表达式值 => 顺序语句;
WHEN OTHERS => 顺序语句;
END CASE;
当CASE和IS之间的表达式满足指定的值时,程序将执行后面所跟的顺序语句。
7. LOOP语句
LOOP语句与其他高级语言中的循环语句一样,使程序能进行有规则的循环,循环的次数受迭代算法的控制。一般格式有两种:
(1) FOR循环变量
[标号]:FOR 循环变量 IN 离散范围 LOOP
顺序语句;
END LOOP [标号];
上面循环语句的等价语句如下:
A(1)<= B(1);
A(2)<= B(2);
A(3)<= B(3);
(1) WHILE条件循环
这种LOOP语句的书写格式如下:
[标号]:WHILE 条件 LOOP
顺序语句;
END [标号];
当条件为真时,则进行循环;当条件为假时,则结束循环。
8. NEXT 语句
在LOOP语句中,NEXT语句用来跳出本次循环。其语句格式为:
NEXT [标号] [WHEN 条件];
当NEXT语句执行时将停止本次迭代,转入下一次新的迭代。NEXT后面的标号表明下次迭代的起始位置,而WHEN条件则表明NEXT语句执行的条件。如果NEXT后面既无标号而无WHEN条件说明,则执行到该语句接立即无条件地跳出本次循环,从LOOP语句的起始位置进入下次循环。
9. EXIT 语句
EXIT语句也是LOOP语句中使用的循环控制语句,与NEXT不同的是,执行EXIT语句将结束循环状态,从而结束LOOP语句的正常执行。其格式如下:
EXIT [标号] [WHEN 条件];
若EXIT后面的标号和WHEN条件缺省,则程序执行到该语句时就无条件从
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>