VHDL第一章课件.ppt
VHDL语言讲授严宇总学时64学时(上机实验32学时)联系方式考试方式考试方式(说明,成绩评定方法)成绩评定由期末考试、期中考试、作业和平时考勤构成。期末考试占期末考试占50%,上机实验,上机实验20%,作业和平时考勤占,作业和平时考勤占30%。课外自学要求课外自学要求(包含作业要求)本课程理论性较强,应按时完成老师布置的作业。课外要求大家预习和复习巩固。1第1章 VHDL语言基础1.1 VHDL基本概念基本概念1.2 VHDL程序实体程序实体1.3 VHDL程序结构体程序结构体21.1 VHDL基本概念u1.1.1 硬件描述语言硬件描述语言u1.1.2 VHDL程序的实体程序的实体u1.1.3 VHDL程序的结构体程序的结构体31.1.1 硬件描述语言硬件描述语言(Hardware Description Language,HDL):即可以描述硬件电路的功能、信号连接关系及即可以描述硬件电路的功能、信号连接关系及定时关系的一种语言。目前,定时关系的一种语言。目前,VHDL和和Verilog已先后成为已先后成为IEEE标准硬件描述语言。标准硬件描述语言。硬件描述语言(硬件描述语言(HDL)的特点:)的特点:可以借鉴高级编程语言的功能特性对硬件电路可以借鉴高级编程语言的功能特性对硬件电路的行为和结构进行高度抽象化和规范化的描述;的行为和结构进行高度抽象化和规范化的描述;同时,还可以对硬件电路的设计进行不同层次、同时,还可以对硬件电路的设计进行不同层次、不同领域的模拟验证和综合优化等处理,从而使不同领域的模拟验证和综合优化等处理,从而使硬件电路的设计达到高度自动化。硬件电路的设计达到高度自动化。4 硬件描述语言硬件描述语言 VHDL:VHDL 的英文全名是的英文全名是VHSIC(Very High Speed Integrated Circuits)Hardware Description Language,即超高速集成电即超高速集成电路硬件描述语言。路硬件描述语言。于于1983年由美国国防部提出,由年由美国国防部提出,由IEEE进一步进一步发展,并在发展,并在1987年年12月作为月作为IEEE-STD-1076 标准发布,标准发布,1993年被更新为年被更新为IEEE-STD-1164 标准,目前已被广泛应用。标准,目前已被广泛应用。1995年年 我国技术监督局制定的我国技术监督局制定的CAD通用技术规范通用技术规范推荐推荐VHDL作为我国电子设计自动化硬件描述语言的国家标准。至此,作为我国电子设计自动化硬件描述语言的国家标准。至此,VHDL在我国迅速普及,现在已成为从事硬件电路设计开发人员在我国迅速普及,现在已成为从事硬件电路设计开发人员所所必须掌握必须掌握 的一门的一门 技术。技术。51.1.2 HDL语言的种类 Verilog HDL Verilog HDL于1983年由Gate Way Design Automatic公司的Phil Moorby首创。他在19841985年间成功设计了Verilog-XL仿真器,于1986年提出了快速门级仿真的XL算法,使Verilog HDL语言变得更加丰富和完善,从而受到了EDA工具设计公司的青睐。1989年Candence公司购买了GDA公司,Verilog HDL语言从此变为Candence公司的“财产”,成为该公司的EDA设计环境上的硬件描述语言。经过该公司的努力,Verilog HDL于于1995年成为年成为IEEE标准标准,即Verilog HDL 1364-1995。6BLM Menter Graphics公司是一家著名的EAD工具开发公司,它的EDA设计工具在综合、仿真、验证等方面都有独到之处。Menter公司的硬件描述语言BLM由PASCAL语言发展而来。BLM硬件描述语言还未成为IEEE标准。AHDL语言具有C语言设计风格,好学好用,再加上ALTERA公司的大力推广,使它得到了众多用户的使用。只有只有VHDL语言和语言和Verilog-HDL语言成为语言成为IEEE 标准标准语言。语言。71.2 VHDL程序的实体程序的实体1.2.1 VHDL程序程序基本结构基本结构例例1 一个一个2输入的与门的逻辑描述输入的与门的逻辑描述LIBRARY ieee;-库说明语句库说明语句USE ieee.std_logic_1164.ALL;-程序包说明语句程序包说明语句ENTITY and2 ISPORT(a,b:IN STD_LOGIC;y :OUT STD_LOGIC);END and2;ARCHITECTURE and2x OF and2 ISBEGINy=a AND b;END and2x;实体部分实体部分结构体部分结构体部分8VHDL设计文件的两个基本组成部分实体实体(Entity)结构体结构体(Architecture)配置配置(Configuration)包集合包集合(Package)库库(Library)一个完整的一个完整的VHDL程序程序库库 用于存放已编译的实体、结构体、包集合和配置l1.2.1 VHDL程序程序基本结构基本结构实体部分实体部分描述设计系统的外部接口信号(即输入/输出信号)结构体结构体用于描述系统的内部电路配置配置用于从库中选取所需元件安装到设计单元的实体中包集合包集合存放各设计模块能共享的数据类型、常数、子程序等9一个电路系统的程序设计只只有有一一个个实实体体,可以有多个结构体多个结构体。一个设计实体至少包含一个结构体或多个结构体,构成一个电子系统。101.2.2 实体的组成(实体的组成(ENTITY)实体的一般格式为实体的一般格式为:ENTITY 实体名实体名 IS类属参数说明类属参数说明;端口说明端口说明;END;ENTITY、IS、END是是VHDL的关键字(保留字)。的关键字(保留字)。实体中的每一个实体中的每一个I/O信号被称为信号被称为端口端口,其功能对应于电路,其功能对应于电路 图图符号的一个引脚。符号的一个引脚。端口说明端口说明则是对一个实体的一组端口的定义,则是对一个实体的一组端口的定义,即对基本设计实体与外部接口的描述。端口是设计实体和外部即对基本设计实体与外部接口的描述。端口是设计实体和外部环境动态通信的通道。环境动态通信的通道。ayand2b类属参数说明是可选部分。如果需要,可使用以类属参数说明是可选部分。如果需要,可使用以“GENERIC”语句来指定该设计单元的类属参数(如延时、功耗等)。语句来指定该设计单元的类属参数(如延时、功耗等)。实体名实体名、端口名等均应为端口名等均应为符合符合VHDL命名规则命名规则 的标识符。的标识符。11例例1-21-2:八位加法器实体说明程序八位加法器实体说明程序ENTITY add8 IS PORT(a,b:IN STD_LOGIC_VECTOR(7 downto 0);Ci:IN STD_LOGIC;Sum:OUT STD_LOGIC_VECTOR(7 downto 0);Co:OUT STD_LOGIC);END add8;由实体说明画出八位加法器由实体说明画出八位加法器add8的电路图如下所示。的电路图如下所示。add8a7.0b7.0Sum7.0CiCo12类属参数说明的格式为:类属参数说明的格式为:GENERIC(名字表(名字表,名字表,名字表:IN 子类型子类型:=初始值初始值 ;名字表;名字表,名字表,名字表:IN 子类型子类型:=初始值初始值););例例:GENETRIC(m:TIME:3ns)这这个个参参数数说说明明是是指指在在VHDL程程序序中中,构构造造体体内内的的参参数数m的的值值为为3ns。类属说明和端口说明是实体说明的前半部分。类属说明和端口说明是实体说明的前半部分。类类属属说说明明用用于于设设计计实实体体和和外外部部环环境境通通信信的的对对象象、通通信信格格式式约约定和通信通道的大小。定和通信通道的大小。参参数数的的类类属属设设计计为为设设计计实实体体和和外外部部环环境境通通信信的的静静态态信信息息提提供供通通道道。参参数数的的类类属属用用来来规规定定端端口口的的大大小小、I/O引引脚脚的的指指派派、实体中子元件的数目和实体的定时特性。实体中子元件的数目和实体的定时特性。1.2.3 类属参数说明13例例2:加入类属说明的:加入类属说明的2输入的与门的逻辑描述输入的与门的逻辑描述ENTITY and2 ISGENERIC(rise,fall:time);PORT(a,b:IN STD_LOGIC;y :OUT STD_LOGIC);END and2;ARCHITECTURE and2x OF and2 ISSIGNAL u:BIT;BEGINu=a AND b;y=u after(rise)when u=1 else u after(fall);END and2x;141.2.4 端口说明 端口说明是对基本设设计计实实体体与与外外部部接接口口的描述,是设计实体和外部环境动态通信的通道,其功能对应于电路图符号的一个引脚。功能对应于电路图符号的一个引脚。实体说明中的每一个I/O信号被称为一个端口,一个端口就是一个数据对象。端口可以被赋值,也可以当作变量用在逻辑表达式中。定义于一个实体的一组端口称作端口说明(Port Declaration)。15端口说明的一般格式为:端口说明的一般格式为:PORT(端口名端口名,端口名,端口名:端口模式:端口模式 数据类型;数据类型;端口名端口名,端口名,端口名:端口模式:端口模式 数据类型);数据类型);端口名端口名是赋于每个外部引脚的名字,名字的含义要与惯例接轨,如D开头的端口名表示数据,A开头的端口名表示地址等。端口名通常用几个英文字母或一个英文字母加数字表示。下面是合法的端口名:CLK,RESET,A0,D3PORT(a,b:IN STD_LOGIC;y :OUT STD_LOGIC);16端口模式端口模式用来说明数据传输通过该端口的方向。端口模式有以下几类:用来说明数据传输通过该端口的方向。端口模式有以下几类:IN(输输入入):仅仅允允许许数数据据流流进进入入端端口口。主主要要用用于于时时钟钟输输入入、控控制制输输入入、单向数据输入。单向数据输入。OUT(输输出出):仅仅允允许许数数据据流流由由实实体体内内部部流流出出端端口口。该该模模式式通通常常用用于于终终端计数一类的输出,不能用于反馈。端计数一类的输出,不能用于反馈。17 BUFFER(缓冲):缓冲):该模式该模式允许数据流出该实体和作为允许数据流出该实体和作为内部反馈时用,可以从端口内部反馈时用,可以从端口回读输出值至实体,不可以回读输出值至实体,不可以从外部输入至实体,不允许从外部输入至实体,不允许作为双向端口使用。作为双向端口使用。INOUT(双双向向):可可以以允允许许数数据据流流入入或或流流出出该该实实体体。该模式也允许用于内部反馈。该模式也允许用于内部反馈。如如果果端端口口模模式式没没有有指指定定,则则该该端端口口处处于于缺缺省省模模式式为为:IN。entityenentityQD181.2.5 数据类型(TYPES)端口说明除了定义端口标识名称、端口定义外,还要标明出入端口的数据类型。VHDL语言的IEEE1706/93标准规定的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-vector)和整数型(Integer)等。由IEEE std_logic_1164所约定的、由EDA工具支持的数据类型为标准逻辑(Standard Logic)类型。标准逻辑类型也分为布尔型、位型、位矢量型和整数型。为了使EDA工具的仿真、综合软件能够处理这些逻辑类型,这些标准必须从实体的库中或USE语句中调用。191.2.6 实体说明部分由实体说明的一般书写格式知道,含有实体说明部分的组织应放在端口说明下边,说明部分定义的项目是实体接口中的公共信息。20含有实体语句部分的实体USE wrokMy_pkg.all-设设my-pkg对该设计实体可见对该设计实体可见Entity Latch IS Port(dx IN:word -端口说明部分端口说明部分 dy OUT:word Load,clk:IN bit);CONSTANT setup:time:12ns;Use work.timing_pkg.all;-设设my-pkg包括包括chick timing过程过程 BEGIN Check timing(setup,dxin,load,clk);END Latch;211.3 VHDL程序的结构体结构体(Architecture)具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指派了实体中内部元件的连接关系。22结构体的一般格式如下:结构体的一般格式如下:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS结构体说明部分结构体说明部分;BEGIN并行处理语句并行处理语句;END 结构体名;结构体名;结构体说明是指对结构体需要使用的信号、常数、数据类结构体说明是指对结构体需要使用的信号、常数、数据类 型和函数进行型和函数进行定义和说明。定义和说明。并行处理语句位于并行处理语句位于BEGIN和和END之间,这些语句具体地描述了构造体的行之间,这些语句具体地描述了构造体的行为。为。并行处理语句是功能描述的核心部分,也是变化最丰富的部并行处理语句是功能描述的核心部分,也是变化最丰富的部分分。并行处理语句可以使用赋值语句、进程语句、元件例化语句、块语句以并行处理语句可以使用赋值语句、进程语句、元件例化语句、块语句以及子程序等。及子程序等。需要注意的是需要注意的是,这些语句都是并发(同时)执行的,与排列顺序,这些语句都是并发(同时)执行的,与排列顺序无关。无关。231.3.1 结构体命名结构体名称由设计者自由命名,是结构体的唯一名称。OF后面的实体名称表明该结构体属于哪个设计实体,有些设计实体中可能含有多个结构体。这些结构体的命名可以从不同侧面反映结构体的特色,让人一目了然。例如:ARCHITECTURE behacvioral OF mux IS用结构体行为命名ARCHITECTURE dataflow OF mux IS 用结构体数据流命名ARCHITECTURE structural OF mux IS 用结构体组织结构命名ARCHITECTURE bool OF mux IS 用结构体的数学表达方式命名ARCHITECTURE latch OF mux IS 用结构体的功能来命名24习 题1什么是VHDL?简述VHDL的发展史。2简述VHDL设计实体的结构。25