《工学EDA技术》PPT课件培训资料

上传人:人*** 文档编号:570547890 上传时间:2024-08-05 格式:PPT 页数:184 大小:11.25MB
返回 下载 相关 举报
《工学EDA技术》PPT课件培训资料_第1页
第1页 / 共184页
《工学EDA技术》PPT课件培训资料_第2页
第2页 / 共184页
《工学EDA技术》PPT课件培训资料_第3页
第3页 / 共184页
《工学EDA技术》PPT课件培训资料_第4页
第4页 / 共184页
《工学EDA技术》PPT课件培训资料_第5页
第5页 / 共184页
点击查看更多>>
资源描述

《《工学EDA技术》PPT课件培训资料》由会员分享,可在线阅读,更多相关《《工学EDA技术》PPT课件培训资料(184页珍藏版)》请在金锄头文库上搜索。

1、工学工学EDAEDA技术技术PPTPPT课件课件第第2章章VHDL语言基础语言基础 VHDLVHDL简介简介简介简介 VHDL是是VeryHighspeedIntegratedCircuitHardwareDescriptionLanguage(非常高速集成电路硬件描述语言)的英文缩写。它是由美国国防部支持的一项研究计划,于1983年创建,目的是以文字化方法描述电子电路与系统。至今VHDL约有40年的发展历史,1987年,VHDL成为IEEE标准,即IEEE1076标准,1993年修改为IEEE1164标准,1996年,IEEE又将电路合成的标准程序与规格加入到VHDL语言中,称为1076.3

2、标准。之后,又有1076.4标准和1076.6标准。2.1 硬件描述语言特点硬件描述语言特点VHDLVHDLVHDLVHDL特点特点特点特点1. 系统硬件描述能力强系统硬件描述能力强2与器件无关,与工艺与器件无关,与工艺无关无关3IEEE工业标准工业标准4方法灵活,技术齐全方法灵活,技术齐全5可读性好可读性好 VHDL具具有有硬硬件件特特征征,而而且且是是并并行执行方式。行执行方式。2、2 VHDL语言基本结构语言基本结构其中,库、程序包使用说明用于打开其中,库、程序包使用说明用于打开( (调用调用) )本设计实体将要用到的库、程序包;实体说明用于描本设计实体将要用到的库、程序包;实体说明用于

3、描述该设计实体与外界的接口信号说明,是可视部分;结构体说明用于描述该设计实体内部工作的逻述该设计实体与外界的接口信号说明,是可视部分;结构体说明用于描述该设计实体内部工作的逻辑关系,是不可视部分。在一个实体中,可以含有一个或一个以上的结构体,而在每一个结构体中辑关系,是不可视部分。在一个实体中,可以含有一个或一个以上的结构体,而在每一个结构体中又可以含有一个或多个进程以及其他的语句。根据需要,实体还可以有配置说明语句。配置说明语又可以含有一个或多个进程以及其他的语句。根据需要,实体还可以有配置说明语句。配置说明语句主要用于以层次化的方式对特定的设计实体进行元件例化,或是为实体选定某个特定的结构

4、体。句主要用于以层次化的方式对特定的设计实体进行元件例化,或是为实体选定某个特定的结构体。 举例二路选择器举例二路选择器举例二路选择器举例二路选择器LIBRARY IEEE;LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_1164.all;ENTITYENTITY MUX2 IS MUX2 IS PORTPORT (d0,d1: (d0,d1:IN IN std_logic;std_logic; sel: sel:IN IN std_logic;std_logic; q: q:OUT OUT std_logic);std_

5、logic);END END ENTITY;ENTITY;ARCHITECTURE ARCHITECTURE behav OF MUX2 ISbehav OF MUX2 ISBEGINBEGIN PROCESSPROCESS (d0,d1,sel) (d0,d1,sel) BEGIN BEGIN IFIF sel=0 THEN sel=0 THEN q=d0; q=d0; ELSIF ELSIF sel=1 THENsel=1 THEN q=d1; q=d1; ELSE ELSE q=Z;q=Z; END IF;END IF; END PROCESS END PROCESS; ;END beh

6、av;END behav;VHDLVHDL描述描述程序包调用程序包调用实体描述实体描述结构体描述结构体描述库的调用库的调用(2.1)LIBRARY和PACHAGE的声明部分 作用:库(Library)是用于存放预先编译好的程序包 (Package),程序包中定义了数据集合体、逻 辑操作和元件等。主要是声明在设计或实体中 将用到的常数,数据类型,元件及子程序等。使用格式:LIBRARY 库名; USE 库名. 程序包名. All; (2.2)ENTITY定义 作用:定义本设计的输入/出端口,即定义电路的外观, 即I/O接口的类型和数量使用格式: 端口名 :端口模式 数据类型;); ENTITY

