VHDL与数字电路设计课件_第1页
VHDL与数字电路设计课件_第2页
VHDL与数字电路设计课件_第3页
VHDL与数字电路设计课件_第4页
VHDL与数字电路设计课件_第5页
已阅读5页,还剩189页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章VHDL硬件描述语言张志安 南京理工大学10/10/20221南京理工大学机械工程学院第四章VHDL硬件描述语言张志安 10/9/20221南京主要内容4.1 VHDL语言概述 4.2 VHDL语言程序的基本结构4.3 VHDL语言的数据类型及运算操作符4.4 VHDL语言的顺序描述语句4.5 VHDL语言的并发描述语句4.6 VHDL语言在数字电路中的应用10/10/20222南京理工大学机械工程学院主要内容10/9/20222南京理工大学机械工程学院4.1 VHDL语言概述 VHDL: VHSIC (Very High Speed Integrated Circuit) Hardwa

2、re Description Language 80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。 1987年由 IEEE 协会批准为 IEEE 工业标准,称为IEEE1076-1987。 各EDA公司相继推出支持VHDL的设计环境。 1993年被更新为 93 标准,即IEEE1076-1993。 进一步提高抽象描述层次,扩展系统描述能力。10/10/20223南京理工大学机械工程学院4.1 VHDL语言概述 VHDL: 80年代数字电子技术的基本知识回顾组合逻辑电路 编码器、译码器、数据选择器、加法器、数值比较器等时序逻辑电路同步时序逻辑电路异步时序逻辑电路寄存器、移位寄

