vhdl基本语法

内容发布更新时间 : 2025/6/22 0:33:17星期一 下面是文章的全部内容请认真阅读。

END IF;

END PROCESS;

在敏感信号表中,信号Rd,CLK被列为敏感信号,当此两个信号只要有一个发生变化时, 此进程就被执行。注意EN并没有被列入敏感表,这是因为EN起作用必须发生在时钟的上升沿这时CLK必定发生变化,引起进程的执行。同样,若为同步清零,敏感表中可无Rd信号,

此时进程如下:

PROCESS ( CLK ) --进程(敏感信号表) BEGIN

IF (CLK. EVENT AND CLK=.1.) THEN IF (Rd=.0.) THEN Q<= “0000”; ELSIF (EN=.1.) then Q <= Q+1; ENDIF; END IF;

END PROCESS; 小提示:

一个结构体可以包含多个进程,他们之间是并行执行的,但是进程结构中的语句是顺 序执行的。进程间通过信号来实现通信,进程信号的赋值语句是顺序执行的,但是赋 值是最后并行执行的。

1.4.2 元件(COMPONET)定义语句和元件例化(PORT MAP)语句

在VHDL程序设计中,一个完整的VHDL设计程序包括实体和结构体,实体提供设计单 元的端口信息,结构体描述设计单元的结构和功能,设计程序通过综合、仿真等一系列操作 后,其最终的目的是得到一个具有特定功能的电路元件,因此,把这种设计好的程序定义为 一个元件。这种元件可以是一个描述简单门电路的程序,也可以是一个描述一位全加器的程 序,或者是其他复杂电路的描述。这些元件设计好后保存在当前工作目录中,其他设计体可 以通过元件例化的方法调用这些元件。 小提示:

当前设计实体相当于一个较大(较大时相比于以前设计的实体而言)的电路系统,所 声明的例化元件相当于系统板上的芯片,而当前设计实体的“端口”相当于要插入这 个电路这块电路板上准备接受此芯片的一个插座。

元件(COMPONET)定义语句和元件例化(PORT MAP)语句就是用于在一个结构体 中定义元件和实现元件调用的两条语句,两条语句分别放在一个结构体中的不同的位置,元 件定义(COMPONET)语句放在结构体的ARCHITECTURE和BEGIN之间,指出该结构体调用哪一个具体的元件,元件调用时必须要进行数据交换,元件例化语句中的PORT MAP 是端口映射的意思,表示结构体与元件端口之间交换数据的方式。其语法结构格式为: (1)元件定义(COMPONET)语句的格式为: COMPONENT 元件名称 IS

GENERIC 常量定义信息 (同该元件源程序实体中的GENERIC部分) PORT 元件端口信息(同该元件源程序实体中的PORT部分) END COMPONET; 小提示:

元件声明与实体声明基本一致,元件就是一个实体。

(2)元件例化(PORT MAP)语句的格式为: 例化名:元件名称 PORT MAP 元件端口列表

例1-4-1用元件定义(COMPONET)和元件例化语句实现四位全加器的程序设计,调用的 元件是一位全加器,元件名称是fulladder,用VHDL描述的程序的文件名是fulladder.VHD, 四位全加器电路图如图1-4-1所示。

图1-4-1 四位全加器电路图

四位全加器的程序文件名为adder4.VHD,内容如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder4 IS PORT (

A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0); CI : IN STD_LOGIC;

S

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