1、第二部分第二部分EDAEDA技术与可技术与可编程逻辑器件编程逻辑器件 -(CPLD/FPGA,VHDL)需要掌握n开发环境Quartus|的使用。n在FPGA/CPLD上构建时序逻辑。n在FPGA/CPLD上建立Nios系统。n完成下列作业:1、通过实验“串口逻辑”,增加功能。2、通过实验“Nios|”,增加功能。EDA(Electronic Design Automation)即电子设计自动化,是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑、逻辑学、微电子工艺与结构学和计算数学等多种计算机技术应用学科最新成果,应用于电子设计过程而形成的一门新技术。EDA的概念IMUST B&E LA
2、B nEDA技术以计算机为工具,代替人完成对数字系统的逻辑综合、布局步线和设计仿真工作。设计人员只需要完成对系统功能的描述,在EDA软件平台上,用图形输入、硬件描述语言HDL为系统逻辑描述手段,所形成的设计文件自动完成逻辑编译、逻辑化简、逻辑综合及优化、逻辑仿真,支持对特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA的概念IMUST B&E LAB 微电子和计算机领域的原理创新、技术创新、应用创新层出不穷,极大地推动了科学技术的发展,深刻地改变着人们对自然界的认识和人们的生活。在该领域中,嵌入式系统,SOC、SOPC、IP核等新概念、新技术异军突起,其应用范围迅速深入到制造业,通信控制
3、、仪器仪表、生物、汽车、船舶、航空航天以及消费类等方面。EDA技术的发展趋势 20世纪70年代MOS工艺的可编程逻辑器件问世 20世纪80年代 20世纪90年代80年代末CMOS工艺的复杂可编程逻辑器件应用FPGA,CAE和CAD技术广泛应用超大规模可编程逻辑器件面世EDA技术逐步成熟EDA技术的发展历程IMUST B&E LAB 1.将数字系统的功能要求划分成许多模块。2.对每一个模块画出真值表。3.用卡诺图进行手工逻辑化简,写出布尔代数的表达式。4.画出相应的逻辑线路图。5.选择元器件,设计电路板自下向上设计方案。6.进行实测和调试。EDA技术与传统电子设计方法的比较手工设计的方法IMUS
4、T B&E LAB 1.复杂的电路的设计和调试困难。2.查找和修改错误十分不便。3.设计过程中产生大量的文档,不易管理。4.集成电路的设计和实现与具体的生产工艺相关,因此可移植性较差。EDA技术与传统电子设计方法的比较续手工设计的缺点EDA技术与传统电子设计方法的比较续 采用硬件描述语言作为设计输入 强大的系统建模、电路仿真功能 适应于高效率大规模系统设计的自顶向下设计方案 开发技术的标准化、规范化以及IP核的可利用性 对设计者硬件知识和硬件经验要求低 ASIC的设计制造在实验室内就可以完成EDA技术的特点利用电路的计算机辅助分析软件,采用硬件描述语言或原理图等输入方法对可编程逻辑器件进行软件
5、仿真和硬件编辑。缩短产品开发周期、降低成本,且能最大限度地将设计资源应用到产品设计的各个环节,保证产品在性能、可靠性上适合工业化生产的各个方面。使用EDA技术的优势利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。设计输入可以使用硬件描述语言(HDL),采用“自顶向下”的设计方法,为设计者提供了一个高效、便捷的设计环境,同时也为充分发挥设计人员的创造性提供了条件。使用EDA技术的优势EDA技术被广泛的应用于数字系统的设计可编程逻辑器件按结构的分类其基本逻辑结构为与或阵列包括有低密度PLD(PROM,PLA,PAL,GAL也叫简单的PLD)以及 EPLD和CPLD1、PLD(Program
6、mabe Logic Device)CPLD(Complex PLD):复杂可编程逻辑器件CPLD和简单的PLD相比,允许有更多的输入信号,更多的乘积项和宏单元,CPLD器件内部含有多个逻辑单元块,每个逻辑块就相当于一个 GAL器件,这些逻辑块之间可以用可编程内部连线实现相互连接。对用户而言,CPLD、FPGA的内部结构略有不同,但用法是相同的,所以,多数情况下不加以区分。它们具有掩膜编程逻辑门阵列的通用结构,由逻辑功能块排列为阵列,并由可编程的互连资源连接这些逻辑功能块,以实现不同的逻辑设计。FPGA不受“与或”阵列结构和含有触发器、I/O端数量的限制,依靠内部的逻辑单元以及它们的连接构成任
7、何复杂的逻辑电路,更适合实现多级的逻辑功能,并具有更高的密度和更大的灵活性。2、FPGA(现场可编程门阵列)可编程逻辑器件按结构的分类CPLD的基本结构在单片芯片上集成了成在单片芯片上集成了成千上万个等效门,因此千上万个等效门,因此在单片在单片CPLD芯片上能芯片上能集成数字电路系统集成数字电路系统CPLD和简单的PLD相比,允许有更多的输入信号,更多的乘积项和宏单元,CPLD器件内部含有多个逻辑单元块,每个逻辑块就相当于一个 GAL器件,这些逻辑块之间可以用可编程内部连线实现相互连接。I/O逻辑块逻辑块逻辑块逻辑块器件内部的可编程连线区I/O逻辑块逻辑块逻辑块逻辑块CPLD的结构框图CPLD
8、内部逻辑块的结构IOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLB布线区FPGA由可编程逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input/Output Block)、可编程连线资源构成。可编程逻辑模块是实现各种逻辑功能的基本单元,包括组合逻辑、时序逻辑、RAM以及各种运算功能。FPGA的基本结构不像不像PLD那样受结构的限制,那样受结构的限制,它
9、可以靠门与门的连接来实它可以靠门与门的连接来实现任何复杂的逻辑电路,更现任何复杂的逻辑电路,更适合实现多级逻辑功能。适合实现多级逻辑功能。FPGA的可编程逻辑功能块前面介绍的PLD都是基于乘积项的可编程结构,即可编程的与阵列和固定的或项组成,而FPGA的结构按可编程逻辑功能块的不同主要有三种类型:查找表结构、多路开关结构、多级与非门结构。大部分的 FPGA都采用SRAM的查找表逻辑形成结构。CPLD/FPGA的编程工艺基于熔丝和反熔丝编程单元基于电可擦除存储单元的EEPROM或FLASH技术基于SRAM查找表的编程单元现场可编程门阵列现场可编程门阵列FPGAFPGA的特点的特点SRAM结构:结
10、构:可以无限次编程,但它属于易失性元件,掉电后可以无限次编程,但它属于易失性元件,掉电后芯片内信息丢失。通电之后,要为芯片内信息丢失。通电之后,要为FPGA重新配置逻辑重新配置逻辑内部连线结构:内部连线结构:CPLD的信号通路固定,系统速度可以预测。的信号通路固定,系统速度可以预测。而而FPGA的内连线是分布在的内连线是分布在CLB周围,而且编程的种类和编程周围,而且编程的种类和编程点很多,点很多,布线相当灵活布线相当灵活。芯片逻辑利用率:芯片逻辑利用率:由于由于FPGA的的CLB规模小,可分为两个独立规模小,可分为两个独立的电路,又有丰富的连线,的电路,又有丰富的连线,其逻辑利用率很高其逻辑
11、利用率很高。芯片功耗:芯片功耗:FPGA芯片功耗芯片功耗0.25mW5mW之间,静态时几乎之间,静态时几乎没有功耗,所以称没有功耗,所以称FPGA为为零功耗器件零功耗器件。1.CPLD/FPGA相当于20到500以上个TTL电路集成到一个器件内,有较高的密度;2.设计者以自己的方法设计所需的逻辑系统,增加了灵活性;3.可以方便地通过计算机软件平台,对所设计的系统进行修改和仿真,不用对印刷板进行修改;4.系统集成到可编程逻辑器件以后,可减少印刷板的层次和缩小印刷板的面积。CPLD和FPGA与TTL电路的比较1.FPGA有更多的I/O管脚,多达几百条,不会出现PAL逻辑没有使用完之前,I/O已经用
12、完;2.有更多的触发器,可以构造许多的寄存器和计数器;3.可以集成多个PAL;4.减少印刷板面积,降低系统成本;降低功耗;5.系统有较少的元件在印刷板上,可靠性增加;6.可重复编程性,PAL只能一次编程,FPGA/CPLD多次编程;7.加密能力增加。FPGA与PAL的比较FPGA的结构与门阵列PLD不同,它内部由许多独立的可编程逻辑模块CLB组成,逻辑块之间可以灵活的相互连接。CLB的功能很强,不仅能实现逻辑函数,还可以配置成RAM等复杂的形式。基于SRAM的FPGA工作前需要从芯片外部加载配置数据,配置数据可以存放在片外的EPROM上或计算机上,我们可以在现场控制加载过程,修改器件的逻辑功能
13、,即所谓现场可编程。FPGA与CPLD的比较CPLD在单片芯片上集成了成千上万个等效门,主要由可编程逻辑宏单元、可编程I/O单元和器件内部的可编程连线构成1.Lattice 公司CPLD器件系列ispLSI、ispMACH系列集成度特点以及应用场合ispLSI1000系列2000-8000门价格便宜,适用于一般数字系统设计,例如网卡、控制器、高速编程器、游戏机和测试仪器仪表ispLSI2000E/2000VL/2000VE系列10006000门 速度最高可达300MHz,适合于速度要求高或需要I/O引脚较多的系统,例如移动电话、高速路由器、和高速PCM遥测系统。ispLSI5000V系列1万5
14、万门适用于具有32位或64位总线的系统,例如快速计数器、状态机和地址译码器ispLSI8000/8000V系列可达58000门该系列器件能满足复杂数字系统的设计,可用于外围控制器、运算协处理器等CPLD/FPGA器件产品简介2.Xilinx公司的FPGA和CPLD器件系列 Xilinx公司的CPLD以CoolRunner、XC9500系列为代表 Xilinx公司的FPGA以XC4000、Spartan、Virtex系列为代表,从XC2000、XC4000到Spartan和Virtex、VirtexII pro等系列其性能不断的提高。3.Altera公司FPGA和CPLD器件系列Altera公司
15、的PLD具有高性能、高集成度和高性价比的特点,此外它还提供了全面的开发工具和丰富的IP核及宏功能库,所以多年来一直占据行业领先地位。Altera公司的产品按先后顺序依次为Classic系列、MAX系列、FLEX系列、APEX系列ACEX系列、Cyclone系列以及Stratix器件总体说明独特性能MAXII最低的成本、单芯片、易用的CPLD系列最低的CPLD成本和功耗。最高的CPLD密度和性能Highest CPLD 上电即用性,非易失性用户Flash存储器1.8-V,2.5-V&3.3-V电源电压MAX低成本CPLD,用于较低复杂度的低密度设计从低密度到中等密度 上电即用性,非易失性 5-V
16、 I/O支持 确定的时序 2.5-V、3.3-V 或5.0-V 电源电压CycloneII第二代低成本Cyclone FPGA系列用于那些考虑成本多于性能或其他功能的设计。Nios嵌入式处理器支持嵌入式18x18数字信号处理(DSP)乘法器中等容量的片内存储器中等速度的I/O和存储器接口广泛的IP核支持4.Altera公司的新型FPGA和CPLD器件系列Altera公司在MAX、Stratix、Cyclone系列的基础上又开发了MAXII、StratixII及CycloneIICyclone第一代低密度、低成本Cyclone FPGA系列Nios嵌入式处理器支持中等容量的片内存储器从低到中等速
17、度的I/O和存储器接口广泛的IP核支持StratixII低成本FPGA系列,用于较低密度Nios嵌入式处理器支持最多的DSP块大容量片内存储器高速I/O和存储器接源同步信号1-Gbps 动态相位队列(DPA)广泛的IP核支持Stratix通用高性能FPGA系列Nios嵌入式处理器支持DSP块大容量片内存储器高速I/O及存储器接口广泛的IP核支持4.Altera公司的FPGA和CPLD器件系列(续)FPGA/CPLD器件和电路系统原理图/HDL文本编辑综合FPGA/CPLD编程下载时序与功能门级仿真FPGA/CPLD适配1.Isp方式下载2.JTAG方式下载3.针对SRAM结构的配置4.Otp器
18、件编程功能仿真FPGA/CPLD的设计流程的设计流程 设计文件的输入方法有原理图输入、文本输入、波形输入等,生成方法不同,生成的文件格式也有所不同。在图形设计文件中,EDA软件为了实现不同的逻辑功能提供了大量的基本单元符号和宏功能模块,在图形编辑器中可以直接调用;为了适应自顶向下的设计,设计者可以使用图形块输入建立顶层设计,可以使用AHDL、VHDL和Verilog HDL文本型输入建立底层设计。设计输入设计流程设计流程 综合、适配设计流程设计流程综合:把软件设计的HDL语言描述与硬件结构挂钩,是将电路的高级语言(行为描述)转换为低级的,可产生与FPGA/CPLD的基本结构相映射的网表文件或程
19、序。适配:适配器也称为结构综合器,它将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。综合适配在把经过编译的输入设计编程或下载到器件之前,可以通过EDA软件的仿真器对文件进行全面测试,保证设计在各种可能的条件下都有正确的响应。根据所需的信息类型,可以进行功能仿真和时序仿真。设计流程设计流程 仿真验证和时序分析是接近真实器件运行特性的仿真,允许分析设计中所有逻辑的性能,得出时序分析结果,如建立时间、保持时间、引脚到引脚延迟、最大时钟频率、延迟时间及其它时序特征,并协助引导适配器满足设计中的时序要求。时序分析功能仿真是直接对VHDL/原理图等输入的逻辑功能的模拟测试,检测其功能
20、是否能满足原设计的要求。成功编译了设计工程之后,编译器的Assembler模块自动将适配过程的器件、逻辑单元和引脚分配信息转换为器件的编程图像,并以.sof形式保存,EDA软件的编程器(programmer)把该下载或配置文件通过编程电缆向FPGA/CPLD进行下载,以便进行硬件调试和验证。设计流程设计流程 器件编程 硬件描述硬件描述语言语言 ABEL AHDL Verilog HDL VHDL 美国国防部在美国国防部在80年代初提出了年代初提出了VHSIC(Very High Speed Integrated Circuit)计划,其目标之一是为下一代集成电路的)计划,其目标之一是为下一代集
21、成电路的生产,实现阶段性的工艺极限以及完成生产,实现阶段性的工艺极限以及完成10万门级以上的设计,万门级以上的设计,建立一项新的描述方法。建立一项新的描述方法。1981年提出了一种新的年提出了一种新的HDL,称之为,称之为VHSIC Hardware Description Language,简称为,简称为VHDL。IEEE标准标准 VHDL语言的主要优点语言的主要优点 是一种多层次的硬件描述语言,覆盖面广,描述能是一种多层次的硬件描述语言,覆盖面广,描述能力强。力强。即设计的原始描述可以是非常简练的描述,即设计的原始描述可以是非常简练的描述,经过层层细化求精,最终成为可直接付诸生产的电经过层
22、层细化求精,最终成为可直接付诸生产的电路级或版图参数描述,整个过程都可以在路级或版图参数描述,整个过程都可以在VHDL的的环境下进行。环境下进行。VHDL 有良好的可读性有良好的可读性,即可以被计算机接受,也即可以被计算机接受,也容易被理解用容易被理解用VHDL 书写的原文件,即是程序,又书写的原文件,即是程序,又是文挡,即是技术人员之间交换信息的文件,又可是文挡,即是技术人员之间交换信息的文件,又可作为合同签约者之间的文件。作为合同签约者之间的文件。VHDL本身的生命期长本身的生命期长。因为。因为VHDL的硬件描述与工艺的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术技术无关
23、,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过有关的参数可通过VHDL提供的属性加以描述,工艺改提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。变时,只需修改相应程序中的属性参数即可。支持大规模设计的分解和已有设计的再利用。支持大规模设计的分解和已有设计的再利用。一个大规一个大规模设计不可能一个人独立完成,它将由多人,多项目组模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。来共同完成。VHDL为设计的分解和设计的再利用提供为设计的分解和设计的再利用提供了有力的支持。了有力的支持。VHDL已成为已成为IEEE承认的一个工业标准承认的一个工业标准,事实上已成
24、,事实上已成为通用硬件描述语言。为通用硬件描述语言。VHDL语言的主要优点语言的主要优点 VHDL综合 综合器能够自动将一种设计表示形式向另一种设计表示形式转换的计算机程序,或协助进行手工转换的程序。高层次的表示 低层次的表示 行为域 结构域 算法级 门级编译器和综合功能比较VHDL综合器运行流程VHDLVHDL的基本组成的基本组成VHDL 语言语言参数部分参数部分程序包程序包接口部分接口部分设计实体设计实体描述部分描述部分结构体结构体一、参数部分一、参数部分程序包程序包程序包程序包IEEE标准的标准程序包标准的标准程序包设计者自身设计的程序包设计者自身设计的程序包 设计中的子程序和设计中的子
25、程序和公用数据类型的集公用数据类型的集合。合。调用数据类型标准程序包的调用数据类型标准程序包的VHDL语言描述语言描述VHDL设计中常用的库有IEEE库、STD库、WORK库、VITAL库。IEEE库包含IEEE标准的程序包和其他支持工业标准的程序包,在基于FPGA/CPLD的开发中,IEEE库中四个程序包STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_SIGNED、STD_LOGIC_UNSIGNED已经足够。STD库包括输入/输出两个标准程序包,WORK库用于存放用户设计和定义的设计单元和程序包,只要在VHDL的应用环境中,都可以随时调用STD库和WORK
26、库,所以不需专门的调用语句。在FPGA/CPLD的设计中一般都不需要VITAL库的程序包。LIBRARY ieee;USE ieee.std_logic_1164.all;放在放在VHDL程序的最前面,表示以后在实体或结构程序的最前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。体中要用到数据类型包中的数据类型。调用库的两种格式USE 库名.程序包名.项目名USE 库名.程序包名.ALL程序包举例程序包举例调用程序包语句标准程序包定义程序包二、接口部分二、接口部分设计实体设计实体kxora1b1c1设计实体设计实体提供设计模块的公共信息,是提供设计模块的公共信息,是VHDL设计电路的
27、最基本部分。设计电路的最基本部分。VHDL实体的描述方法:实体的描述方法:ENTITY kxor IS P O R T(a 1,b 1:I N std_logic;c1:OUT std_logic);END kxor;一个模块中仅有一一个模块中仅有一个设计实体。个设计实体。调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句实体语句的格式ENTITY 实体名 IS PORT(端口名)END ENTITY 实体名设计实体说明设计实体说明 ENTITY kxor IS P O R T(a 1,b 1:I N std_logic;END kxor
28、;c1:OUT std_logic);ENTITY、IS、PORT、IN、OUT和和END为关键字;为关键字;ENTITY.END之间表示实体内容;之间表示实体内容;kxor表示实体的名称,即电路的符号名;表示实体的名称,即电路的符号名;PORT端口(引脚)信息关键字,描述了信号的流向;端口(引脚)信息关键字,描述了信号的流向;IN输入模式;输入模式;OUT输出模式;输出模式;INOUT 输入输出双相模式输入输出双相模式BUFFER 与与INOUT类似,区别在于当需要输入数据时,类似,区别在于当需要输入数据时,只允许内部回读输出信号,即允许反馈只允许内部回读输出信号,即允许反馈std_logi
29、c表示信号取值的类型为标准逻辑。表示信号取值的类型为标准逻辑。ENTITY sel IS PORT(d0,d1,d2,d3:IN BIT;s :IN INTEGER RANGE 0 TO 3;out1 :OUT BIT);END sel;d0d1d2d3sout1sel设计实体举例设计实体举例再例:再例:三、描述部分三、描述部分结构体结构体结构体结构体描述实体硬件的互描述实体硬件的互连关系、数据的传连关系、数据的传输和变换以及动态输和变换以及动态行为。即描述设计行为。即描述设计实体的内部结构和实体的内部结构和对外部设计实体端对外部设计实体端口间的逻辑关系。口间的逻辑关系。一个实体可以对应多个结
30、构体,一个实体可以对应多个结构体,每个结构体可以代表该硬件的每个结构体可以代表该硬件的某一方面特性,例如行为特性,某一方面特性,例如行为特性,结构特性。结构特性。调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体nARCHITECTURE kxor_arc OF kxor ISBEGIN c1=(NOT a1 AND b1)OR(a1 AND NOT b1);END kxor_arc;当异或门的符号和外部端口当异或门的符号和外部端口a1、b1和和c1确定之后,就要确定确定之后,就要确定实体的内部电路
31、,使之与实体相对应。实体的内部电路,使之与实体相对应。结构体的一般格式ARCHITECTURE 结构体名 OF 实体名 IS 说明语句BEGIN 功能描述语句END 结构体名 kxora1b1c1a1b1c1结构体举例结构体举例LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY kxor IS PORT(a1,b1:IN std_logic;c1:OUT std_logic);END kxor;ARCHITECTURE kxor_arc OF kxor ISBEGIN c1=(NOT a1 AND b1)OR(a1 AND NOT b1);END k
32、xor_arc;该例的完整程序该例的完整程序n块(BLOCK)n进程(PROCESS)格式:进程名:PROCESS(信号1,信号2。)进程说明 BEGIN顺序语句 END PROCESS;子程序格式:FUNCTION 函数名(参数1,参数2。)RETURN 数据类型 IS 定义语句 BEGIN顺序语句RETURN 返回变量值 END 函数名;调用 如:peak=max(data,peak)变量=函数名(参数1,参数2。)结构体的子结构描述结构体的子结构描述进程注意事项1.同一构造体中的进程是并行的,但同一进程中的逻辑描述是顺序运行。2.进程是由敏感信号的变化启动的,若无敏感信号则在进程中应有W
33、AIT语句激励。3.构造体中多个进程之间通讯是通过“信号”和共享变量值来实现的。即信号具有全局性,在进程说明中不允许定义变量子程序说明1.由顺序语句组成,调用前进行初始化(若在包集合中,可直接调用)。2.有函数和过程两部分。过程:格式:PROCEDURE 过程名(参数1,参数2。)定义语句 BEGIN顺序语句 END 过程名;结构体的子结构描述结构体的子结构描述常量常量仅可被分配一个值,而仅可被分配一个值,而信号信号和和变量变量可以赋予一系列的值。可以赋予一系列的值。信号信号和和变量变量又有不同,赋予又有不同,赋予信号信号的数值要到未来的数值要到未来的某个时刻,的某个时刻,信号信号才接受当前的
34、数值,是全局量;而才接受当前的数值,是全局量;而赋予赋予变量变量的数值,的数值,变量变量立即接受当前的数值,是局部立即接受当前的数值,是局部量。量。VHDLVHDL数据类型和属性数据类型和属性在在VHDL中,中,保持数据保持数据的的信号信号,变量变量和和常量常量称为称为目标目标。每一个每一个目标目标都有一种数据类型都有一种数据类型 目标目标:=;目标种类:目标种类:信号(信号(SIGNAL)、变量变量(VARIABLE)和和常量常量 (CONSTANT)。常量定义:常量定义:CONSTANT 常量名:数据类型:常量名:数据类型:=表达式表达式 CONSTANT DATD1:INTEGER:=1
35、5;变量定义:变量定义:VARIABLE 变量名:数据类型:变量名:数据类型:=初始值初始值 VARIABLE a:INTEGER RANGE 0 TO 5;VARIABLE b:STD_LOGIC;信号定义:信号定义:SIGNAL 变量名:数据类型:变量名:数据类型:=初始值初始值 SIGNAL a,b:INTEGER 格式:格式:TYPE IS ;标量类型、复合类型、存储类型和文件类型。标量类型、复合类型、存储类型和文件类型。标量类型标量类型:包括所有的简单类型:如整数、实数、枚举、时间等;包括所有的简单类型:如整数、实数、枚举、时间等;复合类型复合类型:包括数组包括数组(Array)和记
36、录和记录(Record);存储类型存储类型:为给定的数据类型的数据对象提供存储方式;为给定的数据类型的数据对象提供存储方式;文件类型:用于提供多值存储类型;文件类型:用于提供多值存储类型;VHDL可用数据类型有四类:可用数据类型有四类:VHDLVHDL的预定义标准数据类型的预定义标准数据类型 布尔(布尔(BOOLEANBOOLEAN)数据类型)数据类型TYPE BOOLEANBOOLEAN IS (false,true);位(位(BITBIT)数据类型:)数据类型:TYPE BIT IS (0,1);位矢量(位矢量(BIT_VECTORBIT_VECTOR)数据类型)数据类型:基于基于BITB
37、IT类型的数组类型的数组 字符(字符(CHARACTERCHARACTER)数据类型:如)数据类型:如A A 整数(整数(INTEGERINTEGER)数据类型)数据类型 实数(实数(REALREAL)数据类型)数据类型 字符串(字符串(STRINGSTRING)数据类型)数据类型:如如“abcabc”时间(时间(TIMETIME)数据类型)数据类型:包括整数和物理量单位包括整数和物理量单位 IEEE的预定义标准逻辑位与矢量的预定义标准逻辑位与矢量1.标准逻辑位(标准逻辑位(STD_LOGIC)数据类型数据类型2.标准逻辑矢量(标准逻辑矢量(STD_LOGIC_VECTOR)数据类型数据类型
38、其它预定义标准数据类型其它预定义标准数据类型无符号无符号数据类型(数据类型(UNSIGNED TYPEUNSIGNED TYPE)有符号有符号数据类型(数据类型(SIGNED TYPE SIGNED TYPE)TYPE BIT IS (0,1);TYPE STD_LOGIC IS (U,X 0,1 Z,W L,H,-);U:初始值;:初始值;X:不定;:不定;0,1 Z:高阻;:高阻;W:弱信号不定;弱信号不定;L:弱信号:弱信号0;H:弱信号:弱信号1;-:不可:不可能能 VHDLVHDL的自定义数据类型的自定义数据类型枚举:枚举:TYPE states IS (元素元素1,元素,元素2,。
39、,。);整数、实数数据类型(电路特殊设计要求)整数、实数数据类型(电路特殊设计要求)TYPE data IS INTEGER range 0 to 7;数组数据类型数组数据类型 TYPE data4*8 IS array(integer range 0 to 3)of std_logic_vector(7 downto 0);赋值时:赋值时:SIGNAL d:data4*8BEGINd(0)=“01010010”;d(1)=“01110010”;d(2)=“01010110”;d(3)=“01011010”;格式:格式:TYPE ,IS ;在结构体说明区在结构体说明区(ARCHITECTURE
40、和和BEGIN之间)被说之间)被说明的目标,仅可以在此结构体中引用或在结构体中的任何进明的目标,仅可以在此结构体中引用或在结构体中的任何进程语句中被引用,称此目标为程语句中被引用,称此目标为局部信号局部信号。前面已经讨论前面已经讨论VHDL描述语言的组成是由程序包、实体、结描述语言的组成是由程序包、实体、结构体(结构体中有进程)、以及子程序而组成,不同的目标可以构体(结构体中有进程)、以及子程序而组成,不同的目标可以在指定的组成部分内加以说明。在指定的组成部分内加以说明。如果一个目标在实体说明部分被说明,那么在本实体和本实如果一个目标在实体说明部分被说明,那么在本实体和本实体内部的任何结构体和
41、任何进程中都可以引用这个目标,称为体内部的任何结构体和任何进程中都可以引用这个目标,称为全全局信号。局信号。数据类型的全局化和局部化数据类型的全局化和局部化VHDLVHDL的行为描述的行为描述 在在VHDL硬件描述语言中,描述电路逻辑的程硬件描述语言中,描述电路逻辑的程序称为序称为行为描述行为描述,行为描述有,行为描述有并行描述、进程描述并行描述、进程描述和和顺序描述顺序描述。三个行为即可以是相互独立,成为单一的行为三个行为即可以是相互独立,成为单一的行为描述体,又可以相互联系,成为混合描述体,如进描述体,又可以相互联系,成为混合描述体,如进程行为描述行为程行为描述行为之间之间是是并行行为并行
42、行为,进程,进程行为体行为体的的内内部部是是顺序行为顺序行为。由由 process引导的语句称为进程语句引导的语句称为进程语句各进程语句之间为并行行为各进程语句之间为并行行为在在VHDL中所有合法的顺序描述语句都必须放在进程语句中中所有合法的顺序描述语句都必须放在进程语句中 在在VHDL中,结构体的内部没有规定语句的次序,执行中,结构体的内部没有规定语句的次序,执行的次序仅由对语句中的敏感信号发生的事件决定,且语句是的次序仅由对语句中的敏感信号发生的事件决定,且语句是同时执行。同时执行。结构体中并行赋值语句的一般格式如下:结构体中并行赋值语句的一般格式如下:=;每个表达式都至少有一个敏感信号,
43、每当敏感信号改变其每个表达式都至少有一个敏感信号,每当敏感信号改变其值时,就执行这个信号赋值语句。值时,就执行这个信号赋值语句。在所有的并行语句中,两个以上的并行赋值语句在在所有的并行语句中,两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序。字面上的顺序并不表明它们的执行顺序。例如下面的两个结构体在功能上是等价的。例如下面的两个结构体在功能上是等价的。ENTITY exe IS PORT(a1,a2:IN BIT;b1,b2:OUT BIT);END exe;ARCHITECTURE exe_arc1 OF exe ISBEGIN b1=a1 AND b2;b2=NOT a1 OR
44、a2;END exe_arc1;a1a2b1b2ARCHITECTURE exe_arc2 OF exe ISBEGIN b2=NOT a1 OR a2;b1=a1 AND b2;END exe_arc2;特殊货物运输车设计特殊货物运输车设计(PLCPLC逻辑接口)逻辑接口)实验一实验一控制器面板示意图 n正常操作元件动作顺序n开关打到“正常”位置n卸货(展开)卸货(展开):n按“卸货卸货”按钮,自动执行下列操作n1)、下平台移出,DT1DT2通电,(相应指示灯亮并报警)行程终点感应开关(J2)闭合,DT10通电减速延时碰挡铁移出停止(DT1DT2DT10断电,相应指示灯灭,报警结束)n2)、
45、下平台支腿放下,DT1DT3通电,下平台支腿放下到位终点感应开关J5指示灯亮,支腿放下停止,DT1DT3断电;n3)、上平台移出,DT1DT4通电,(相应指示灯亮并报警)行程终点感应开关(J4)闭合,DT11通电减速延时碰挡铁移出停止(DT1DT4DT11断电,相应指示灯灭,报警结束)n4)、上平台支腿放下,DT1DT5通电,上平台支腿放下到位终点感应开关(J7)指示灯亮,支腿放下停止,DT1DT5断电;n装货(收拢):装货(收拢):n按“装货装货”按钮,自动执行下列操作:n1)、上平台支腿收回,DT1DT9通电,上平台支腿放下到位终点感应开关(J8)指示灯亮,支腿放下停止,DT1DT9断电;
46、n2)、上平台移入,DT1DT8通电,(相应指示灯亮并报警)行程终点感应开关(J3)闭合,DT11通电减速延时碰挡铁移出停止(DT1DT8DT11断电,相应指示灯灭,报警结束)n3)、下平台支腿收回,DT1DT7通电,下平台支腿放下到位终点感应开关J6指示灯亮,支腿放下停止,DT1DT7断电;n4)、下平台移入,DT1DT6通电,(相应指示灯亮并报警)行程终点感应开关(J1)闭合,DT10通电减速延时碰挡铁移出停止(DT1DT6DT10断电,相应指示灯灭,报警结束)液压原理 电路原理图(切换到Protel99SE)EDA原理图(切换到Quartus II d:cpld nTzcpld1)车辆数
47、字化仪表设计车辆数字化仪表设计(PCPC总线接口)总线接口)图1-2 硬件电路原理框图CPLD EP1K30PC104总线8路报警灯输出12路模拟量输入温度、压力、电源电压、电流(放大)通讯接口RS232C(COM1)CAN总线(COM2)供电电源DC24V输入+5V/5A+12V/3A键盘输入8路(5K上拉电阻对地)3189354闪烁电路4路频率量输入转速、车速、油量4PC10424路开关量输入温度、压力、气滤报警、火警、转向灯、炮位824硬件电路结构电路原理图(切换到Protel99SE)EDA原理图(切换到Quartus II d:cpld Shziyb2)界面功能图FPGA/CPLD的
48、开发软件Altera CPLD/FPGA的以前开发软件是MAX PlusII,该软件是一个完全集成化的可编程逻辑设计环境,其设计输入、处理与校验功能全部集中在统一的开发环境下,它设计输入方式有图形输入、文本输入、波形输入、状态机设计输入,并支持各种HDL设计输入方式,包括VHDL、VerilogHDL、ABEL、AHDL等硬件描述语言。其编译及设计处理写仿真、定时分析、逻辑综合与适配均为Windows图形界面。使设计灵活、方便、高效,它有开放的界面,可与其它工业标准设计输入、综合与校验工具相连接。设计人员可以使用Altera或标准EDA设计输入工具来建立逻辑设计,对器件设计进行编译,并能使用A
49、ltera校验工具进行器件仿真。MAX PlusII MAX PlusII 软件开发平台软件开发平台 QuartusII QuartusII是是AlteraAltera新开发的新开发的EDAEDA软件软件设计平台,它在一个单一、标准的设计环设计平台,它在一个单一、标准的设计环境里提供一整套综合、优化及验证工具,境里提供一整套综合、优化及验证工具,其功能十分强大,包括设计输入、仿真、其功能十分强大,包括设计输入、仿真、布局布线、布局布线、NiosIINiosII嵌入式软核、嵌入式软核、SOPC SOPC BuliderBulider、DSPBuliderDSPBulider等。等。能够对能够对C
50、PLDCPLD和和FPGAFPGA器件的最新系列进行设计。器件的最新系列进行设计。Quartus IIQuartus II软件开发平台软件开发平台FPGA/CPLD的开发软件Quartus开发软件结构开发软件结构Quartus开发软件结构开发软件结构Quartus开发软件结构开发软件结构Quartus开发软件开发软件特性特性(1)基于模块的设计方法提高工作效率基于模块的设计方法提高工作效率 Altera Quartus II软件特有的LogicLock模块设计流程允许设计者单独设计、优化和锁定每个模块的性能,即使在大型Sopc设计过程中也能保持各个模块的性能,在FPGA设计过程中引入了团队的设