3、存器、计数器、序列信号发生器10/10/20224南京理工大学机械工程学院数字电子技术的基本知识回顾组合逻辑电路 10/9/20224一、传统设计方法(1)首先确定可用的元器件;(2)根据这些器件进行逻辑设计,完成各模块;(3)将各模块进行连接,最后形成系统;(4)而后经调试、测量观察整个系统是否达到规定的性能指标。 传统的设计方法是基于中小规模集成电路器件进行设计(如74系列及其改进系列、74HC系列等都属于通用型数字集成电路),而且是采用自底向上进行设计:10/10/20225南京理工大学机械工程学院一、传统设计方法(1)首先确定可用的元器件; 传统的 EDA(Electronics De

4、sign Automation)即电子设计自动化技术,是利用计算机工作平台,从事电子系统和电路设计的一项技术。EDA技术为电子系统设计带来了这样的变化:(1)设计效率提高,设计周期缩短;(2)设计质量提高;(3)设计成本降低;(4)能更充分地发挥设计人员的创造性;(5)设计成果的重用性大大提高,省去了不必要的重复劳动。 二、EDA设计方法 10/10/20226南京理工大学机械工程学院 EDA(Electronics Design 自顶向下的设计方法数字电路的EDA设计是基于PLD进行设计的,支持自顶向下的设计方法:(1)首先从系统设计入手,在顶层进行功能划分和结构设计;(2)然后再逐级设计底

5、层的结构;(3)并在系统级采用仿真手段验证设计的正确性;(4)最后完成整个系统的设计,实现从设计、仿真、测试一体化。 10/10/20227南京理工大学机械工程学院自顶向下的设计方法数字电路的EDA设计是基于PLD进行设计的传统设计方法 vs EDA设计方法 传统设计方法EDA设计方法自底向上手动设计软硬件分离原理图设计方式系统功能固定不易仿真难测试修改模块难移植共享设计周期长自顶向下自动设计打破软硬件屏障原理图、HDL等设计方式系统功能易改易仿真易测试修改模块可移植共享设计周期短10/10/20228南京理工大学机械工程学院传统设计方法 vs EDA设计方法 传统设计方法EDA设计三、PLD

6、器件 如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量、功耗,而且会使电路的可靠性大为提高。 为某种专门用途而设计的集成电路叫做专用集成电路,即所谓的ASIC(Application Specific Integrated Circuit的缩写)。 在用量不大的情况下,设计和制造这样的专用集成电路成本很高,而且设计、制造的周期也较长。 可编程逻辑器件的研制成功为解决上述问题提供了比较理想的途径。 (一)出现的背景10/10/20229南京理工大学机械工程学院三、PLD器件 如果能(二)PLD概述PLD:可编程逻辑器件(Programmable Logic Devic

7、e) 可编程逻辑器件是一种数字集成电路的半成品,在其芯片上按一定排列方式集成了大量的逻辑门和触发器等基本逻辑元件。通过编程可以设置其逻辑功能。PLD编程: 利用开发工具对PLD进行加工,即按设计要求将这些片内的元件连接起来,使之完成某个逻辑电路或系统的功能,成为一个专用集成电路(ASICApplication Specific Integrated Circuit)。 10/10/202210南京理工大学机械工程学院(二)PLD概述PLD:可编程逻辑器件(ProgrammabPLD开发系统PLD开发系统包括硬件和软件两部分。硬件部分:计算机、下载电缆或编程器;软件部分:集成开发系统。 Alte

8、ra公司:Maxplus 、 Quartus Xilinx公司:Foundation、 ISE Lattice公司:Synario System、ispEXPERT System10/10/202211南京理工大学机械工程学院PLD开发系统PLD开发系统包括硬件和软件两部分。10/9/四、PLD设计流程设计准备设计输入设计处理器件编程功能仿真时序仿真器件测试10/10/202212南京理工大学机械工程学院四、PLD设计流程设计准备设计输入设计处理器件编程功能仿真时1、PLD设计准备 在设计之前,首先要进行方案论证和器件选择等设计准备工作。 设计者首先要根据任务要求,判断系统的可行性。系统的可行

9、性要受到逻辑要求合理性、成本、开发条件、器件供应等方面的约束。 若系统可行,则根据系统所完成的功能及复杂程度,对器件本身的资源和成本、工作速度及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。 10/10/202213南京理工大学机械工程学院1、PLD设计准备 在设计之前,首先要进行方案2、设计输入 将所设计的电路的逻辑功能按照开发系统要求的形式表达出来的过程称为设计输入。 通常,设计输入有如下三种方式: (1)原理图输入方式 适用于对系统及各部分电路很熟悉的场合。 (2)硬件描述语言输入方式 硬件描述语言是用文本方式描述设计,硬件描述语言有ABEL、AHDL、VHDL、Ver

10、ilog等,其中VHDL和Verilog已成为IEEE标准。 (3)波形输入方式10/10/202214南京理工大学机械工程学院2、设计输入 将所设计的电路的逻辑功能按照开发系统要求3、设计处理逻辑优化 把逻辑描述转变为最适合在器件中实现的形式,优化使设计所占用的资源最少。 逻辑综合 根据设计描述,对给定的硬件结构组件,最终获得门级电路甚至更底层的电路描述文件,即将多个模块化设计文件合并为一个网表文件。适配 确定优化后的逻辑能否与器件中的宏单元和I/O单元适配。分割 将大的设计分割为多个便于器件内部资源实现的逻辑小块的形式。10/10/202215南京理工大学机械工程学院3、设计处理逻辑优化1

11、0/9/202215南京理工大学机械工4、设计校验设计校验过程包括功能仿真和时序仿真。 功能仿真时序仿真5、器件编程 器件编程就是将开发系统生成的目标文件下载到可编程逻辑器件中,来定义内部模块的逻辑功能以及它们的相互连接关系。 两种编程方式:编程器下载电缆返回10/10/202216南京理工大学机械工程学院4、设计校验设计校验过程包括功能仿真和时序仿真。 5、器件编4.2 VHDL语言程序的基本结构Library std; Use std.standard.all;Entity and2 is Port( a,b : in bit;c : out bit);End and2;Architect

12、ure a1 of and2 is Begin c = a and b; End a1;VHDL程序 库、包集合 实体(Entity) 结构体 (Architecture) 进程 或其它并行结构 配置(Configuration)10/10/202217南京理工大学机械工程学院4.2 VHDL语言程序的基本结构Library std;库(Library)是经编译后的数据的集合,它用于存放包集合定义、实体定义、构造体定义和配置定义。声明格式: Library 库名; (1)库( Library )4.2 VHDL语言程序的基本结构VHDL库可分为 5种:1)IEEE 库2)STD 库(标准库)3

