LOOP语句中跳出,结束循环状态。若WHEN中的条件为“假”,则循环正常继续。10.NULL语句
NULL语句表示没有动作发生。NULL语句一般用在CASE语句中以便能够覆盖所有可能的条件。
3.4.1 并行语句
由于硬件语言所描述的实际系统,其许多操作是并行的,所以在对系统进行仿真时,系统中的元件应该是并行工作的。并行语句就是用来描述这种行为的。并行描述可以是结构性的也可以是行为性的。而且,并行语句的书写次序并不代表其执行的顺序,信号在并行语句之间的传递,就犹如连线在电路原理图中元件之间的连接。主要的并行语句有以下几种:
l 块(BLOCK)语句
l 进程(PROCESS)语句
l 生成(GENERATE)语句
l 器件(COMPONENT)和器件例化(COMPONENT_INSTANT)语句
(1) 块(BLOCK)语句
块(BLOCK)可以看作是结构体中的子模块。BLOCK语句把许多并行语句包装在一起形成一个子模块,常用于结构体的结构化描述。块语句的格式如下:
标号:BLOCK
块头
{ 说明部分 }
BEGIN
{ 并行语句 }
END BLOCK 标号;
块头主要用于信号的映射及参数的定义,通常通过GENETIC语句、GENETIC_MAP语句、PORT和PORT_MAP语句来实现。
说明部分与结构体中的说明是一样的,主要对该块所要用到的对象加以说明。
(2)进程(PROCESS)语句
VHDL模型的最基本的表示方法是并行执行的进程语句,它定义了单独一组在整个模拟期间连续执行的顺序语句。一个进程可以被看作一个无限循环,在模拟期间,当进程的最后一个语句执行完毕之后,又从该进程的第一个语句开始执行。在进程中的顺序语句执行期间,若敏感信号量未变化或未遇到WAIT语句,模拟时钟是不会前进的。
在一个结构中的所有进程可以同时并行执行,它们之间通过信号或共享变量进行通信。这种表示方法允许以很高的抽象级别建立模型,并允许模型之间存在复杂的信号流。
进程语句的格式如下:
[进程标号:] PROCESS (敏感信号表) [IS]
[ 说明区 ]
BEGIN
顺序语句
END PROCESS [进程标号];
上述格式中,中扩号内的内容可有可无,视具体情况而定。进程语句的说明区中可以说明数据类型、子程序和变量。在此说明区内说明的变量,只有在此进程内才可以对其进行存取。
如果进程语句中含有敏感信号表,则等价于该进程语句内的最后一个语句是一个隐含的WAIT语句,其形式如下:
WAIT ON 敏感信号表;
一旦敏感信号发生变化,就可以再次启动进程。必须注意的是,含有敏感信号表的进程语句中不允许再显式出现WAIT语句。
(3)生成(Generate)语句
生成语句给设计中的循环部分或条件部分的建立提供了一种方法。生成语句有如下量种格式:
标号:FOR 变量 IN 不连续区间 GENERATE
并行处理语句
END GENERATE [标号];
标号:IF 条件 GENERATE
并行处理语句
END GENERATE [标号];
生成方案FOR用于描述重复模式;生成方案IF通常用于描述一个结构中的例外情形,例如在边界处发生的特殊情况。
FOR ...GENERATE 和FOR...LOOP的语句不同,在FOR ...GENERATE语句中所列举的是并行处理语句。因此,内部语句不是按书写顺序执行的,而是并行执行的,这样的语句中就不能使用EXIT语句和NEXT语句。
IF ...GENERATE语句在条件为“真”时执行内部的语句,语句同样是并行处理的。与IF语句不同的是该语句没有ELSE项。
该语句的典型应用场合是生成存储器阵列和寄存器阵列等,还可以用于地址状态编译机。
(4) 元件(COMPONENT)和元件例化(COMPONENT_INSTANT)语句
COMPONENT语句一般在ARCHITECTURE、PACKAGE及BLOCK的说明部分中使用,主要用来指定本结构体中所调用的元件是哪一个现成的逻辑描述模块。COMPONENT语句的基本格式如下:
COMPONENT 元件名
GENERIC说明; --参数说明
PORT说明; --端口说明
END COMPONENT;
在上述格式中,GENTRIC通常用于该元件的可变参数的代入或赋值;PORT则说明该元件的输入输出端口的信号规定。
COMPONENT_INSTANT语句是结构化描述中不可缺少的基本语句,它将现成元件的端口信号映射成高层次设计电路中的信号。COMPONENT_INSTANT语句的书写格式为:
标号名:元件名 PORT MAP(信号,…)
标号名在该结构体的说明中应该是唯一的,下一层元件的端口信号和实际信号的连接通过PORT MAP的映射关系来实现。映射的方法有两种:位置映射和名称映射。所谓位置映射,是指在下一层元件端口说明中的信号书写顺序位置和PORT MAP( )中指定的实际信号书写顺序位置一一对应;所谓名称映射是将已经存于库中的现成模块的各端口名称,赋予设计中模块的信号名。
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>