EAD课程-第3章VHDL基本结构_第1页
EAD课程-第3章VHDL基本结构_第2页
EAD课程-第3章VHDL基本结构_第3页
EAD课程-第3章VHDL基本结构_第4页
EAD课程-第3章VHDL基本结构_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 2 VHDL VHDL语言是一种在语言是一种在EDAEDA设计中广泛流行的设计中广泛流行的硬件描述语言,主要用于描述数字系统的结硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口。构、行为、功能和接口。 除了含有许多具有硬件特征的语句外,除了含有许多具有硬件特征的语句外,VHDLVHDL语言的句法、语言形式和描述风格十分语言的句法、语言形式和描述风格十分类似于一般的计算机高级语言,是目前硬件类似于一般的计算机高级语言,是目前硬件描述语言中应用最为广泛的一种。描述语言中应用最为广泛的一种。 3 3.1.1 VHDLVHDL语言简介语言简介 VHDL VHDL语言全称是语言全称是“超高

2、速集成电路硬件描述语超高速集成电路硬件描述语言言”,它诞生于,它诞生于19821982年,由美国国防部于年,由美国国防部于2020世纪七、世纪七、八十年代组织研制开发,其目的首先是用这种语言八十年代组织研制开发,其目的首先是用这种语言描述复杂电路,其次是希望这种语言能够成为一种描述复杂电路,其次是希望这种语言能够成为一种标准语言。标准语言。 1987 1987年底,年底,VHDLVHDL语言被电气和电子工程师协会语言被电气和电子工程师协会IEEEIEEE和美国国防部确认为标准硬件描述语言,版本和美国国防部确认为标准硬件描述语言,版本为为IEEE-1076IEEE-1076(简称(简称8787版

3、)。此后在电子产业界被广版)。此后在电子产业界被广泛地接受,并逐步取代了原有的非标准硬件描述语泛地接受,并逐步取代了原有的非标准硬件描述语言(如言(如CUPLCUPL、ABELABEL等)。等)。 4 3.1.1 VHDLVHDL语言简介语言简介 19931993年,年,IEEEIEEE对对VHDLVHDL进行了修订,增加了一些进行了修订,增加了一些功能,并从更高的抽象层次和系统描述能力上扩展功能,并从更高的抽象层次和系统描述能力上扩展VHDLVHDL的内容,公布了的内容,公布了VHDLVHDL新的版本,编号为新的版本,编号为IEEE IEEE Std1076-1993Std1076-1993

4、(简称(简称9393版)。版)。 19951995年中国国家技术监督局组织编写并出版了年中国国家技术监督局组织编写并出版了CADCAD通用技术规范通用技术规范,推荐,推荐VHDLVHDL语言作为我国电子语言作为我国电子自动化硬件描述语言的国家标准。自动化硬件描述语言的国家标准。19961996年,年,IEEE1076.3IEEE1076.3成为成为VHDLVHDL综合标准。综合标准。 5 3.1.1 VHDLVHDL语言简介语言简介 目前,目前,VHDLVHDL已经成为一个数字电路和硬件系统已经成为一个数字电路和硬件系统描述、综合、优化和布线的描述、综合、优化和布线的IEEEIEEE工业标准,

5、已得到工业标准,已得到众多众多EDAEDA公司的支持,越来越多的硬件电路设计工具公司的支持,越来越多的硬件电路设计工具向向VHDLVHDL标准靠拢,支持标准靠拢,支持VHDLVHDL语言。在电子工程领域语言。在电子工程领域中,无论中,无论ASICASIC设计人员,还是系统设计人员,都需设计人员,还是系统设计人员,都需要学习要学习VHDLVHDL语言来提高自己的工作效率。有专家认语言来提高自己的工作效率。有专家认为,在未来的为,在未来的ITIT行业中,行业中,VHDLVHDL语言和语言和Verilog HDLVerilog HDL语语言将承担几乎全部的数字系统设计任务。言将承担几乎全部的数字系统

6、设计任务。 6 3.1.2 VHDLVHDL语言特点语言特点 VHDL VHDL语言作为一种标准的硬件描述语言,具有语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,支持从系统级到逻结构严谨、描述能力强的特点,支持从系统级到逻辑门级电路所有层次的设计,适合于复杂逻辑电路辑门级电路所有层次的设计,适合于复杂逻辑电路和系统的设计。和系统的设计。 作为高级硬件描述语言,作为高级硬件描述语言,VHDLVHDL有如下特点:有如下特点: 支持从系统级到逻辑门级电路的描述;支持从系统级到逻辑门级电路的描述; 具有很强的硬件描述能力;具有很强的硬件描述能力; 设计技术齐全、方法灵活、支持广泛;设