13、)面向ASIC的库4)WORK库(默认库)5)用户定义库10/10/202218南京理工大学机械工程学院库(Library)是经编译后的数据的集合,它用于存放(1)4.2 VHDL语言程序的基本结构(2)包集合( Package )包集合 (Package )中定义了基本的常数、信号、数据类型、元件语句、函数定义及过程定义等。是库结构中的一个层次。声明格式: use 库名包集合名项目名; use 库名. PACKAGE名.All;包集合的结构包括: 包集合标题(包首) 包集合主体(包体)10/10/202219南京理工大学机械工程学院4.2 VHDL语言程序的基本结构(2)包集合( Pack

14、package 包集合名 is 包说明项 end 包集合名;4.2 VHDL语言程序的基本结构(2)包集合( Package ) package body 包集合名 is 包体说明项 end 包集合名;包集合标题 包集合主体包集合体并非必须,只有在包集合中要说明子程序时,包集合体才是必须的。10/10/202220南京理工大学机械工程学院 package 包集合名 is4.2 VHDL语言 作用: ENTITY(实体)用于定义电路的外观,即I/O端口的类型和数量。 定义格式:Entity 实体名 is Port( a : in bit; b : in bit; c : out bit);End

15、 实体名;(3)实体(ENTITY)定义区端口名数据类型端口模式4.2 VHDL语言程序的基本结构:;10/10/202221南京理工大学机械工程学院 作用: ENTITY(实体)用于定义电路的外观,即I/端口说明(PORT) 端口为设计实体和其外部环境提供动态通信的通道,是对基本设计单元与外部接口的描述,其功能相当电路图符号的外部引脚。端口可以被赋值,也可以当做逻辑变量用在逻辑表达式中。其一般书写格式为:PORT (端口名 :端口模式 数据类型; 端口名 :端口模式 数据类型; ); (3)实体(ENTITY)定义区4.2 VHDL语言程序的基本结构10/10/202222南京理工大学机械工

16、程学院端口说明(PORT)(3)实体(ENTITY)定义区4.2 标识符的定义原则:(1)标识符由字母、数字和下划线组成, a_7;(2)标识符不区分大小写,ab和AB是一样的;(3)第一个字符必须是字母,即a666;(4)不允许有两个连续的下划线,a_b错误;(5)末尾不能是下划线,mname_错误;(6)标识符不能和关键字相同,如Entity,is等。(3)实体(ENTITY)定义区4.2 VHDL语言程序的基本结构10/10/202223南京理工大学机械工程学院标识符的定义原则:(3)实体(ENTITY)定义区4.2 端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;B

17、UFFER 端口模式可用下图说明:(黑框代表一个设计或模块) IN OUT BUFFER INOUT(3)实体(ENTITY)定义区4.2 VHDL语言程序的基本结构10/10/202224南京理工大学机械工程学院端口模式(MODE)有以下几种类型:(3)实体(ENTITY(3)实体(ENTITY)定义区4.2 VHDL语言程序的基本结构输入(IN)允许信号进入实体,主要用于时钟输入、控制输入(如load、reset、enable、clk)和单向的数据输入(如地址数据信号address)等。 输出(OUT) 输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体

18、的信号等。注意:输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做是可读的。10/10/202225南京理工大学机械工程学院(3)实体(ENTITY)定义区4.2 VHDL语言程序的(3)实体(ENTITY)定义区4.2 VHDL语言程序的基本结构双向模式(INOUT)双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。 缓冲(BUFFER) 缓冲模式允许信号输出到实体外部,但同时也可以在实体内部引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲模式用于在实体内部建立一个可读的输出端口,例如计数器输出、计数器的现态用来决定计数器的次态

19、。10/10/202226南京理工大学机械工程学院(3)实体(ENTITY)定义区4.2 VHDL语言程序的(3)实体(ENTITY)定义区4.2 VHDL语言程序的基本结构out 和 buffer 的区别:10/10/202227南京理工大学机械工程学院(3)实体(ENTITY)定义区4.2 VHDL语言程序的 结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系。结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器

20、传输描述(数据流描述)和结构描述(逻辑元件连接描述)。 结构体是对实体功能的具体描述,因此它一定要跟在实体的后面 。(4)结构体(ARCHITECTURE)定义区4.2 VHDL语言程序的基本结构10/10/202228南京理工大学机械工程学院 结构体也叫构造体,结构体描述了基本设计单元(4)结构体(ARCHITECTURE)定义区定义格式: Architecture 结构体名 of 实体名 is 声明语句;(内部信号、变量、常数,元件,子程序声明) Begin 并行描述语句; End 结构体名;4.2 VHDL语言程序的基本结构10/10/202229南京理工大学机械工程学院(4)结构体(A

21、RCHITECTURE)定义区定义格式: 4结构体(ARCHITECTURE)构造图10/10/202230南京理工大学机械工程学院结构体(ARCHITECTURE)构造图10/9/20223图中5种功能描述语句的基本组成和功能分别是:块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其他的信号进行赋值。信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。子程序调用语句可以调用进程或参数,并将获得的结果赋值于信号。 元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口

22、与其他元件、信号或高层实体的界面端口进行连接。(4)结构体(ARCHITECTURE)定义区4.2 VHDL语言程序的基本结构10/10/202231南京理工大学机械工程学院图中5种功能描述语句的基本组成和功能分别是:(4)结构体(A4.2 VHDL语言程序的基本结构实体与结构体的关系:设计实体结构体1结构体2结构体3结构体n。 一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。10/10/202232南京理工大学机械工程学院4.2 VHDL语言程序的基本结构实体与结构体的关系:设计4.2 VHDL语言程序的基本结构(5)配置(CONFIGURATION)设计实体结构体

23、1结构体2结构体3结构体n。一个设计实体的多种实现方式配置:从某个实体的多种结构体描述方式中选择 特定的一个。10/10/202233南京理工大学机械工程学院4.2 VHDL语言程序的基本结构(5)配置(CONFIGconfiguration 配置名 of 实体名 is for 选配结构体名 end for ;end 配置名;4.2 VHDL语言程序的基本结构(5)配置(CONFIGURATION) 在用VHDL描述硬件电路时,常常采用结构描述方式和混合描述方式。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,这时就需要将不同元件通过配置安装到不同的设计实体中。VHDL提供了配置语

24、句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系。10/10/202234南京理工大学机械工程学院configuration 配置名 of 实体名 is library ieee; use ieee.std_logic_1164.all; entity nand is port(a: in std_logic; b: in std_logic; c: out std_logic); end entity nand; architecture art1 of nand is begin c=not (a and b); end architecture art1;例:一

25、个与非门不同实现方式的配置如下: 10/10/202235南京理工大学机械工程学院 library ieee;例:一个与非门不同实现方式的配置architecture art2 of nand is begin c=1 when (a=0) and (b=0) else 1 when (a=0) and (b=1) else 1 when (a=1) and (b=0) else 0 when (a=1) and (b=1) else 0; end architecture art2;例:一个与非门不同实现方式的配置如下: 10/10/202236南京理工大学机械工程学院architectur

26、e art2 of nand is例:configuration first of nand is for art1; end for; end first; configuration second of nand is for art2 end for; end second;例:一个与非门不同实现方式的配置如下: 10/10/202237南京理工大学机械工程学院configuration first of nand is二输入与门电路设计范例 abc电路真值表abc00010001011110/10/202238南京理工大学机械工程学院二输入与门电路设计范例 abc电路真值表abc000

27、1000Library std; Use std.standard.all;Entity and2 is Port( a : in bit; b : in bit; c : out bit);End and2;-实体定义结束。 双减号-为VHDL程序的注释符,类似C语言中的/注释符。二输入与门电路设计范例 10/10/202239南京理工大学机械工程学院Library std; 双减号-为VHDL程序的注释符二输入与门电路设计范例Architecture Na of and1 is Begin c =0 when a=0 and b = 0 else 0 when a=1 and b = 0

28、else 0 when a=0 and b = 1 else 1; -符号=为信号直接赋值符。 End Na; -结构体Na Architecture Nb of and2 is Begin c = a and b; -and 为逻辑与操作End Nb; -结构体Nb10/10/202240南京理工大学机械工程学院二输入与门电路设计范例Architecture Na of 二输入与门电路设计范例Configuration s1 of and1 isfor Naend for;end configuration s1;Configuration s2 of and2 isfor Nbend fo

29、r;end configuration s2;-结构体配置结束。10/10/202241南京理工大学机械工程学院二输入与门电路设计范例Configuration s1 of2选1多路选择器的VHDL描述10/10/202242南京理工大学机械工程学院2选1多路选择器的VHDL描述10/9/202242南京理工2选1多路选择器的VHDL描述ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHE

30、N s = 0 ELSE b ;END ARCHITECTURE one ;实体结构体10/10/202243南京理工大学机械工程学院2选1多路选择器的VHDL描述ENTITY mux21a I2选1多路选择器的VHDL描述ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGINd = a AND (NOT S) ;e = b AND s ;y = d OR e ; END AR

31、CHITECTURE one ;10/10/202244南京理工大学机械工程学院2选1多路选择器的VHDL描述ENTITY mux21a I2选1多路选择器的VHDL描述ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ; END IF; END PROCESS;END ARCHITECTURE one ;10/10/2

32、02245南京理工大学机械工程学院2选1多路选择器的VHDL描述ENTITY mux21a Imux21a功能时序波形2选1多路选择器的VHDL描述返回10/10/202246南京理工大学机械工程学院mux21a功能时序波形2选1多路选择器的VHDL描述返回14.3 VHDL语言的数据类型及运算操作符1、数据对象2、数据类型3 、运算操作符4、 数据对象属性5、 VHDL语言词法规则10/10/202247南京理工大学机械工程学院4.3 VHDL语言的数据类型及运算操作符1、数据对象101、数据对象 三种对象:常量(Constant) 变量(Variable) 信号(Signal) 三种对象的

33、物理含义: 常量代表数字电路中的电源、地、恒定逻 辑值等常数; 变量代表暂存某些值的载体,常用于描述 算法; 信号代表物理设计中的某一条硬件连接线, 包括输入、输出端口。10/10/202248南京理工大学机械工程学院1、数据对象 三种对象:常量(Constant)101、数据对象三种对象的特点及说明场合: 信号:全局量, 用于architecture、 package、entitiy。 变量:局部量,用于process、function、 procedure。 常量:全局量,可用于上面两种场合。10/10/202249南京理工大学机械工程学院1、数据对象三种对象的特点及说明场合:10/9/2

34、022491、数据对象常量说明 常量说明:对某一个常量名赋予一个固定的值。 格式: 例: constant data:bit_vector(3 downto 0):=“1010” constant width: integer: = 8; constant x: new_bit: = x; 常量数据类型必须与表达式的数据类型一致。 constant 常数名:数据类型:= 表达式;10/10/202250南京理工大学机械工程学院1、数据对象常量说明 constant 常数名:数据类型:常量的可视性(作用范围): 库、程序包 实体(Entity) 结构体1 进 程1 结构体2 进 程2 常量是全局

35、量,其作用范围取决于常量被定义的位置。10/10/202251南京理工大学机械工程学院常量的可视性(作用范围): 库、程序1、数据对象变量说明 变量是一个局部量,只能在进程和子程序中定义、使用。其作用范围仅限于定义了变量的进程和子程序中。格式:例: variable a, b : bit; variable count:integer range 0 to 255:= 10; 变量的初值可用于仿真,但综合时被忽略。variable 变量名:数据类型 约束条件:= 表达式;10/10/202252南京理工大学机械工程学院1、数据对象变量说明variable 变量名:数据类型 1、数据对象信号说明

36、 电子硬件系统运行的基本特性: 各部分电路工作的并行特性; 信号传输过程中的延时特性; 多驱动源的总线特性; 时序电路中触发器的记忆特性等。信号是电子系统内部硬件连接和硬件特性的抽象表示。用来描述硬件系统的基本特性。格式: signal 信号名:数据类型 约束条件: 表达式;10/10/202253南京理工大学机械工程学院1、数据对象信号说明signal 信号名:数据类型 1、数据对象例: signal a, b : bit; signal init : integer := -1; signal s1: std_logic := 0; signal s2: std_logic_vector(

37、15 downto 0);注:a. 综合时初值被忽略。 b. 信号是全局量。可在结构体、实体、块中 说明和使用信号。 c. 在进程和子程序中只能使用信号,不能说 明信号。10/10/202254南京理工大学机械工程学院1、数据对象例: 10/9/202254南京理工大学机械工程例:进程中信号与变量的使用entity ex is port(.);end ex;architecture arch_ex of ex is signal a, b :std_logic;begin process(a, b) variable c, d : std_logic; begin c:= a + b; d:=

38、 a - b; end process;end arch_ex; 10/10/202255南京理工大学机械工程学院例:进程中信号与变量的使用entity ex is10/1、数据对象信号与端口的区别: 除没有方向说明外,信号与实体的“端口(PORT)” 概念相似。端口是一种隐形的信号。 entity exam is port(signal a, b: in std_logic; signal c: out std_logic); end exam; 端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。 信号本身无方向,可读可写。10/10/2022

39、56南京理工大学机械工程学院1、数据对象信号与端口的区别:10/9/202256南京理工信号与变量的区别:信号和变量是VHDL中重要的客体,他们之间的主要区别有:信号赋值至少要有延时;而变量赋值没有。信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。 10/10/202257南京理工大学机械工程学院信号与变量的区别:10/

40、9/202257南京理工大学机械工程process(a,b,c,d)begind=a;x=b+d;d=c;y=b+d;end process;process(a,b,c)Variable d:std_logic_vector(0 to 3)begind:=a;x=b+d;d:=c;y=b+d;end process;结果:x=b+c;x=b+c;结果:x=b+a;x=b+c;信号量的值将进程语句最后所带入的值作为最终代入值;而变量的值一经赋值就变成新的值。10/10/202258南京理工大学机械工程学院process(a,b,c,d)process(a,b,c)2、数据类型在VHDL程序中,经

41、常会遇到这样的语句:Signal A : std_logic;Variable B : std_logic_vector(7 downto 0); Constant C : integer;数据对象类型数据类型数据对象名 VHDL是一种强数据类型语言。要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。10/10/202259南京理工大学机械工程学院2、数据类型在VHDL程序中,经常会遇到这样的语句:数据对象2、数据类型 标准数据类型 IEEE预定义标准 用户自定义数据类型VHDL的标准数据类型十种 1)布尔量(boo

42、lean) 布尔量具有两种状态:false 和 true 常用于逻辑函数,如相等(=)、比较() 等中作逻辑比较。 如,bit 值转化成boolean 值: boolean_var := (bit_var = 1);10/10/202260南京理工大学机械工程学院2、数据类型 标准数据类型10/9/2022602、数据类型2)位(bit) bit 表示一位的信号值。 放在单引号中,如 0 或 1。3)位矢量 (bit_vector) bit_vector 是用双引号括起来的一组位数据。 如: “001100” X“00B10B”4)字符(character) 用单引号将字符括起来。 varia

