vhdl基本语法

内容发布更新时间 : 2025/7/14 13:06:47星期一 下面是文章的全部内容请认真阅读。

ELSE

语句方块B END IF 格式四: PROCESS (CLK) BEGIN

IF CLK'event AND CLK='1' THEN 语句方块 END IF;

END PROCESS;

语句格式一是IF语句的完整形式,格式二和格式三是IF语句的简化形式,格式四是IF语句的一种特例,它用于描述带有时钟信号CLK上升沿触发的时序逻辑电路。IF语句可以嵌套使用。

IF 语句中至少应包含一个条件表达式,先判断条件表达式的结果是否为真,若为真,则执 行THEN后面的语句方块的语句,执行完以后就跳转到END IF之后的语句。若条件条件表达式的结果为假,则执行ELSE之后的语句方块。 例如采用IF-ELSE实现的四选一数据选择器结构体如下: ARCHITECTURE archmux OF mux4 IS BEGIN

PROCESS(s, a0, a1, a2, a3) BEGIN

IF s= “00” THEN y <= a0 ;

ELSIF s= “01” THEN y <= a1 ;

ELSIF s= “10” THEN y <= a2; ELSE y <= a3; END IF;

END PROCESS; END archmux;

每一个 IF语句都必须有一个对应的 END IF语句, IF语句可以嵌套使用,即在一个IF 语句中可以调用另一个 IF语句。ELSEIF允许在IF语句中出现多次。

例1-3-4用格式四描述一般的D触发器程序如下,D触发器的电路符号如图1-3-1所示。

图1-3-1 D触发器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dff1 IS PORT(

CLK, D : IN STD_LOGIC; Q : OUT STD_LOGIC ); END dff1;

ARCHITECTURE a OF dff1 IS BEGIN

PROCESS (CLK) BEGIN

IF CLK'EVENT AND CLK='1' THEN Q <= D;

END IF;

END PROCESS; END a;

程序中,时钟信号(CLK)是敏感信号,用表达式CLK.EVENT AND CLK=.1.判断CLK 是否产生上升沿(由低电平变成高电平),若CLK产生上升沿,则执行Q <= D,否则,Q保

持不变。 小提示:

判断上升沿还可以写成 IF RISING_EDGE(CLK);如果要判断时钟信号产生下降沿, 可以用表达式CLK.EVENT AND CLK=.0.。或者 FALLING_EDGE(CLK)。其中CLK右 上角的.表示信号的属性,其中EVENT表示信号内涵变化,是最常用的属性。对于信号 的其他属性可以查阅相关书籍,由于使用并不多则不作介绍了。 1.3.6 CASE-WHEN语句

CASE-WHEN语句属于顺序语句,只能在进程中使用,常用来选择有明确描述的信号。 语法格式:

CASE 选择信号X IS WHEN 信号值1 => 语句方块1 WHEN 信号值2 => 语句方块2 WHEN 信号值3 =>

WHEN OTHERS => 语句方块 N

CASE-WHEN语句的功能与WITH-SELECT语句的功能相

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi