版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VHDL与数字电路设计与数字电路设计主讲:崔主讲:崔 刚刚 北京工业大学电控学院电工电子中心北京工业大学电控学院电工电子中心2005年年9月月1目录目录 概述概述第一章第一章 VHDL的程序结构和软件操作的程序结构和软件操作 第二章第二章 数据类型与数据对象的定义数据类型与数据对象的定义第三章第三章 并行赋值语句并行赋值语句第四章第四章 顺序赋值语句顺序赋值语句第五章第五章 组合逻辑电路的设计组合逻辑电路的设计第六章第六章 时序逻辑电路的设计时序逻辑电路的设计第七章第七章 子程序、库和程序包子程序、库和程序包第八章第八章 CPLD和和FPGA的结构与工作原理的结构与工作原理 第九章第九章 数字
2、钟电路的设计数字钟电路的设计 本节主要内容本节主要内容传统数字电路设计方法传统数字电路设计方法EDA设计方法设计方法PLD器件器件 PLD器件设计流程器件设计流程文本设计输入文本设计输入VHDL程序设计程序设计数字电子技术的基本知识回顾数字电子技术的基本知识回顾组合逻辑电路组合逻辑电路 编码器、译码器、数据选择器、加法器、数值比较器等编码器、译码器、数据选择器、加法器、数值比较器等时序逻辑电路时序逻辑电路同步时序逻辑电路同步时序逻辑电路异步时序逻辑电路异步时序逻辑电路寄存器、移位寄存器、计数器、序列信号发生器寄存器、移位寄存器、计数器、序列信号发生器一、传统设计方法一、传统设计方法(1)首先确
3、定可用的元器件;)首先确定可用的元器件;(2)根据这些器件进行逻辑设计,完成各模块;)根据这些器件进行逻辑设计,完成各模块;(3)将各模块进行连接,最后形成系统;)将各模块进行连接,最后形成系统;(4)而后经调试、测量观察整个系统是否达到规定)而后经调试、测量观察整个系统是否达到规定的性能指标。的性能指标。 传统的设计方法是基于传统的设计方法是基于中小规模集成电路器件进中小规模集成电路器件进行设计(如行设计(如74系列及其改进系列、系列及其改进系列、CC4000系列、系列、74HC系列等都属于通用型数字集成电路),系列等都属于通用型数字集成电路),而而且是采用自底向上进行设计:且是采用自底向上
4、进行设计:EDA(Electronics Design Automation)即电子设计)即电子设计自动化技术,是利用计算机工作平台,从事电子系自动化技术,是利用计算机工作平台,从事电子系统和电路设计的一项技术。统和电路设计的一项技术。EDA技术为电子系统设计带来了这样的变化:技术为电子系统设计带来了这样的变化:(1)设计效率提高,设计周期缩短;)设计效率提高,设计周期缩短;(2)设计质量提高;)设计质量提高;(3)设计成本降低;)设计成本降低;(4)能更充分地发挥设计人员的创造性;)能更充分地发挥设计人员的创造性;(5)设计成果的重用性大大提高,省去了不必要的)设计成果的重用性大大提高,省去
5、了不必要的重复劳动。重复劳动。 二、二、EDA设计方法设计方法 自顶向下的设计方法自顶向下的设计方法数字电路的数字电路的EDA设计是基于设计是基于PLD进行设计的,支持自进行设计的,支持自顶向下的设计方法:顶向下的设计方法:(1)首先从系统设计入手,在顶层进行功能划分和)首先从系统设计入手,在顶层进行功能划分和结构设计;结构设计;(2)然后再逐级设计底层的结构;)然后再逐级设计底层的结构;(3)并在系统级采用仿真手段验证设计的正确性;)并在系统级采用仿真手段验证设计的正确性;(4)最后完成整个系统的设计,实现从设计、仿真、)最后完成整个系统的设计,实现从设计、仿真、测试一体化。测试一体化。 传
6、统设计方法传统设计方法 vs EDA设计方法设计方法 传统设计方法传统设计方法EDA设计方法设计方法自底向上自底向上手动设计手动设计软硬件分离软硬件分离原理图设计方式原理图设计方式系统功能固定系统功能固定不易仿真不易仿真难测试修改难测试修改模块难移植共享模块难移植共享设计周期长设计周期长自顶向上自顶向上自动设计自动设计打破软硬件屏障打破软硬件屏障原理图、原理图、HDL等设计方式等设计方式系统功能易改系统功能易改易仿真易仿真易测试修改易测试修改模块可移植共享模块可移植共享设计周期短设计周期短三、三、PLD器件器件 (一)出现的背景(一)出现的背景 如果能把所设计的数字系统做成如果能把所设计的数字
7、系统做成一片大规模集成一片大规模集成电路电路,则不仅能减小电路的,则不仅能减小电路的体积体积、重量重量、功耗功耗,而且,而且会使电路的会使电路的可靠性可靠性大为提高。大为提高。 为某种专门用途而设计的集成电路叫做专用集成为某种专门用途而设计的集成电路叫做专用集成电路,即所谓的电路,即所谓的ASIC(Application Specific Integrated Circuit的缩写)。的缩写)。 在用量不大的情况下,设计和制造这样的专用集成在用量不大的情况下,设计和制造这样的专用集成电路成本很高,而且设计、制造的周期也较长。电路成本很高,而且设计、制造的周期也较长。 可编程逻辑器件的研制成功为
8、解决上述问题提供了可编程逻辑器件的研制成功为解决上述问题提供了比较理想的途径。比较理想的途径。 (二)(二)PLD概述概述PLD是可编程逻辑器件(是可编程逻辑器件(Programmable Logic Device)的英文缩写。的英文缩写。可编程逻辑器件是一种可编程逻辑器件是一种数字集成电路的半成品数字集成电路的半成品,在其,在其芯片上芯片上按一定排列方式按一定排列方式集成了集成了大量的逻辑门大量的逻辑门和和触发器触发器等基本逻辑元件。等基本逻辑元件。通过编程可以设置其逻辑功能。通过编程可以设置其逻辑功能。PLD编程编程:利用利用开发工具开发工具对对PLD进行加工,即按设计要求将进行加工,即按
9、设计要求将这些这些片内的元件连接片内的元件连接起来,使之完成某个逻辑电路或系统起来,使之完成某个逻辑电路或系统的功能,成为一个专用集成电路(的功能,成为一个专用集成电路(ASICApplication Specific Integrated Circuit)。)。 PLD开发系统开发系统PLD开发系统包括硬件和软件两部分。开发系统包括硬件和软件两部分。硬件部分:计算机、下载电缆或编程器;硬件部分:计算机、下载电缆或编程器;软件部分:集成开发系统。软件部分:集成开发系统。 Altera公司:公司:Maxplus 、 Quartus Xilinx公司:公司:Foundation、 ISE Latt
10、ice公司:公司:Synario System、ispEXPERT System四、四、PLD设计流程设计流程设计准备设计准备设计输入设计输入设计处理设计处理器件编程器件编程功能仿真功能仿真时序仿真时序仿真器件测试器件测试PLD设计准备设计准备在设计之前,首先要进行方案论证和器件选择等设计在设计之前,首先要进行方案论证和器件选择等设计准备工作。准备工作。 设计者首先要根据任务要求,判断系统的可行性。设计者首先要根据任务要求,判断系统的可行性。系统的可行性要受到逻辑要求合理性、成本、开发条系统的可行性要受到逻辑要求合理性、成本、开发条件、器件供应等方面的约束。件、器件供应等方面的约束。 若系统可
11、行,则根据系统所完成的功能及复杂程若系统可行,则根据系统所完成的功能及复杂程度,对器件本身的资源和成本、工作速度及连线的可度,对器件本身的资源和成本、工作速度及连线的可布性等方面进行权衡,选择合适的设计方案和合适的布性等方面进行权衡,选择合适的设计方案和合适的器件类型。器件类型。 设计输入设计输入 将所设计的电路的逻辑功能按照开发系统要求的形将所设计的电路的逻辑功能按照开发系统要求的形式表达出来的过程称为设计输入。式表达出来的过程称为设计输入。 通常,设计输入有如下三种方式:通常,设计输入有如下三种方式: (1)原理图输入方式)原理图输入方式 适用于对系统及各部分电路很熟悉的场合。适用于对系统
12、及各部分电路很熟悉的场合。 (2)硬件描述语言输入方式)硬件描述语言输入方式 硬件描述语言是用文本方式描述设计,硬件描述语硬件描述语言是用文本方式描述设计,硬件描述语言有言有ABEL、AHDL、VHDL、Verilog等,其中等,其中VHDL和和Verilog已成为已成为IEEE标准。标准。 (3)波形输入方式)波形输入方式设计处理设计处理n逻辑优化逻辑优化 把逻辑描述转变为最适合在器件中实现的形式,把逻辑描述转变为最适合在器件中实现的形式,优化使设计所占用的资源最少。优化使设计所占用的资源最少。 n逻辑综合逻辑综合 根据设计描述,对给定的硬件结构组件,最终获根据设计描述,对给定的硬件结构组件
13、,最终获得门级电路甚至更底层的电路描述文件,即将多得门级电路甚至更底层的电路描述文件,即将多个模块化设计文件合并为一个网表文件。个模块化设计文件合并为一个网表文件。n适配适配 确定优化后的逻辑能否与器件中的宏单元和确定优化后的逻辑能否与器件中的宏单元和I/O单单元适配。元适配。n分割分割 将大的设计分割为多个便于器件内部资源实现的将大的设计分割为多个便于器件内部资源实现的逻辑小块的形式。逻辑小块的形式。设计校验设计校验设计校验过程包括功能仿真和时序仿真。设计校验过程包括功能仿真和时序仿真。 n功能仿真功能仿真n时序仿真时序仿真器件编程器件编程 器件编程就是将开发系统生成的目标文件下载器件编程就
14、是将开发系统生成的目标文件下载到可编程逻辑器件中,到可编程逻辑器件中,来定义内部模块的逻辑来定义内部模块的逻辑功能以及它们的相互连接关系。功能以及它们的相互连接关系。 两种编程方式:两种编程方式:n编程器编程器n下载电缆下载电缆PLD开发系统开发系统PLD开发系统包括硬件和软件两部分。开发系统包括硬件和软件两部分。硬件部分:计算机、下载电缆或编程器;硬件部分:计算机、下载电缆或编程器;软件部分:集成开发系统。软件部分:集成开发系统。 Altera公司:公司:Maxplus 、 Quartus Xilinx公司:公司:Foundation、 ISE Lattice公司:公司:Synario Sy
15、stem、ispEXPERT System设计举例设计举例设计内容:设计内容:十进制计数器电路设计。十进制计数器电路设计。PLD器件:器件:ACEX1K系列的系列的EP1K30QC208。开发系统:开发系统:MAX+plus系统。系统。编程方式:下载电缆。编程方式:下载电缆。实验下载板实验下载板设计过程设计过程1、设计输入、设计输入 VHDL 演示演示12、逻辑验证、逻辑验证 演示演示23、设计处理、设计处理 引脚设定引脚设定 演示演示34、器件编程、器件编程 连接下载电缆连接下载电缆 演示演示4三、三、PLD电路设计的特点电路设计的特点1、设计简单,方便;、设计简单,方便;2、电路系统可以集
16、成在一片芯片上;、电路系统可以集成在一片芯片上;3、电路设计不依赖于器件进行设计;、电路设计不依赖于器件进行设计;4、电路系统很容易完善和升级。、电路系统很容易完善和升级。器件选择:(器件选择:(1)电路系统所完成的功能及复杂程度;)电路系统所完成的功能及复杂程度; (2)器件本身的资源和成本、性能参数、)器件本身的资源和成本、性能参数、 器件编程工艺等方面进行权衡。器件编程工艺等方面进行权衡。 VHDL是非常高速集成电路硬件描述语言是非常高速集成电路硬件描述语言 ( (Very High speed Integrated Circuit Hardware Description Langua
17、ge)的英文缩写。的英文缩写。 五、文本设计输入五、文本设计输入VHDL程序设计程序设计语法和风格语法和风格:(1 1)类似与现代高级编程语言,如)类似与现代高级编程语言,如C语言。语言。(2)VHDL描述的是硬件,它包含许多硬件特描述的是硬件,它包含许多硬件特有的结构。有的结构。VHDL设计设计 VS 电路图设计电路图设计VHDL与电路图设计电路的方式不同,与电路图设计电路的方式不同,和电路图设计方式相比:和电路图设计方式相比:(1)易于修改;)易于修改;(2)设计能力更强;)设计能力更强;(3)VHDL语言很方便:独立于器件设计;语言很方便:独立于器件设计;相同的程序代码可以用于不同厂家生
18、产的相同的程序代码可以用于不同厂家生产的器件。器件。 VHDL程序的基本结构程序的基本结构include “stdio.h”; include “math.h”;int main(void) int a,b,c; a=8; b=9; c=a+b; return c; 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 a1;VHDL程序程序 C程序程序 VHDL程序的基
19、本结构程序的基本结构n(1)LIBRARY和和PACHAGE声明区;声明区;n(2)ENTITY定义区;定义区;n(3)ARCHITECTURE定义区;定义区;Library(库)是用于存放预先编译好的(库)是用于存放预先编译好的Package(程序(程序包)。包)。Package (程序包)中定义了基本(程序包)中定义了基本的常数,数据类型,的常数,数据类型,元件及子程序等元件及子程序等。 作用:声明在实体和结构体定义中将用到的作用:声明在实体和结构体定义中将用到的 数据类型、元件或子程序等。数据类型、元件或子程序等。声明格式:声明格式: Library 库名库名; Use 库名库名. PA
20、CKAGE名名. .All;(1)LIBRARY和和PACKAGE声明区声明区 作用:作用: ENTITY(实体)用于定义电路的(实体)用于定义电路的外观,即外观,即I/O端口的类型和数量。端口的类型和数量。 定义格式:定义格式:Entity 实体名 is Port( a : in bit; b : in bit; c : out bit);End 实体名; ;(2)ENTITY定义区定义区端口名端口名数据类型数据类型端口模式端口模式端口模式端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER 端口模式可用下图说明:(黑框代表一个设计或模块) IN OUT BUFF
21、ER INOUT(2)ENTITY定义区定义区(3)ARCHITECTURE定义区定义区 实体的实现。即实体的实现。即说明电路执行什么动作或实现功能。说明电路执行什么动作或实现功能。定义格式:定义格式: Architecture 结构体名结构体名 of 实体名实体名 is 声明语句;声明语句;(内部信号、变量、常数,元件,子程序声明内部信号、变量、常数,元件,子程序声明) Begin并行描述语句;并行描述语句;End 结构体名;结构体名;二输入与门电路设计范例二输入与门电路设计范例 abc电路真值表电路真值表abc000100010111二输入与门电路设计范例二输入与门电路设计范例Librar
22、y std; Use std.standard.all;Entity and2 is Port( a : in bit; b : in bit; c : out bit);End and2;-实体定义结束。实体定义结束。 双减号双减号-为为VHDL程序的注释符,类似程序的注释符,类似C语言中的语言中的/注释符。注释符。二输入与门电路设计范例二输入与门电路设计范例Architecture Na of and2 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; 符
23、号符号=为信号直接赋值符。为信号直接赋值符。 End Na; -结构体结构体Na Architecture Nb of and2 is Begin c = a and b; -and 为逻辑与操作为逻辑与操作End Nb; -结构体结构体Nb第一章第一章 VHDL的程序结构和软件操作的程序结构和软件操作 1-1 VHDL程序的基本结构程序的基本结构1-2 Max+plus的操作的操作1-1 VHDL程序的基本结构程序的基本结构include “stdio.h”; include “math.h”;int main(void) int a,b,c; a=8; b=9; c=a+b; return
24、 c; 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 a1;VHDL程序程序 C程序程序 1-1 VHDL程序的基本结构程序的基本结构n(1)LIBRARY和和PACHAGE声明区;声明区;n(2)ENTITY定义区;定义区;n(3)ARCHITECTURE定义区;定义区;n(4)CONFIGURATION定义区。定义区。Library(库)是用于存放预先编译好的
25、(库)是用于存放预先编译好的Package(程序(程序包)。包)。Package (程序包)中定义了基本(程序包)中定义了基本的常数,数据类型,的常数,数据类型,元件及子程序等元件及子程序等。 作用:声明在实体和结构体定义中将用到的作用:声明在实体和结构体定义中将用到的 数据类型、元件或子程序等。数据类型、元件或子程序等。声明格式:声明格式: Library 库名库名; Use 库名库名. PACKAGE名名. .All;(1)LIBRARY和和PACKAGE声明区声明区 作用:作用: ENTITY(实体)用于定义电路的(实体)用于定义电路的外观,即外观,即I/O端口的类型和数量。端口的类型和
26、数量。 定义格式:定义格式:Entity 实体名 is Port( a : in bit; b : in bit; c : out bit);End 实体名; ;(2)ENTITY定义区定义区端口名端口名数据类型数据类型端口模式端口模式(2)ENTITY定义区定义区标识符的定义原则:标识符的定义原则:(1)标识符由字母、数字和下划线组成,)标识符由字母、数字和下划线组成,a7_a7_;(2)在标识符不区分大小写,)在标识符不区分大小写,ab和和AB是一样的;是一样的;(3)第一个字符必须是字母,即)第一个字符必须是字母,即a666a666;(4)不允许有两个连续的下划线,)不允许有两个连续的下
27、划线,a_ba_b错误;错误;(5)末尾不能是下划线,)末尾不能是下划线,mname_mname_错误;错误;(6)标识符不能和关键字相同)标识符不能和关键字相同, ,如如EntityEntity, ,isis等。等。端口模式端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER 端口模式可用下图说明:(黑框代表一个设计或模块) IN OUT BUFFER INOUT(2)ENTITY定义区定义区(3)ARCHITECTURE定义区定义区 定义了实体的实现。即电路的具体描述定义了实体的实现。即电路的具体描述,说明电路执,说明电路执行什么动作或实现功能。行什么动作或实现
28、功能。定义格式:定义格式: Architecture 结构体名结构体名 of 实体名实体名 is 声明语句;声明语句;(内部信号、变量、常数,元件,子程序声明内部信号、变量、常数,元件,子程序声明) Begin并行描述语句;并行描述语句;End 结构体名;结构体名;(4)CONFIGURATION定义区定义区 一个完整一个完整VHDL电路设计必须有电路设计必须有一个实体一个实体和和对应的结构体对应的结构体,即,即实体和结构体对实体和结构体对构成一个构成一个完整的完整的VHDL设计。设计。 一个实体可对应一个结构体或多个结构体一个实体可对应一个结构体或多个结构体,即一个实体可以有不同的描述方式。
29、,即一个实体可以有不同的描述方式。作用:作用:当实体有多个结构体时,当实体有多个结构体时,系统默认实体选系统默认实体选用最后一个结构体,用最后一个结构体,利用利用CONFIGURATION语句可以任意选择采用语句可以任意选择采用哪一个结构体。哪一个结构体。 (4)CONFIGURATION定义区定义区定义格式:定义格式:Configuration 配置名配置名 of 实体名实体名 isfor 选用的结构体名选用的结构体名end for;end configuration 配置名配置名 ;二输入与门电路设计范例二输入与门电路设计范例 abc电路真值表电路真值表abc000100010111二输入
30、与门电路设计范例二输入与门电路设计范例Library std; Use std.standard.all;Entity and2 is Port( a : in bit; b : in bit; c : out bit);End and2;-实体定义结束。实体定义结束。 双减号双减号-为为VHDL程序的注释符,类似程序的注释符,类似C语言中的语言中的/注释符。注释符。二输入与门电路设计范例二输入与门电路设计范例Architecture Na of and2 is Begin c =0 when a=0 and b = 0 else 0 when a=1 and b = 0 else 0 whe
31、n a=0 and b = 1 else 1; 符号符号=为信号直接赋值符。为信号直接赋值符。 End Na; -结构体结构体Na Architecture Nb of and2 is Begin c = a and b; -and 为逻辑与操作为逻辑与操作End Nb; -结构体结构体Nb二输入与门电路设计范例二输入与门电路设计范例Configuration s1 of and2 isfor naend for;end configuration s1;-结构体配置结束。结构体配置结束。1-2 Max+plus系统的操作系统的操作 Max+plus开发工具是美国开发工具是美国Altera公司
32、自行设公司自行设计的一种软件工具,其全称为计的一种软件工具,其全称为Multiple Array Matrix and Programmable Logic User System。 它具有它具有原理图输入原理图输入和和文本输入文本输入(采用硬件描述(采用硬件描述语言)两种输入手段,利用该工具所配备的语言)两种输入手段,利用该工具所配备的编辑编辑、编译编译、仿真仿真、时序分析时序分析、芯片编程芯片编程等功能,将设计等功能,将设计电路图或电路描述程序变成基本的逻辑单元写入到电路图或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如可编程的芯片中(如CPLD或或FPGA芯片),作成芯片),作成
33、ASIC芯片。它是芯片。它是EDA设计中不可缺少的一种工具。设计中不可缺少的一种工具。 下面我们介绍利用下面我们介绍利用Max+plus 系统如何实现如下操作:系统如何实现如下操作:(1)如何编写)如何编写VHDL程序(使用程序(使用Text Editor););(2)如何编译)如何编译VHDL程序(使用程序(使用Compiler););(3)如何仿真验证)如何仿真验证VHDL程序(使用程序(使用Waveform Editor,Simulator););(4)如何进行芯片的时序分析(使用)如何进行芯片的时序分析(使用Timing Analyzer););(5)如何安排芯片脚位(使用)如何安排芯
34、片脚位(使用Floorplan Editor););(6)如何下载程序至芯片(使用)如何下载程序至芯片(使用Programmer)。)。1-2 Max+plus系统的操作系统的操作(1)如何编写)如何编写VHDL程序程序a. 打开文本编辑器;打开文本编辑器;File/new/Text editor fileb. 编写编写VHDL程序;程序;c. 保存文件,保存文件,文件名和定义的实体名必文件名和定义的实体名必须相同,须相同,文件扩展名为文件扩展名为VHD,文件文件存盘的目录不应是根目录或桌面,建议存存盘的目录不应是根目录或桌面,建议存放在放在Max2work或或Maxplus2目录,或其子目录
35、,或其子目录目录 。(2)如何编译)如何编译VHDL程序程序a. 打开需要编译的文件;打开需要编译的文件;b.设置工程到目前打开的文件设置工程到目前打开的文件 ; File/Project/Set Project to Current File, c.c.打开编译器;打开编译器;点击主菜单点击主菜单MAX+plus/Compiler选项。选项。 d. 选定选定VHDLVHDL源文件的版本源文件的版本 ;Interfaces/VHDL Netlist Reader Settings e. 打开编译器进行编译。打开编译器进行编译。(3)如何仿真验证)如何仿真验证VHDL程序程序a. 打开波形编辑器
36、(打开波形编辑器(Waveform Editor Waveform Editor ) ;b. 确定仿真持续时间(确定仿真持续时间(File/End Time););c. 将输入输出端口名选入将输入输出端口名选入波形编辑器;波形编辑器;d. 编辑输入信号波形编辑输入信号波形 ;e. 保存仿真波形文件保存仿真波形文件 ;f. 打开仿真器打开仿真器MAX+plusSimulator进行仿真。在进行仿真。在仿真结束后打开仿真波形文件(点击右下角的仿真结束后打开仿真波形文件(点击右下角的Open SCF按钮)即可以显示仿真结果。按钮)即可以显示仿真结果。(4)如何进行芯片的时序分析)如何进行芯片的时序分
37、析a. 选择要下载的器件型号选择要下载的器件型号 ; 点击主菜单的点击主菜单的Assign/Device项得到项得到Device对对话框。在话框。在Device Family框中选择芯片系列,框中选择芯片系列,在在Devices选择框下选择具体的芯片名,最后选择框下选择具体的芯片名,最后点击点击OK按钮按钮 。b. 再编译一次;再编译一次;c. 打开时序分析器(打开时序分析器(Timing Analyzer ););d. 点击点击Start进行时序分析。进行时序分析。(5)如何安排芯片脚位)如何安排芯片脚位a.打开芯片脚位设置窗口;点击主菜单打开芯片脚位设置窗口;点击主菜单Assign/ Pi
38、n/Location/Chip,出现脚位设置对话框;,出现脚位设置对话框; ;b.将实体定义的端口名字和下载芯片的管脚进行具体对将实体定义的端口名字和下载芯片的管脚进行具体对应;在应;在Node Name框中输入我们定义的实体端口名字,框中输入我们定义的实体端口名字,然后在然后在Pin列表选项框中输入下载芯片的管脚序号,再列表选项框中输入下载芯片的管脚序号,再点击对话框右下角的点击对话框右下角的Add按钮,将所有端口设置完成按钮,将所有端口设置完成以后,点击以后,点击Ok按钮,则实现实体端口和下载芯片的管按钮,则实现实体端口和下载芯片的管脚的对应;脚的对应; c. 再编译一次,将生成可以下载的
39、文件(再编译一次,将生成可以下载的文件(And2.Sof)。)。(6)如何下载程序至芯片)如何下载程序至芯片a. 将下载电缆与计算机并口相连,然后给芯片通电将下载电缆与计算机并口相连,然后给芯片通电 ;b. 打开编程器打开编程器Programmer ; Options/Hardware Setup,在,在Hardware Type选择选择ByteBlaster(MV)方式,则在)方式,则在Parallel Port处显处显示示LPT1,单击,单击OK钮返回钮返回Programmer窗口。窗口。 c.下载方式选择下载方式选择 ; d. 选择下载的芯片类型和要下载的文件(选择选择下载的芯片类型和要
40、下载的文件(选择JTAG/Muti Devic JTAG Chain Setup)。)。e. 点击点击Configure进行下载,进行下载,将程序写入芯片中将程序写入芯片中 。第二章第二章 数据类型与数据对象的定义数据类型与数据对象的定义n2-1 数据类型数据类型n2-2 数据对象的定义数据对象的定义n2-3 信号运算符信号运算符n2-4 信号属性信号属性2-1 数据类型数据类型在在VHDL程序中,我们经常会遇到这样的语句:程序中,我们经常会遇到这样的语句:Signal A : std_logic;Variable B : std_logic_vector(7 downto 0); Const
41、ant C : integer;数据对象类型数据对象类型数据类型数据类型数据对象名数据对象名2-1-1 逻辑数据逻辑数据类型类型 (1)布尔代数()布尔代数(Boolean)型)型 ; (2)位()位(Bit);); (3)位数组类型()位数组类型(Bit_Vector)在在std库的库的standard程序包中进行定义。程序包中进行定义。 type BIT_VECTOR is array (NATURAL range ) of BIT; type BIT is (0, 1); type BOOLEAN is (FALSE, TRUE) ; (4)标准逻辑型()标准逻辑型(Std_Logic)
42、;); Type STD_LOGIC is (U, -Uninialized;未初始化;未初始化 X, -Forcing unknown;浮接不定;浮接不定 0, - Forcing 0;低电位;低电位 1, - Forcing 1;高电位;高电位 Z, - High Impedance;高阻抗;高阻抗 W, - Weak Unknown;弱浮接;弱浮接 L, - Weak 0;弱低电位;弱低电位 H, - Weak 1;弱高电位;弱高电位 -, - Dont care;不必理会;不必理会 );(5)标准逻辑数组类型()标准逻辑数组类型(Std_Logic_vector););在在ieee库的
43、库的std_logic_1164程序包中定义。程序包中定义。 TYPE std_logic_vector IS ARRAY ( NATURAL RANGE ) OF std_logic; 2-1-2 数值数据数值数据类型类型(1)整数()整数(Integer);); a. 正整数(正整数(POSITIVE) b. 自然数(自然数(NATURAL)在在std库的库的standard程序包中进行定义。程序包中进行定义。 subtype POSITIVE is range 1 to INTEGERHigh;Type INTEGER is range 2147483648 to 2147483647;
44、 subtype NATURAL is range 0 to INTEGERHigh;(2)实数()实数(Real)(3)有符号数()有符号数(Signed) 无符号数(无符号数(Unsigned)在在ieee库的库的std_logic_arith程序包中定义。程序包中定义。 type REAL is range 1.7E38 to 1.7E38; type UNSIGNED is array (NATURAL range ) of STD_LOGIC;type SIGNED is array (NATURAL range ) of STD_LOGIC;SIGNED 的最高位为符号位,其余位为
45、数值位,数值位为的最高位为符号位,其余位为数值位,数值位为补码形式。如:符号数补码形式。如:符号数”1001”表示表示-7。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity data isport(a,b: in unsigned(3 downto 0); -a,b: in signed(3 downto 0); c: out std_logic);end data;architecture m1 of data isbegin c=1 when ab else 0;end m1;当定义成无
46、符号类型时,若当定义成无符号类型时,若a=”1000”,b=0001, 即即a=8,b=1则结果则结果c=0;当定义成有符号类型时,若当定义成有符号类型时,若a=”1000”,b=0001, 则则a=-8,b=1,则结果,则结果c=1。2-1-3 列举和数组数据类型列举和数组数据类型 (1)列举数据类型()列举数据类型(Enumerated Types)定义格式:定义格式:Type 列举名称列举名称 is (元素(元素1,元素,元素2,););(2)数组数据类型()数组数据类型(Array Types)定义格式:定义格式:Type 数组名称数组名称 is Array(range ) of 数据
47、类型;数据类型;2-1-4 数据类型的转换数据类型的转换 在在VHDL语言里,不同类型的数据信号之间不能语言里,不同类型的数据信号之间不能互相赋值。当需要不同类型数据之间传递信息时,就互相赋值。当需要不同类型数据之间传递信息时,就需要需要类型转换函数类型转换函数将其中的一种类型数据转换为另一将其中的一种类型数据转换为另一中数据类型后,再进行信号的传递。中数据类型后,再进行信号的传递。例如:例如:Signal Y : Std_logic_vector(7 downto 0); Signal X : Integer range 0 to 255; Y= CONV_STD_LOGIC_VECTOR(
48、X,8);转换函数有两个参数,转换函数有两个参数,被转换的对象被转换的对象和和转换后转换后的位数的位数。 常用的数据类型转换函数常用的数据类型转换函数nCONV_INTEGER 将数据类型将数据类型 UNSIGNED, SIGNED转换为转换为INTEGER 类型类型. nCONV_UNSIGNED 将数据类型将数据类型INTEGER, SIGNED转换为转换为UNSIGNED 类型类型.nCONV_SIGNED 将数据类型将数据类型INTEGER, UNSIGNED转换为转换为SIGNED类型类型.nCONV_STD_LOGIC_VECTOR 将数据类型将数据类型INTEGER, UNSIG
49、NED, SIGNED, STD_LOGIC转换为转换为STD_LOGIC_VECTOR 类类型型. 在库在库ieee的程序包的程序包std_logic_arith中定义中定义2-2 数据对象的定义数据对象的定义常用的数据对象有三种:常用的数据对象有三种:常数(常数(Constant)信号(信号(Signal)变量(变量(Variable) 2-2-1 常数的定义常数的定义(1)将数据对象定义为常数,一方面希望该数据)将数据对象定义为常数,一方面希望该数据对象的值不会被改变;另一方面,为了提高程序对象的值不会被改变;另一方面,为了提高程序的可读性。的可读性。(2)常数为全局量。)常数为全局量。
50、(3)常数在程序包说明、实体说明、结构体描述、)常数在程序包说明、实体说明、结构体描述、过程说明、函数调用中使用。过程说明、函数调用中使用。(4)常数的定义格式:)常数的定义格式: Constant 常数名:数据类型常数名:数据类型 :=常数值常数值; 如:如:Constant D1: Integer := 3;注意!常数定义的同时进行赋初值。注意!常数定义的同时进行赋初值。常数的应用示例常数的应用示例library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; -必需定义必需定义+entity exam1
51、is port (ip : in std_logic_vector(3 downto 0); op : out std_logic_vector(3 downto 0);end exam1; architecture m1 of exam1 isconstant num : integer := 6;beginop = ip + num;end m1; 2-2-2 信号的定义信号的定义(1)“信号信号”数据对象,代表电路内部信号或连接线数据对象,代表电路内部信号或连接线路,其在元件之间起互连作用。路,其在元件之间起互连作用。注意!信号定义的时候尽管可以直接赋初值,但系统往往忽略。注意!信号定义
52、的时候尽管可以直接赋初值,但系统往往忽略。建议信号对象定义后再进行赋值。建议信号对象定义后再进行赋值。(2)信号为全局量。)信号为全局量。(3)在实体说明、结构体描述和程序包说明中使用。)在实体说明、结构体描述和程序包说明中使用。(4)信号的定义格式:)信号的定义格式: Signal 信号名:数据类型信号名:数据类型 ;(5)信号赋值的语法格式为:)信号赋值的语法格式为:信号名信号名 = 表达式;表达式;如:如:Signal S1 : Std_logic_vector(3 Downto 0); S1 = “0000”;2-2-3 变量的定义变量的定义(1)“变量变量”数据对象,它用于对中间数据
53、的临时存数据对象,它用于对中间数据的临时存储,并不一定代表电路的某一组件。储,并不一定代表电路的某一组件。 注意!变量定义的时候尽管可以直接赋初值,但系统往往忽略。注意!变量定义的时候尽管可以直接赋初值,但系统往往忽略。建议变量对象定义后再进行赋值。建议变量对象定义后再进行赋值。(2)变量为局部量。)变量为局部量。(3)仅限于进程()仅限于进程(Process)或子程序中使用。)或子程序中使用。 (4)变量的定义格式:)变量的定义格式: Variable 变量名:数据类型变量名:数据类型 ; (5)变量赋值的语法格式为:)变量赋值的语法格式为:目标信号值目标信号值:=表达式;表达式;如:如:V
54、ariable S1 : Std_logic_vector(3 Downto 0); S1 := “0000”;library ieee;use ieee.std_logic_1164.all;entity bcv isport (a,b,c : in std_logic;x,y : out std_logic);end bcv; architecture m2 of bcv isbeginprocess(a,b,c)variable d:std_logic; begin d:=a; x=c xor d; d:=b; y=c xor d; end process;end m2; ABCXY例一
55、例一结果:结果:x=c xor b, y=c xor b x=c xor a, y=c xor barchitecture m1 of bcv issignal d:std_logic;beginprocess(a,b,c) begin d=a; -ignored x=c xor d; d=b; y=c xor d; end process;end m1; library ieee;use ieee.std_logic_1164.all;Entity cmp isport( cp,ip : in std_logic; -cp为时钟脉冲为时钟脉冲 op,oq: out std_logic); -
56、ip为输入信号为输入信号end cmp;Architecture m1 of cmp issignal d:std_logic;beginprocess(cp)variable e:std_logic;begin if cpevent and cp=1 then d = ip; op = d; e := ip; oq = e ; end if;end process;end m1;例二例二 D触发器触发器在进程中,信号赋值只有在过程在进程中,信号赋值只有在过程结束时起作用,而变量赋值是立结束时起作用,而变量赋值是立即进行的。即进行的。2-2-4 信号和信号和变量的比较变量的比较 (1)信号和变
57、量的对应关系不同:信号和变量的对应关系不同:信号代表电路内部信号或连信号代表电路内部信号或连接线路;而变量则不是。接线路;而变量则不是。 (2)信号和变量声明的位置不同信号和变量声明的位置不同:信号声明在子程序、进程的外:信号声明在子程序、进程的外部;而变量声明在子程序、进程的内部。部;而变量声明在子程序、进程的内部。 (3)信号为全局量信号为全局量,而变量只在定义它的域中才可见而变量只在定义它的域中才可见。因此,。因此,变量不能在两个进程之间传递信息。变量不能在两个进程之间传递信息。 (4)在一个进程中多次为一个信号赋值时,只有最后一个值会起在一个进程中多次为一个信号赋值时,只有最后一个值会
58、起作用;而变量则不同,每次赋值都会改变它的值。作用;而变量则不同,每次赋值都会改变它的值。(5)赋值不同。赋值不同。在进程中,信号赋值只有在进程结束时起作用,在进程中,信号赋值只有在进程结束时起作用,而变量赋值是立即进行的。而且赋值符号不同:信号赋值为而变量赋值是立即进行的。而且赋值符号不同:信号赋值为“=”,变量赋值为,变量赋值为“:=”。Library ieee; Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;一位一位BCD码的加法器码的加法器Entity bcdadder is Port( a,b : in std
59、_logic_vector(3 downto 0); result : out std_logic_vector(4 downto 0);End bcdadder;Architecture Na of bcdadder is constant adjnum : integer:=6; -常数定义常数定义signal binadd : std_logic_vector(4 downto 0); -信号信号 Begin binadd9 then tmp:=adjnum; else tmp:=0; end if;result= binadd+tmp;end process;End Na;2-3 信号
60、信号运算符运算符 VHDL提供了四种类型运算符号:提供了四种类型运算符号:逻辑运算符逻辑运算符关系运算符关系运算符算术运算符算术运算符连接运算符连接运算符VHDL运算符运算符逻辑运算符逻辑运算符 and 逻辑与逻辑与or逻辑或逻辑或nand与非与非nor 或非或非xor 异或异或xnor同或同或not 逻辑非逻辑非上述逻辑运算在库上述逻辑运算在库ieee的程序包的程序包std_logic_1164中定义。中定义。 VHDL运算符运算符关系运算符关系运算符 =等于等于/= 不等于不等于小于小于大于大于= 大于或等于大于或等于 注:其中注:其中=操作符也用于表示信号的赋值操作。操作符也用于表示信号的赋值操作。上述运算在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 对供应商的质量处罚制度
- 2026上海市护士招聘考试题库及答案
- 2026泉州市辅警招聘笔试题及答案
- 2026庆阳市护士招聘面试题及答案
- 高考题伤脑筋的题目及答案
- 2026浙教版小学信息技术五年级下册第二单元质量检测试卷附答案
- 2026年幼儿园坏人来了
- 2026年植物案例幼儿园
- 2026年幼儿园浇水器课件
- 2026年幼儿园教师 经验分享
- 幼儿游学创业计划书
- 节能降耗培训课件
- 铁路大型养路机械构造与维修 课件 黑棣 6-4 配砟整形车
- 抖音员工号申请在职证明参考模板
- 郑渊洁童话之《五个苹果折腾地球》
- 基于1+X证书制度构建“岗课赛证”融通模式的典型案例
- 2023年年度全国注册土木工程师水利水电工程执业资格考试水工结构专业案例试卷上午
- 大一下学期高等数学期中考试试卷及答案
- GB/T 27725-2011热塑性塑料蝶阀
- GB/T 1957-2006光滑极限量规技术条件
- GA 884-2018公安单警装备催泪喷射器
评论
0/150
提交评论