43、ble character_var : character; . . Character_var : = A;10/10/202261南京理工大学机械工程学院2、数据类型2)位(bit)10/9/202261南京理工大2、数据类型5)整数(integer) integer 表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为: -(231-1) to (231-1) VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。 如:signal s : integer range 0 to 15; 信号 s 的取值范围是0-15,可用4位二进制数表示,因此

44、s 将被综合成由四条信号线构成的信号。10/10/202262南京理工大学机械工程学院2、数据类型5)整数(integer)10/9/2022622、数据类型6)自然数(natural)和正整数(positive) natural是integer的子类型,表示非负整数。 positive是integer的子类型,表示正整数。 定义如下: subtype natural is integer range 0 to integerhigh; subtype positive is integer range 1 to integerhigh;10/10/202263南京理工大学机械工程学院2、数据

45、类型6)自然数(natural)和正整数(posit2、数据类型7)实数(REAL) 或称浮点数 取值范围:-1.0E38 - +1.0E38 实数类型仅能用于VHDL仿真器,一般综合器 不支持。8)字符串(string) string 是 character 类型的一个非限定 数组。用双引号将一串字符括起来。如: variable string_var : string(1 to 7); string_var := “Rosebud”;10/10/202264南京理工大学机械工程学院2、数据类型7)实数(REAL)10/9/202264南京理9)时间(TIME) 由整数和物理单位组成 如:5