7、实体名 IsEnd 实体名; 格式格式格式格式: :Port( 端口名 :端口模式 数据类型;端口模式说明端口模式说明 2类属类属(GENERIC)说明语句说明语句 类属(GENERIC)参量是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分。类属为所说明的环境提供了一种静态信息通道,类属的值可以由设计实体外部提供。因此,设计者可以从外面通过类属参量的重新设定而容易地改变一个设计实体或一个元件的内部电路结构和规模。 2 输入与门的实体描述。 ENTITY AND2 IS GENERIC(RISEW:TIME:=1 ns; FALLW:TIME:=1 ns); PORT( A1

8、:IN STD_LOGIC; A0:IN STD_LOGIC; Z0:OUT STD_LOGIC); END ENTITY AND2; 这是一个准备作为2输入与门的设计实体的实体描述,在类属说明中定义参数RISEW为上沿宽度,FALLW为下沿宽度,它们分别为 1 ns,这两个参数用于仿真模块的设计。 (2.3)ARCHITECTURE定义 作用:定义实体的实现。即电路的具体描述,说明电路执 行什么动作或实现功能。 ARCHITECTURE 结构体名 Of实体名 IsBegin 描述语句;End 结构体名;使用格式使用格式使用格式使用格式: :图3.5 结构体构造图举例举例举例举例: :设计一个

9、与门电路设计一个与门电路设计一个与门电路设计一个与门电路逻辑符号逻辑符号逻辑符号逻辑符号真值表真值表真值表真值表Library IEEE;Use std.standard.all;Entity and2 isPort( A: in bit; B: in bit; Y:out bit); End and2; -首先定义输入输出端口名字, 模式(Mode),信号类型-注意最后语句的分号在括号外 实体定义实体定义:Architecture Na of and2 is Begin Y=0 when a=0 and B= 0 else0 when A=1 and B = 0 else 0 when A=

10、0 and B = 1 else 1; End Na结构体定义结构体定义:端口模式有以下几种类型:IN ;OUT;INOUT;BUFFER。Architecture Nb of and2 is Beginc =1 when a=1 and b = 1 else 0;End Nb;以上结构体表达何种电路?以上结构体表达何种电路?一个实体可以有几个结构体,即结构体的定义可以有不同的形式结论:2.4 VHDL 数据类型数据类型1.1.1.1.标准数据类型标准数据类型标准数据类型标准数据类型VHDLVHDLVHDLVHDL中定义了中定义了中定义了中定义了10101010种标准数据类型种标准数据类型种标

11、准数据类型种标准数据类型(P12P12P12P12)数据类型数据类型含义含义整数整数整数占整数占4B,范围为,范围为-2,147,483,6472,147,483,647实数实数浮点数,范围位浮点数,范围位-1.0E+381.0E+38自然数,正整数自然数,正整数整数的子集(自然数:大于等于整数的子集(自然数:大于等于0的整数,正整数:大于的整数,正整数:大于0的整数)的整数)位位逻辑逻辑“0”或或“1”位串位串多个位串在一起(也称位矢量)多个位串在一起(也称位矢量)字符字符ASCII码字符码字符字符串字符串字符数组(也称字符矢量)字符数组(也称字符矢量)布尔量布尔量逻辑逻辑“真真”或逻辑或逻

12、辑“假假”时间时间时间单位,如时间单位,如fs、ps、ns、s、ms、sec、min、hr等等错误等级错误等级NOTE,WARNING,ERROR,FAILURE2.4 VHDL 数据类型数据类型1.1.1.1.标准数据类型标准数据类型标准数据类型标准数据类型(1) Integer (整数)(整数)(2) Real (实数)(实数)(3) Bit (位)(位)(4) Bit_vector (位矢量)(位矢量)(5) Std_logic(标准逻辑)(标准逻辑)(6) Std_logic_vector(标准逻辑矢量)(标准逻辑矢量)(7) Boolean(布尔)(布尔)(8) Character

13、(字符)(字符)(9) String(字符串)(字符串)(10) Time(时间)(时间)(11) Severity level (错误错误等级等级)(12) Natural, positive(自然数、正整(自然数、正整数)数)其中以其中以bit,bit_vector,std_logic和和std_logic_vector最为常用。最为常用。字字符符要要区区分分大大小小写写,比比如如高高阻阻状状态态是是Z,而不是而不是z。约束区间说明约束区间说明: INTEGER RANGE 100 DOWNTO 1 BIT_VECTOR (3 DOWNTO 0) REAL RANGE 2.0 TO 30.

14、02.4数据类型数据类型数据类型分类:逻辑信号类型和数值信号类型。数据类型分类:逻辑信号类型和数值信号类型。 1 逻辑数据类型逻辑数据类型(1)布尔代数()布尔代数(Boolean)型)型 定义位置:在定义位置:在std库的库的standard程序包中进行定义。程序包中进行定义。信号形式:信号形式:FALSE,TRUE(2)位()位(Bit) 定义位置:在定义位置:在std库的库的standard程序包中进行定义。程序包中进行定义。信号形式:信号形式:0,1(低电位,高电位(低电位,高电位)(3)位数组类型(Bit_Vector) 定义位置:在std库的standard程序包中进行定义。 例例

15、例例:Signal A: bit_vector(0 to 7); Signal B: bit_vector(2 downto 0); 输入输入信号信号输出输出信号信号(4)标准逻辑型标准逻辑型(Std_Logic ) 定义位置:在IEEE库的std_logic_1164程序包中进行定义 可以看出,这个“标准逻辑”信号定义,比“位即bit”信号对于数字逻辑电路的逻辑特性描述更完整、更真实。所以在VHDL的程序里,对于逻辑信号的定义,通常都是采用这个“标准逻辑”信号形式。使用这类数据信号,必须包含下面两条声明语句: LibraryIEEE;UseIEEE.std_logic_1164.all;(5

16、)标准逻辑数组类型标准逻辑数组类型(Std_Logic_vector)定义位置:在ieee库的std_logic_1164程序包中进行定义。 Bit_Vector与与Std_Logic_vector的区别在于数组的的区别在于数组的每一位前者为每一位前者为BIT型(型(0,1)后者为)后者为Std_Logic型型2数值数据类型数值数据类型(1)整数(Integer) 定义位置:在std库的standard程序包中进行定义。即数值范 围为-231231。(2)无符号(Unsigned)和有符号(Signed)类型定义位置:有符号(Signed)和无符号(Unsigned)逻辑信号定义在 库IEEE

17、的程序包std_logic_arith中。VHDL数据类型数据类型逻辑数据类型逻辑数据类型2.4 VHDL 数据类型数据类型2.2.2.2.用户自定义数据类型用户自定义数据类型用户自定义数据类型用户自定义数据类型TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本数据类型或或 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义格式格式 :(1) (1) 枚举类型枚举类型TYPE week IS (sum, mon, tue, wed, thu, tri, sat);在在后后面面状状态态机机中中状状态态一一般般就就用枚举类型用枚举类型2.4 VHDL

18、 数据类型数据类型2.2.2.2.用户自定义数据类型用户自定义数据类型用户自定义数据类型用户自定义数据类型TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本数据类型或或 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义格式格式 :(2) (2) 子类型子类型SUBTYPE natural IS integer range 0 to integerhighSUBTYPE只只是是由由TYPE所所定定义义的的原原数数据据类类型型的的一一个个子子集集2.4 VHDL 数据类型数据类型2.2.2.2.用户自定义数据类型用户自定义数据类型用户自定义数据类型

19、用户自定义数据类型TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本数据类型或或 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义格式格式 :(3) (3) 整数类型和实数类型整数类型和实数类型TYPE percent IS INTEGER RANGE -100 TO 100 整整数数和和实实数数的的数数据据类类型型的的取取值值范范围围太太大大,综综合合器器无无法法综综合合,所所以以需需要要给给它它们们限限定定一个范围一个范围2.4 VHDL 数据类型数据类型2.2.2.2.用户自定义数据类型用户自定义数据类型用户自定义数据类型用户自定义数据类

20、型TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本数据类型或或 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义格式格式 :(4) (4) 数组类型数组类型TYPE 数组名数组名 IS ARRAY(数组范围数组范围) OF 数组类型数组类型; 2.4 VHDL 数据类型数据类型2.2.2.2.用户自定义数据类型用户自定义数据类型用户自定义数据类型用户自定义数据类型TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 OF 基本数据类型基本数据类型或或 TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义格式格式 :(5)

21、(5) 记录类型记录类型TYPE 记录类型名记录类型名 IS RECORD元素名:元素数据类型;元素名:元素数据类型;元素名:元素名: 元素数据类型;元素数据类型;END RECORD;2.4 VHDL 数据类型数据类型3.3.3.3.数据类型转换数据类型转换数据类型转换数据类型转换VHDL中的数据类型可以通过中的数据类型可以通过IEEE库中的库中的类型转换函数进行类型转换函数进行强制性强制性转换。转换。程序包程序包函数名函数名功能功能STD_LOGIC_1164TO_STDLOGICVECTOR(A)由由BIT_VECTOR转换为转换为STD_LOGIC_VECTORTO_BITVECTOR

22、(A)由由STD_LOGIC_VECTOR转换为转换为BIT_VECTORTO_STDLOGIC(A)由由STD_LOGIC转换转换STD_LOGICTO_BIT(A)由由STD_LOGIC转换转换BITSTD_LOGIC_ARITHCONV_STD_LOGIC_VECTOR(A,n)(n为位长为位长)由由INTEGER,UNSIGNED,SIGNED转换转换STD_LOGIC_VECTORCONV_INTEGER(A)由由UNSIGNED,SIGNED转换为转换为INTEGERSTD_LOGIC_UNSIGNEDCONV_INTEGER(A)由由STD_LOGIC_VECTOR转换为转换为I

23、NTEGER1 算术运算符一、分类及功能一、分类及功能求和运算符、求积运算符、符号运算符、混合运算符、移位运算符二二.运用运用1.求和运算符VHDL中的求和运算符包括加减运算和并置运算,操作数的数据类型为整型。例例1:Variable a,b,c,d,e,f : integer range 0 to 255;a := b + c ; d := e f ;例例2:Signal a : std_logic_vector(4 to 0);Signal b : std_logic_vector(2 to 0);Signal c : std_logic_vector(1 to 0);a = b c2.5

24、 VHDL 运算符2.移位运算符移位运算符移位运算所对应的数据类型为一维数组,其中的元素维移位运算所对应的数据类型为一维数组,其中的元素维bit、boolean例:Variable a1 : std_logic_vector(3 to 0);a1 := “1011”;a1 SLL 1 ;a1= 0110a1 SLL 2 ;a1= 1100a1 ROL 1 ;a1= 01113.其它其它略略VHDL操作符:逻辑、算术、符号、关系操作符。操作符:逻辑、算术、符号、关系操作符。2.4.1 逻辑运算符一、分类及功能And(与),Or(或),Not(非),Nand(与非),Nor(或非),Xor(异或)

25、,Xnor(同或)。二. 用法1. 操作数的数据类型必须符合操作符的要求能进行逻辑运算的数据类型:bit、bit_vector、booleanstd_logic、std_logic_vector例例Signal a,b,y: std_logic;Signal c,d,z: integer;y=a and b;z=c and d; 2. 表达式中有多个运算符时一般要加括号表达式中有多个运算符时一般要加括号,但and、or、xnor除外例例Signal a,b,c,d: std_logic_vector(3 downto 0);Signal e,f,g,h: std_logic_vector(1

26、downto 0);d=a and b and c;d=a or b or c;d=a xnor b xnor c;h=e nor f nor g;h=(e nor f) nor g;3. 运算符两侧的操作数要对称d=(e nor f) nor g;LibraryIEEEUSEIEEE.STD_LOGIC_1164.ALL;ENTITYlitiIS;PORT(a,b,c,d:INSTD_LOGIC;e:outSTD_LOGIC);ENDliti;ACHITECTUREAA1OFlitiISBEGINe=(aandb)ortmp;Signaltmp:std_logic;tmp=cxord;END

27、AA1;2.4.2 关系运算符=(等于),/=(不等于),(大于), =(大于等于)。注1.等于和不等于的操作对象可以是任何数据类型构成的操作数。2.其它关系运算符对数据类型有一定的限制。(整数,枚举型)3. =、 /= 在实现硬件电路时比其它的关系运算符对芯片的利用率 要高ENTITY my1 isPORT(a,b : in bit_vector(0 to 3)m : out boolean ) ;END my1 ;ARCHITECTURE a1 of my1BEGINm=(a = b) ;END a1;ENTITY my1 isPORT(a,b : in bit_vector(0 to 3

28、)m : out boolean ) ;ARCHITECTURE a1 of my1BEGINm= b) ;END a1;以上两程序最终所实现的硬件电路见课本以上两程序最终所实现的硬件电路见课本P78END my1 ;二、关系运算符二、关系运算符= =(等于),(等于),/=/=(不等于),(不等于), (大于),(大于), = =(大于等于)。(大于等于)。1.1.等于和不等于的操作对象可以是任何数据类型构成的操作数。等于和不等于的操作对象可以是任何数据类型构成的操作数。2.2.其它关系运算符对数据类型有一定的限制。(整数,枚举型)其它关系运算符对数据类型有一定的限制。(整数,枚举型)三、算

