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

下载本文档

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

文档简介

1、2021-5-15 南京理工大学机械工程学院 1 张志安张志安 南京理工大学南京理工大学 2021-5-15 南京理工大学机械工程学院 2 2021-5-15 南京理工大学机械工程学院 3 8080年代初由美国国防部在实施超高速集成电路(年代初由美国国防部在实施超高速集成电路(vhsicvhsic) 项目时开发的。项目时开发的。 19871987年由年由 ieee ieee 协会批准为协会批准为 ieee ieee 工业标准,称为工业标准,称为 ieee1076-1987ieee1076-1987。 各各edaeda公司相继推出支持公司相继推出支持vhdlvhdl的设计环境。的设计环境。 19

2、931993年被更新为年被更新为 93 93 标准,即标准,即ieee1076-1993ieee1076-1993。 进一步提高抽象描述层次,扩展系统描述能力。进一步提高抽象描述层次,扩展系统描述能力。 数字电子技术的基本知识回顾数字电子技术的基本知识回顾 组合逻辑电路组合逻辑电路 编码器、译码器、数据选择器、加法器、数值比较器等编码器、译码器、数据选择器、加法器、数值比较器等 时序逻辑电路时序逻辑电路 同步时序逻辑电路同步时序逻辑电路 异步时序逻辑电路异步时序逻辑电路 寄存器、移位寄存器、计数器、序列信号发生器寄存器、移位寄存器、计数器、序列信号发生器 (1)首先确定可用的元器件;)首先确定

3、可用的元器件; (2)根据这些器件进行逻辑设计,完成各模块;)根据这些器件进行逻辑设计,完成各模块; (3)将各模块进行连接,最后形成系统;)将各模块进行连接,最后形成系统; (4)而后经调试、测量观察整个系统是否达到规定)而后经调试、测量观察整个系统是否达到规定 的性能指标。的性能指标。 传统的设计方法是基于传统的设计方法是基于中小规模集成电路器件中小规模集成电路器件 进行设计(如进行设计(如74系列及其改进系列、系列及其改进系列、74hc系列系列 等都属于通用型数字集成电路),等都属于通用型数字集成电路),而且是采用而且是采用 自底向上进行设计:自底向上进行设计: eda(electron

4、ics design automation)即电子设计自动化即电子设计自动化 技术,是利用计算机工作平台,从事电子系统和电路设计的一技术,是利用计算机工作平台,从事电子系统和电路设计的一 项技术。项技术。 eda技术为电子系统设计带来了这样的变化:技术为电子系统设计带来了这样的变化: (1)设计效率提高,设计周期缩短;)设计效率提高,设计周期缩短; (2)设计质量提高;)设计质量提高; (3)设计成本降低;)设计成本降低; (4)能更充分地发挥设计人员的创造性;)能更充分地发挥设计人员的创造性; (5)设计成果的重用性大大提高,省去了不必要的重复劳动。)设计成果的重用性大大提高,省去了不必要的

5、重复劳动。 数字电路的数字电路的eda设计是基于设计是基于pld进行设计的,支持进行设计的,支持自顶自顶 向下向下的设计方法:的设计方法: (1)首先从系统设计入手,在顶层进行功能划分和结)首先从系统设计入手,在顶层进行功能划分和结 构设计;构设计; (2)然后再逐级设计底层的结构;)然后再逐级设计底层的结构; (3)并在系统级采用仿真手段验证设计的正确性;)并在系统级采用仿真手段验证设计的正确性; (4)最后完成整个系统的设计,实现从设计、仿真、)最后完成整个系统的设计,实现从设计、仿真、 测试一体化。测试一体化。 传统设计方法传统设计方法 vs eda设计方法设计方法 自底向上自底向上 手

6、动设计手动设计 软硬件分离软硬件分离 原理图设计方式原理图设计方式 系统功能固定系统功能固定 不易仿真不易仿真 难测试修改难测试修改 模块难移植共享模块难移植共享 设计周期长设计周期长 自顶向下自顶向下 自动设计自动设计 打破软硬件屏障打破软硬件屏障 原理图、原理图、hdl等设计方式等设计方式 系统功能易改系统功能易改 易仿真易仿真 易测试修改易测试修改 模块可移植共享模块可移植共享 设计周期短设计周期短 如果能把所设计的数字系统做成如果能把所设计的数字系统做成一片大规模集成电路一片大规模集成电路,则,则 不仅能减小电路的不仅能减小电路的体积体积、重量重量、功耗功耗,而且会使电路的,而且会使电