46、5 ms,20 nsTYPE TIME IS RANGE 2147483647 TO 2147483647UNITEfs;-飞秒(10-15S)VHDL中的最小时间单位ps=1000fs;-皮秒ns=1000ps;-纳秒us=1000ns;-微秒ms=1000us;-毫秒sec=1000ms;-秒min=60sec;-分hr=60min;-时END units; 2、数据类型10/10/202265南京理工大学机械工程学院9)时间(TIME) 2、数据类型10/9/202265南京2、数据类型10)错误等级(SEVERITY_LEVEL) 仿真中用来指示系统的工作状态,共有四种: NOTE(注

47、意) WARNING(警告) ERROR(出错) FAILURE(失败)其定义如下:TYPE severity_level IS(note,warning,error,failure);10/10/202266南京理工大学机械工程学院2、数据类型10)错误等级(SEVERITY_LEVEL)其2、数据类型IEEE预定义标准逻辑位与矢量 1)std_logic 类型 由 ieee 库中的std_logic_1164 程序 包定义,为九值逻辑系统,如下: (U,X,0,1,Z,W,L,H,-) U:初始值, X:不定, 0:0, 1:1, Z:高阻, W:弱信号不定, L:弱信号0, H:弱信号1

48、, -:不可能情况10/10/202267南京理工大学机械工程学院2、数据类型IEEE预定义标准逻辑位与矢量10/9/20222、数据类型IEEE预定义标准逻辑位与矢量 由 std_logic 类型代替 bit 类型可以完成电子系统的精确模拟,并可实现常见的三态总线电路。2)std_logic_vector 类型 由 std_logic 构成的数组。定义如下: type std_logic_vector is array(natural range) of std_logic; 赋值的原则:相同位宽,相同数据类型。10/10/202268南京理工大学机械工程学院2、数据类型IEEE预定义标准逻

