《硬件描述语言》PPT课件.ppt

上传人:小飞机 文档编号:5587817 上传时间:2023-07-31 格式:PPT 页数:65 大小:253KB
返回 下载 相关 举报
《硬件描述语言》PPT课件.ppt_第1页
第1页 / 共65页
《硬件描述语言》PPT课件.ppt_第2页
第2页 / 共65页
《硬件描述语言》PPT课件.ppt_第3页
第3页 / 共65页
《硬件描述语言》PPT课件.ppt_第4页
第4页 / 共65页
《硬件描述语言》PPT课件.ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《《硬件描述语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《硬件描述语言》PPT课件.ppt(65页珍藏版)》请在三一办公上搜索。

1、第三部分 硬件描述语言VHDL,什么是VHDL?,Very high speed integrated Circuit Hardware Description Language(VHDL)是IEEE、工业国际标准硬件描述语言用语言的方式而非图形等方式描述硬件电路容易修改容易保存VHDL支持行为级、寄存器传输级(RTL)和门级三个不同层次的设计,VHDL语言特点,支持多种设计方法和技术与工艺技术独立多层次描述能力VHDL语言标准化、规范化,易于共享和复用,VHDL的功能和标准,VHDL 描述输入端口输出端口电路的行为和功能VHDL有过两个标准:IEEE Std 1076-1987(called

2、 VHDL 1987)IEEE Std 1076-1993(called VHDL 1993),VHDL综合,综合:将电路的高级语言(如行为描述)转化成低级的,可与FPGA/CPLD的基本结构相映射的网表文件或程序 设计过程中的每一步都可称为一个综合环节。(1)从自然语言转换到VHDL语言算法表示,即自然语言综合;(2)从算法表示转换到寄存器传输级(Register Transport Level,RTL),即从行为域到结构域的综合,即行为综合;,VHDL综合,(3)RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合;(4)从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配

3、置网表文件,可称为版图综合或结构综合。有了版图信息就可以把芯片生产出来了。有了对应的配置文件,就可以使对应的FPGA变成具有专门功能的电路器件。,第一章 VHDL基础知识,一个VHDL程序组成:实体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)、库(Library)5个部分一个VHDL程序是对设计单元(设计实体)的描述,数字电子系统,数字单元或芯片,一个简单门电路,VHDL语言把设计单元作为一个设计实体处理;一个设计实体只能唯一地对应一个设计单元,实体 描述设计系统的外部接口信号是VHDL程序的基本单元 实体说明 结构体,一个

4、VHDL程序包括,结构体描述系统的行为、系统数据的流程或系统组织结构形式配置从库中选取所需单元来组成系统设计的不同规格的不同版本,使被设计系统的功能发生变化包集合存放各设计模块能共享的数据类型、常数、子程序,库存放已编译的实体、结构体、包集合、配置。用户自行生成的IP库。是专业EDA公司的重 要任务 PLD、ASIC芯片制造商提供的库。如RAM,ROM控制器,Counter计数器等标准模块,1.1 VHDL程序基本结构,【例1】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE

5、one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE one;,实体,结构体,多路选择器VHDL描述,图5-1 mux21a实体,图5-2 mux21a结构体,2选1多路选择器的VHDL描述,VHDL程序由实体说明和结构体两部分组成,设计实体结构体描述,实体说明描述,功能定义行为描述数据流程系统结构,VHDL程序实体和结构体关系示意图,一个电路系统的程序设计有一个实体说明,可以对应多个结构体,但要求一个独立的VHDL文件只能由一个实体说明和一个结构体组成,统称实体结构体对实体提供该设计的公共信息结构体定义了各个模块内的操作特征,

6、1.实体组织的一般格式,实体组织和设计方法由实体名、类属表、端口表、实体说明部分和实体语句部分组成,ENTITY e_name ISGENERIC(类属表);PORT(端口表);实体说明部分;BEGIN 实体语句部分;END ENTITY e_name;,2、实体说明实体说明:描述一些参数的属性参数的属性说明必须放在端口说明之前实体说明部分是实体接口中的公共信息,应放在端口说明之后在层次化系统设计中,顶层的实体说明可以是整个系统模块或整个单元模块的输入、输出(I/O)描述;在一个器件级的设计中(底层),实体说明可以是一个元件或芯片的输入、输出(I/O)描述;实体说明在VHDL程序设计中描述一个

7、元件或一个模块与设计系统的其余部分(其余元件、模块)之间的连接关系,可以看作是一个电路符号。,3、类属说明,格式GENERIC CONSTANT 端口名:IN子类型标识符:=初始值,例:GENERIC(m:TIME:=3ns)属性说明和端口说明用于设计实体和外部环境通信的对象、通信格式约定和通信通道的大小,4.端口说明,该功能对应于电路图符号的一个引脚实体说明中的每一个I/O信号被称作一个端口,一个端口就是一个数据对象端口说明的组织结构必须有一个名字、一个通信模式和一个数据类型端口模式:说明数据、信号通过该端口的方向,IN,OUT,INOUT,BUFFER,IN定义的通道为单向只读模式,规定数