7、路的可靠性可靠性 大为提高。大为提高。 为某种专门用途而设计的集成电路叫做专用集成电路,即为某种专门用途而设计的集成电路叫做专用集成电路,即 所谓的所谓的asic(application specific integrated circuit的缩写)。的缩写)。 在用量不大的情况下,设计和制造这样的专用集成电路成在用量不大的情况下,设计和制造这样的专用集成电路成 本很高,而且设计、制造的周期也较长。本很高,而且设计、制造的周期也较长。 可编程逻辑器件的研制成功为解决上述问题提供了比较理可编程逻辑器件的研制成功为解决上述问题提供了比较理 想的途径。想的途径。 (二)(二)pld概述概述 pld:

8、可编程逻辑器件(:可编程逻辑器件(programmable logic device) 可编程逻辑器件是一种数字集成电路的半成品,在其芯片可编程逻辑器件是一种数字集成电路的半成品,在其芯片 上按一定排列方式集成了大量的逻辑门和触发器等基本逻辑元上按一定排列方式集成了大量的逻辑门和触发器等基本逻辑元 件。通过编程可以设置其逻辑功能。件。通过编程可以设置其逻辑功能。 pld编程编程: 利用开发工具对利用开发工具对pld进行加工,即按设计要求将这些片内进行加工,即按设计要求将这些片内 的元件连接起来,使之完成某个逻辑电路或系统的功能,成为的元件连接起来,使之完成某个逻辑电路或系统的功能,成为 一个专

9、用集成电路(一个专用集成电路(asicapplication specific integrated circuit)。)。 pld开发系统开发系统 pld开发系统包括硬件和软件两部分。开发系统包括硬件和软件两部分。 硬件部分:计算机、下载电缆或编程器;硬件部分:计算机、下载电缆或编程器; 软件部分:集成开发系统。软件部分:集成开发系统。 altera公司:公司:maxplus 、 quartus xilinx公司:公司:foundation、 ise lattice公司:公司:synario system、ispexpert system 2021-5-15 南京理工大学机械工程学院 12

10、设计准备设计准备 设计输入设计输入 设计处理设计处理 器件编程器件编程 功能仿真功能仿真 时序仿真时序仿真 器件测试器件测试 1、pld设计准备设计准备 在设计之前,首先要进行方案论证和器件选择等在设计之前,首先要进行方案论证和器件选择等 设计准备工作。设计准备工作。 设计者首先要根据任务要求,判断系统的可行性。设计者首先要根据任务要求,判断系统的可行性。 系统的可行性要受到逻辑要求合理性、成本、开发条系统的可行性要受到逻辑要求合理性、成本、开发条 件、器件供应等方面的约束。件、器件供应等方面的约束。 若系统可行,则根据系统所完成的功能及复杂程若系统可行,则根据系统所完成的功能及复杂程 度,对

11、器件本身的资源和成本、工作速度及连线的可度,对器件本身的资源和成本、工作速度及连线的可 布性等方面进行权衡,选择合适的设计方案和合适的布性等方面进行权衡,选择合适的设计方案和合适的 器件类型。器件类型。 2、设计输入、设计输入 将所设计的电路的逻辑功能按照开发系统要求的形将所设计的电路的逻辑功能按照开发系统要求的形 式表达出来的过程称为设计输入。式表达出来的过程称为设计输入。 通常,设计输入有如下三种方式:通常,设计输入有如下三种方式: (1)原理图输入方式)原理图输入方式 适用于对系统及各部分电路很熟悉的场合。适用于对系统及各部分电路很熟悉的场合。 (2)硬件描述语言输入方式)硬件描述语言输

12、入方式 硬件描述语言是用文本方式描述设计,硬件描述语硬件描述语言是用文本方式描述设计,硬件描述语 言有言有abel、ahdl、vhdl、verilog等,其中等,其中 vhdl和和verilog已成为已成为ieee标准。标准。 (3)波形输入方式)波形输入方式 3、设计处理、设计处理 n逻辑优化逻辑优化 把逻辑描述转变为最适合在器件中实现的形式,优化使设计把逻辑描述转变为最适合在器件中实现的形式,优化使设计 所占用的资源最少。所占用的资源最少。 n逻辑综合逻辑综合 根据设计描述,对给定的硬件结构组件,最终获得门级电路根据设计描述,对给定的硬件结构组件,最终获得门级电路 甚至更底层的电路描述文件

