《《VHDL结构与要素》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL结构与要素》PPT课件.ppt(18页珍藏版)》请在三一办公上搜索。
1、第9章 VHDL结构与要素,2023/7/8,2,一个完整的VHDL程序通常包括:,实体Entity,结构体Architecture,配置Configuration,包集合Package,库Library,描述所设计的系统的外部接口信号或引脚,描述系统内部的结构和行为,从库中选取所需单元来组成系统设计的不同版本,存放各设计模块都能共享的数据类型、常数和子程序,存放已经编译的实体、结构体、包集合和配置,2023/7/8,3,9.1 实体,VHDL实体作为一个设计实体(独立的电路功能结构)的组成部分,其功能是对这个设计实体与外部电路进行接口描述。实体是设计实体的表层设计单元,实体说明部分规定了设计
2、单元的输入输出接口或引脚,它是设计实体对外的一个通信界面。它可以是一个简单的数字电路,也可以是复杂的数字电路,但基本构成是一致的。,例1 对于二选一器件的VHDL描述:,2023/7/8,4,ENTITY mux ISGENERIC(m:TIME:=1ns);PORT(d0,d1,sel:IN BIT);q:OUT BIT);END mux;ARCHITECTURE connect OF mux ISSIGNAL tmp:BIT;BEGINcale:PROCESS(d0,d1,sel)VARIABLE tmp1,tmp2,tmp3:BIT;BEGINtmp1:=d0 AND sel;tmp2:
3、=d1 AND(NOT sel);tmp3:=tmp1 OR tmp2;tmp=tmp3;q=tmp AFTER m;END PROCESS;END connect;,实体名,端口名,方向,实体,进程语句,结构体,2023/7/8,5,一、实体说明,基本结构:ENTITY 实体名 IS类属参数说明;端口说明;END 实体名;,1、类属参数说明必须放在端口说明之前,用于指定参数。如:q=tmp AFTER m;说明tmp建立一个延时值。GENERIC(m:TIME:=1ns);构造体内m的值为1ns。2、端口说明对基本设计实体与外部接口的描述。格式:PORT(端口名:端口模式 数据类型;端口名:
4、端口模式 数据类型名);,2023/7/8,6,端口名赋予外部引脚的名称。如d0,sel,y 等端口方向定义外部引脚是输入还是输出。IN输入OUT输出(构造体内不能再使用)INOUT双向BUFFER输出(构造体内可再使用)LINKAGE不指定方向(无论哪一个方向都可连接),OUT,BUFFER,2023/7/8,7,9.2 结构体,基本结构:ARCHITECTURE 结构体名 OF 实体名 IS定义语句 内部信号、常数、数据类型、函数等;BEGIN并行处理语句;END 结构体名;,通常命名为behavioral(行为),dataflow(数据流),structural(结构),位于ARCHIT
5、ECTURE和BEGIN之间,对信号、常数、数据类型、函数进行定义,位于BEGIN和END之间,描述构造体的行为及连接关系,2023/7/8,8,在HDL设计中,设计者将自上至下分为3个层次:,行为描述,RTL方式描述,逻辑综合,即对整个系统数学模型的描述,一般应用在设计的初始阶段。,即寄存器传输描述(又称数据流描述),采用该描述,导出系统的逻辑表达式,进行逻辑综合。,将程序转换成基本的逻辑文件来描述,相当于人工设计时,生成了原理图。,2023/7/8,9,例:二选一的数据流方式描述:ENTITY mux ISPORT(d0,d1,sel:IN BIT);q:OUT BIT);END mux;
6、ARCHITECTURE dataflow OF mux ISBEGINq=(d0 AND sel)OR(NOT sel AND d1);END dataflow;,并行处理语句,=表示传送或代入,即将逻辑运算结果送q输出。即,2023/7/8,10,9.4 VHDL库库是经编译后的数据的集合,存放包集合定义、实体定义、构造体定义和配置定义。库的说明总是放在设计单元的最前面。格式:LIBRARY 库名;这样,在设计单元内的语句就可以使用库中的数据。库的好处在于使设计者可以共享已经编译过的设计结果。库的种类 VHDL语言中存在的库大致分为5种:,2023/7/8,11,IEEE库,STD库,WO
7、RK库,VITAL库,STD_LOGIC_1164NUMERIC_BITNUMERRIC_STD,STD_LOGIC_ARITH STD_LOGIC_SIGNEDSTD_LOGIC_UNSIGNED,虽没得到IEEE承认,但仍汇集在该库中,是VHDL的标准库,该库中定义了STANDARD和TEXTIO(文件输入/输出程序包)两个程序包。,现行作业库,使用时无需说明,使用VITAL库,可以提高VHDL门级时序模拟的精度,因此只在VHDL仿真器中使用。,2023/7/8,12,库的使用除WORK和STD库之外,其它库使用前先要用两条语句对库进行说明。如:LIBRARY IEEE;USE IEEE.
8、STD_LOGIC_1164.ALL;,库名,包集合名,项目名,表示包集合的所有项目都要用,2023/7/8,9.5 VHDL程序包,常用的预定义的程序包,STD_LOGIC_1164程序包,STD_LOGIC_ARITH程序包,STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包,STANDARD和TEXTIO程序包,13,2023/7/8,14,9.8 数据类型9.8.1 VHDL的预定义数据类型,VHDL的预定义数据类型都在VHDL标准程序包STANDARD中定义的。,1、布尔量 Boolean一个布尔量有两种状态:,逻辑“真”True,逻辑“假”False,2、
9、位 Bit逻辑0或1,通常将值放在单引号中。如BIT(1)等,3、位矢量 Bit_VECTOR用双引号括起来的一组位数据。如“001100”、X“00BB”等。其中X表示十六进制。,2023/7/8,15,BIT,BIT_VECTOR,取值只能为“0”、“1”,取值可能是一组二进制位的值,例:PORT(d0,d1,sel:IN BIT;q:OUT BIT;bus:OUT BIT_VECTOR(7 DOWNTO 0);,都是BIT数据类型,bus是BIT_VECTOR类型,(7 DOWNTO 0)表示该bus端口由B7B0构成,位矢量长度为8位。,2023/7/8,16,9.8.3 其他预定义标
10、准数据类型,1.无符号数据类型(UNSIGNED TYPE),2.有符号数据类型(SIGNED TYPE),十进制的8可以作如下表示:UNSIGNED(1000),两则无符号数据定义的示例:VARIABLE var:UNSIGNED(0 TO 10);SIGNAL sig:UNSIGNED(5 DOWNTO 0);,例如:SIGNED(0101)代表+5,5SIGNED(1011)代表 5,变量var有11位数值,最高位是var(0),信号sig有6位数值,最高位是sig(5),最高位是符号位,2023/7/8,17,9.9 VHDL语言的运算操作符,逻辑运算Logical,关系运算Relational,算术运算Arithmetic,并置运算Concatenation,1、逻辑运算符,NOT(取反)、AND(与)、OR(或)、NAND(与非)、NOR(或非)、XOR(异或)其优先级别NOT最高,见课本P257表9-3。,2、算术运算符,+、-、*、/(加减乘除)、MOD(取模)、REM(取余)、+、-(正负)、*(指数)、ABS(取绝对值),2023/7/8,18,3、关系运算符,=、/=、=注意:关系运算符=和代入符=是相同的,在读VHDL语句时,要根据上下文关系来判断。,4、并置运算符并置运算符&用于位的连接。如将四个位用&连接起来,就可以构成一个具有四位长度的位矢量。,