VHDL IF 语句
提到IF 语句 , 相信具有高级软件编程基础的读者对此一定不陌生。与其他高级编程语 言类似 ; VHDL 中的 IF 语句也是一种具有条件控制功能的语句 , 它同样是根据给出的条件 来决定 需要执行程序中的哪些语句 ,在VHDL 中 , IF 语句具有 3 种形式 , 下面对它们进行分别介绍。
1. 具有开关控制的 IF 语句
主 VHDL 中 , 具有开关控制的 IF 语句是一种非常基本的顺序描述语句。通常 , 它的语
语法结构 如下所示 :
If < 条件 > THEN
< 顺序处理语句 > ;
END IF;
当程序执行到 IF 语句时 , 如果 IF 语句中的条件成立 , 那么程序将执行后面的顺序处理
语句; 否则程序将跳出 IF 语句 , 转而去执行其他的程序处理语句。
真有开关控制的 IF 语句的典型应用是用来描述数字电路中的基本 D 触发器 , 它的 处理 程序如 下 所示。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ddf1 IS
PORT
(
D,clk: IN STD_LOGIC;
Q: out STD_LOGIC
);
END ddf1;
ARCHITECTURE a1 OF ddf1 IS
BEGIN
signal sig_save: STD_LOGIC;
process(clk)
begin
if clk'event and clk='1' then
sig_save<=D;
end if;
Q<=sig_save;
end process;
END a1;
2. 具有二选择控制的 IF 语句
在 VHDL 中 , 具有二选择控制的 IF 语句经常用来描述具有两个分支控制的逻辑功能电
路。通常 , 它的语法结构如下所示 :
If < 条件 > THEN
< 顺序处理语句 1 > ;
ELSE
< 顺序处理语句 2>;
END IF;
当程序执行到 IF 语句时 , 如果 IF 语句中的条件成立 , 那么程序将会执行后面的顺序处 理语句 1 ; 否则程序将会去执行顺序处理语句 2。
3. 具有多选择控制的 IF 语句
在 VHDL 中 , 具有多选择控制的 IF 语句经常用来描述具有多个选择分支的逻辑功能电
路。通常 , 它的语法结构如下所示 :
IF < 条件 1> THEN
〈顺序处理语句 1 > ;
ELSIF < 条件 2> THEN
< 顺序处理语句 2>;
ELSIF < 条件 n-I> THEN
< 顺序处理语句 n-I>;
ELSE
< 顺序处理语句 n>; END IF:
当程序执行到 IF 语句时 , 如果 IF 语句中的条件 1 成立 , 那么程序将会执行后面的顺序
处理语句 1 ; 如果 IF 语句中的条件 2 成立 , 那么程序将会执行后面的顺序处理语句 2; 依此 类推 , 如果 IF 语句中的条件 n-I 成立 , 那么程序将会执行后面的顺序处理语句 n - 1; 如 果 IF 语句中的前 n 一 1 个条件均不成立 , 那么程序将会去执行顺序处理语句 no
4. IF 语句的嵌套
IF 语句也可以进行多层嵌套。在编写 VHDL 程序的过程中 , IF 语句的
嵌 套可以用来解决描述具有复杂控制功能的逻辑电路的问题。下面通过 IF 语句的嵌套来描
一 个具有同步置位功能的 D 触发器 , 它的 VHDL 程序如例 4-26 所示。
IF 语句嵌套的应用。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY dff2 IS
PORT
(
D,clk,clr: IN STD_LOGIC;
Q: out STD_LOGIC
);
END dff2;
ARCHITECTURE a1 OF dff2 IS
BEGIN
process(clk,D,clr)
begin
if clk'event and clk='1' then
if clr='1' then
Q<='1';
else
Q<=D;
end if;
end if;
end process;
END a1;
|