已阅读5页,还剩155页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/5/2,1,第三章,硬件描述语言VHDL基础,2,2019/5/2,章节目录,3.1 硬件描述语言概述 3.2 VHDL语言程序结构 3.3 VHDL常用语句 3.4 VHDL语法基础 3.5 组合电路的VHDL描述 3.6 时序电路的VHDL描述,调换,3,2019/5/2,3.1 硬件描述语言概述,可编程逻辑器件、电子设计自动化(EDA)与硬件描述语言,可编程逻辑器件是一种功能可变的集成器件,可通过编程的方法设计其完成不同的逻辑功能,设计需借助软件工具,即采用电子设计自动化的方式,设计形式有原理图和硬件描述语言两种,硬件描述语言是用来描述数字电路系统的一种语言,4,2019/5/2,3.1 硬件描述语言概述,目前常用的硬件描述语言有两种,VHDL,Verilog HDL,Very High Speed Integrated Circuit Hardware Description Language 超高速集成电路硬件描述语言,Verilog Hardware Description Language Verilog硬件描述语言,VHDL语言发展较早,从使用者数量来看,目前两种语言平分秋色,VHDL语言更严谨、更适合设计大型数字系统。两种语言相似的地方很多,学会一种可自学另一种。,5,2019/5/2,3.1 硬件描述语言概述,VHDL语言的IEEE标准 VHDL IEEE 1076-1987 VHDL IEEE 1076-1993,早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行VHDL的开发 1987年,由IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师协会 )将VHDL制定为标准,称为IEEE1076-1987 1993年制定了第二个IEEE标准版本,称为IEEE1076-1993,增加了一些新的命令和属性,6,2019/5/2,章节目录,3.1 硬件描述语言概述 3.2 VHDL语言程序结构 3.4 VHDL语法基础 3.3 VHDL常用语句 3.5 组合电路的VHDL描述 3.6 时序电路的VHDL描述,7,2019/5/2,3.2 VHDL语言程序结构,五个基本组成部分,库(Library) 程序包(Package),实体说明(Entity Declaration),结构体(Archiecture),配置(Configuration),主要部分,注意: 程序扩展名为.vhd,8,2019/5/2,3.2 VHDL语言程序结构,【例3-1】2选1数据选择器的VHDL语言描述,功能:2选1数据选择器,Sel=0时,f=d0; Sel=1时,f=d1;,9,2019/5/2,- 2 to 1 mux VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;,库 程序包,实体说明,VHDL语言程序,注释,3.2 VHDL语言程序结构,10,2019/5/2,ARCHITECTURE structure OF mux IS SIGNAL temp: STD_LOGIC; -内部信号 BEGIN p0:PROCESS(d0,d1,sel) -进程 VARIABLE temp1,temp2,temp3: STD_LOGIC; BEGIN -进程内的局部变量 temp1:=d0 AND(NOT sel);-变量间的逻辑关系 temp2:=d1 AND sel; temp3:=temp1 OR temp2; temp=temp3; f=temp; END PROCESS p0; -进程结束 END structure; -结构体结束,结构体,3.2 VHDL语言程序结构,11,2019/5/2,EDA工具软件QuartusII综合出来的电路,3.2 VHDL语言程序结构,12,2019/5/2,3.2 VHDL语言程序结构,1行是注释,用 “-”引头 23行是库说明部分,打开库及库中的程序包 47行是实体说明部分,描述电路的端口信号 8最后是结构体部分,描述电路的逻辑功能 VHDL语言不区分大小写,为阅读方便,关键字用大写,用户自定义部分用小写。,说明,13,2019/5/2,三方面内容,3.2.1 实体说明 3.2.2 结构体 3.2.3 程序包、库及配置,3.2 VHDL语言程序结构,14,2019/5/2,3.2.1 实体说明,【格式】,ENTITY IS,GENERIC (类属说明);,PORT (端口说明);,实体语句部分;,END ENTITY ;,主要部分,表示必选项, 表示可选项,【主要功能】说明电路的名字、输入输出信号。,15,2019/5/2,3.2.1 实体说明,【例】4位纹波加法器的实体说明。,ENTITY adder_ripple IS,GENERIC (m: TIME :=5ns);,PORT (a, b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout: OUT STD_LOGIC);,END adder_ripple;,16,2019/5/2,3.2.1 实体说明,实体名由用户自定义,必须和主文件名一致 必须以ENTITY IS开始,以END 结束 在端口说明部分说明输入输出信号的情况 在类属说明部分说明类属常数的情况,通常电路中的常数可在设计实体的内部进行赋值,且一旦赋值就不能再改变。 如果电路中某个常数值需要在实体外部进行修改,则在实体说明部分的类属说明中加以说明,这样的常数可称为类属常数,以与普通常数区别。,VHDL语言程序的扩展名是vhd,即*.vhd。,说明:,17,2019/5/2,3.2.1 实体说明,1.类属说明语句,GENERIC (m: TIME :=5ns);,【格式】,GENERIC (常数名: 数据类型 :=设定值; 常数名: 数据类型 :=设定值);,【功能】说明类属常数的名字,数据类型,设定值。,【例】,18,2019/5/2,3.2.1 实体说明,2.端口说明语句,【格式】,PORT (端口名,端口名: 模式 数据类型; 端口名,端口名: 模式 数据类型);,PORT (a,b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout: OUT STD_LOGIC);,【功能】 说明输入输出信号的名字,输入输出模式,数据类型。,【例】,19,2019/5/2,3.2.1 实体说明,端口名是输入输出信号的名字。 模式是指输入输出信号的方向。 数据类型是指输入输出信号的取值类型。,表3-1端口方向说明,BIT BIT_VECTOR STD_LOGIC INTEGER BOOLEAN STD_LOGIC_VECTOR,常用数据类型,数据类型在3.4节详细介绍,说明:,20,2019/5/2,3.2.2 结构体,【格式】,ARCHITECTURE OF IS 定义语句; BEGIN END ;,【功能】描述电路的具体结构、功能。,主要部分,21,2019/5/2,3.2.2 结构体,ARCHITECTURE是关键字。 结构体名可随意起,实体名必须和实体说明中的实体名一致。 定义语句是指对内部信号、变量等的说明。 并行处理语句部分是结构体的主要部分,描述电路的结构、功能等。 BEGIN后开始结构和功能的描述。,说明:,22,2019/5/2,3.2.2 结构体,【例3-2】一个RS触发器的结构体(数据流描述方式),该电路中并行语句部分使用的是并行信号赋值语句,描述了两个与非门的连接关系。,23,2019/5/2,3.2.2 结构体,【例3-3】一个RS触发器的结构体(结构描述方式),本例是RS触发器的另一种描述方式,并行处理语句采用的是元件例化语句,后面3.3.1介绍。,24,2019/5/2,3.2.2 结构体,【例3-4】一个全加器的VHDL程序(数据流描述方式),本例结构体中的并行处理部分采用的也是并发信号赋值语句。描述了两个异或门和一个与或门。 本例中的类属说明语句说明了一个时间常数tpd是5ns,后面的赋值语句使用了该延时参数。,25,2019/5/2,3.2.2 结构体,3种常用的子结构描述方式,进程语句结构 块语句结构 子程序语句结构,主要讲解,26,2019/5/2,3.2.2 结构体,进程(PROCESS)语句结构,【格式】,进程标号: PROCESS 敏感信号表 IS 进程语句说明部分; BEGIN END PROCESS 进程标号;,27,2019/5/2,3.2.2 结构体,【例3-7】带敏感信号表的进程语句实例。,28,2019/5/2,3.2.3 包集合、库及配置,1. 包集合(Package),包集合中存放供多个实体公用的数据类型、常量、子程序。 包集合又存放在库中。 一般情况下,要使用某个包集合中的资源时,必须对该包集合进行使用说明。 一般情况下,要使用某个库中的包集合时,也必须对该库进行说明。,【格式】,LIBRARY ; USE ,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL,【例】,29,2019/5/2,3.2.3 包集合、库及配置,VHDL提供的标准包集合: STANDARD STD_LOGIC_1164,STANDARD包中定义了若干数据类型、子类型、函数;该包已预先在STD库中编译好,并且自动与所有模型连接,使用时无须说明; STD_LOGIC_1164包中也定义了若干数据类型和函数; 该包已预先在IEEE库中编译好,但是在使用时须加以使用说明;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;,在STD 库中,在IEEE库中,用时不须说明,用时须说明,30,2019/5/2,3.2.3 包集合、库及配置,常用的数据类型(整数、实数、BIT、BIT_VECTOR、布尔量、字符、字符串、物理型、错误等级、自然数和正整数)均在STANDARD程序包中,常用的数据类型(STD_LOGIC、STD_LOGIC_VECTOR)在STD_LOGIC_1164程序包中,31,2019/5/2,3.2.3 包集合、库及配置,【包集合结构格式】,PACKAGE IS 说明语句; END 包集合名;,PACKAGE BODY IS 说明语句; END 包集合名;,包首,包体,用户可自定义包集合。,32,2019/5/2,3.2.3 包集合、库及配置,【例3-10】自定义包集合的例子。,-包集合说明(包首) PACKAGE example IS TYPE alu_op IS (add,sub,mul,div,eq,gt,lt); CONSTANT pi: REAL :=3.1415926; delay1:TIME; COMPONENT nand2 PORT (a,b: IN BIT; c:OUT BIT); END COMPONENT; FUNCTION mean(a,b,c:REAL) RETURN REAL; END example;,说明了一个枚举类型的数据alu_op,两个常数pi、delay1,一个元件nand2,一个函数mean,33,2019/5/2,3.2.3 包集合、库及配置,-包集合体 PACKAGE BODY example IS CONSTANT delay1:TIME=15ns; FUNCTION mean(a,b,c:REAL) RETURN REAL; BEGIN RETURN(a+b+c)/3.0; END mean; END example;,包集合体中具体说明了时间常数delay1的值、 函数mean的功能,34,2019/5/2,3.2.3 包集合、库及配置,USE WORK. example. ALL;,自定义的包集合存放在WORK库中。 自定义的包集合在使用时也必须进行使用说明。,【例】,35,2019/5/2,3.2.3 包集合、库及配置,2. 库(Library),【格式】,库中存放已编译过的设计单元(如实体、程序包等); 库中内容可以用作其它VHDL描述的资源。 使用库时需要说明。,LIBRARY ;,5种库,IEEE STD ASIC WORK 用户定义库,LIBRARY IEEE;,【例】,36,2019/5/2,3.2.3 包集合、库及配置,IEEE STD_LOGIC_1164 NUMERIC_BIT NUMERIC_STD STD_LOGIC_ARITH STD_LOGIC_SIGNED STD_LOGIC_UNSIGNED STD STANDARD TEXTIO VATIL(面向ASIC的库) VATIL_TIMING VATIL_PRIMITIVE WORK(现行工作库) 用户定义库,无须说明,不但要说明库,还要说明库中的程序包。,例: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL,最常用,例: LIBRARY STD; USE STD._STANDARD.ALL;,37,2019/5/2,3.2.3 包集合、库及配置,3. 配置语句(Configration),【格式】,CONFIGURATION OF 实体名 IS 说明语句; END 配置名;,配置语句描述层与层之间的连接关系,以及实体与结构体之间的连接关系; 可利用配置语句来选择不同的结构体,使其与要设计的实体相对应。,【例】,CONFIGURATION confr OF rsff IS FOR rs_behav; END FOR; END confr ;,38,2019/5/2,章节目录,3.1 硬件描述语言概述 3.2 VHDL语言程序结构 3.4 VHDL语法基础 3.3 VHDL常用语句 3.5 组合电路的VHDL描述 3.6 时序电路的VHDL描述,39,2019/5/2,3.4 VHDL语法基础,3.4.1 标识符和保留字 3.4.2 数据对象 3.4.3 数据类型 3.4.4 数据类型的转换 3.4.5 运算操作符,五方面内容,40,2019/5/2,3.4.1 标识符和保留字,规则: 由字母数字下划线组成 必须以英文字母开头 最后一个字符不能是下划线 不允许出现连续两个下划线 保留字不能作一般的标识符 不区别大小写,1. 标识符,即由用户起的实体名、结构体名、信号名、变量名,41,2019/5/2,3.4.1 标识符和保留字,2. 保留字,表3-3 常用保留字,见P.109,保留字即VHDL语言中已使用的关键字。 保留字不能用作标识符。,42,2019/5/2,3.4.2 数据对象,对象有四种类型:,常数 信号 变量 文件,最常用,VHDL93标准新加的,43,2019/5/2,3.4.2 数据对象,1. 常数,CONSTANT 常数名 : 数据类型 := 表达式 ;,【常数声明格式】,使用前必须声明,CONSTANT toler : DISTANCE := 1.5 nm; CONSTANT pi : REAL := 3.141592 ; CONSTANT cycle_time : TIME := 100 ns; CONSTANT Propagation_Delay : DELAY_LENGTH;,【例】,常数值,44,2019/5/2,3.4.2 数据对象,2. 变量,VARIABLE 变量名 : 数据类型 约束条件 := 表达式 ;,【变量声明格式】,使用前必须声明,【例】,VARIABLE result:STD_LOGIC :=0; VARIABLE x, y, z:INTEGER; VARIABLE count:INTEGER RANGE 0 TO 255 :=10;,初始值,声明时可带初始值,约束条件,45,2019/5/2,3.4.2 数据对象,【变量赋值格式】,变量名 :=表达式;,【例】,result := 1; x :=y+3;,注意赋值符号 := 表达式的数据类型和变量的类型必须一致。 表达式可以是运算表达式也可以是具体数值。,46,2019/5/2,3.4.2 数据对象,3. 信号,SIGNAL 信号名 :数据类型 约束条件 := 表达式 ;,【信号声明格式】,使用前必须声明,【例】,SIGNAL first_sig: INTEGER; SIGNAL sys_clk:BIT :=0; SIGNAL second_fig, third_sig:INTEGER :=10; SIGNAL s:INTEGER RANGE 0 TO 20 :=15;,初值,声明时可带初始值,约束条件,47,2019/5/2,3.4.2 数据对象,【信号赋值格式】,信号名 =表达式;,【例】,a = b AFTER 10ns; a = expression_b; a = expression_b AFTER 10ns;,注意信号说明中的赋初值符号是 :=,而信号赋值语句中的赋值符号为=。 表达式的数据类型和信号的类型必须一致。 表达式可以是运算表达式也可以是具体数值。 信号赋值可以添加延时信息。,48,2019/5/2,3.4.2 数据对象,变量是局部的,信号是全局的; 变量只能用在进程内,信号没有此限制。若变量用于进程之外,必须将该变量先赋给一个相同类型的信号,用信号在进程之间传递数据。 信号可以延迟,变量不能。 变量不能用于硬件连线,常用在高层次建模的计算中。信号可视为实际硬件系统中连线的抽象。 进程对信号敏感而对变量不敏感。 赋值符号不一样;,信号和变量的区别,49,2019/5/2,3.4.3 数据类型,Scalar types 标量型 Composite 复合型 Access 存取型 File 文件型 Protected 保护型,5种类型,每一种中又有若干子类型和具体数据类型。,50,2019/5/2,3.4.3 数据类型,已经在标准数据包STANDARD和STD_LOGIC_1164中定义好的常用的数据类型如下:,整数、实数、BIT、BIT_VECTOR、布尔量、 字符、字符串、物理型、错误等级、自然数和正整数,本节介绍以上数据类型的特点。,STD_LOGIC、 STD_LOGIC_VECTOR,STANDARD,STD_LOGIC_1164,51,2019/5/2,3.4.3 数据类型,整数(INTEGER) (属于:标量型整数型,在STANDARD程序包中 ),整数的表示范围为- (231-1) (231-1)。,【例】,VARIABLE a:INTEGER :=15;,SIGNAL s:INTEGER RANGE 0 TO 20 :=15;,INTEGER型数据值不用引号括起来,52,2019/5/2,3.4.3 数据类型,2. 实数(REAL) (属于:标量型浮点型, 在STANDARD程序包中 ),实数的表示范围为- 1.0E38 +1.0E38。,实数的书写方式举例: 1.0 666.666 36.5e-4,某些数即可以用整数表示,也可以用实数表示,如1.0是实数,1是整数,两者数值相同但类型不同。,REAL型数据值不用引号括起来,53,2019/5/2,3.4.3 数据类型,3. BIT(属于:标量型枚举型),和 BIT_VECTOR(属于:复合型数组型),在STANDARD程序包中,BIT又称位型,其值仅有2个,0 和1;,BIT_VECTOR又称位矢量,是BIT的数组。,例:,BIT型数值要用单引号括起来, BIT_VECTOR型数值要用双引号括起来。,SIGNAL a : BIT; SIGNAL Low_byte : BIT_VECTOR (0 to 7) ; a = 1; Low_byte = “00000101”;,54,2019/5/2,3.4.3 数据类型,4. 布尔型(BOOLEAN) (属于:标量型枚举型,在STANDARD程序包中),BOOLEAN的值仅有2个,TRUE 和FALSE。,55,2019/5/2,3.4.3 数据类型,5. STD_LOGIC,和 STD_LOGIC_VECTOR,在STD_LOGIC_1164程序包中,STD_LOGIC又称标准逻辑变量,其值有9个,U,X,0,1,Z,W,L,H,-。常用的是0,1,Z。 STD_LOGIC_VECTOR称标准逻辑向量,是STD_LOGIC的数组。,STD_LOGIC型数值要用单引号括起来, STD_LOGIC_VECTOR型数值要用双引号括起来。,例:,SIGNAL a : STD_LOGIC; a = 1;,56,2019/5/2,3.4.3 数据类型,6. 字符(CHARACTER)(属于:标量型枚举型),和 字符串(STRING)(属于:复合型数组型),在STANDARD程序包中,CHARACTER型数值要用单引号括起来。 STRING型数值要用双引号括起来。,例: A,a,1,2 。 “ABC”,“HELLO”。,57,2019/5/2,3.4.3 数据类型,7. 时间型( TIME) (属于:标量型物理型,在STANDARD程序包中 ),GENERIC (m: TIME :=5ns);,【例】,58,2019/5/2,3.4.3 数据类型,8. 错误等级(SEVERITY_LEVEL) (属于:标量型枚举型,在STANDARD程序包中 ),SEVERITY_LEVEL的值有4个,NOTE, WARNING, ERROR, FAILURE。 注意,警告,错误,失败。,59,2019/5/2,3.4.3 数据类型,9. 自然数(NATURAL)(标量型整数型整数),和 正整数(POSITIVE)(标量型整数型整数),在STANDARD程序包中,NATURAL 和POSITIVE是INTEGER 的子类型。,60,2019/5/2,3.4.3 数据类型,以上是已经在标准数据包STANDARD和STD_LOGIC_1164中定义好的常用的数据类型。,除此之外,还可以由用户自定义数据类型。,可以由用户自定义的数据类型: 枚举类型 整数类型 数组类型 记录类型 存取类型 文件类型 时间类型 实数类型,TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 ;,TYPE 数据类型名 IS 数据类型定义;,【格式】,61,2019/5/2,3.4.3 数据类型,TYPE alu_op IS (add,sub,mul,div,eq,gt,lt);,TYPE BIT is (0, 1);,TYPE BIT_VECTOR is array (NATURAL range ) of BIT;,SUBTYPE POSITIVE is INTEGER range 1 to INTEGERHIGH;,定义一个数据类型alu_op,是枚举型,取值为add,sub,mul,div,eq,gt,lt中的一个 声明变量a是alu_op型的。,VARIABLE a : alu_op,【例】,下例为标准程序包中的某些数据类型定义:,62,2019/5/2,3.4.4 数据类型的转换,自学(见P.114),63,2019/5/2,3.4.5 运算操作符,5类运算操作符,逻辑运算 关系运算 算术运算 并置运算 移位运算,64,2019/5/2,3.4.5 运算操作符,可以对 BIT, BOOLEAN,STD_LOGIC,STD_LOGIC_VECTOR等类型数据进行逻辑运算。,1. 逻辑运算符,65,2019/5/2,3.4.5 运算操作符,2. 算术运算符,66,2019/5/2,3.4.5 运算操作符,3. 关系运算符,67,2019/5/2,3.4.5 运算操作符,4. 并置运算符,sel=b ,例:,若b=1,a=0,则sel=“10”,Y =H & e & l & l & o,Y =“Hello”,若b=“1010,a=0011,则sel=“10100011”,68,2019/5/2,3.4.5 运算操作符,5. 移位运算符,69,2019/5/2,3.4.5 运算操作符,运算符的优先级,见P.115,70,2019/5/2,章节目录,3.1 硬件描述语言概述 3.2 VHDL语言程序结构 3.4 VHDL语法基础 3.3 VHDL常用语句 3.5 组合电路的VHDL描述 3.6 时序电路的VHDL描述,71,2019/5/2,3.3 VHDL常用语句,仿真时:,两大类:,并行语句,顺序语句,并行语句同时并行执行, 顺序语句按先后次序执行。,72,2019/5/2,3.3.1 并行语句,ARCHITECTURE OF IS 定义语句; BEGIN END ;,并行语句用在结构体的并行处理语句部分,73,2019/5/2,3.3.1 并行语句,进程语句 并行信号赋值语句 元件例化语句 块语句 过程调用语句 参数传递语句 生成语句 并行断言语句,74,2019/5/2,3.3.1 并行语句,1. 进程语句,【格式】,进程标号: PROCESS 敏感信号表 IS 进程语句说明部分; BEGIN END PROCESS 进程标号;,进程语句是最主要的并行语句,它在VDHL程序设计中使用频率最高,也是最能体现硬件描述语言的一条语句。,75,2019/5/2,3.3.1 并行语句,【例3-7】带异步复位功能的D触发器的VHDL描述。,76,2019/5/2,3.3.1 并行语句,当敏感信号发生变化时,执行进程。 当执行完最后一个语句时,回到第一个语句,等待下一次敏感信号变化。 一个结构体中可以有多个进程,进程之间是并行的。 进程内部各条语句是顺序执行的。 进程语句说明部分可以说明需要的局部变量。,【说明】,77,2019/5/2,3.3.1 并行语句,2. 并行信号赋值语句,并发信号赋值语句,例: q1=a+b; q2=a*b;,当a或b有变化时,两条语句同时执行。 模拟了两个加法器和乘法器电路。,注意前提是信号赋值语句放在进程外; 若放在进程中,则变成了顺序执行的语句。,当信号赋值语句放在进程外时,就是并发信号赋值语句。,78,2019/5/2,3.3.1 并行语句,条件信号赋值语句,【格式】,目标信号=表达式1 WHEN 条件1 ELSE 表达式2 WHEN 条件2 ELSE 表达式3 WHEN 条件3 ELSE 表达式n-1 WHEN 条件n-1 ELSE 表达式n;,当条件1满足时,目标信号=表达式1 当条件2满足时,目标信号=表达式2 ,【功能】,条件判断是并行的,不是先判断条件1满足否,再判断条件2满足否,而是同时判断。,79,2019/5/2,3.3.1 并行语句,【例3-11】用条件信号赋值语句设计4选1数据选择器。,80,2019/5/2,3.3.1 并行语句,选择信号赋值语句,【格式】,WITH 选择条件表达式 SELECT 目标信号=表达式1 WHEN 选择条件1 表达式2 WHEN 选择条件2 表达式3 WHEN 选择条件3 表达式n WHEN 选择条件n;,当选择条件符合条件1时,目标信号=表达式1 当选择条件符合条件2时,目标信号=表达式2 ,【功能】,81,2019/5/2,3.3.1 并行语句,【例3-12】用选择信号赋值语句设计4选1数据选择器。,语句 之间是并行的,该例既使用了条件信号赋值语句也使用了选择信号赋值语句,82,2019/5/2,3.3.1 并行语句,3. 元件例化语句,元件例化语句是最能体现层次化设计思想的语句。,例如设计由D触发器构成的移位寄存器,可以将设计分成2层,底层描述D触发器,顶层调用底层描述的D触发器。,在顶层中调用底层设计时,就要用到元件例化语句。,层次化设计简单说即将整个系统分成不同的层次,顶层设计可以调用底层设计。,83,2019/5/2,3.3.1 并行语句,【格式】,COMPONENT GENERIC 类属说明; PORT ; END COMPONENT;, GENERIC MAP(参数映射) PORT MAP (端口映射);,定义元件: 底层设计定义成一个元件,元件例化: 调用定义好的元件,并说明该元件与其他信号的连接关系。,84,2019/5/2,3.3.1 并行语句,【例3-14】用元件例化语句描述由D触发器构成的移位寄存器。,dff是另一个程序对应的电路,这里将其定义成一个元件,并用其构成一个移位寄存器。,语句之间是并行的,85,2019/5/2,3.3.1 并行语句,s0,s4,86,2019/5/2,3.3.1 并行语句,元件名必须与底层文件的实体名一致。 端口映射部分要指明元件内部信号与外部信号的连接关系,其顺序必须与端口说明部分的顺序一致。 一个元件定义部分可以对应多个元件例化部分,相当于调用了多个元件而已。 元件标号名可以帮助标识不同的元件。,【说明】,87,2019/5/2,3.3.1 并行语句,4. 生成语句,非重点不讲,88,2019/5/2,3.3.1 并行语句,ARCHITECTURE COMPONENT END COMPONENT; BEGIN PROCESS END PROCESS dff1: dff PORT MAP(S(0),clk,S(1); q1;,各部分之间是并行的,89,2019/5/2,3.3.2 顺序语句,顺序语句是相对于并行语句而言的。 顺序语句的特点是:每一条顺序语句的执行顺序是与它们的书写顺序相一致的。 顺序语句只能出现在进程和子程序中。,进程标号: PROCESS 敏感信号表 IS 进程语句说明部分; BEGIN END PROCESS 进程标号;,90,2019/5/2,3.3.2 顺序语句,顺序赋值语句 WAIT语句 IF语句 CASE语句 LOOP语句 EXIT语句 RETURN语句 NULL语句 REPORT语句 断言语句,常用,91,2019/5/2,3.3.2 顺序语句,1.顺序赋值语句,92,2019/5/2,3.3.2 顺序语句, 信号赋值语句,【格式】,目标信号 = 表达式,信号赋值语句中的赋值符号为=。 表达式的数据类型和信号的类型必须一致。 表达式可以是运算表达式也可以是具体数值。 信号赋值可以添加延时信息。 用在进程中才是顺序语句,s=a XOR b XOR c;,【例】,当信号赋值语句放在进程内时,就是顺序语句。 放在进程外时就是并行语句。,93,2019/5/2,3.3.2 顺序语句,2.WAIT语句,【格式】,WAIT -无限等待 WAIT ON -敏感信号变化 WAIT UNTIL -条件满足 WAIT FOR -时间到,进程在仿真运行时总是处于两种状态之一:执行或挂起。进程状态的变化可受WAIT语句控制。,94,2019/5/2,3.3.2 顺序语句,3.IF语句,IF语句是一种条件控制语句,是常用语句之一。 IF语句只能用在进程中。,网上有一句话:IF、CASE打天下,95,2019/5/2,3.3.2 顺序语句,【格式】,IF THEN ; END IF;, IF THEN 语句,当条件满足时,执行THEN后的语句,否则,不执行,【功能】,96,2019/5/2,3.3.2 顺序语句,顺序处理语句,当条件满足时,d的值赋给q,否则,q值不变,【例3-17】用IF THEN语句描述D触发器功能。,97,2019/5/2,3.3.2 顺序语句,【格式】,IF THEN ; ELSE ; END IF;,两分支, IF THEN ELSE语句,当条件满足时,执行THEN后的语句,否则,执行ELSE后的语句。,【功能】,98,2019/5/2,3.3.2 顺序语句,【例】用IF THEN ELSE语句描述二选一数据选择器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;,99,2019/5/2,3.3.2 顺序语句,ARCHITECTURE beha OF mux IS BEGIN PROCESS(d0,d1,sel) BEGIN IF (sel=0) THEN f=d0; ELSE f=d1; END IF; END PROCESS; END beha;,sel=0时,f=d0; sel=1时,f=d1;,100,2019/5/2,3.3.2 顺序语句,【格式】,IF THEN ; ELSIF THEN ; ELSE ; END IF;,多分支, IF THEN ELSIFELSE语句,当条件1满足时,执行THEN后的顺序语句1,否则,当条件2满足时,执行THEN后的顺序语句2,否则执行ELSE后的顺序语句3,【功能】,101,2019/5/2,3.3.2 顺序语句,条件1优先级高 条件2优先级低,还可以再分支,102,2019/5/2,3.3.2 顺序语句,【例】4选1数据选择器的VHDL程序。(P137),注意: 条件要完整,最后必须加ELSE f=0, 否则会综合出寄存器。,103,2019/5/2,3.4.2 顺序语句,条件不完整的综合结果,有寄存器,104,2019/5/2,3.3.2 顺序语句,4. CASE语句,【格式】,CASE 表达式 IS WHEN 表达式的取值1 = 顺序处理语句1; WHEN 表达式的取值2 = 顺序处理语句2; . WHEN OTHERS = 顺序处理语句n; ENDCASE;,CASE语句也是常用语句之一,具有条件控制功能。 也只能用在进程中。,105,2019/5/2,3.3.2 顺序语句,几个条件是同等级的,106,2019/5/2,3.3.2 顺序语句,【例3-19】用CASE语句实现3-8线译码器。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY decoder_3to8 IS PORT (a,b,c,g1,g2,g3: IN STD_LOGIC; y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END decoder_3to8; ARCHITECTURE beha OF decoder_3to8 IS SIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN indata=c,107,2019/5/2,PROCESS(indata,g1,g2,g3) BEGIN IF (g1=1 AND g2=0 AND g3=0) THEN CASE indata IS WHEN “000” = y y y y y y y y y= “XXXXXXXX”; END CASE; ELSE y=“11111111”; END IF; END PROCESS; END beha;,108,2019/5/2,3.3.2 顺序语句,CASE语句的各条件表达式是同时执行的。 条件表达式的所有情况都要列举到。 可用WHEN OTHERS 描述。,【说明】,109,2019/5/2,3.3.2 顺序语句,5. LOOP语句,【格式】,LOOP标号:FOR 循环变量 IN 取值范围 LOOP ; END LOOP LOOP标号 ;,LOOP是循环语句,有两种,FORLOOP WHILELOOP,FORLOOP,若循环变量在取值范围内则执行循环, 否则结束循环。,【功能】,110,2019/5/2,3.3.2 顺序语句,【例3-20 】用FORLOOP语句描述的偶校验发生器。,设a=11001110, 则tmp=1,奇数个1; 设a=11001100, 则tmp=0,偶数个1。,111,2019/5/2,3.3.2 顺序语句,【格式】,LOOP标号: WHILE 条件 LOOP ; END LOOP LOOP标号: ;,若条件为真则执行循环, 若为假则结束循环。,WHILELOOP,【功能】,112,2019/5/2,3.3.2 顺序语句,【例3-21】用WHILELOOP语句描述的偶校验发生器。,功能和例3-20相同,113,2019/5/2,3.3.2 顺序语句,归纳一下:前面介绍的IF语句、CASE语句、LOOP语句,有一个共同的特点,即不是对电路的具体结构进行描述,而是对电路的功能和行为进行了描述,采用的是类似C语言的高级描述语言,我们把这种描述方式称为行为描述方式。,后面介绍,114,2019/5/2,3.3.2 顺序语句,6. EXIT语句,【格式】,EXIT LOOP标号;,EXIT LOOP标号 WHEN 条件;,程序执行到该语句处,无条件跳出。 程序执行到LOOP标号处,无条件跳出。 条件满足时,执行到该语句处跳出。 条件满足时,执行到LOOP标号处跳出。,除正常结束循环外,还可利用EXIT语句退出。,115,2019/5/2,3.3.2 顺序语句,7. 断言语句(ASSERT),【格式】,ASSERT REPORT SEVERITY ,断言语句主要用于程序仿真、调试中的人机会话,它可以给出一个文字串作为警告和错误的信息。,【功能】,如果断言条件为假,则顺序执行REPORT语句,输出用双引号括起来的以文字串表示的错误信息,同时还要报告错误信息的严重级别。,116,2019/5/2,3.3.2 顺序语句,【例3-22】使用ASSERT语句的RS触发器的VHDL程序。注意在RS触发器中,不允许两个输入都为1。,该程序使用断言语句,一旦出现两个输入r、s都为1的情况,则发出错误提示。,117,2019/5/2,3.3.2 顺序语句,VHDL语言的三种描述方式,数据流描述方式(RTL级描述方式),结构描述方式,行为描述方式,主要采用逻辑关系式的描述方式,说明了数据的流向,主要采用元件例化语句,说明元件之间的连接关系,主要采用IF、CASE、WAIT、LOOP等高级语言,说明电路的功能和行为,118,2019/5/2,3.3.2 顺序语句,数据流描述方式的2选1数据选择器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux; ARCHITECTURE mux_1 OF mux IS BEGIN p0:PROCESS(d0,d1,sel) VARIABLE temp1,temp2: STD_LOGIC; BEGIN temp1:=d0 AND(NOT sel); temp2:=d1 AND sel; f=temp1 OR temp2; END PROCESS p0; END mux_1;,主要采用逻辑关系式的描述方式,说明了数据的流向,119,2019/5/2,3.3.2 顺序语句,结构描述方式的2选1数据选择器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux; ARCHITECTURE mux_2 OF mux IS SIGNAL y1,y2,y3 :STD_LOGIC COMPONENT NOT1 PORT(a:IN STD_LOGIC, y:OUT STD_LOGIC); END COMPONENT;,120,2019/5/2,3.3.2 顺序语句,主要采用元件例化语句,说明元件之间的连接关系,COMPONENT AND2 PORT(a,b:IN STD_LOGIC, y:OUT STD_LOGIC); END COMPONENT; COMPONENT OR2 PORT(a,b:IN STD_LOGIC, y:OUT STD_LOGIC); END COMPONENT; BEGIN u1: NOT1 PORT MAP (sel,y1) u2: AND2 PORT MAP (d0,y1,y2) u3: AND2 PORT MAP (d1,sel,y3) u4: OR2 PORT MAP (y2,y3,y) END mux_2;,121,2019/5/2,3.3.2 顺序语句,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux; ARCHITECTURE beha OF mux IS BEGIN PROCESS(d0,d1,sel) BEGIN IF (sel=0) THEN f=d0; ELSE f=d1; END IF; END PROCESS; END beha;,行为描述方式的2选1数据选择器,主要采用IF、CASE、WAIT、LOOP等高级语言,说明电路的功能和行为,122,2019/5/2,3.3.2 顺序语句,实际程序中往往几种描述方式混合使用, 初学阶段不必过于在意所采用的描述方式,知道有这种说法即可。,123,2019/5/2,章节目录,3.1 硬件描述语言概述 3.2 VHDL语言程序结构 3.4 VHDL语法基础 3.3 VHDL常用语句 3.5 组合电路的VHDL描述 3.6 时序电路的VHDL描述,124,2019/5/2,3.5组合电路的VHDL描述,1.,【例4-3】判定电路的VHDL程序。(P123),本例使用了条件赋值语句,同学们可以尝试用CASE语句实现,125,2019/5/2,3.5组合电路的VHDL描述,综合结果,126,2019/5/2,3.5组合电路的VHDL描述,2.,【例】4-2线优先编码器的VHDL程序。(P126),本例使用了 IFTHENELSIFTHEN语句,利用IF条件的优先级很方便地实现了优先编码的功能。,如果用CASE语句则只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 志愿服务队志愿者工作方案和工作职责
- 车间纪律管理
- 顾客回访具体实施方案及流程
- 危险化学品消防安全培训
- 聚氨酯防水施工工艺流程
- 职业健康安全管理计划
- 危重病人抢救流程
- 卫生管理方案
- 2025-2025年度少先队工作计划
- 2025-2025学年小学六年级班主任工作计划
- 研究生年终总结和展望
- 团员发展纪实簿
- 草原牧歌-金杯 课件 2024-2025学年人音版(简谱)(2024)初中音乐七年级上册
- 新疆乌鲁木齐地区2023届高三第一次质量监测化学试题(解析版)
- 2024年新人教版三年级数学上册《第8单元第8课时 分数的初步认识复习》教学课件
- 北京市东城区2023-2024学年高一年级上册期末历史试题
- 上海市市辖区(2024年-2025年小学四年级语文)部编版期末考试(上学期)试卷及答案
- 2025届高考语文复习:文言文翻译 课件
- 部编人教版二年级上《道德与法治》全册教案
- 2024年征信考试题库(含答案)
- 拳馆团队合作协议书范本
评论
0/150
提交评论