13、,即将多个模块化设计文件合并甚至更底层的电路描述文件,即将多个模块化设计文件合并 为一个网表文件。为一个网表文件。 n适配适配 确定优化后的逻辑能否与器件中的宏单元和确定优化后的逻辑能否与器件中的宏单元和i/o单元适配。单元适配。 n分割分割 将大的设计分割为多个便于器件内部资源实现的逻辑小块的将大的设计分割为多个便于器件内部资源实现的逻辑小块的 形式。形式。 2021-5-15南京理工大学机械工程学院16 4、设计校验、设计校验 设计校验过程包括功能仿真和时序仿真。设计校验过程包括功能仿真和时序仿真。 功能仿真功能仿真 时序仿真时序仿真 5、器件编程、器件编程 器件编程就是将开发系统生成的目

14、标文件下载到可器件编程就是将开发系统生成的目标文件下载到可 编程逻辑器件中,编程逻辑器件中,来定义内部模块的逻辑功能以及它们来定义内部模块的逻辑功能以及它们 的相互连接关系。的相互连接关系。 两种编程方式:两种编程方式: n编程器编程器 n下载电缆下载电缆 2021-5-15 南京理工大学机械工程学院 17 library std; use std.standard.all; entity and2 is port( a,b : in bit; c : out bit); end and2; architecture a1 of and2 is begin c = a and b; end a

15、1; 库、包集合库、包集合 实体(实体(entity) 结构体结构体 (architecture) 进程进程 或其它并行结构或其它并行结构 配置(配置(configuration) 2021-5-15 南京理工大学机械工程学院 18 库(库(library)是经编译后的数据的集合,它用于存放)是经编译后的数据的集合,它用于存放 包集合定义、实体定义、构造体定义和配置定义。包集合定义、实体定义、构造体定义和配置定义。 声明格式:声明格式: library 库名库名; (1)库()库( library ) vhdl库可分为库可分为 5种:种: 1)ieee 库库 2)std 库(标准库)库(标准库

16、) 3)面向)面向asic的库的库 4)work库(默认库)库(默认库) 5)用户定义库)用户定义库 2021-5-15 南京理工大学机械工程学院 19 (2)包集合()包集合( package ) 包集合包集合 (package )中定义了基本的常数、信号、数据)中定义了基本的常数、信号、数据 类型、元件语句、函数定义及过程定义等。是库结构中的类型、元件语句、函数定义及过程定义等。是库结构中的 一个层次。一个层次。 声明格式:声明格式: use 库名包集合名项目名;库名包集合名项目名; use 库名库名. package名名.all; 包集合的结构包括:包集合的结构包括: 包集合标题(包首)

17、包集合标题(包首) 包集合主体(包体)包集合主体(包体) 2021-5-15 南京理工大学机械工程学院 20 package 包集合名 is 包说明项 end 包集合名; (2)包集合()包集合( package ) package body 包集合名 is 包体说明项 end 包集合名; 包集合标题包集合标题 包集合主体包集合主体 包集合体并非必须,只有在包集合中要说明 子程序时,包集合体才是必须的。 2021-5-15 南京理工大学机械工程学院 21 作用:作用: entity(实体)用于定义电路的外观,即(实体)用于定义电路的外观,即i/o端端 口的类型和数量。口的类型和数量。 定义格式

18、:定义格式: entity 实体名 is port( a : in bit; b : in bit; c : out bit); end 实体名; ; 端口名端口名数据类型数据类型端口模式端口模式:; 2021-5-15 南京理工大学机械工程学院 22 端口说明端口说明(port) 端口为设计实体和其外部环境提供动态通信的通道,端口为设计实体和其外部环境提供动态通信的通道, 是对基本设计单元与外部接口的描述,其功能相当电路图是对基本设计单元与外部接口的描述,其功能相当电路图 符号的外部引脚。端口可以被赋值,也可以当做逻辑变量符号的外部引脚。端口可以被赋值,也可以当做逻辑变量 用在逻辑表达式中。

19、用在逻辑表达式中。 其一般书写格式为:其一般书写格式为: port (端口名(端口名 :端口模式:端口模式 数据类型;数据类型; 端口名端口名 :端口模式:端口模式 数据类型;数据类型; );); 2021-5-15 南京理工大学机械工程学院 23 标识符标识符的定义原则:的定义原则: (1)标识符由字母、数字和下划线组成,)标识符由字母、数字和下划线组成, a_7a_7; (2)标识符不区分大小写,)标识符不区分大小写,ab和和ab是一样的;是一样的; (3)第一个字符必须是字母,即)第一个字符必须是字母,即a666a666; (4)不允许有两个连续的下划线,)不允许有两个连续的下划线,a_

