1、(2) 采用大量的ASIC芯片(3) 早期仿真以确定系统的可行性(4) 使设计更容易只需写出系统的HDL源程序文件,其它由计算机去做(5) 全部设计文件就是HDL源程序文件1.3 VHTL硬件设计语言 当前ASIC制造商都自己开发了HDL语言,但是都不通用,只有美国国防部开发的VHDL语言成为了IEEE. STD_1076标准,并在全世界得到了承认。该语言集成了各种HDL语言的优点,使数字系统设计更加简单和容易。VHDL语言是一个规模庞大的语言,在使用它之前完全学会它是很难的,本书介绍的只是VHDL语言的一部分。 1.4 VHDL语言的基本结构VHDL语言通常包含实体(Entity),构造体(
2、Architecture),配置(Configuration),包集合(Package),和库(Library)五部分.其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。如下详细介绍。1.4.1基本设计单元VHDL的基本设计单元就是实体,无论数字电路复杂还是简单,都是由实体和构造体组成。(1) 实体说明实体说明有如下结构:ENTITY 实体名 IS端口说明END 实体名;(VHDL语言中不分
3、大小写字母)其中: 端口说明是对设计实体中输入和输出借口进行描述,格式如下: PORT(端口名(,端口名):方向 数据类型名; : 端口名(,端口名):方向 数据类型名); 端口名是赋予每个系统引脚的名称,一般用几个英文字母组成。端口方向是定义引脚是输入还是输出,见下表:方向说明IN输入到实体OUT从实体输出输出INOUT双向BUFFER输出(但可以反馈到实体内部)LINKAGE不指定方向常用的端口数据类型有两种:BIT和BIT_VECTOR,当端口被说明为BIT时,只能取值“1”或“0”,当端口被说明为BIT_VECTOR时,它可能是一组二进制数。例: PORT(n0, n1, select
4、: IN BIT; q: OUT BIT; bus: OUT BIT_VECTOR(7 DOWNTO 0);本例中,n0, n1, select 是输入引脚,属于BIT型,q是输出引脚,BIT型,bus 是一组8位二进制总线,属于BIT_VECTOR, LIBRARY IEEE; USE IEEE.STD_LOGIC.1164.ALL; ENTITY mm IS PORT(n0,n1,select: IN STD_LOGIC; Q : OUT STD_LOGIC; Bus : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END mm;在此例中端口数据类型取自IEEE标准
5、库(该库中有数据类型和函数的说明),其中STD_LOGIC 取值为“0”,“1”,“X”和“Z”。因为使用了库所以在实体说明前要增加库说明语句。(2) 构造体 构造体是实体的一个重要部分,每一个实体都有一个或一个以上的构造体。1) 一般说明构造体格式如下:ARCHITECTURE 构造体名 OF 实体名 IS定义语句 内部信号,常数,数据类型,函数等的定义BEGIN 并行处理语句END 构造体名; ENTITY nax IS PORT(a0,a1 : Sel : Sh : OUT BIT); END nax; ARCHITECTURE dataflow OF nax IS BEGIN sh=(
6、a0 AND sel) OR (NOT sel AND a1); END dataflow;构造体描述设计实体的具体行为,它包含两类语句: 并行语句 并行语句总是在进程语句(PROCESS)的外部,该语句的执行与书写顺序无关,总是同时被执行 顺序语句 顺序语句总是在进程语句(PROCESS)的内部,从仿真的角度,该语句是顺序执行的一个构造体包含几个类型的子结构描述,这些描述是:* BLOCK描述(块描述)* PROCESS描述(进程描述)* SUNPROGRAMS描述(子程序描述)2) BLOCK语句描述使用BLOCK语句描述的格式如下:块标号:BLOCK END BLOCK 块标号:例: 二
7、选一电路 ENTITY mux IS PORT (d0,d1,sel: END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp1,tmp2,tmp3: BIT; cale: BLOCK tmp1=d0 AND sel; tmp2=d1 AND (NOT sel); tmp3=tmp1 OR tmp2; q=tmp3; END BLOCK cale; END connect;在对程序进行仿真时,BLOCK中的语句是并行执行的,与书写顺序无关,这一点和构造体中直接写的语句是一样的。3) 进程(PROCESS)描述进程描述的格式如下:进程名:PROCES
8、S(信号1,信号2,。)END PROCESS 进程名;* 一般用于组合电路进程模式:_进程标记:PROCESS (_信号名, _信号名, _信号名) VARIABLE _变量名 : STD_LOGIC; - 指定信号 - 指定变量 - 过程调用 - 如果语句 - CASE语句 - 循环语句END PROCESS _进程标记;* 用于时序电路进程模式: WAIT UNTIL _时钟信号 = 1; ENTITY mux1 IS q : END mux1; ARCHITECTURE connect OF mux1 ISBEGIN cale: PROCESS(d0,d1,sel) VARIABLE
9、tmp1,tmp2,tmp3 :-在进程中定义的变量 tmp1: -输入端口向变量赋值 tmp2: tmp3: END PROCESS cale;在PROCESS中的语句是顺序执行的,这一点和BLOCK中的语句是不一样的。当PROCESS所带的信号量发生变化时,PROCESS中的语句就会执行一遍。4)子程序描述子程序的概念和其它高级程序中子程序的概念相同,在VHDL中有两种类型: 过程(Procedure) 函数(Function)1. 过程的格式:PROCEDURE 过程名(参数1,参数2。) IS定义变量语句 顺序处理语句END 过程名; PROCEDURE vector_to_int (
10、z : IN STD_LOGIC_VECTOR; x_flag : OUT BOOLEAN; IN INTEGER) IS=0; x_flag:=FALSE; FOR i IN z RANGE LOOP=q*2; IF(z(i)=1) THEN=q+1; ELSEIF (z(i)/=10) THEN=TRUE; END IF; END LOOP;END vector_to_int;在过程中,语句是顺序执行的。2函数函数的格式:FUNCTION 函数名(参数1,参数2。) RETURN 数据类型名 ISRETURN 返回变量名;END 函数名;在VHDL 语言中函数的参数都是输入信号,FUNCTION min(x,y:INTEGER ) RETURN INTEGER IS IF XY THEN RETURN(x);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1