49、辑位与矢量10/9/20222、数据类型用户自定义数据类型 用户自定义类型是VHDL语言的一大特色。 可由用户定义的数据类型有: 枚举类型 整数和实数类型 数组类型 记录类型 子类型10/10/202269南京理工大学机械工程学院2、数据类型用户自定义数据类型10/9/202269南京理工2、数据类型 用类型定义语句TYPE和子类型定义语句SUBTYPE实现用户自定义数据类型。 TYPE语句格式:例:type byte is array(7 downto 0) of bit; variable addend : byte; type 数据类型名 is 数据类型定义 of 基本数据类型;10/1

50、0/202270南京理工大学机械工程学院2、数据类型 用类型定义语句TYPE和子类型定义语句SUBTYPE语句格式:例: subtype digits is integer range 0 to 9; 由subtype 语句定义的数据类型称为子类型。2、数据类型subtype 子类型名 is 基本数据类型 约束范围;10/10/202271南京理工大学机械工程学院SUBTYPE语句格式:2、数据类型subtype 子类型名2、数据类型自定义整数类型 用户定义的整数类型是标准包中整数类型的子范围。格式:例:type my_integer is integer range 0 to 15;自定义数

51、组类型 数组:同类型元素的集合。VHDL支持多维数组。 多维数组的声明: type byte is array(7 downto 0) of bit;1维8位数组 type vector is array(3 downto 0) of byte;2维4X8数组type 类型名称 is integer 整数范围;10/10/202272南京理工大学机械工程学院2、数据类型自定义整数类型type 类型名称 is i3、运算操作符VHDL运算操作符的分类: 逻辑运算符(Logical Operator) 关系运算符(Relational Operator) 算术运算符(Arithmetic Oper

52、ator) 并置运算符(Overloading Operator)10/10/202273南京理工大学机械工程学院3、运算操作符VHDL运算操作符的分类:10/9/202271)逻辑运算符 6种:and、or、nand、nor、xor、not 要求:操作数类型必须相同。可为如下类型: bit、bit_vector、std_logic、 std_logic_vector、boolean 数组操作数的维数、大小必须相同。 注:当有两个以上的逻辑表达式时,左右没有 优先级差别,必须使用括号,如: x=( a and b )or( not c and d )10/10/202274南京理工大学机械工程

