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