29、术运算符三、算术运算符求和运算符求和运算符、求积运算符、符号运算符、混合运算符、求积运算符、符号运算符、混合运算符、移位运算符移位运算符 VHDL VHDL中的求和运算符包括加减运算和并置运算,中的求和运算符包括加减运算和并置运算,操作数的数据类型操作数的数据类型 为整型。为整型。Signal a : std_logic_vector(4 downto 0);Signal b : std_logic_vector(2 downto 0);Signal c : std_logic_vector(1 downto 0);b c a = b cVariable A : std_logic_vecto

30、r(6 downto 0);A := “10110001”;A SLL 1 ;A ROL 1 ;表表3.2VHDL操作符列表操作符列表2.5 运算符运算符VHDLVHDL中的运算符主要分为中的运算符主要分为算术运算符算术运算符、逻辑运算逻辑运算符符、关系运算符关系运算符和和其他运算符其他运算符等四类。等四类。与与其其他他计计算算机机高高级级语语言言一一样样要要注注意意各各运运算算符的优先级符的优先级2.6 VHDL 数据对象数据对象在在VHDLVHDL语言中,可以语言中,可以赋值赋值的客体称为的客体称为对象对象。数据对象数据对象数据对象数据对象常量常量常量常量变量变量变量变量信号信号信号信号要

31、要掌掌握握好好这这三三种种数数据据对对象象的的区区别别及其应用及其应用2.6 VHDL 数据对象数据对象1.1.1.1.常量常量常量常量常量是指定义在设计描述中常量是指定义在设计描述中不变化不变化的值,是一个的值,是一个全局量全局量。格式格式 :CONSTANT CONSTANT 常数名常数名: :数据类型数据类型:=:=表达式表达式Example Example :CONSTANT CONSTANT VCCVCC: :realreal:=:=5.05.0CONSTANTCONSTANT delay delay: :timetime:=:=10ns10nsCONSTANTCONSTANT fb