8、据只能通过该端口被读入实体中OUT规定数据只能通过该端口从实体向外流出,或者说可以将实体中的数据向此端口赋值,INOUT 输入输出双向端口。从端口内部看,可以对此端口进行赋值,也可以通过此端口读入外部的数据信息;而从端口的外部看,信号既可以从此端口流出,也可以向此端口输入信号,如RAM的数据端口。BUFFER功能与INOUT类似,区别:当需要输入数据时,只允许内部回读输出信号,即允许反馈。如计数器设计,可将计数器输出的计数信号回读,以作为下一计数值的初值。该回读信号不是由外部输入,而是由内部产生,向外输出的信号,出入端口的数据或信号的数据类型(TYPES)标准逻辑类型:布尔型、位型、位矢量型、

9、整数型这些标准必须从实体的库中或USE语句中调用,5、实体说明部分,实体说明部分定义的项目是实体接口中的公共信息例ENEITY ram IS PORT(addr:IN bit_Vector(15 DOWNTO 0);Date:OUT bit _Vector(31 DOWNTO 0);Sel:IN bit);TYPE instruction IS ARRAY(1 TO 5)OF Natural;TYPE PROGRAM is array(Natural RANGE)OF IN instruction;USE Work.timing_pkg;PROCEDURE initialization(SIG

10、NAL content:bit_vector(31 DOWNTO 0)IS BEGIN CONTENT1)AFTER some_delay;END PROCEDURE initialization;END ram,1.1.2.结构体结构体具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该实体的数据流程,指派了实体中内部元件的连接关系若把设计实体抽象为一个功能方块图,结构体则描述这个功能方块图的内部实现细节描述结构体功能的方法:行为描述法数据流描述法结构描述法,格式,ARCHITECTURE 结构体名 OF 实体名 IS定义语句BEGIN并行处理语句END结构体命名定义语句对结构体内部

11、使用的信号、常数、数据类型、文件和函数等进行定义,并性处理语句表达结构体内部元件的互连关系语句是并发进行的1.1.3 库用于存放经编译后的设计单元通过其目录可查询和调用VHDL语言中存在的库大体分:IEEE库、STD库、面向ASIC库、WORK库和用户自定义库库和库之间是独立的,不能相互嵌套库说明子句格式:LIBRARY 库名,预定义库,设计库,STD库,STANDARD(隐含说明)TEXTIO(用USE说明),WORK库,资源库,(用LIBRARY 打开),IEEE库,其他库,STD_LOGIC_1164NUMERIC_STDNUMERIC_BITMATHVITAL_TIMINGVITAL_

12、PRIMITIVE,VHDL库和程序包,1.1.4 程序包,为何要定义程序包信号定义、常数定义、数据类型、COMPONENT语句以及子程序等可以在实体说明部分或结构体说明部分加以说明,而且一个实体说明部分对上述的信号、数据类型以及元件等的定义在相应的结构体内是可见的,或者说可以在结构体描述中使用。但是,对其他的实体说明和结构体描述,上述的定义是不可见的,或者说是不可以引用的。为了使一组信号定义、一组数据类型说明或子程序说明等对多个设计实体及相应的结构体都成为可见,VHDL提供了程序包结构,将常用的相关说明(类型说明、常量说明、子程序说明、元件说明、属性说明等)搜集在一起,一旦编译后存入库中通过

13、USE语句调用 组成:程序包说明:为程序包定义接口,说明包中的类型、元件、函数和子程序 程序包体:规定集合包的实际功能,存放说明中的函数和子程序一个程序包说明只能有惟一的一个程序包体与之对应,二者有相同的名字,格式PACKAGE 程序包名 IS说明语句END PACKAGE 程序包名PACKAGE BODY 程序包名 IS说明语句END PACKAGE BODY 程序包名,程序包说明,程序包体,程序包体并非总是必须,但在程序包中包含有子程序说明,则必须有。子程序说明及子程序体不能出现在程序包的说明中,必须放在程序包体内,例1LIREARY IEEE;USE IEEE.STD_LOGIC_116

14、4.ALL;PACKAGE upac IS CONSTANT k:INTEGER:=4;TYPE instruction IS(add,sub,adc,inc,srf,slf,mov);SUBTYPE cpu_bus IS STD_LOGIC_VECTOR(k-1 DOWNTO 0);END upac;,例2:程序包的VHDL程序书写举例PACKAGE example IS CONSTANT pi:REAL:=3.1415926;CONSTANT defer:INTEGER;FUNCTION mean(a,b,c:REAL)RETURN REAL;COMPONENENT and IS GENE

