资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2.7 硬件描述语言VHDL基础,2.7.1、VHDL的主要构件,基本设计 单元,VHDL 超高速硬件描述语言 (Very High Speed Hardware Description Language),实体(Entity ),结构体(Architecture ),程序包(Package ),库(Library ),配置(Configration ),-描述设计单元的外部接口信号,-描述设计单元内部结构和行为,- 存放各设计模块共享的数据类 型、常数、子程序等,- 专门存放程序包,-指定实体所要配置的结构体,1.实体,功能:,实现设计单元的端口说明。,语法结构:,ENTITY 实体名 IS PORT(端口名,端口名:端口模式 数据类型; 端口名,端口名:端口模式 数据类型); END 实体名;,常用端 口模式,例2.15 2 输入与非门的实体说明。,ENTITY and 2 IS PORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC ); END and2;,设计单元端口结果:,a b,y,2. 结构体,功能:,描述设计单元内部结构和行为,建立输入输出关系。,语法结构:,ARCHITECTURE 结构体名 OF 实体名 IS 结构体说明语句 BEGIN 功能描述语句 END 结构体名;,并行语句类型,进程语句(PROCESS),块描述语句(BLOCK),信号赋值语句,子程序调用语句,元件例化语句,ARCHITECTURE 结构体名 OF 实体名 IS 结构体说明语句 BEGIN 功能描述语句 END 结构体名;,例2-16 2 输入与非门的结构体描述。,ARCHITECTURE behavior_nand2 OF nand2 IS BEGIN y = a and b END behavior_nand2;,为并行语句,执行顺序与其书写顺序无关,在实际电路中所有并行语句功能同时实现。,3. 库,功能:,存储和放置设计单元(元件、程序包等)。,VHDL库,IEEE库,STD库,ASIC库,WORK库,用户自定义库,常用资源库 含IEEE认可和某些公司提供的如: STD_LOGIC_1164 程序包 STD_LOGIC_ARITH算术运算包,VHDL标准库 存放:STANDARD的程序集合 集合定义了多种常用的数据类型,资源库 存放:和各种逻辑门一一对应的 实体,当前作业库 存放:当前设计项目生成的全部文件目录,资源库 存放:用户自己创建定义的非标准程序包集合和实体。,库说明语句格式:,LIBRARY 库名;,如:,LIBRARY IEEE;,4.程序包,存放各设计模块共享的数据类型、常数、子程序等。,功能:,语法格式:,USE LIBRARY 库名.程序包名.项目名;,例2-17 对IEEE库的1164程序包中所有项目的说明。,USE IEEE. STD_LOGIC_1164.ALL ;,5. 配置,CONFIGURATION 配置名 OF 实体名 IS FOR 被选结构体名 END FOR ; END 配置名;,-为实体指定所要配置的结构体,功能:,语法格式:,实体equ2拥有三个结构体: equation 、con_behave 、 seq_behave,可以用配置语句选择与实体对应的结构体。 如选用结构体con_behave,可用以下语句实现:,CONFIGURATION aequb OF equ2 IS FOR con_behave END FOR ; END CONFIGURATION;,2.7.2、VHDL的数据对象和数据类型,1.VHDL数据对象,VHDL数据对象,信号,变量,常量,(1)常量,常量:,不变的量,定义时进行赋值,在整个程序中保持不变。,语法格式:,CONSTANT 常量名:数据类型:=表达式;,常量定义举例,CONSTANT a:INTEGER:3;,(2)变量,语法格式:,VARIABLE 变量名:数据类型:=表达式;,VARIABLE a,b:STD_LOGIC;,变量定义举例,(3)信号,信号:,定义电路中的连线和元件的端口的数据对象。,语法格式:,SIGNAL 信号名:数据类型;,SIGNAL A:INTEGER;,信号定义举例,2.VHDL数据类型,(1)整数数据类型(INTEGER),取值范围:-2147483547 2147483546,(2)实数数据类型(REAL),取值范围:-1.0E38 1.0E38,(3)位数据类型(BIT),属于枚举数据类型,取值为1和0。,(4)位矢量数据类型(BIT_VECTOR),用双引号括起来的一组位数据,如“10011”,通常用来表示数据总线。,(5)布尔数据类型(BOOLEAN),(6)字符数据类型(CHARACTER),ASCII码的128个字符,书写时用单引号,区分大小写,如a、A等。,(7)字符串数据类型(STRING),双引号括起来的一串字符,如“abgh”。,属于枚举数据类型,取值为TRUE和FALSE。常用来表示关系运算和关系运算结果。,(8)STD_LOGIC数据类型,属于枚举数据类型,取值有以下九种:,U 初始值 X 不定 0 0 1 1 Z 高阻 W 弱信号不定 L 弱信号0 H 弱信号1 - 不可能情况,(9)STD_LOGIC_VECTOR数据类型,用双引号括起来的一组STD_LOGIC数据,如“101011”,通常用来表示数据总线。,注意:使用STD_LOGIC、 STD_LOGIC_VECTOR 数据类型时必须在库、程序包说明区进行说明。,1.逻辑操作符和逻辑表达式,A AND B NOT Z,逻辑表达式举例,2.7.3、VHDL的操作符,2.算术操作符和算术表达式,算术表达式举例,A+B-C X*Y/Z,3.关系操作符和关系表达式,Y = G A=B,关系表达式举例,4.并置操作符和并置表达式,并置操作符“&”主要用来将操作数或数组组合起来,以形成新的操作数。 例“10”&“11”结果为“1011”。,2.7.4VHDL的基本语句,VHDL 基本语句,顺序语句,并行语句,顺序信号赋值语句,IF 语句,CASE 语句,LOOP语句,EXIT,NEXT,块语句,进程语句,并行信号赋值语句,并行过程调用语句,变量赋值语句,子程序和子程序调用语句,NULL,元件声明例化语句,生成语句,1顺序描述语句,(1)顺序信号赋值语句,(2)变量赋值语句,目标信号=表达式;,目的变量:=表达式;,Y=A AND B ;,顺序信号赋值语句举例,Y:=A + B ;,变量赋值语句举例,格式:,格式:,执行顺序与书写顺序一致,只用于进程和子程序中。,格式二:,IF 条件表达式 THEN 顺序语句; ELSE 顺序语句; END IF;,(3)IF语句(条件控制语句),格式一:,IF 条件表达式 THEN 顺序语句; END IF;,IF a=1 THEN c=b ; END IF;,例,格式三:,IF 条件表达式 THEN 顺序语句; ELSIF条件表达式 THEN 顺序语句; ELSE 顺序语句; END IF;,语法格式:,CASE 表达式 IS WHEN 选择值=顺序语句; WHEN 选择值=顺序语句; WHEN OTHERS=顺序语句; END CASE;,(3)CASE语句,“选择值”的取值应“选择唯一,覆盖全集” 。,“选择值”的具体表示形式有以下四种:,WHEN 值=顺序语句; WHEN 值|值|值=顺序语句; WHEN 值 TO 值=顺序语句; WHEN OTHERS=顺序语句;,SIGNAL s:STD_LOGIC_VECTOR (1 DOWNTO 0); CASE s IS WHEN“00”=zzzzz=X; END CASE;,例2-18: 用CASE语句设计4选1数据选择器的程序 片段,无条件LOOP语句语法格式:,LOOP标号:LOOP 顺序语句; END LOOP LOOP标号;,(5)LOOP语句,FORLOOP语句语法格式:,LOOP标号: FOR 循环变量 IN 循环次数范围 LOOP 顺序语句; END LOOP LOOP标号 ;,临时变量,不必事先定义。,规定顺序语句的执行次数,从循环变量初值开始每执行一次递增1,直至最大值。,WHILELOOP语句语法格式:,LOOP标号: WHILE 条件表达式 LOOP 顺序语句; END LOOP LOOP标号;,需引入其它控制语句才能退出循环,如exit、next等。,abcd: WHILE (i10) LOOP sun:=i+sum; i=i+1; END LOOP abcd;,例2-19 WHILELOOP应用举例,(6)NEXT语句,NEXT WHEN 条件;,loop2:LOOP b:=b+1 ; NEXT WHEN b10; END LOOP loop2;,例2-20 NEXT语句举例,格式:,满足条件时中止当前循环,开始下一次循环。,(7)EXIT语句,EXIT 标号WHEN 条件;,FOR i IN 1 DOWNTO 0 LOOP IF (a(i)=1 AND b(i)=0 ) THEN a_less_than_b=false; EXIT; ELSIF (a(i)=0 AND b(i)=1 ) THEN a_less_than_b=true; EXIT; ELSE NULL; END IF; END LOOP;,例2-21 EXIT语句在比较器中的应用,格式:,满足条件时提前退出循环。,函数定义语句的语法格式:,FOUNCTION (参数表) RETURN IS BEGIN 顺序语句; RETURN 返回变量名; END ;,(3)子程序和子程序调用语句,VHDL子程序,过程(PROCEDURE),函数(FOUNCTION),函数调用语句的语法格式:,函数名(实际参数表);,FOUNCTION min(x,y:INTEGER) RETURN INTEGER IS BEGIN IF xy THEN RETURN x; ELSE RETURN y; END IF; END min;,例2-22 比较器函数形式的程序设计实例,函数的参数只能是方式为IN的输入信号,函数只能有一个返回值。,过程的参数可以为IN、OUT和INOUT方式,在进行参数说明时除了说明其名称、数据类型,还要说明其端口方式。,过程定义语句的语法格式:,PROCEDURE (参数表) IS BEGIN 顺序语句; END ;,过程调用语句的语法格式:,过程名(实际参数表);,PROCEDURE swap(data: INOUT data_array; low,high:in integer) IS VARIABLE tmp: data_element; BEGIN IF (data(low) data(high) THEN tmp:= data(low) ; data(low) := data(high); data(high) := tmp; END IF; END swap;,例2-23 比较器过程形式的程序设计实例,例2-24 用过程调用语句调用过程swap,swap(datain,1,2);,1并行语句,块标号:BLOCK(块保护表达式) 块说明语句; BEGIN 并行语句; END BLOCK块标号;,(1)BLOCK语句,当满足条件时,多个语句同时被执行,与书写顺序无关。,功能:将一大段并行语句划分为若干子模块,提 高了程序的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号