53、学院1)逻辑运算符10/9/202274南京理工大学机械工程学院例外:当逻辑表达式中只有“and”、“or”、 “xor”运算符时,可以省略括号。如: a = b and c and d and e; a = b or c or d or e; a = b xor c xor d xor e;上述逻辑运算在库ieee的程序包std_logic_1164中定义。 10/10/202275南京理工大学机械工程学院例外:当逻辑表达式中只有“and”、“or”、 “xor”Library IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY liti IS ;PORT(a,b,

54、c,d: IN STD_LOGIC; e : out STD_LOGIC);END liti ;ACHITECTURE AA1 OF liti ISBEGINe=(a and b) or tmp ;Signal tmp : std_logic;tmp= c xor d ;END AA1 ;10/10/202276南京理工大学机械工程学院Library IEEEUSE IEEE.STD_LOGI2)关系运算符 6 种:=、/=、= 用于比较相同父类的两个操作数,返回 boolean值。 在关系运算符中小于等于符 “=”和代入符“=”是相同的,在读VHDL语言的语句时,应按照上下文关系来判断此符号

55、到底是关系符还是代入符。上述运算在库ieee的程序包std_logic_arith中定义。10/10/202277南京理工大学机械工程学院2)关系运算符上述运算在库ieee的程序包std_logicENTITY 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)m : out boolean ) ;ARCHITECTURE a1 of