32、usfbus: :bit_vectorbit_vector:=:=“0101”“0101”指定电源电压指定电源电压某信号的延迟某信号的延迟总线上的数据向量总线上的数据向量用途:用途:在实体、结构体、程序包、函数、过在实体、结构体、程序包、函数、过程、进程中程、进程中保持静态数据保持静态数据,以改善程,以改善程序的序的可读性可读性,使修改程序边得容易。,使修改程序边得容易。2.6 VHDL 数据对象数据对象2.2.2.2.变量变量变量变量变量是定义在变量是定义在进程进程或或子程序子程序中的变化量。中的变化量。格式格式 :VARIABLE VARIABLE 变量名变量名: :数据类型数据类型:=:

33、=初始值初始值用途:用途:在在PROCESSPROCESS、FUNCTIONFUNCTION、PROCEDUREPROCEDURE用用于计算或暂存中间数据,是一个于计算或暂存中间数据,是一个局部局部量量。注注意意:变变量量的的赋赋值值是是立立刻刻生生效效的。的。2.6 VHDL 数据对象数据对象3.3.3.3.信号信号信号信号信号对应着硬件内部实实在在的连线,在元件间起着信号对应着硬件内部实实在在的连线,在元件间起着互联互联作用作用,或作为一种,或作为一种数据容器数据容器,以保留,以保留历史值历史值和和当前值当前值。格式格式 :SIGNAL SIGNAL 信号名信号名: :数据类型数据类型:=

34、:=表达式表达式注意:注意:“:=”“:=”表示对信号的赋初值,一般表示对信号的赋初值,一般不不产生延时产生延时。“=”“=”表示信号的代入赋值,表示信号的代入赋值,有延时有延时。library ieee;use ieee.std_logic_1164.all;entity frequencies isport(clk:in std_logic;q:out std_logic);end frequencies;architecture behav of frequencies isbegin process (clk) variable time:integer range 0 to 6;be

35、gin if rising_edge(clk) then time:=time+1; if time=6 thenq=1;time:=0; elseq=0; end if; end if;end process;end behav;此此例例为为6分分频频器器。其其中中time为为变变量量。由由于于变变量量赋赋值值是是马马上上生生效效的的,因因此此从从例例子子中中可可以以看看出出time置置零零是是在在time为为6时时发发生生的。的。library ieee;use ieee.std_logic_1164.all;entity frequencies isport(clk:in std_log

36、ic;q:out std_logic);end frequencies;architecture behav of frequencies is signal time:integer range 0 to 5;begin process (clk)begin if rising_edge(clk) then time=time+1; if time=5 thenq=1;time=0; elseq=0; end if; end if;end process;end behav;此此例例也也为为6分分频频器器。其其中中time为为信信号号。由由于于信信号号赋赋值值是是具具有有一一定定的的延延时时

37、性性,因因此此从从例例子子中中比比较较time和和5的的大大小小时时,语语句句time=time+1还还 未未 生生 效效 ,time的的值值是是上上次次进进程程结结束束时时的的结果。结果。前两例前两例前两例前两例6 6 6 6分频器仿真波形图分频器仿真波形图分频器仿真波形图分频器仿真波形图timetime为变量:为变量:timetime为信号:为信号:可看出两种方法是等价的。可看出两种方法是等价的。信号与变量的比较信号与变量的比较信号与变量的比较信号与变量的比较1、信号信号是实体间动态交换数据的手段,用是实体间动态交换数据的手段,用信号信号对象把实体连接在对象把实体连接在 一起形成模块;实体

38、说明,结构体说明都能说明信号。一起形成模块;实体说明,结构体说明都能说明信号。 变量变量用于进程语句和子程序中中间的数据存储。用于进程语句和子程序中中间的数据存储。2、信号信号赋值有延迟;而赋值有延迟;而变量变量赋值没有延迟。赋值没有延迟。 3、信号信号除当前值外有许多信息(历史信息,波形值);而除当前值外有许多信息(历史信息,波形值);而变量变量只只 有当前值。有当前值。4、进程对、进程对信号信号敏感,对敏感,对变量变量不敏感。不敏感。信号信号可以是多个进程的全局可以是多个进程的全局 信号;而信号;而变量变量只在定义它的进程中可见。只在定义它的进程中可见。5、信号信号是硬件中连线的抽象描述,

39、功能是保存变化的数据值和连是硬件中连线的抽象描述,功能是保存变化的数据值和连 接子元件,接子元件,信号信号在原件的端口连接元件;在原件的端口连接元件;变量变量在硬件中没有对在硬件中没有对 应关系,而是用于硬件特性的高层次建模所需要的计算中。应关系,而是用于硬件特性的高层次建模所需要的计算中。 6、在描述中,、在描述中,信号信号的赋值不会立即生效,而是要等待一个的赋值不会立即生效,而是要等待一个delta延延 迟后才会变化,否则该迟后才会变化,否则该信号信号的值在的值在delta延迟之前仍是原来的值。延迟之前仍是原来的值。数据对象小结数据对象小结1、变量变量常定义在进程与子程序中,用于保存运算的

40、中间临时数常定义在进程与子程序中,用于保存运算的中间临时数 据,或作为循环语句中的循环变量,其据,或作为循环语句中的循环变量,其赋值立即发生赋值立即发生。(:=)2、常量常量用于保存静态的数据用于保存静态的数据(:=)。3、信号信号有明显的连线或容器的对应关系,具有输出波形,对其有明显的连线或容器的对应关系,具有输出波形,对其 赋值需要延迟时间赋值需要延迟时间(=), 在进程间或子程序间具有信息传递功在进程间或子程序间具有信息传递功 能。能。4、注意对象定义的所在位置及适用区域的对应关系、注意对象定义的所在位置及适用区域的对应关系2-3-4信号、变量、信号、变量、常数对比常数对比一、定义Sig

41、nal A: std_logic; Variable A: std_logic_vector(7 downto 0);Constant A: integer :=6 ;二、赋值及赋值时刻A = “1010”;(延时)A :=“1010”;(立刻)三、定义区域信号:实体、结构体、程序包变量:进程、子程序常数:实体、结构体、程序包、块、进程、子程序四、适用范围信号:实体、结构体、程序包变量:定义了变量的进程、子程序的顺序语句中常数:视其定义的位置而定若常数定义在实体中,适用范围是实体所对应的有结构体。若常数定义在结构体中,适用范围就是本结构体。执行结果为:执行结果为:x=cxorb,y=cxorb