20、ba_b错误;错误; (5)末尾不能是下划线,)末尾不能是下划线,mnamemname_ _错误;错误; (6)标识符不能和关键字相同)标识符不能和关键字相同, ,如如entityentity, ,isis等。等。 2021-5-15 南京理工大学机械工程学院 24 端口模式端口模式(mode)有以下几种类型: in ;out;inout ;buffer 端口模式可用下图说明:(黑框代表一个设计或模块) in out buffer inout 2021-5-15 南京理工大学机械工程学院 25 输入(输入(in) 允许信号进入实体,主要用于时钟输入、控制输入允许信号进入实体,主要用于时钟输入、

21、控制输入 (如(如load、reset、enable、clk)和单向的数据输入)和单向的数据输入 (如地址数据信号(如地址数据信号address)等。)等。 输出(输出(out) 输出模式只允许信号离开实体,常用于计数输出、输出模式只允许信号离开实体,常用于计数输出、 单向数据输出、被设计实体产生的控制其他实体的单向数据输出、被设计实体产生的控制其他实体的 信号等。注意:输出模式不能用于被设计实体的内信号等。注意:输出模式不能用于被设计实体的内 部反馈,因为输出端口在实体内不能看做是可读的。部反馈,因为输出端口在实体内不能看做是可读的。 2021-5-15 南京理工大学机械工程学院 26 双向

22、模式(双向模式(inout) 双向模式允许信号双向传输(既可以进入实体,也可以双向模式允许信号双向传输(既可以进入实体,也可以 离开实体),双向模式端口允许引入内部反馈。离开实体),双向模式端口允许引入内部反馈。 缓冲(缓冲(buffer) 缓冲模式允许信号输出到实体外部,但同时也可以在实缓冲模式允许信号输出到实体外部,但同时也可以在实 体内部引用该端口的信号。缓冲端口既能用于输出也能体内部引用该端口的信号。缓冲端口既能用于输出也能 用于反馈。缓冲模式用于在实体内部建立一个可读的输用于反馈。缓冲模式用于在实体内部建立一个可读的输 出端口,例如计数器输出、计数器的现态用来决定计数出端口,例如计数

23、器输出、计数器的现态用来决定计数 器的次态。器的次态。 2021-5-15 南京理工大学机械工程学院 27 2021-5-15 南京理工大学机械工程学院 28 结构体也叫结构体也叫构造体构造体,结构体描述了基本设计单元(实体),结构体描述了基本设计单元(实体) 的结构、行为、元件及内部连接关系,也就是说它的结构、行为、元件及内部连接关系,也就是说它定义了设定义了设 计实体的功能,规定了设计实体的数据流程,制定了实体内计实体的功能,规定了设计实体的数据流程,制定了实体内 部元件的连接关系部元件的连接关系。结构体对其基本设计单元的输入和输出。结构体对其基本设计单元的输入和输出 关系可用以下关系可用

24、以下三种方式进行描述三种方式进行描述,即,即行为描述行为描述(基本设计单(基本设计单 元的数学模型描述)、寄存器传输描述(元的数学模型描述)、寄存器传输描述(数据流描述数据流描述)和)和结结 构描述构描述(逻辑元件连接描述)。(逻辑元件连接描述)。 结构体结构体是对实体功能的具体描述,因此它一定要跟在实是对实体功能的具体描述,因此它一定要跟在实 体的后面体的后面 。 2021-5-15 南京理工大学机械工程学院 29 定义格式: architecture 结构体名结构体名 of 实体实体名名 is 声明语句;声明语句;(内部信号、变量、常数,元件,子程序声明内部信号、变量、常数,元件,子程序声

25、明) begin 并行描述语句;并行描述语句; end 结构体名;结构体名; 2021-5-15 南京理工大学机械工程学院 30 结构体 ( architecture) 说明语句 功能描述语句 块语句(block) 进程语句(process) 信号赋值语句 子程序调用语句 元件例化语句 2021-5-15 南京理工大学机械工程学院 31 图中图中5种功能描述语句的基本组成和功能分别是:种功能描述语句的基本组成和功能分别是: 块语句块语句是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语 句组成一个或多个子模块。句组成一个或多

26、个子模块。 进程语句进程语句定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向 其他的信号进行赋值。其他的信号进行赋值。 信号赋值语句信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。将设计实体内的处理结果向定义的信号或界面端口进行赋值。 子程序调用语句子程序调用语句可以调用进程或参数,并将获得的结果赋值于信号。可以调用进程或参数,并将获得的结果赋值于信号。 元件例化语句元件例化语句对其他的设计实体做元件调用说明,并将此元件的端口与其他对其他的设计实体做元件调用说明,并将此元件的端口与其他 元件、信号或高层实体的

27、界面端口进行连接。元件、信号或高层实体的界面端口进行连接。 2021-5-15 南京理工大学机械工程学院 32 实体与结构体的关系: 设计实体 结构体1 结构体2 结构体3 结构体n 。 。 。 一个设计实体可有多个结构体,代表实体 的多种实现方式。各个结构体的地位相同。 2021-5-15 南京理工大学机械工程学院 33 设计实体 结构体1 结构体2 结构体3 结构体n 。 。 。 一个设计实体的多种 实现方式 配置:从某个实体的多种结构体描述方式中选择 特定的一个。 2021-5-15 南京理工大学机械工程学院 34 configuration 配置名 of 实体名 is for 选配结构

28、体名 end for ; end 配置名; 在用在用vhdl描述硬件电路时,常常采用描述硬件电路时,常常采用结构描述方式结构描述方式和和混合描述方混合描述方 式式。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,。在这两种描述方式中,常常需要将其他设计实体作为元件进行引用, 这时就需要这时就需要将不同元件通过配置安装到不同的设计实体中。将不同元件通过配置安装到不同的设计实体中。 2021-5-15 南京理工大学机械工程学院 35 library ieee; use ieee.std_logic_1164.all; entity nand is port(a: in std_logi

29、c; 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; 例:一个与非门不同实现方式的配置如下:例:一个与非门不同实现方式的配置如下: 2021-5-15 南京理工大学机械工程学院 36 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

30、) and (b=0) else 0 when (a=1) and (b=1) else 0; end architecture art2; 例:一个与非门不同实现方式的配置如下:例:一个与非门不同实现方式的配置如下: 2021-5-15 南京理工大学机械工程学院 37 configuration first of nand is for art1; end for; end first; configuration second of nand is for art2 end for; end second; 例:一个与非门不同实现方式的配置如下:例:一个与非门不同实现方式的配置如下: 20

31、21-5-15 南京理工大学机械工程学院 38 二输入与门电路设计范例二输入与门电路设计范例 a b c 电路真值表电路真值表 abc 000 100 010 111 2021-5-15 南京理工大学机械工程学院 39 library std; use std.standard.all; entity and2 is port( a : in bit; b : in bit; c : out bit); end and2; -实体定义结束。实体定义结束。 双减号双减号-为为vhdl程序的注释符,类似程序的注释符,类似c语言中的语言中的/注释符。注释符。 二输入与门电路设计范例二输入与门电路设计

32、范例 2021-5-15 南京理工大学机械工程学院 40 二输入与门电路设计范例二输入与门电路设计范例 architecture na of and1 is begin c =0 when a=0 and b = 0 else 0 when a=1 and b = 0 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; -结构体结构体nb 2021-5

33、-15 南京理工大学机械工程学院 41 二输入与门电路设计范例二输入与门电路设计范例 configuration s1 of and1 is for na end for; end configuration s1; configuration s2 of and2 is for nb end for; end configuration s2; -结构体配置结束。结构体配置结束。 2021-5-15 南京理工大学机械工程学院 42 2选选1多路选择器的多路选择器的vhdl描述描述 2021-5-15 南京理工大学机械工程学院 43 2选选1多路选择器的多路选择器的vhdl描述描述 entit

34、y mux21a is port( a, b : in bit ; s : in bit; y : out bit ) ; end entity mux21a ; architecture one of mux21a is begin y = a when s = 0 else b ; end architecture one ; 实体实体 结构体结构体 2021-5-15 南京理工大学机械工程学院 44 2选选1多路选择器的多路选择器的vhdl描述描述 entity mux21a is port ( a, b : in bit; s : in bit; y : out bit ); end

35、entity mux21a; architecture one of mux21a is signal d,e : bit; begin d = a and (not s) ; e = b and s ; y = d or e ; end architecture one ; 2021-5-15 南京理工大学机械工程学院 45 2选选1多路选择器的多路选择器的vhdl描述描述 entity mux21a is port ( a, b, s: in bit; y : out bit ); end entity mux21a; architecture one of mux21a is begin

36、 process (a,b,s) begin if s = 0 then y = a ; else y = b ; end if; end process; end architecture one ; 2021-5-15 南京理工大学机械工程学院 46 mux21a功能时序波形功能时序波形 2选选1多路选择器的多路选择器的vhdl描述描述 2021-5-15 南京理工大学机械工程学院 47 n1、数据对象、数据对象 n2、数据类型、数据类型 n3 、运算操作符、运算操作符 n4、 数据对象属性数据对象属性 n5、 vhdl语言词法规则语言词法规则 2021-5-15 南京理工大学机械工程学院

37、 48 1、数据对象、数据对象 三种对象:常量(三种对象:常量(constantconstant) 变量(变量(variablevariable) 信号(信号(signalsignal) 三种对象的物理含义:三种对象的物理含义: 常量代表数字电路中的电源、地、恒定逻常量代表数字电路中的电源、地、恒定逻 辑值等常数;辑值等常数; 变量代表暂存某些值的载体,常用于描述变量代表暂存某些值的载体,常用于描述 算法;算法; 信号代表物理设计中的某一条硬件连接线,信号代表物理设计中的某一条硬件连接线, 包括输入、输出端口。包括输入、输出端口。 2021-5-15 南京理工大学机械工程学院 49 1、数据对

38、、数据对 象象 三种对象的特点及说明场合: 信号:全局量, 用于architecture、 package、entitiy。 变量:局部量,用于process、function、 procedure。 常量:全局量,可用于上面两种场合。 2021-5-15 南京理工大学机械工程学院 50 1、数据对、数据对 象象 常量说明常量说明 常量说明:对某一个常量名赋予一个固定的值。 格式: 例: constant data:bit_vector(3 downto 0):=“1010” constant width: integer: = 8; constant x: new_bit: = x; 常量数

39、据类型必须与表达式的数据类型一致。 constant 常数名:数据类型:= 表达式; 2021-5-15 南京理工大学机械工程学院 51 常量的可视性(作用范围):常量的可视性(作用范围): 库、程序包 实体(entity) 结构体1 进 程1 结构体2 进 程2 常量是常量是全局全局 量量,其作用,其作用 范围取决于范围取决于 常量被定义常量被定义 的位置。的位置。 2021-5-15 南京理工大学机械工程学院 52 1、数据对、数据对 象象 变量说明变量说明 变量是一个局部量,只能在进程和子程序中 定义、使用。其作用范围仅限于定义了变量的进 程和子程序中。 格式: 例: variable

40、a, b : bit; variable count:integer range 0 to 255:= 10; 变量的初值可用于仿真,但综合时被忽略。 variable 变量名:数据类型 约束条件:= 表达式; 2021-5-15 南京理工大学机械工程学院 53 1、数据对、数据对 象象 信号说明信号说明 电子硬件系统运行的基本特性: 各部分电路工作的并行特性; 信号传输过程中的延时特性; 多驱动源的总线特性; 时序电路中触发器的记忆特性等。 信号是电子系统内部硬件连接和硬件特性的抽象表示。 用来描述硬件系统的基本特性。 格式: signal 信号名:数据类型 约束条件: 表达式; 2021-

41、5-15 南京理工大学机械工程学院 54 1、数据对、数据对 象象 例:例: signal a, b : bit;signal a, b : bit; signal init : integer := -1; signal init : integer := -1; signal s1: std_logic := 0; signal s1: std_logic := 0; signal s2: std_logic_vector(15 downto signal s2: std_logic_vector(15 downto 0); 0); 注:注:a. a. 综合时初值被忽略。综合时初值被忽略。

42、 b. b. 信号是全局量。可在结构体、实体、块中信号是全局量。可在结构体、实体、块中 说明和使用信号。说明和使用信号。 c. c. 在进程和子程序中只能使用信号,不能说在进程和子程序中只能使用信号,不能说 明信号。明信号。 2021-5-15 南京理工大学机械工程学院 55 例:进程中信号与变量的使用例:进程中信号与变量的使用 entity ex isentity ex is port( port(.);.); end ex;end ex; architecture arch_ex of ex isarchitecture arch_ex of ex is signal signal a a

43、, , b b :std_logic; :std_logic; beginbegin process( process(a a, , b b) ) variable c, d : std_logic; variable c, d : std_logic; begin begin c:= a + b; c:= a + b; d:= a - b; d:= a - b; end process; end process; end arch_ex; end arch_ex; 2021-5-15 南京理工大学机械工程学院 56 1、数据对、数据对 象象 信号信号与与端口端口的区别:的区别: 除没有方向说

44、明外,信号与实体的“端口 (port)” 概念相似。端口是一种隐形的信号。 entity exam is port(signal a, b: in std_logic; signal c: out std_logic); end exam; 端口是一种有方向的信号。即输出端口不能 读出数据,只能写入数据;输入端口不能写入数 据,只能读出数据。 信号本身无方向,可读可写。 2021-5-15 南京理工大学机械工程学院 57 信号与信号与变量变量的区别:的区别: 信号和变量是信号和变量是vhdlvhdl中重要的客体,他们之间的主要区别有:中重要的客体,他们之间的主要区别有: 信号赋值至少要有信号赋

45、值至少要有延时;而变量赋值没有。延时;而变量赋值没有。 信号除当前值外有许多相关的信息,如历史信息和投影波形;信号除当前值外有许多相关的信息,如历史信息和投影波形; 而变量只有当前值。而变量只有当前值。 进程对信号敏感而不对变量敏感。进程对信号敏感而不对变量敏感。 信号可以是多个进程的全局信号;而变量只在定义他们的顺信号可以是多个进程的全局信号;而变量只在定义他们的顺 序域可见(共享变量除外)。序域可见(共享变量除外)。 信号是硬件中连线的抽象描述,他们的功能是保存变化的数信号是硬件中连线的抽象描述,他们的功能是保存变化的数 据值和连接子元件。据值和连接子元件。变量在硬件中没有类似的对应关系,

46、他们变量在硬件中没有类似的对应关系,他们 用于硬件特性的高层次建模所需要的计算中。用于硬件特性的高层次建模所需要的计算中。 2021-5-15 南京理工大学机械工程学院 58 process(process(a a, ,b,c,db,c,d) ) beginbegin d=a;d=a; x=b+dx=b+d; ; d=c; y=b+d; end process;end process; process(process(a a, ,b,cb,c) ) variable d:std_logic_vector(0 to 3)variable d:std_logic_vector(0 to 3) be

47、ginbegin d:=a;d:=a; x=b+dx=b+d; ; d:=c; y=b+d; end process;end process; 结果:结果: x=b+cx=b+c; ; x=b+c; 结果:结果: x=b+ax=b+a; ; x=b+c; 信号量的值将进程语句最后所带信号量的值将进程语句最后所带 入的值作为最终代入值;而变量入的值作为最终代入值;而变量 的值一经赋值就变成新的值。的值一经赋值就变成新的值。 2021-5-15 南京理工大学机械工程学院 59 2、数据类型数据类型 在在vhdl程序中,经常会遇到这样的语句:程序中,经常会遇到这样的语句: signal a : st

48、d_logic; variable b : std_logic_vector(7 downto 0); constant c : integer; 数据对象类型数据对象类型数据类型数据类型数据对象名数据对象名 vhdl是一种强数据类型语言。要求设计实体中的每 一个常数、信号、变量、函数以及设定的各种参量都必 须具有确定的数据类型,并且相同数据类型的量才能互 相传递和作用。 2021-5-15 南京理工大学机械工程学院 60 2、数据类、数据类 型型 标准数据类型标准数据类型 ieeeieee预定义标准预定义标准 用户自定义数据类型用户自定义数据类型 vhdlvhdl的标准数据类型十种的标准数据

49、类型十种 1 1)布尔量()布尔量(booleanboolean) 布尔量具有两种状态:布尔量具有两种状态:false false 和和 truetrue 常用于逻辑函数,如相等(常用于逻辑函数,如相等(= =)、比较()、比较( ) 等中作逻辑比较。等中作逻辑比较。 如,如,bit bit 值转化成值转化成booleanboolean 值:值: boolean_var := (bit_varboolean_var := (bit_var = 1); = 1); 2021-5-15 南京理工大学机械工程学院 61 2、数据类、数据类 型型 2 2)位()位(bitbit) bit 表示一位的信

50、号值。 放在单引号中,如 0 或 1。 3 3)位矢量)位矢量 (bit_vectorbit_vector) bit_vector 是用双引号括起来的一组位数据。 如: “001100” x“00b10b” 4 4)字符()字符(charactercharacter) 用单引号将字符括起来。 variable character_var : character; . . character_var : = a; 2021-5-15 南京理工大学机械工程学院 62 2、数据类、数据类 型型 5 5)整数()整数(integerinteger) integer 表示所有正的和负的整数。硬件实现时,

51、 利用32位的位矢量来表示。可实现的整数范围为: -(231-1) to (231-1) vhdl综合器要求对具体的整数作出范围限定, 否则无法综合成硬件电路。 如:signal s : integer range 0 to 15; 信号 s 的取值范围是0-15,可用4位二进制数表 示,因此 s 将被综合成由四条信号线构成的信号。 2021-5-15 南京理工大学机械工程学院 63 2、数据类、数据类 型型 6 6)自然数()自然数(naturalnatural)和正整数()和正整数(positivepositive) natural是integer的子类型,表示非负整数。 positive

52、是integer的子类型,表示正整数。 定义如下: subtype natural is integer range 0 to integerhigh; subtype positive is integer range 1 to integerhigh; 2021-5-15 南京理工大学机械工程学院 64 2、数据类、数据类 型型 7 7)实数()实数(realreal) 或称浮点数 取值范围:-1.0e38 - +1.0e38 实数类型仅能用于vhdl仿真器,一般综合器 不支持。 8 8)字符串()字符串(stringstring) string 是 character 类型的一个非限定

