VHDL语言的主要描述语句

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VHDL语言的主要描述语句

按照语句的执行顺序对VHDL语言进行分类,包含两类语句:

并行描述语句该语句的执行与书写顺序无关,总是同时被执行

顺序描述语句从仿真的角度,该语句是顺序执行的

进程语句(PROCESS)是最典型的并行语句,一个构造体内可以有几个进程语句同时存在,而且并发执行。但是进程内部的所有语句都是顺序语句。

一、顺序描述语句

顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。如下分别介绍有关的顺序描述语句.

1.WAIT语句

进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.

等待语句的格式:

*WAIT 无限等待

*WAIT ON 敏感信号变化

*WAIT UNTIL 条件满足

*WAIT FOR 时间到

(1)WAIT ON

格式:WAIT ON 信号[,信号]

例5-1

PROCESS(a,b)

BEGIN

y<=a AND b;

END PROCESS;

该例中的进程与下例中进程相同:

例5-1

PROCESS

BEGIN

y<=a AND b;

WAIT ON a,b;

END PROCESS;

例5-2

PROCESS(a,b)

BEGIN

y<=a AND b;

WAIT ON a,b;

END PROCESS;

(2)WAIT UNTIL 直到条件满足

格式: WAIT UNTIL 布尔表达式

当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL ((x*10)<100)

(3)WAIT FOR等到时间到

格式: WAIT FOR 时间表达式

当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns;

WAIT FOR (a*(b+c);

(4)多条件WAIT 语句

例: WAIT ON nmi,interrupt UNTIL ((nmi=TRUE) OR (interrupt=TRUE)) FOR 5 us 该等待有三个条件:

第一,信号nmi和interrupt 任何一个有一次刷新动作

第二, 信号nmi和interrupt 任何一个为真

第三, 已等待5 us

只要一个以上的条件被满足,进程就被启动.

*注意:多条件等待时,表达式的值至少应包含一个信号量的值。

(5) 超时等待

例5-3

例5-4

2.断言语句(ASSERT)

(主要用于仿真、调试)

格式: ASSERT 条件[REPORT 输出信息][SEVERITY 级别]

执行到断言语句时,判断条件,若条件满足就继续执行,否则输出文字串和错误级别信息.例: ASSERT (tiaojian=’1’)

REPORT “some thing wrong”

SEVERITY ERROR;

3.信号代入语句

格式: 目的信号量<=信号量表达式

例: a<=b;(注意区别小于等于)

4.变量赋值语句

格式: 目的变量:=表达式

例: c:=a+d

5.IF 语句

三种书写格式:

1) IF的门闩控制

格式:IF 条件THEN

顺序执行语句;

END IF;

例5-5

IF (a=’1’) THEN

c<=b;

END IF;

例5-6

2)IF 语句的二选择控制

格式:IF 条件THEN

顺序执行语句;

ELSE

顺序执行语句;

END IF;

例5-7

ARCHITECTURE rt1 OF mux2 IS

BEGIN

PROCESS(a,b,sel)

BEGIN

IF(sel=’1’) THEN

c<=a;

ELSE

c<=b;

END IF;

END PROCESS;

END rt1;

3)IF 语句的多选择控制

格式:IF 条件THEN

顺序执行语句

ELSIF 条件THEN

顺序执行语句

ELSIF 条件THEN

顺序执行语句

ELSIF 条件THEN

顺序执行语句

END IF;

例如:5-8

LIBRARY IEEE;

USE ENTITY mux4 IS

PORT(input :IN STD_LOGIC_VECTOR(3 DOWNTO 0);

sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0);

q: OUT STD_LOGIC);

END mux4;

ARCHITECTURE rt1 OF mux4 IS

BEGIN

nn: PROCESS(input,sel)

BEGIN

IF (sel='00') THEN

q<=input(0);

ELSIF (sel='01') THEN

q<=input(1);

ELSIF (sel='10') THEN

q<=input(2);

ELSE

q<=input(3);

ENDIF;

END PROCESS nn;

END rt1;

注意:条件判断输出是布尔量。

6.CASE 语句

常用来描述总线、编码和译码的行为。

格式:

CASE 表达式IS

相关文档
最新文档