42、执行结果为:执行结果为:x=cxora,y=cxorb2.7VHDL基本语句基本语句并行语句概述并行语句概述并行信号赋值语句并行信号赋值语句进程语句(进程语句(process)并行语句概述并行语句概述并行语句一般处于进程(并行语句一般处于进程(PROCESS)的外部。所有并行)的外部。所有并行语句都是并行执行的,即与它们出现的先后次序无关。语句都是并行执行的,即与它们出现的先后次序无关。一、并行语句特点一、并行语句特点 a.所有语句的执行是并行的;所有语句的执行是并行的;b.每条语句的执行和其所在的位置无关;每条语句的执行和其所在的位置无关;c.并行语句的输出仅仅依赖于输入,没有其它的限制条件

43、并行语句的输出仅仅依赖于输入,没有其它的限制条件 二、基本的并行语句二、基本的并行语句(1)直接赋值语句:)直接赋值语句:=赋值运算符赋值运算符(2)进程()进程(Process)语句)语句(3)条件式信号设置语句:)条件式信号设置语句:When-Else(4)选择式信号设置语句:)选择式信号设置语句:With-Select-When(5)块()块(Block)语句)语句(6)元件()元件(Component)例化语句)例化语句(7)For-Generate语句语句并行信号赋值语句并行信号赋值语句简单信号赋值语句简单信号赋值语句条件信号赋值语句条件信号赋值语句选择信号赋值语句选择信号赋值语句2

44、.7.1赋值语句赋值语句赋值语句包括变量赋值语句和信号赋值语句,前者的赋值是立刻发生的,赋值语句包括变量赋值语句和信号赋值语句,前者的赋值是立刻发生的,后者的赋值发生在一个进程结束的时刻,并延时进行。后者的赋值发生在一个进程结束的时刻,并延时进行。变量赋值目标变量赋值目标:=赋值源赋值源信号赋值目标信号赋值目标=赋值源赋值源在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值源的值,其前面相同的赋值目标不做任何变化。得的是最后一个赋值源的值,其前面相同的赋值目标不做任何变化。注:注:信号和变量赋值信号和变量赋

45、值一、直接赋值语句:一、直接赋值语句:=赋值运算符赋值运算符作用:直接对目标对象进行赋值操作。作用:直接对目标对象进行赋值操作。语法格式:语法格式:Signal_name=expression;如:如:SignalA,B:std_logic_vector(7downto0);A=”0000000”;B=”1000000”;我们也可以这样赋值:我们也可以这样赋值:A0);信号信号A的每一位的值都为的每一位的值都为0。B0); 信号信号B的第一位为的第一位为1,其它位的值为,其它位的值为0。信号和变量赋值举例信号和变量赋值举例1.标识符赋值目标标识符赋值目标Variablea,b:std_logi

46、c;Signalc:std_logic_vector(1to4);a:=1;b:=0;c=“1100”;c(3)=1;注:注:2.段赋值段赋值Signalc:std_logic_vector(1to4);c(1to2)=10;c(1to4)=1010;3.块赋值块赋值Signala,b,c,d:std_logic;Signals:std_logic_vector(1to4);s=“0100”;(a,b,c,d)3,f=4,g(1)=1,g(2)=2);名称关联名称关联结果:结果:h的值为的值为1010二、条件式信号设置语句二、条件式信号设置语句:When-Else语法格式为:语法格式为: 赋值

47、目标= 表达式1 When 赋值条件 Else 表达式2 When赋值条件 Else 表达式N; 在结构体中的条件赋值语句的功能与在进程中的IF语句相同,在执行条件信号语句时,每一赋值条件是按书写的先后关系测定的。我们曾举过一个二输入的与门电路的例子:我们曾举过一个二输入的与门电路的例子:Libraryieee;Useieee.std_logic_1164.all;Entityand2 isPort(d1,d2 : in std_logic; op : out std_logic);End and2;Architecture m1 of and2 isBeginop= 1 when(d1=1

48、and d2=1)else 0;End m1;Libraryieee;Useieee.std_logic_1164.all;Entitymux isPort(a,b,c : in bit; p1,p2 : in bit z : out bit);End and2;Architecture m1 of mux isBeginz= a when p1=1 else b when p2=1 else c;End m1;允许有重叠三、选择式信号设置语句:三、选择式信号设置语句:With-Select-WhenWith expression Select赋值目标=表达式 When constant_va

49、lue1 表达式 When constant_value2 表达式 When Others;选择选择式信号设置语句本身不能在进程中应用其功能与进程中式信号设置语句本身不能在进程中应用其功能与进程中的的CASECASE语句相同。语句相同。例:不允许有重叠现象;必须含盖所有条件例:不允许有重叠现象;必须含盖所有条件Architecturem2ofand2isSignaltmp:std_logic_vector(1downto0);Begintmp=d1&d2;Withtmpselectf=1when“11”;0whenothers;Endm2;When-else语句和语句和With-select-