56、my1BEGINm= b) ;END a1;END my1 ;Library IEEEUSE IEEE.STD_LOGIC_ARITH.ALL;10/10/202278南京理工大学机械工程学院ENTITY my1 isPORT(a,b : in bit3)算术运算符VHDL语言中有5类算术运算符,他们分别是:求和操作符: (加)、(减)求积操作符:*(乘)、/(除)、MOD(求模)、REM(取余)符号操作符: (正)、(负)混合操作符: *(指数)、ABS(取绝对值)移位操作符:SLL(逻辑左移)、SRL(逻辑右移)、SLA(算术左移)、SRA(算术右移)、ROL(逻辑循环左移)、ROR逻辑循

57、环右移) 只能是bit_vetor类型上述运算在库ieee的程序包std_logic_arith中定义。10/10/202279南京理工大学机械工程学院3)算术运算符VHDL语言中有5类算术运算符,他们分别是:上移位操作语法结构:左操作数必须是bit_vetor类型右操作数必须是integer类型。SLL逻辑左移:右端空出来的位置填0;SRL逻辑右移:左端空出来的位置填0;SLA算术左移:复制右端位,填充右端空出位置上;SRA算术右移:复制左端位,填充左端空出位置上;10/10/202280南京理工大学机械工程学院移位操作语法结构:SLL逻辑左移:右端空出来的位置填04)并置运算符& 用于位的

58、连接 SIGNAL g,h,i:STD_LOGIC;SIGNAL c,d,e:STD_LOGIC _VECTOR( 0 TO 1 );SIGNAL a:STD_LOGIC _VECTOR( 0 TO 3 ); d = i & NOT h;- -元素与元素并置,形成长度为2的数组 a = c & d; - -数组与数组并置,形成长度为4的数组 10/10/202281南京理工大学机械工程学院4)并置运算符SIGNAL g,h,i:STD_LOGIC;运算操作符的优先顺序 运算符 优先级NOT,ABS,* 最高优先级 *,/,MOD,REM +(正号),(负号)+,& SLL,SLA,SRL,SR

59、A,ROL,ROR =,/=,= AND,OR,NAND,NOR,XOR,XNOR 最低优先级 10/10/202282南京理工大学机械工程学院运算操作符的优先顺序 运算符 (1)数值类属性: (数组类型的数据对象) 数值类属性有left, right, low, high, length。 其中用符号“”隔开对象名及其属性。 left表示数组的左边界; right表示数组的右边界; low表示数组的下边界; high表示数组的上边界; length表示数组的长度。4、数据对象属性10/10/202283南京理工大学机械工程学院(1)数值类属性: (数组类型的数据对象)4、数据对象属性1如:S

60、ignal A : std_logic_vector(7 downto 0); Signal B : std_logic_vector(0 to 3);则这两个信号的属性值分别为: Aleft=7; Aright=0; Alow=0; Ahigh=7; Alength=8; Bleft=0; Bright=3; Blow=0; Bhigh=3; Blength=4; left表示数组的左边界; right表示数组的右边界; low表示数组的下边界; high表示数组的上边界; length表示数组的长度。10/10/202284南京理工大学机械工程学院如:Signal A : std_logi

温馨提示

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

最新文档

评论

0/150

提交评论