15、RIC(tpd1,tpd2:TIME:=3ns);PORT(in1,in2:IN BIT;y:OUT BIT);END COMPONENENT and;END example;,PACKAGE BODY example IS CONSTANT defer:INTEGER:=5;FUNCTION mean(a,b,c:REAL)RETURN REAL IS BEGIN RETURN(a+b+c)/3.0;END FUNCTION mean;END PACKAGE BODY example要想例2程序包example中的全部内容,包括程序包体的内容全部在自己的设计中可见,利用USE子句访问形式:U

16、SE example.all,1.1.5 配置,描述层与层之间的连接关系和实体与结构之间的连接关系在实体与结构体之间连接关系的配置中,设计者可以利用配置语句为实体选择不同的结构体,通过仿真进行性能对比,从而获得最佳的设计目标。,格式,CONFIGURATION 标识符 OF 实体名 IS配置说明配置指定END,配置说明的格式,FOR 结构体名 FOR 例化标号:元件名 USE ENTITY 实体名结构体_标识符 END FOR;END FOR;,例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY full-sub IS PORT(x,y,cy_in

17、:IN STD_LOGIC;diff,cy_out:OUT STD_LOGIC);END full_sub;ARCHITECTURE structure OF full_sub IS COMPONENT half_sub PORT(in1,in2:IN STD_LOGIC;diff,b_out:OUT STD-LOGIC);END COMPONENT;,COMPONENT or_gate PORT(in1,in2:IN STD_LOGIC:out1:OUT STD_LOGIC);END COMPONENT;SIGNAL a,b,c:STD_LOGIC;BEGIN u1:half_sub POR

18、T MAP(x,y,a,b);u2:half_sub PORT MAP(a,cy_in,diff,c);u3:or_gate PORT MAP(b,c,cy_out);END structure;,CONGIGURATION model OF full_sub IS FOR structure FOR u1,u2:half_sub USE ENTITY work.half_sub(rtl);END FOR;FOR u3:or_gate USE ENTITY work.or_gate(rtl);END FOR;END model;,1.2 VHDL常用资源库中的程序包,STD程序包STANDAR

19、D程序包预先在STD库中编译,该程序包定义了若干类型、子类型和函数,在设计时自动打开TEXTIO程序包文件输入/输出程序包,是一个通用程序包,1.3 VHDL的词法单元,VHDL保留字大写,其它字母则小写VHDL基本词法单元注释“-”符号开始标识符 信号名、进程名等字符 单括号引起来的ASCII字符-、#字符串 双括号引起来的字符序列“A String”位串 双括号引起来的数字序列数字十进制表示法,1.4 数据对象和类型,对象凡是可以被赋予值的客体分四类:常量(CONSTANT)信号(SIGNAL)变量(VARIABLE)文件(FILE),对象说明的格式对象类别 标识符表:子类型标识:=初值;

20、例 SIGNAL reset,clk:STD_LOGIC;VARIABLE x:BIT:=0;,常量,设计者给实体某一个常量名赋予的固定值格式CONSTANT 常量名:数据类型:=表达式;常量名一经赋值,在程序运行中不变注意范围,变量,局部量只用于进程、函数进程和子程序过程格式VARIABLE 变量名:数据类型 约束条件:=表达式例 VARIABLE x:STD_LOGIC:=0;VARIABLE count:INTEGER RANGE 0 TO 255:=10,信号,HDL所特有的一种客体电子电路内部硬件实体相互连接的抽象表示可以看成是实体内部(设计器件内部)的端口全局名使用和定义范围是实体

21、结构体和程序包在进程和子程序的顺序语句中不允许定义变量在进程中只能将信号列入敏感表,而不能将变量列入格式SIGNAL 信号名:数据类型 约束条件:=表达式,文件,传输大量数据的客体包含一些专门数据类型的数值仿真测试是,测试的输入激励和仿真结果都要用文件来进行,VHDL语言的数据类型,VHDL语音程序,不同的数据类型不能直接代入,相同的类型,位长不同也不能代入EDA工具在编译、综合时回报告类型出错标准数据类型整型(INTEGER)-(231-1)至(231-1)实型(REAL)-1.0E+38 至+1.0E+38位(BIT)通常表示一个信号的值如:TYPE BIT IS(0,1);,位矢量(BI

22、T_VECTOR)布尔量(BOOLEAN)字符(CHARACTER)VHDL语言中编程时用单括号引起来的 a、A 时间类型(TIME)(又称物理类型)范围同整型从-(231-1)至(231-1)一般用于仿真,而不用于逻辑综合,错误等级(SEVERITY LEVEL)常用于表示电子系统的工作状态分NOTE,WARAING,ERROR,FAILURE即注意、警告、错误、失败常用来在仿真时给开发者提供电子系统的工作情况自然数(NATURAL)、正整数(POSTIVE)字符串(STRING)数位字符串 X“BFC”文字字符串“STRING”一般用于程序的提示、结果的说明等场合,用户自定义的数据类型是用