50、When语句的差别语句的差别 两个语句的关键不同是:对于条件的要求程度不同,前者两个语句的关键不同是:对于条件的要求程度不同,前者 要求较松,后者要求严格。要求较松,后者要求严格。aWith-select-When语句中语句中When后的后的constant_value必须必须 是互不相同的;是互不相同的; b而而When-else语句中语句中When后的后的logic_expression则不需要这样则不需要这样 的严格条件,因为其的严格条件,因为其When后的后的logic_expression的优先权次序的优先权次序 为由先到后排列。为由先到后排列。4.3进程语句(进程语句(proces

51、s)Process语句的格式为:语句的格式为:进程标号进程标号: Process (敏感信号列表敏感信号列表) 变量声明变量声明Begin顺序语句;顺序语句;EndProcess 进程标号进程标号;敏感表敏感表(Sensitivitylist)包括进程的一些信号,当敏感表中的某个信号变化时进程才包括进程的一些信号,当敏感表中的某个信号变化时进程才被激活,进程内的顺序语句被执行。当进程结束时,进程内的输出信号值被更新,被激活,进程内的顺序语句被执行。当进程结束时,进程内的输出信号值被更新,进程进入等待(睡眠)状态,直到敏感表中的某一信号发生变化,进程被再次激活。进程进入等待(睡眠)状态,直到敏感

52、表中的某一信号发生变化,进程被再次激活。下面举一个应用示例,如下面电路:下面举一个应用示例,如下面电路:用用不同用用不同VHDL语句语句对电路的描述如下:对电路的描述如下: libraryieee;useieee.std_logic_1164.all;Entityexam1isPort(a,b:instd_logic;c,d:outstd_logic);Endexam1;Architecturem1ofexam1isBeginc=aandb;d=aorb;Endm1;architecturem2ofexam1isbeginProcess(a,b)beginc=aandb;d=aorb;endp

53、rocess;endm2;architecturem2ofexam1isbeginProcess(a,b)beginc=aandb;d=aorb;endprocess;endm2;architecturem3ofexam1isbeginProcess(a,b)beginc=aandb;endprocessD1;Process(a,b)begind信号信号A1,组件信号组件信号B=信号信号B1,);U1:nd2portmap(a1,b1,x);U1:nd2portmap(a1,b1,x);U2:nd2portmap(a=c1,c=y,b=d1);U2:nd2portmap(a=c1,c=y,b=

54、d1);U3:nd2portmap(a=x,y,c=z1)U3:nd2portmap(a=x,y,c=z1)位置对应方式位置对应方式名字直接对应名字直接对应利用一位全加器元件的调用实现四位全加器: 利用一位全加器元件的调用实现四位全加器:利用一位全加器元件的调用实现四位全加器: Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;EntityadderisPort(Cin:instd_logic;x,y:instd_logic_vector(3downto0);sum:outstd_logic_vector

55、(3downto0);Cout:outstd_logic);Endadder;Architecture a of adder isSignalc:std_logic_vector(0to4);Component fulladderPort( ci,a,b : in std_logic; s,co : out std_logic); end component;Beginc(0)=Cin;U1: fulladder Port map(c(0),x(0),y(0),sum(0),c(1);U2: fulladder Port map(c(1),x(1),y(1),sum(1),c(2);U3: f

56、ulladder Port map(c(2),x(2),y(2),sum(2),c(3);U4: fulladder Port map(c(3),x(3),y(3),sum(3),c(4);Coutc(0),a=x(0),b=y(0),s=sum(0),co=c(1);U2:fulladderPortmap(ci=c(1),a=x(1),b=y(1),s=sum(1),co=c(2);U3:fulladderPortmap(ci=c(2),a=x(2),b=y(2),s=sum(2),co=c(3);U4:fulladderPortmap(ci=c(3),a=x(3),b=y(3),s=sum

57、(3),co=c(4);并行语句并行语句,元件同时产生元件同时产生6.For-Generate( (生成语句生成语句) )作用:作用:For-Generate语句用于重复性的信号设置或重复性的元件例化。语句用于重复性的信号设置或重复性的元件例化。 元件例化循环管脚映射语句元件例化循环管脚映射语句标号:标号: FOR 循环变量循环变量 IN 取值范围取值范围 GENERATE 说明说明 BEGIN 并行语句并行语句ENDGENERATE标号标号;标号:标号: IF 条件条件GENERATE 说明说明 Begin 并行语句并行语句ENDGENERATE标号标号;7.子程序调用语句:子程序调用语句:

58、格式:格式:过程名过程名(形参名形参名=实参表达式,实参表达式,);Example:Example:ARCHITECTURE behav OF example ISARCHITECTURE behav OF example IS PROCEDUREPROCEDURE adder (SIGNAL a,b:IN std_logic;SIGNAL sum:OUT std_logic); adder (SIGNAL a,b:IN std_logic;SIGNAL sum:OUT std_logic); END PROCEDUREEND PROCEDURE; ;BEGINBEGIN adder(a1,b

59、1,sum1);adder(a1,b1,sum1); END behavEND behav;子程序调用子程序调用语句包括了语句包括了过程调用语过程调用语句句和和函数调函数调用语句用语句。2.8VHDL顺序语句顺序语句一、顺序语句概念顺序语句的特点是,每一条顺序语句的执行顺序执行顺序是与它们的书写顺书写顺序序基本一致的。顺序语句只能出现在进程(Process)和子程序中,子程序包括函数(Function)和过程(Procedure)。二、种类 进程语句赋值语句 流程控制语句 等待语句 子程序调用语句 返回语句 空操作语句v进程语句是由顺序语句构成的,通过信号与结构体其余部分进行信进程语句是由顺序

60、语句构成的,通过信号与结构体其余部分进行信息交流,在进程中有一个敏感信号列表,表中列出的任何信号的改息交流,在进程中有一个敏感信号列表,表中列出的任何信号的改变都将启动进程,执行进程内相应的顺序语句。进程语句是将并行变都将启动进程,执行进程内相应的顺序语句。进程语句是将并行语句和顺序语句区分开来的标志之一。语句和顺序语句区分开来的标志之一。(1)进程语句进程语句(Process语句)语句)区区区区别别别别Signal s1,s2 : std_logic ;Signal sec : std_logic_vector(0 to 7);Process (s1 , s2)Variable v1,v2

61、: std_logic;Begin v1 := 1; v2 := 1 ;s1 = 1;s2 = 1;sec(0) = v1;sec(1) = v2;sec(2) = s1;sec(3) = s2;v1 : = 0;v2 : = 0;s2 = 0;sec(4) = v1;sec(5) = v2;sec(6) = s1;sec(7) b)THENoutb)THENout=1;ELSEout=0;ENDIF;三、第三种三、第三种IF语句语句语句格式例题例题1:Signal a,b,c,p1,p2,z : bit;IF (p1=1) THENz =a;ELSIF (p2=0) THENz = b;EL

62、SEz = c;END IF;?选择方式选择方式cbaa画线部分意思:画线部分意思:ELSIF(p1=0andp2=0)注注例题例题2:8线线3线优先编码器线优先编码器LIBRARY IEEE ;USEIEEE.STD_LOGIC_1164.ALL;ENTITY coder ISPORT(I:INSTD_LOGIC_VECTOR(0TO7)Y:OUTSTD_LOGIC_VECTOR(1TO3);ENDcoder;实实体体设设计计功能:设计元件外观功能:设计元件外观ARCHITECTUREa1orcoderISBeginIF(I(7)=1)THENY=“111”;ELSIF(I(6)=1)THE

63、NY=“110”;ELSIF(I(5)=1)THENY=“101”;ELSIF(I(4)=1)THENY=“100”;ELSIF(I(3)=1)THENY=“011”;ELSIF(I(2)=1)THENY=“010”;ELSIF(I(1)=1)THENY=“001”;ELSEY=“000”;ENDa1;结结构构体体设设计计功能:描述输入和输出之间的逻辑关系功能:描述输入和输出之间的逻辑关系ENDIF;练习题:练习题:设计一个设计一个3线线8线译码器线译码器元件外观元件外观输入输出逻辑关系输入输出逻辑关系LIBRARY IEEE ;USEIEEE.STD_LOGIC_1164.ALL;ENTIT

64、Y coder ISPORT(A:INSTD_LOGIC_VECTOR(1TO3)Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDcoder;实实体体设设计计功能:设计元件外观功能:设计元件外观ARCHITECTUREa1orcoderISBeginIFA=“000”THENY=“00000001”;ELSIFA=“001”THENY=“00000010”;ELSIFA=“010”THENY=“00000100”;ELSIFA=“011”THENY=“00001000”;ELSIFA=“100”THENY=“00010000”;ELSIFA=“101”THENY=“001

65、00000”;ELSIFA=“110”THENY=“01000000”;ELSEY顺序语句 When 选择值 =顺序语句 End case;CASE 语句根据满足的条件直接直接选择多项顺序语句的一项执行=不是信号赋值符号,其意思等价于 “THEN”注注例题例题1:用用CASE语句设计四选一数据选择器语句设计四选一数据选择器LIBRARY IEEE;USEIEEE.STD_LOGIC_1164.ALLENTITYmux41ISPORT(s1,s2:instd_logic;a,b,c,d:instd_logic;z:outstd_logic);ENDENTITYmux41;ARCHITECTURE

66、activOFmux41ISSIGNALs:std_logic_vector(1downto0);BEGINSzzzzz=x;ENDCASE;ENDPROCESS;ENDactiv;ARCHITECTUREactivOFmux41ISSIGNALs:std_logic_vector(1downto0);BEGINS=s1&s2PROCESS(s1,s2,a,b,c,d)BEGINIF s=“00”thenz=a;ELSIFs=“01”thenz=b;ELSIFs=“10”thenz=c;ELSEz=d;ENDIF;ENDPROCESS;ENDARCHITECTUREactiv;ARCHITEC

67、TUREactivOFmux41ISSIGNALs:std_logic_vector(1downto0);BEGINSzzzzz Z1 Z2 Z3Z410;ENDLOOPL2;二、FOR_LOOP语句LOOP标号: FOR 循环变量循环变量 IN 循环次数范围 LOOP 顺序语句; END LOOP LOOP 标号 ;例:试设计一个八位奇偶校验器例:试设计一个八位奇偶校验器注:注:0XORa=a三三.WHILE_LOOP语句语句标号: WHILE 循环控制变量 LOOP 顺序语句 END LOOP 标号;例例1:Shift1 : PROCESS (inputx) VARIABLE n : PO

68、SITIVE :=1 BEGIN L1 : WHILE n8 LOOP outputx(n)= input (n+8);n:= n+1; END LOOP L1;END PROCESS Shift1;3.3.4NEXT与与EXIT语句语句NEXT;NEXT LOOP 标号;NEXT LOOP 标号 WHEN 条件表达式;EXIT;EXIT LOOP 标号;EXIT LOOP 标号 WHEN 条件表达式;循循环环语语句句转转向向控控制制3.4子程序及其调用子程序及其调用子程序概述子程序概述函数函数(Function)过程(过程(Procedure)子程序调用子程序调用3.5返回语句(返回语句(R

69、eturn)3.6空操作语句(空操作语句(NULL)3.7其它语句其它语句3.4.1子程序概述子程序概述子程序是一个子程序是一个VHDL程序模块,由顺序语句构成,用于完成程序模块,由顺序语句构成,用于完成重复性的计算工作,子程序有两种类型,即过程(重复性的计算工作,子程序有两种类型,即过程(Procedure)和函数(和函数(Function)。子程序的使用方法只能通过子程序调)。子程序的使用方法只能通过子程序调用及与子程序的界面端口进行通信。每调用一次子程序都意用及与子程序的界面端口进行通信。每调用一次子程序都意味着增加了一个硬件电路模块,因此,在实际使用时,要密味着增加了一个硬件电路模块,

70、因此,在实际使用时,要密切关注和严格控制子程序的调用次数。切关注和严格控制子程序的调用次数。3.4.2函数函数(Function)函数首函数首Function 函数名 (参数表) Return 数据类型Function 函数名 (参数表) Return 数据类型 IS 说明部分 Begin 顺序语句 END Function 函数名;函数体函数体注注:参数表中参量可以是变量、信号、常数(默认)参数表中参量可以是变量、信号、常数(默认)无需定义参数的方向(默认为无需定义参数的方向(默认为“输入输入”)例例1Entity func IsPort ( a: in bit_vector (0 to 2

71、) ; m : out bit_vector(0 to 2);End Entity func;Architecture demo Of func IsFunctionsam(x,y,z:bit)ReturnbitisBeginReturn(xandy)orzEndFunctionsam;BeginProcess (a)Beginm(0)=sam(a(0),a(1),a(2);m(1)=sam(a(2),a(0),a(1);m(0)Return “1100”;When “0101”Return “1100”;When OthersReturn “1111”;End Case;End Functi

72、on trans;3.4.3过程(过程(Procedure)过程首过程首Procedure 过程名 (参数表)Procedure 过程名 (参数表) IS 说明部分 Begin 顺序语句 END Procedure 过程名;过程体过程体注注:参数表中参量可以时变量、信号、常数(默认)参数表中参量可以时变量、信号、常数(默认)参数的方向可以是参数的方向可以是IN、OUT、INOUT例例Procedure prg1 (variable value:inout bit_vector(0 to 3) )BeginCase value ISWhen “0000”Return “1100”;When “0

73、101”Return “0000”;When OthersReturn “1111”;End Case;End Procedure Prg1;3.4.4子程序调用子程序调用例题例题ENTITYlitiISPORT(a,b,c,d:inbit_vector(0to3);ra,rb,rc,rd:ourbit_vector(0to3);ENDliti;ARCHITECTUREmuxesOFlitiisProceduresort(x,y:inoutbit_vector(0to3)isvariabletmp:bit_vector(0to3);BeginIfxythentmp:=x;x:=y;y:=tmp

74、;ENDIF;ENDSORT;BeginProcess(a,b,c,d)Beginsort(a,c);sort(b,d);sort(a,b);sort(c,d);sort(b,c);ENDprocess;ra=a;rb=b;rc=c;rd=d;ENDmuxes;3.4.5函数与过程对比函数与过程对比v过程可以返回多值,函数只能返回一个值。过程可以返回多值,函数只能返回一个值。v过程的参数为过程的参数为IN、OUT、INOUT函数的参数为函数的参数为IN(默认默认)。函数和过程均能产生新的电路模块。函数和过程均能产生新的电路模块。3.5返回语句(返回语句(Return)Return;Return

75、表达式;表达式;只能用于只能用于FunctionProcedurers(signals,r:instd_logic;signalq,nq:inoutstd_logic)isBeginIf(s=1andr=1)thenReturnElseq=sandnqNq tmp:=rega and regb;WHEN “101” = tmp:=rega or regb;WHEN “110” = tmp:=NOT rega;WHEN OTHERS = NULL;END CASE;注:NULL语句有时会造成不必要的寄存器3.7其它语句其它语句clock EVENT and clock =1;功能:功能:cloc

76、k EVENT 就是对信号在当前的一个极小的时间段内电平是否发生变化进行检测。例例1:Process (clock)If (clockEVENT and clock=1) thenQ=DATAEnd If;End Process;例例2:Process (clock)If (clockEVENT and clock=0) thenQ=DATAEnd If;End Process;例例3:Process (clock)If rising_edge (clock) thenQAAAAAAAAA=11111111;endcase;elseA=11111111;Endif;endprocess;end

77、m1;5.3.2七段显示码译码器七段显示码译码器一、外观及功能一、外观及功能二、其二、其VHDLVHDL程序程序结构体结构体实体实体5.4简单数简单数字显示系统字显示系统显示译显示译码器码器二十进二十进制编码制编码器器U1:bmqPortmap(x,z);U2:xianPortmap(z,Y);例化过程:例化过程:一、一、数据选择器数据选择器5.5其它其它二、八位二进制比较器二、八位二进制比较器第六章第六章时序逻辑电路的设计和分析时序逻辑电路的设计和分析6.2触发器触发器6.3计数器计数器6.4分频器分频器6.5寄存器寄存器6.1概述概述任一时刻的输出不仅取决于当时的输入,而且还取决于电任一时

78、刻的输出不仅取决于当时的输入,而且还取决于电路原来的状态,这样的数字电路叫做时序逻辑电路。路原来的状态,这样的数字电路叫做时序逻辑电路。常用时序电路设计:常用时序电路设计: (1)JK型、型、T型和型和D型触发器型触发器(2)移位寄存器设计)移位寄存器设计(3)计数器设计)计数器设计(4)分频器设计)分频器设计6.1概述概述6.2触发器触发器6.2.1D触发器触发器6.2.2T触发器触发器6.2.2JK触发器触发器符号符号特性表特性表6.2.1D触发器触发器LIBRARYIEEE;USEIEEE.std_logic_1164.all;EntityffDisport(clk,d:instd_lo

79、gic;q:outstd_logic);EndffD;Architecturebody1offfdisbeginprocess(clk)beginifclkeventandclk=1thenq=d;endif;endprocess;endbody1;Architecturebody2offfdisbeginprocess(clk,d)beginifrising_edge(clk)thenq=d;endif;endprocess;endbody2;符号符号特性表特性表6.2.2T触发器触发器LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYfftISPOR

80、T(Cp,T:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDfft;ARCHITECTUREaOFfftISsignalqn:std_logic;BEGINprocess(cp)beginifcpeventandcp=1thenifT=1thenqn=notqn;endif;endif;endprocess;q=qn;ENDa;符号符号特性表特性表6.2.3JK触发器触发器LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYffJKISPORT(Cp,J,K:INSTD_LOGIC; q:OUTSTD_LOGIC);END ffJK;ARC

81、HITECTUREaOFffJKIS signal qn : std_logic; Signaltt:std_logic_vector(2downto1)BeginProcess(Cp)beginttqnqnqnnull;Endcase;Endif;EndProcess;q=qn;Enda;练习题:练习题:在在JK触发器的结构体中是否可以用触发器的结构体中是否可以用withselect语句。语句。一、一、24进制加法计数器进制加法计数器 6.3计数器计数器实体实体结构体结构体二、二、60进制加法计数器进制加法计数器 实体实体结构体结构体 结论结论结论结论:该计数器为十进制加计数器该计数器为十进

82、制加计数器该计数器为十进制加计数器该计数器为十进制加计数器6.4分频器分频器(加法4MHz-1hz分频器) 状态图时序图1 10 00 00 00 01 10 00 01 11 10 0一个一个3bits的计数器,它所能计数的范围为的计数器,它所能计数的范围为07(=23-1)。同理,)。同理,nbits的计的计 数器所能计数范围为数器所能计数范围为02n-1。Q0、Q1、Q2的波形频率分别为时钟脉冲信号的波形频率分别为时钟脉冲信号Clk的的1/2、1/4、1/8,由此可以,由此可以 知道,知道,nbits的计数器可获得的最低分频频率为时钟脉冲信号的计数器可获得的最低分频频率为时钟脉冲信号Cl

83、k的的1/2n。对于对于4MHz频率信号,若作为加法计数器电路的时钟脉冲信号频率信号,若作为加法计数器电路的时钟脉冲信号Clk,则电路不,则电路不同输出脚位获得的分频频率如下表所示。同输出脚位获得的分频频率如下表所示。Clk=4MHzQ02MHzQ101.953125kHzQ201.907348HzQ11MHzQ11976.5625HzQ210.953674HzQ2500kHzQ12488.28125HzQ220.476837HzQ3250kHzQ13244.14063HzQ230.238418HzQ4125kHzQ14122.070312HzQ240.119209HzQ562.5kHzQ15

84、61.035156HzQ250.059604HzQ631.25kHzQ1630.517578HzQ260.029802HzQ715.625kHzQ1715.258789HzQ270.014901HzQ87.8125kHzQ187.629394HzQ280.00745HzQ93.90625kHzQ193.814697HzQ290.003725Hz结构体结构体实体实体我们设计一个由我们设计一个由4MHz到到1Hz的分频器,其的分频器,其VHDL电路设计为:电路设计为:6.5寄存器寄存器寄存器是暂时存储一组数据的数字器件。结论结论:一个脉冲存储一组数据一个脉冲存储一组数据,即一拍存储一组数据即一拍存

85、储一组数据110110一、普通寄存器一、普通寄存器LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_1164.ALL;USE IEEE.STD_1164.ALL;ENTITY JICUN ISENTITY JICUN ISPORT( D : IN STD_LOGIC_VECTOR(3 DOWNTO 1);PORT( D : IN STD_LOGIC_VECTOR(3 DOWNTO 1); CLK : IN STD_LOGIC; CLK : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 1) ); Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 1) );END ENTITY;END ENTITY;ARCHITECTURE ONE OF JICUN ISARCHITECTURE ONE OF JICUN ISBEGINBEGINIF CLKEVENT AND CLK=1 THENIF CLKEVENT AND CLK=1 THENQ = D;Q = D;END IF;END IF;END ARCHITECTURE;END ARCHITECTURE;二、移位寄存器二、移位寄存器100010001000111000 S1=0;S0=1右移输入 S1=1;S0=0左移输入结束结束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号