53、数组。用双引号将一串字符括起来。如: variable string_var : string(1 to 7); string_var := “rosebud”; 2021-5-15 南京理工大学机械工程学院 65 9)时间()时间(time) 由整数和物理单位组成 如:55 ms,20 ns type time is range 2147483647 to 2147483647 unite fs;-飞秒(飞秒(10-15s)vhdl中的最小时间单位中的最小时间单位 ps=1000fs;-皮秒皮秒 ns=1000ps;-纳秒纳秒 us=1000ns;-微秒微秒 ms=1000us;-毫秒毫秒

54、sec=1000ms;-秒秒 min=60sec;-分分 hr=60min;-时时 end units; 2、数据类、数据类 型型 2021-5-15 南京理工大学机械工程学院 66 2、数据类、数据类 型型 1010)错误等级()错误等级(severity_levelseverity_level) 仿真中用来指示系统的工作状态,共有四种: note(注意) warning(警告) error(出错) failure(失败) 其定义如下:其定义如下: type severity_level is(note,warning,error,failure);); 2021-5-15 南京理工大学机械

55、工程学院 67 2、数据类、数据类 型型 ieeeieee预定义标准逻辑位与矢量预定义标准逻辑位与矢量 1 1)std_logic 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, -:不可能情况 2021-5-15 南京理工大学机械工程学院 68 2、数据类、数据类 型型 ieee预定义标准逻辑位与矢量预定义标准逻辑位与矢量 由 std_logic 类型代替 bit 类型可以完

