|
VHDL CASE 语 句
在 VHDL 中 , CASE 语句是另外一种形式的条件控制语句 , 它与 IF 语句一样可以用来描述具有控制功能的数字电路。一般来说 , CASE 语句是根据表达式的值来从不同的顺序处理语句序列中选取其中的 一 组语句来进行操作 , 它常常用来描述总线、编码器、译码器或者 数据选择器等数字逻辑电路的具体功能 O
也许有人会问 : CASE 语句的描述功能实际上采用 IF 语句也能够实现 , 那么 VHDL 为 什么要提出一个新的 CASE 语句呢 ? 实际上 , 虽然 CASE 语句和 IF 语句都是通过条件的判断来决定需要执行程序中的哪些语句 , 但是由于 CASE 语句中条件表达式的值与所要执行的顺序处理语句的对应关系十分明显 , 因此 CASE 语句的可读性要比 IF 语句强得多。
一般来说 , CASE 语句的语法结构如下所示 :
CASE < 条件表达式 > IS
WHEN < 条件表达式的取值 1> = > < 顺序处理语句 1 > ;
WHEN < 条件表达式的取值 2> = > < 顺序处理语句 2>;
WHEN < 条件表达式的取值 n-l> => < 顺序处理语句 n-l>;
WHEN OTHERS = > < 顺序处理语句 n>;
END CASE;
当程序执行到 CASE 语句时 , 如果条件表达式的计算值与取值 1 相同 , 那么程序就去执行 CASE 语句中的顺序处理语句 1 ; 如果条件表达式的计算值与取值 2 相同 , 那么程序就去 执行 CASE 语句中的顺序处理语句 2; 依此类推 , 如果条件表达式的计算值与取值 n-l 相同 , 那么程序就去执行 CASE 语句中的顺序处理语句 n - 1; 如果条件表达式的计算值与前 面 n-l 个取值都不相同 , 那么程序就去执行 CASE 语句中的顺序处理语句 n.
通常情况下 , CASE 语句中的 WHEN 子句具有 5 种不同的书写格式。因此 , 在编 写 VHDL 程序的过程中 , 设计人员可以根据设计的需要来选择采用哪一种书写格式。在 CASE语句与中 , WHEN 子句的 5 种书写格式如下所示 :
1) WHEN 取值 = > < 顺序处理语句 >;
2) WHEN 取值 | 取值 | … | 取值 = > < 顺序处理语句 > ;
3) WHEN 取值 TO 取值 = > < 顺序处理语句 >;
4) WHEN 取值 DOWNTO 取值 = > < 顺序处理语句 > ;
5) WHEN OTHERS = > < 顺序处理语句 > ;
在编写 VHDL 程序的过程中 , 设计人员使用 CASE 语句时需要注意以下几个方面 :
1) 条件表达式的所有取值必须在 WHEN 子句中被列举出来。
2) WHEN 子句中的取值必须在条件表达式的取值范围之内。
3)不同的WHEN子句中不允许出现相同条件表达式 的取值 0
4)WHEN子句中可以采用保留字OTHERS来表示所有具有相同操作的取值。
5) WHEN 子句可以任意颠倒次序而不会影响描述的逻辑功能。
6) 含有保留字 OTHERS 的 WHEN 子句必须放在 CASE 语句的最后面。
7) 含有保留字 OTHERS 的 WHEN 子句在 CASE 语句中只能出现一次。
|