23、类型定义语句TYPE和子类型定义语句SUBTYPE实现的格式:TYPE 数据类型名 数据类型定义;或 TYPE 数据类型名 IS 数据类型定义OF 基本数据类型枚举类型(ENUMERATED):用文字符号来表示每一组实际的二进制数综合器在编码过程中将自动将每一枚举元素变成位矢量,位矢量的长度根据实际情况决定例 TYPE instruction IS(add,sub,adc,inc,srf,slf);,用户自定义的数据类型,整型(INTEGER)实型(REAL)在VHDL语言标准中已定义,而用户再定义是因为出自设计者的特殊用途格式 TYPE 数据类型名 IS 数据类型定义范围 约束范围数组(AR

24、RAY)将相同类型的数据集合在一起所形成的一个新的数据类型,格式TYPE IS 数据类型名 ARRAY(INTEGER 0 TO 9)OF STD_LOGIC;存取类型(ACCESS)为在客体之间建立联系,或者给新对象分配或释放存储空间仅有变量才可定义为存取类型TYPE line IS ACCESS string;-类型为LINE 的变量,它的值是指向字符串值的指针,文件类型(FILE)在系统环境中定为代表文件义一类客体文件的值是系统文件中值的序列格式 TYPE 文件类型名 IS FILE 限制;例 TYPE text IS FILE OF string;TYPE input_type IS

25、FILE OF character;,记录类型(RECORD)由同一类型的数据组织在一起而形成的新的数据类型叫数组,而由不类型的数据组织在一起而形成的新的数据类型叫记录记录适用于仿真格式 TYPE 数据类型 IS RECORD 元素名:数据类型名;元素名:数据类型名;.END RECORD,时间类型(TIME)VHDL语言标准中已定义,而用户再定义是因为出自设计者的特殊用途,定义特殊的时间量,用户定义的子类型,用户对已定义的数据类型,作一些范围限制而形成一种新的数据类型满足原数据类型的所有约束条件,原数据类型称基本数据类型用户定义的数据类型和子类型,数据对象间的赋值可以直接进行,不必进行数据格

26、式的转换格式 SUBTYPE 子类型名 IS 数据类型名范围,数据类型的转换,对某一数据类型的变量、信号、常量、文件赋值时,类型一定要一致。三种数据转换方法类型标记法、函数转换法和常数转换法,类型标记法,类型标记就是类型的名称适合于关系密切的标量类型之间的类型转换,即整数和实数的类型转换例若 VARIABLE i:INTEGER;VARIABLE r:REAL;则有:i:=integer(r)r:=real(i),函数转换法,例SIGNAL a:BIT_VECTOR(11 DOWNTO 0);SIGNAL b:STD_LOGIC_VECTOR(11 DOWNTO 0);A=X”A8”;B=to

27、_std_logic_vector(X”AFC”);B=to_std_logic_vector(B”1010-0000-1111”);,常数转换法,例CONSTANT typeconv_con:typeconv_type:=(0 l L=0,1 l H=1,others=0);SIGNAL b:BIT;SIGNAL s:STD_LOGIC;BEGIN b=TYPECONV_CON(s);END;,IEEE标准数据类型“STD_LOGIC”和“STD_LOGIC_VECTOR”,标准逻辑位数据类型STD_LOGIC,BIT数据类型定义:TYPE BIT IS(0,1);,STD_LOGIC数据类

28、型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);,STD_LOGIC所定义的9种数据的含义是:U表示未初始化的;X表示强未知的;0表示强逻辑0;1表示强逻辑1;Z表示高阻态;W 表示弱未知的;L表示弱逻辑0;H表示弱逻辑1;-表示忽略。,“BIT_VECTOR”和“STD_LOGIC_VECTOR”都是位矢量“STD_LOGIC_VECTOR”只能表示二进制数“BIT_VECTOR”的值可以是二进制八进制和十六进制,可以用“_”来分隔数据位,1.5 表达式与运算符,表达式由基本元素通过运算符的连接基本元素:对象、文字、函数调用、括号运算符:逻辑运算符、关系运算符、算术运算符、并置运算符并置运算符位的联接形成位矢量,例Data_c=D0-并置符联接若有一位矢量 SIGNAL A STD_LOGIC_VECTOR(0 TO 3)则Data_E=A&Data_c为一个八位的位矢量,VHDL的运算符及优先级,优先级顺序 从高到低,NOT、ABS、*、REM(取余)、MOD、/、*、+(正)、-(负)、&、+、-、=、/=(不等于)、=、XOR、NOR、NAND、OR、AND,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号