56、成电 子系统的精确模拟,并可实现常见的三态总线电路。 2 2)std_logic_vector std_logic_vector 类型类型 由 std_logic 构成的数组。定义如下: type std_logic_vector is array(natural range) of std_logic; 赋值的原则:相同位宽,相同数据类型。 2021-5-15 南京理工大学机械工程学院 69 2、数据类、数据类 型型 用户自定义数据类型用户自定义数据类型 用户自定义类型是vhdl语言的一大特色。 可由用户定义的数据类型有: 枚举类型 整数和实数类型 数组类型 记录类型 子类型 2021-5-

57、15 南京理工大学机械工程学院 70 2、数据类、数据类 型型 用类型定义语句type和子类型定义语句 subtype实现用户自定义数据类型。 type语句格式: 例:type byte is array(7 downto 0) of bit; variable addend : byte; type 数据类型名 is 数据类型定义 of 基本数据类型; 2021-5-15 南京理工大学机械工程学院 71 subtype语句格式: 例: subtype digits is integer range 0 to 9; 由subtype 语句定义的数据类型称为子类型。 2、数据类、数据类 型型 s

58、ubtype 子类型名 is 基本数据类型 约束范围; 2021-5-15 南京理工大学机械工程学院 72 2、数据类、数据类 型型 自定义整数类型自定义整数类型 用户定义的整数类型是标准包中整数类型的子范围。 格式: 例:type my_integer is integer range 0 to 15; 自定义数组类型自定义数组类型 数组数组:同类型元素的集合。vhdl支持多维数组。 多维数组的声明: type byte is array(7 downtotype byte is array(7 downto 0) of bit 0) of bit;1 1维维8 8位数组位数组 type v

59、ector is array(3 downtotype vector is array(3 downto 0) of byte 0) of byte;2 2维维4x84x8数组数组 type 类型名称 is integer 整数范围; 2021-5-15 南京理工大学机械工程学院 73 3、运算操作符、运算操作符 vhdl运算操作符的分类: 逻辑运算符(logical operator) 关系运算符(relational operator) 算术运算符(arithmetic operator) 并置运算符(overloading operator) 2021-5-15 南京理工大学机械工程学院

60、 74 1 1)逻辑运算符)逻辑运算符 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 ) 2021-5-15 南京理工大学机械工程学院 75 例外:当逻辑表达式中只有“and”、“or”、 “xor” 运算符时,可以省略括号。如: a = b and c and d and e;

温馨提示

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

评论

0/150

提交评论