7、计技术齐全、方法灵活、支持广泛; 对设计描述具有相对的独立性;对设计描述具有相对的独立性; 具有很强的移植能力;具有很强的移植能力; 易于共享和复用;易于共享和复用; 具有丰富的仿真语句和库函数;具有丰富的仿真语句和库函数;7 3.1.2 VHDLVHDL语言特点语言特点 作为高级硬件描述语言,作为高级硬件描述语言,VHDLVHDL有如下特点:有如下特点: 设计结构清晰、易读易懂;设计结构清晰、易读易懂; 易实现系统的更新和升级;易实现系统的更新和升级; 数据类型丰富、安全性好。数据类型丰富、安全性好。8 9 10 11 用用VHDLVHDL语言设计的电路无论规模大小,都要使语言设计的电路无论

8、规模大小,都要使用一个完整的用一个完整的VHDLVHDL程序结构,这个完整的程序结构程序结构,这个完整的程序结构称为设计实体或实体。称为设计实体或实体。 设计实体是指能被设计实体是指能被VHDLVHDL语言综合器所接受,并语言综合器所接受,并能作为独立的设计单元,以元件的形式存在的能作为独立的设计单元,以元件的形式存在的VHDLVHDL语言程序。语言程序。 所谓的元件,既可以被高层次的系统调用,成所谓的元件,既可以被高层次的系统调用,成为系统的一部分,也可以作为一个电路的功能模块,为系统的一部分,也可以作为一个电路的功能模块,独立存在和运行。独立存在和运行。 12 3.2.1 VHDLVHDL

9、语言设计实体的组成语言设计实体的组成 VHDLVHDL语言的设计实体都由实体说明语言的设计实体都由实体说明(Entity)(Entity)和和结构体结构体(Architecture)(Architecture)两个最基本的部分组成。两个最基本的部分组成。 实体说明部分用来描述该模块或系统的接口信实体说明部分用来描述该模块或系统的接口信息,包括端口的数目、方向和类型,其作用相当于息,包括端口的数目、方向和类型,其作用相当于传统设计方法中所使用的元件符号。传统设计方法中所使用的元件符号。 结构体部分则描述该模块的内部电路,对应于结构体部分则描述该模块的内部电路,对应于原理图、逻辑方程和模块的输入原

10、理图、逻辑方程和模块的输入/ /输出特性。输出特性。 一个设计实体可以包含一个或多个结构体,用一个设计实体可以包含一个或多个结构体,用于描述其的逻辑结构和逻辑功能。于描述其的逻辑结构和逻辑功能。 13 1. VHDLVHDL设计实体的结构设计实体的结构 一个完整的一个完整的VHDLVHDL设计实体(设计文件),通常设计实体(设计文件),通常包括:包括: 实体说明(实体说明(EntityEntity) 结构体(结构体(ArchitectureArchitecture) 配置(配置(ConfigurationConfiguration) 库(库(LibraryLibrary)和程序包()和程序包(

11、PackagePackage) 14 1. VHDLVHDL设计实体的结构设计实体的结构 库、程序包库、程序包配置配置 设计实体设计实体实体说明实体说明结构体结构体进程进程或其他并行结构或其他并行结构 基本结构:基本结构: 15 2. 设计实体举例设计实体举例 【例例3.2.1】试用试用VHDLVHDL语言设计一个四选一数据选择器。语言设计一个四选一数据选择器。 数据输入:数据输入: D3 D2 D1 D0 数据输出:数据输出: Y 选择控制:选择控制: S1 S0 16 VHDLVHDL程序如下:程序如下: LIBRARYLIBRARY IEEE IEEE; -IEEE-IEEE库库 USE

12、USE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; -程序包程序包 USEUSE IEEE.STD_LOGIC_ARITH. IEEE.STD_LOGIC_ARITH.ALLALL; USEUSE IEEE.STD_LOGIC_UNSIGNED. IEEE.STD_LOGIC_UNSIGNED.ALLALL; ENTITYENTITY mux41 mux41 ISIS - -定义实体名定义实体名 PORTPORT ( ( S1, S0: S1, S0: ININ STD_LOGIC STD_LOGIC; -定义输入信号定义输入信号 D3,

13、D2, D1, D0: D3, D2, D1, D0: ININ STD_LOGIC STD_LOGIC; Y: Y: OUTOUT STD_LOGIC - STD_LOGIC -定义输出信号定义输出信号 ) ); ENDEND mux41 mux41; ARCHITECTUREARCHITECTURE behaveior behaveior OFOF mux41 mux41 ISIS - -定义结构体名定义结构体名 BEGINBEGIN - -逻辑功能描述逻辑功能描述 Y=D0 Y=D0 WHENWHEN S1=0 S1=0 ANDAND S0=0 S0=0 ELSEELSE D1 D1 W

14、HENWHEN S1=0 S1=0 ANDAND S0=1 S0=1 ELSEELSE D2 D2 WHENWHEN S1=1 S1=1 ANDAND S0=0 S0=0 ELSEELSE D3 D3; ENDEND behaveior behaveior; 库库 程序包程序包 实体说明实体说明 结构结构体体 17 2. 设计实体举例设计实体举例 库:库:是是用来存放已设计好的程序包、数据集合体、用来存放已设计好的程序包、数据集合体、元件的仓库,元件的仓库,供用户进行供用户进行VHDLVHDL设计时调用。设计时调用。 程序包:程序包:用用VHDLVHDL语言编写的共享文件,定义了将要语言编写的

15、共享文件,定义了将要使用的常数、数据类型、子程序和设计好使用的常数、数据类型、子程序和设计好的电路单元等。的电路单元等。 实体说明:实体说明:定义电路单元的输入、输出引脚信号。定义电路单元的输入、输出引脚信号。以标识符以标识符ENTITYENTITY开始,以开始,以ENDEND结束。结束。 结构体:结构体:用来描述电路内部结构和逻辑功能。并以用来描述电路内部结构和逻辑功能。并以标识符标识符ARCHITECTUREARCHITECTURE开头,以开头,以ENDEND结尾。结尾。 18 3.2.2 VHDLVHDL语言的实体说明语言的实体说明 实体说明是实体说明是VHDLVHDL程序设计中最基本的

16、组成部分,程序设计中最基本的组成部分,主要用来描述设计实体的外部接口信号,定义设计主要用来描述设计实体的外部接口信号,定义设计单元的输入、输出端口,是设计实体对外的一个通单元的输入、输出端口,是设计实体对外的一个通信界面,但它不描述设计的具体功能。信界面,但它不描述设计的具体功能。 实体说明语句的格式如下:实体说明语句的格式如下: ENTITY ENTITY 实体名实体名 ISIS GENERICGENERIC(类属表类属表);); PORTPORT(端口表端口表);); ENDEND ENTITYENTITY 实体名实体名; 规则:规则: 实体声明语句必须以实体声明语句必须以“ENTITYE

17、NTITY 实体名实体名 IS”IS”开始,以开始,以“END ENTITYEND ENTITY 实体名;实体名;”结束;结束; 实体名是设计者给设计实体的命名;实体名是设计者给设计实体的命名; 方括号内的语言描述可任选。方括号内的语言描述可任选。19 1.1.实体说明语句实体说明语句ENTITYENTITY 该语句是实体说明的引导语句,用来指明实体该语句是实体说明的引导语句,用来指明实体说明部分的开始,并定义实体名。说明部分的开始,并定义实体名。 关键字:关键字: 格格 式:式: 实体名实体名 在设计编程时,实体名必须与设计文件名相同,在设计编程时,实体名必须与设计文件名相同,否则无法编译。

18、否则无法编译。 20 2.2. 类属说明语句类属说明语句GENERICGENERIC 该语句用来确定设计实体中定义的局部常数,将外部环该语句用来确定设计实体中定义的局部常数,将外部环境的信息参数传递到设计实体,并用类属表的形式指明器件境的信息参数传递到设计实体,并用类属表的形式指明器件的一些特征。的一些特征。 关键字:关键字: 格格 式:式: 常数名:常数名:是由设计者定义的类属常数名;是由设计者定义的类属常数名; 数据类型:数据类型:常取常取INTEGERINTEGER或或TIMETIME的类型;的类型; 设定值:设定值:为常数名所代表的数值。为常数名所代表的数值。21 2.2. 类属说明语

19、句类属说明语句GENERICGENERIC 例如:例如: 类属表对数据总线的类型和宽度做了定义,类属参数类属表对数据总线的类型和宽度做了定义,类属参数datawithdatawith的数据类型为整数,数据宽度为的数据类型为整数,数据宽度为8 8位。位。 ENTITY ENTITY body body ISIS GENERICGENERIC(datawidth: INTEGER :=8datawidth: INTEGER :=8);); 类属说明必须位于端口说明之前,用于指定设计实体和类属说明必须位于端口说明之前,用于指定设计实体和外部环境通信的参数,并以关键字外部环境通信的参数,并以关键字GE

20、NERICGENERIC引导一个类属参引导一个类属参数表,在表中提供时间参数、总线宽度等信息。数表,在表中提供时间参数、总线宽度等信息。 22 3.3. 端口说明语句端口说明语句PORTPORT 该语句是设计实体与外界接口的描述,用来指明实体的该语句是设计实体与外界接口的描述,用来指明实体的输入、输出信号及其模式,包括端口的名称、数据的类型和输入、输出信号及其模式,包括端口的名称、数据的类型和数据的传递方向(端口模式)。数据的传递方向(端口模式)。 关键字:关键字: 格格 式:式: 端口名:是赋予每个外部引脚的名称,通常用一个或几个端口名:是赋予每个外部引脚的名称,通常用一个或几个英文字母,或

21、者用英文字母加数字命名。英文字母,或者用英文字母加数字命名。 端口模式:即端口方向,用来定义外部引脚的信号方向端口模式:即端口方向,用来定义外部引脚的信号方向,共共有五种模式。有五种模式。 数据类型:用来指定每个端口信号的取值类型数据类型:用来指定每个端口信号的取值类型,共有共有10种。种。 23 3.3. 端口说明语句端口说明语句PORTPORT 端口模式说明:端口模式说明: 24 3.3. 端口说明语句端口说明语句PORTPORT 端口模式端口模式的符号的符号 : IN端口端口模式模式 : OUT端口模式:端口模式:INOUT端口模式:端口模式:BUFFER端口模式:端口模式:25 3.3

22、. 端口说明语句端口说明语句PORTPORT 【例例3.2.23.2.2】 编写编写2 2输入与非门的实体说明。输入与非门的实体说明。 设与非门的输入为设与非门的输入为A A和和B B,输出为,输出为Y Y。 ENTITY ENTITY nand2 ISIS GENERICGENERIC ( risew: TIME :=1ns; fallw: TIME :=1ns ); PORTPORT ( A: ININ STD_LOGIC; B: ININ STD_LOGIC; Y: OUTOUT STD_LOGIC ); ENDEND nand2;-定义定义risewrisew为上升沿为上升沿-定义定义

23、fallwfallw为下降沿为下降沿-定义定义A A、B B和和Y Y为逻辑位为逻辑位2673页 VHDL源程序如下。library IEEE; -库use IEEE.std_logic_1164.all;entity ch0 isport( d0:in std_logic; d1:in std_logic; -实体 sel:in std_logic; q:out std_logic);end ch0; 27architecture connect of ch0 is begin process(d0,dl,sel)variable templ,temp2,temp3:std_logic; -

24、结构体begintemp1:=d0 and sel;temp2:=d1 and (not sel);temp3:=temp1 or temp2;q=temp3;end process;end connect; 28 3. 3 VHDLVHDL语言的结构体语言的结构体 结构体是设计实体的核心,它具体指明了设计结构体是设计实体的核心,它具体指明了设计实体的行为、元件及内部连接关系。实体的行为、元件及内部连接关系。 结构体所承担的任务结构体所承担的任务 : 定义结构体内部所使用的各项元素;定义结构体内部所使用的各项元素; 通过通过VHDLVHDL提供的语句来描述设计实体所要提供的语句来描述设计实体所

25、要求的具体行为和功能;求的具体行为和功能; 描述各元件之间的连接。描述各元件之间的连接。29 3.3 VHDLVHDL语言的结构体语言的结构体 结构体内部构造的描述层次和描述内容:结构体内部构造的描述层次和描述内容: 30 3.3 VHDLVHDL语言的结构体语言的结构体 结构体由两个基本部分组成:结构体由两个基本部分组成: 结构体说明,用来对数据类型、常数、信号、结构体说明,用来对数据类型、常数、信号、子程序和元件等进行说明。子程序和元件等进行说明。 结构体功能描述,用来描述设计实体的逻辑结构体功能描述,用来描述设计实体的逻辑行为,可以用不同的描述风格来表达设计实体的逻行为,可以用不同的描述

26、风格来表达设计实体的逻辑功能。辑功能。 31 结构体的格式:结构体的格式: 1. 结构体的基本格式结构体的基本格式 ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 结构体说明语句;结构体说明语句; BEGIN 功能描述语句;功能描述语句; END ARCHITECTURE 结构体名结构体名 ; 32 结构体引导语句用来引导结构体的开始,并定结构体引导语句用来引导结构体的开始,并定义结构体的名称。义结构体的名称。 2. 结构体引导语句结构体引导语句 关键字:关键字: ARCHITECTURE 格格 式:式: ARCHITECTURE 结构体名结构体名 OF 实体名实体名 I

27、SIS 结构体名是给予结构体的名称,是该结构体唯结构体名是给予结构体的名称,是该结构体唯一的名字,用来一的名字,用来表明该结构体所隶属于哪个实体。表明该结构体所隶属于哪个实体。 33 用于定义结构体中所用的数据对象和子程序,用于定义结构体中所用的数据对象和子程序,并对所引用的元件加以说明,如:并对所引用的元件加以说明,如: 3. 结构体说明语句结构体说明语句 信号(信号(SIGNALSIGNAL) 类型(类型(TYPETYPE) 常数(常数(CONSTANTCONSTANT) 元件(元件(COMPONENTCOMPONENT) 函数(函数(FUNCTIONFUNCTION) 过程(过程(PRO

28、CEDUREPROCEDURE) 34 4. 功能描述语句功能描述语句 用于描述实体的逻辑功能。用于描述实体的逻辑功能。 功能描述语句结构可以含有五种不同类型。功能描述语句结构可以含有五种不同类型。 35 4. 功能描述语句功能描述语句 块语句(块语句(BLOCKBLOCK) 块语句结构是由若干个并行执行语句构成的组合体,其块语句结构是由若干个并行执行语句构成的组合体,其功能是将结构体中的并行语句包装在一起,组成一个或多个功能是将结构体中的并行语句包装在一起,组成一个或多个模块(即子模块)。模块(即子模块)。 进程语句(进程语句(PROCESSPROCESS) 定义顺序语句模块,其内部为顺序语

29、句,将从外部获得定义顺序语句模块,其内部为顺序语句,将从外部获得的信号值,或内部的运算数据向其他信号进行赋值。的信号值,或内部的运算数据向其他信号进行赋值。 信号赋值语句(信号赋值语句(SIGNALSIGNAL) 用来将设计实体内的处理结果向所定义的信号或界面端用来将设计实体内的处理结果向所定义的信号或界面端口进行赋值。口进行赋值。 36 4. 功能描述语句功能描述语句 子程序调用语句子程序调用语句 由过程(由过程(PROCEDUREPROCEDURE)和函数()和函数(FUNCTIONFUNCTION)组成,其内部)组成,其内部是顺序语句。用来调用过程和函数,并将结果赋值给信号。是顺序语句。

30、用来调用过程和函数,并将结果赋值给信号。 元件例化语句(元件例化语句(COMPONENTCOMPONENT) 元件例化语句用来调用另一个设计实体所描述的电路。元件例化语句用来调用另一个设计实体所描述的电路。调用时,元件例化语句对其他的设计实体做元件调用说明,调用时,元件例化语句对其他的设计实体做元件调用说明,并将元件的端口与其他元件、信号或高层设计实体的界面端并将元件的端口与其他元件、信号或高层设计实体的界面端口进行连接。口进行连接。 37 【例例3.2.3】编写一个四位二进制加法计数器的结构体。编写一个四位二进制加法计数器的结构体。 计数器共有三个输入和五个输出。计数器共有三个输入和五个输出

31、。 输入:时钟输入端输入:时钟输入端CLKCLK、使能控制端、使能控制端ENEN和异步清零端和异步清零端RdRd。 输出:四位状态输出输出:四位状态输出Q3Q3Q0Q0和进位输出和进位输出COCO。 设计程序的结构体如下:设计程序的结构体如下: ARCHITECTURE ARCHITECTURE behavior behavior OFOF counter16 counter16 ISIS BEGINBEGIN CO CO= =1 1 WHENWHEN (Q= (Q=“11111111”ANDAND EN=EN=1 1ANDAND Rd=Rd=1 1) ) ELSEELSE 0 0; - -

32、条件赋值语句条件赋值语句 PROCESSPROCESS (CLK (CLK,Rd) Rd) - - 进程语句进程语句 BEGINBEGIN IFIF (Rd= (Rd=0 0) ) THENTHEN Q Q= =“0000”; - IF- IF语句语句 ELSIFELSIF (CLK (CLK EVENTEVENT ANDAND CLK= CLK=1 1) ) THENTHEN - CLK- CLK上升沿计数上升沿计数 IFIF (EN= (EN=1 1) ) THENTHEN Q Q=Q+1=Q+1; END IFEND IF; END IFEND IF; END PROCESSEND PR

33、OCESS; ENDEND behavior behavior;38 VHDLVHDL语言的结构体可以用不同的语句类型和描语言的结构体可以用不同的语句类型和描述方式来表达电路所期望的逻辑行为,而对于相同的述方式来表达电路所期望的逻辑行为,而对于相同的逻辑行为,可以有不同的语句表达方式。逻辑行为,可以有不同的语句表达方式。 在在VHDLVHDL语言中,这些描述方式或建模方式称为语言中,这些描述方式或建模方式称为VHDLVHDL语言的描述风格。语言的描述风格。 常用的描述方式主要有:常用的描述方式主要有: 行为描述行为描述 数据流描述数据流描述 结构描述结构描述 混合描述混合描述 39 行为描述依

34、据设计实体的功能或算法对结构体行为描述依据设计实体的功能或算法对结构体进行描述,不需要给出实现这些行为的硬件结构,进行描述,不需要给出实现这些行为的硬件结构,只强调电路的行为和功能。只强调电路的行为和功能。 在结构体中,行为描述主要用函数、过程和进在结构体中,行为描述主要用函数、过程和进程语句,以功能或算法的形式来描述数据的转换和程语句,以功能或算法的形式来描述数据的转换和传送。传送。 1 结构体的行为描述结构体的行为描述 40【例例3.3.1】试用行为描述完成二选一数据选择器的设计。试用行为描述完成二选一数据选择器的设计。 设数据输入为设数据输入为d0d0和和d1d1、选择输入为、选择输入为

35、s s,输出为,输出为y y。 程序清单:程序清单: ENTITYENTITY mux21 mux21 ISIS PORTPORT ( d1, d0: ( d1, d0: ININ STD_LOGIC STD_LOGIC; s: s: ININ STD_LOGIC STD_LOGIC; y: y: OUTOUT STD_LOGIC ) STD_LOGIC ); ENDEND mux21 mux21; ARCHITECTUREARCHITECTURE behavior behavior OFOF mux21 mux21 ISIS BEGINBEGIN y y = d1 = d1 WHENWHEN

36、 s =1 s =1 ELSEELSE d0 d0; ENDEND behavior behavior;41 行为描述类似于高级编程语言,主要是对设计行为描述类似于高级编程语言,主要是对设计实体的功能或数学模型进行描述,其抽象程度远高实体的功能或数学模型进行描述,其抽象程度远高于数据流描述和结构描述,其特点如下:于数据流描述和结构描述,其特点如下: 行为描述具有很高的抽象程度,远高于数据行为描述具有很高的抽象程度,远高于数据流描述和结构描述;流描述和结构描述; 行为描述只需描述清楚输入与输出的行为,行为描述只需描述清楚输入与输出的行为,而与它们的结构无关;而与它们的结构无关; 描述程序大多采用

37、算术运算、关系运算、惯描述程序大多采用算术运算、关系运算、惯性延时、传输延时等语句;性延时、传输延时等语句; 结构体中的过程语句属于典型的行为描述。结构体中的过程语句属于典型的行为描述。42 即逻辑描述,它利用即逻辑描述,它利用VHDLVHDL语言中的赋值符和逻语言中的赋值符和逻辑运算符进行描述,既包含逻辑单元的结构信息,辑运算符进行描述,既包含逻辑单元的结构信息,又隐含地表示某种行为。又隐含地表示某种行为。 2 结构体的数据流描述结构体的数据流描述 例如:例如: y y = a = a NORNOR b b; z z = = NOTNOT( a ( a XORXOR b ) b );/ y/

38、 y等于等于a a与与b b的或非运算的或非运算/ z/ z等于等于a a与与b b的同或运算的同或运算 这种方式主要采用非结构化的并行语句描述。这种方式主要采用非结构化的并行语句描述。43【例例3.3.2】将例将例3.3.1中的数据选择器采用数据流描述。中的数据选择器采用数据流描述。 逻辑表达式:逻辑表达式: y y = = d0d0s s + + d1d1s s 程序清单:程序清单: ENTITYENTITY mux21 mux21 ISIS PORTPORT (d1, d0: (d1, d0: ININ STD_LOGIC STD_LOGIC; s: s: ININ STD_LOGIC

39、STD_LOGIC; y: y: OUTOUT STD_LOGIC ) STD_LOGIC ); ENDEND mux21 mux21; ARCHITECTUREARCHITECTURE dataflow dataflow OFOF mux21 IS mux21 IS SIGNALSIGNAL tmp1, tmp2, tmp3: STD_LOGIC tmp1, tmp2, tmp3: STD_LOGIC; BEGINBEGIN tmp1 tmp1 = d1 = d1 ANDAND s s; tmp2 tmp2 = d0 = d0 ANDAND ( NOT s ) ( NOT s ); tmp3

40、 tmp3 = tmp1 = tmp1 OROR tmp2 tmp2; y y = tmp3= tmp3; ENDEND dataflow dataflow;44 结构描述是从设计实体的内部结构对结构体进结构描述是从设计实体的内部结构对结构体进行描述的,并给出该实体所包含的模块或元件的相行描述的,并给出该实体所包含的模块或元件的相互连接关系。互连接关系。 这种方式主要采用元件例化(这种方式主要采用元件例化(COMPONENTCOMPONENT)的)的形式对设计实体进行描述。可以用不同类型的结构形式对设计实体进行描述。可以用不同类型的结构来实现多层次的工程设计,从简单的门电路到复杂来实现多层次的

41、工程设计,从简单的门电路到复杂的元件来描述整个系统,元件之间的连接通过定义的元件来描述整个系统,元件之间的连接通过定义的端口界面来实现。的端口界面来实现。 3 结构体的结构描述结构体的结构描述 45 结构描述建模的步骤如下:结构描述建模的步骤如下: 3 结构体的结构描述结构体的结构描述 元件说明:描述局部接口。元件说明:描述局部接口。 元件例化:相对于其他元件放置元件。元件例化:相对于其他元件放置元件。 元件配置:指定元件所有的设计实体。元件配置:指定元件所有的设计实体。 结构描述用于层次化设计,高层次的设计模块结构描述用于层次化设计,高层次的设计模块调用低层次的设计模块,或直接用门电路来构成

42、一调用低层次的设计模块,或直接用门电路来构成一个复杂的逻辑电路。个复杂的逻辑电路。 46【例例3.3.3】将例将例3.3.1中的数据选择器采用结构描述。中的数据选择器采用结构描述。 程序清单:程序清单: ENTITYENTITY mux21 ISIS PORTPORT (d1,d0: ININ STD_LOGIC; s: ININ STD_LOGIC; y: OUTOUT STD_LOGIC ); ENDEND mux21; ARCHITECTUREARCHITECTURE structure OFOF mux21 ISIS COMPONENTCOMPONENT and2 -2输入与门器件调用

43、声明并定义其端口 PORTPORT (a, b: ININ STD_LOGIC; c: OUTOUT STD_LOGIC ); ENDEND COMPONENTCOMPONENT; COMPONENTCOMPONENT or2 -2输入或门器件调用声明并定义其端口 PORTPORT (a, b: ININ STD_LOGIC; c: OUTOUT STD_LOGIC ); ENDEND COMPONENTCOMPONENT;&11 d1 d0 s y aa ab ns U1 U3 U2 U447【例例3.3.3】将例将例3.3.1中的数据选择器采用结构描述。中的数据选择器采用结构描述。 程序清

44、单:程序清单:&11 d1 d0 s y aa ab ns U1 U3 U2 U4COMPONENTCOMPONENT not1 -1输入非门器件调用声明并定义其端口 PORTPORT (a: ININ STD_LOGIC; c: OUTOUT STD_LOGIC ); ENDEND COMPONENTCOMPONENT; SIGNALSIGNAL aa, ab, ns: STD_LOGIC; BEGINBEGIN U1: not1 PORT MAPPORT MAP ( s, ns );-元件连接说明 U2: and2 PORT MAPPORT MAP ( d1, s, aa ); U3: a

45、nd2 PORT MAPPORT MAP ( ns, d0, ab ); U4: or2 PORT MAPPORT MAP ( aa, ab, y ); ENDEND structure;48 混合描述就是在结构体中同时使用多种混合描述就是在结构体中同时使用多种不同的描述方式,它可以使描述简单灵活。不同的描述方式,它可以使描述简单灵活。 例如,在同一结构体中,分别使用元件例如,在同一结构体中,分别使用元件例化语句和并行语句,就可以构成由两种描例化语句和并行语句,就可以构成由两种描述方式的混合描述。述方式的混合描述。 4 结构体的混合描述结构体的混合描述 49【例例3.3.4】用混合描述完成半加

46、器的设计。用混合描述完成半加器的设计。 表达式:表达式:sn = an bn cn = anbn 数据流描述数据流描述 结构描述结构描述 程序清单:程序清单: ENTITYENTITY half_adder ISIS PORTPORT (an,bn: ININ STD_LOGIC; sn,cn: OUTOUT STD_LOGIC); ENDEND half_adder; ARCHITECTURARCHITECTURE mix_ha OFOF half_adder ISIS COMPONENTCOMPONENT and2 PORTPORT (a,b: ININ STD_LOGIC; c: OUT

47、OUT STD_LOGIC); END COMPONENTEND COMPONENT; BEGINBEGIN sn = an XORXOR bn; U1: and2 PORT MAPPORT MAP (an,bn,cn); ENDEND mix_ha;50 块(块(BLOCKBLOCK)语句可以将一些实现某一特定功)语句可以将一些实现某一特定功能的并行语句组合在一起,其主要目的是利用多个能的并行语句组合在一起,其主要目的是利用多个块语句结构将一个复杂的结构体划分成几个不同功块语句结构将一个复杂的结构体划分成几个不同功能的模块,使复杂的结构体结构分明、功能明确,能的模块,使复杂的结构体结构分明、

48、功能明确,使程序的编排更加清晰、更有层次,改善并行语句使程序的编排更加清晰、更有层次,改善并行语句的结构和可读性,便于程序的编写、调试和查错。的结构和可读性,便于程序的编写、调试和查错。 3.4.13.4.1. 块语句块语句 51 (1 1)块语句的格式块语句的格式 块语句是将结构体中并行语句进行组合的一种方法。块语句是将结构体中并行语句进行组合的一种方法。 块标号:块标号: BLOCK 说明语句说明语句 BEGIN 并行语句并行语句 END BLOCK 块标号;块标号; 格式:格式: 说明语句:说明语句:主要包括接口说明和类属说明等,用来定义块主要包括接口说明和类属说明等,用来定义块内局部信

49、号、数据类型、元件和子程序。内局部信号、数据类型、元件和子程序。 并行语句:并行语句:可以使用所有的并行语句。可以使用所有的并行语句。 52 (2 2)块语句的应用块语句的应用 利用块语句可以将结构体中的并行语句划分成利用块语句可以将结构体中的并行语句划分成多个并行方式的子块,每一个子块都是一个独立的多个并行方式的子块,每一个子块都是一个独立的设计实体,具有自己的类属参数和界面端口,以及设计实体,具有自己的类属参数和界面端口,以及与外部环境的衔接描述。与外部环境的衔接描述。 块语句还可以实现嵌套,内层的块语句可以使块语句还可以实现嵌套,内层的块语句可以使用外层块语句所定义的信号,但外层块语句不

50、能使用外层块语句所定义的信号,但外层块语句不能使用内层块语句定义的信号。用内层块语句定义的信号。 53 【例例3.4.1 3.4.1 】试用块语句设计一个运算电路,包括一个八位试用块语句设计一个运算电路,包括一个八位加法器和一个八位减法器。加法器和一个八位减法器。 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD IEEE.STD LOGICLOGIC 1164.1164.ALLALL; USEUSE IEEE.STD_LOGIC_UNSIGNED. IEEE.STD_LOGIC_UNSIGNED.ALLALL; ENTITY ENTITY add_sub a

51、dd_sub ISIS PORTPORT(A, B: A, B: ININ STD STD LOGIC_VECTORLOGIC_VECTOR(7 7 DOWNTODOWNTO 0 0);); SUM, SUB:SUM, SUB: OUTOUT STD STD LOGIC_VECTORLOGIC_VECTOR(7 7 DOWNTODOWNTO 0 0);); CO, BO: CO, BO: OUTOUT STD STD LOGICLOGIC);); ENDEND add_sub add_sub;54 【例例3.4.13.4.1】试用块语句设计一个运算电路,包括一个八位试用块语句设计一个运算电路,

52、包括一个八位加法器和一个八位减法器。加法器和一个八位减法器。 ARCHITECTUREARCHITECTURE example12 example12 OFOF add_sub add_sub IS IS SIGNALSIGNAL AA,BB,SM,SB: STD_LOGIC_VECTOR(1 AA,BB,SM,SB: STD_LOGIC_VECTOR(1 DOWNTODOWNTO 0) 0); BEGINBEGIN AA AA = 0&A&A; BB BB = 0&B&B; WITHWITH s s SELECTSELECT ADDER: ADDER: BLOCKBLOCK BEGINBEG

53、IN SM SM = AAAA + + BBBB; SUM SUM = SM(SM( 7 7 DOWNTODOWNTO 0 0 ) ); CO CO = SM(SM( 8 8 ) ); END BLOCKEND BLOCK ADDER ADDER; - ADDER - ADDER块行为描述语句块行为描述语句 - - 运算结果送入运算结果送入SUMSUM - - 进位送入进位送入COCO55 【例例3.4.13.4.1】试用块语句设计一个运算电路,包括一个八位试用块语句设计一个运算电路,包括一个八位加法器和一个八位减法器。加法器和一个八位减法器。 SUBTRACTER SUBTRACTER: B

54、LOCKBLOCK BEGINBEGIN SB SB = AAAA - - BBBB; SUB SUB = SB(SB( 7 7 DOWNTODOWNTO 0 0 ) ); BO BO = SB(SB( 8 8 ) ); END BLOCKEND BLOCK SUBTRACTER SUBTRACTER; END END example12 example12; - SUBTRACTER - SUBTRACTER块行为描述语句块行为描述语句 - - 运算结果送入运算结果送入SUBSUB - - 进位送入进位送入BOBO56library ieee;Use ieee.std_logic_1164.

55、all;entity ch4 is port(do,d1:in std_logic_vector(3 downto 0);s:in std_logic;y:out std_logic_vector(3 downto 0);end ch4;architecture dat of ch4 is signal temp1,temp2,temp3:std_logic_vector(3 downto 0);begin 57ladel:blockbegintemp1(3)=d0(3) and s;temp1(2)=d0(2) and s;temp1(1)=d0(1) and s;temp1(0)=d0(0

56、) and s;temp2(3)=d1(3) and (not s);temp2(2)=d1(2) and (not s);temp2(1)=d1(1) and (not s);temp2(0)=d1(0) and (not s);temp3=temp1 or temp2;y=temp3;end block label;end dat; 58 卫式块语句卫式块语句 79页页library ieee;use ieee.std_logic_1164.all;entity ch4_ isport(d:in std_logic; clk:in std_logic; q,qb:out std_logic

57、);end ch4_1;architecture dat of ch4_1 isbeginlabel:block (clk =1)beginq=guarded d after 3 ns;qbqqqqnull;end case;end process;end beh; 65 81页页library ieee;use ieee.std_logic_1164.all;entity ch6 isport(d,clk:in std_logic; q1,q2:out std_logic);end ch6;architecture beh of ch6 isbegin process begin Wait

58、Until clk=1; Q1=d; end process; process begin Wait Until clk=0; Q2=not d; end process;end beh; 6682页页library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity ch7 isport(clk:in Std_logic; irq:out Std_logic);end ch7;architecture beh of ch7 issignal c

59、ou:std_logic_vector(3 downto 0);begin process begin Wait Until Clk=1;cou=cou+1; end process;process begin Wait Until Clk=1;If(cou=1111) then Irq=0;Else Irq=1;End if; end process;end beh;67 【例例3.4.23.4.2】用进程语句描述异步清零计数器。用进程语句描述异步清零计数器。 异步清零方式与时钟信号异步清零方式与时钟信号clkclk无关,当清零端无关,当清零端clr=0clr=0时,时,计数状态计数状态Q=

60、0Q=0;当;当clr=1clr=1时,计数器为计数状态。时,计数器为计数状态。 PROCESSPROCESS ( ( clk, clrclk, clr ) ) BEGINBEGIN IFIF clr clr =0 0 THENTHEN Q Q= X“00”X“00”; ELSIF ELSIF ( ( clkclk =11ANDAND clkclkEVENTEVENT ) ) THENTHEN Q Q = Q Q + + 1 1; END IFEND IF; END PROCESSEND PROCESS;68 【例例3.4.23.4.2】用进程语句描述异步清零计数器。用进程语句描述异步清零计数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论