毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc

上传人:文库蛋蛋多 文档编号:3979147 上传时间:2023-03-30 格式:DOC 页数:30 大小:430.50KB
返回 下载 相关 举报
毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc_第1页
第1页 / 共30页
毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc_第2页
第2页 / 共30页
毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc_第3页
第3页 / 共30页
毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc_第4页
第4页 / 共30页
毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于FPGA与色敏传感器的颜色识别系统(数字部分).doc(30页珍藏版)》请在三一办公上搜索。

1、本科毕业论文(设计)题 目 基于FPGA与色敏传感器的颜色识别系统(数字部分)指导教师 职称 学生姓名 学号 专 业 自动化 班级 (1) 院 (系)电子信息工程学院电子工程系完成时间 基于FPGA与色敏传感器的颜色识别系统(数字部分)摘要本论文主要介绍了颜色识别系统, 本颜色识别系统主要实现对几种典型颜色的自动识别.本设计基于FPGA与色敏传感器来实现,包括模拟和数字两个主要部分.模拟部分主要负责颜色信号的采集、放大,采集信号使用CLS9032单晶硅双结型色敏传感器;数字部分主要负责颜色信号的处理和识别,也是本设计的核心部分,硬件使用Altera公司的NiosII处理器FPGA系统组建,软件

2、使用VHDL语言编程。数字部分用到的核心部件是FPGA,不同于单片机。单片机(如8051系统)每条指令都需要12个振荡周期,FPGA只需要2个振荡周期,所以同样条件下,FPGA有更快的运行速度,这也是本设计的创新之处。关键词:颜色传感器;FPGA;VHDL语言;SENSITIVE SENSORS BASED ON FPGA WITH COLOR COLOR IDENTIFICATION SYSTEM (DIGITAL PART)Abstract This paper introduces color identification system, the primary color identi

3、fication system to realize the automatic recognition of typical color. The design is based on SOPC technology, the use NiosII soft-core processor, including analog and digital two main parts. Simulate some of the major responsible for the color signal acquisition, amplification, signal acquisition u

4、sing CLS9032 silicon color sensor with double-junction sensor; digital part is mainly responsible for the color signal processing and identification, the hardware using Alteras NiosII processor system formed, the software programming using VHDL language. Digital part of the core component is used in

5、 FPGA, different from the MCU. Microcontroller (such as the 8051 system) each instruction requires 12 oscillation period, FPGA only two oscillation period, so the same conditions, FPGA with a faster speed, which is also the design innovations. Keywords:color sensor ; FPGA; VHDL language;目 录摘要IAbstra

6、ctII第1章 绪 论1第2章 EDA技术与VHDL12.1 EDA技术1 2.1.1 EDA技术的含义1 2.1.2 EDA 技术的发展历史2 2.1.3 EDA 技术的基本特征2 2.1.4 EDA技术的主要内容3 2.1.5 EDA 技术的设计流程5 2.2 VHDL硬件描述语言72.2.1 VHDL的特点72.2.2 VHDL语言基础知识8第3章 色敏传感器与FPGA的简单介绍143.1 色敏传感器143.2 FPGA15 3.3 A/D16第四章 基于FPGA与色敏传感器的颜色识别系统(数字部分)164.1 设计原理及工作要求164.2模拟部分174.3数字部分(重要)174.4 A

7、ltera Quartus II坏境下的仿真19结束语20致谢21参考文献22(附 录)23第1章 绪 论(稍增加一些内容,绪论中主要写论文的设计背景,意义,设计内容及预期目标)在当今的社会生活中,颜色识别得到越来越广泛的应用。各个领域的广泛应用需求使颜色识别技术有了长足的发展,结合其他技术,可为工业控制、产品制造等多个行业更好地服务。目前,颜色识别技术主要是通过结构简单、使用方便的单片机来实现,而本设计选用FPGA来实现,该系统可应用于印染、油漆、汽车等行业,也可以装在自动生产线上对产品的颜色进行监测。这样选择的好处有以下几点:FPGA芯片是并行运算的,每个振荡周期都可以执行任务,而单片机(

8、如8051系列)的每条指令都需要12个振荡周期。例如,单片机IO端口的变化最快也需要24个振荡周期,而FPGA只需要2个振荡周期,所以同样的振荡周期下,FPGA速度更快。FPGA有丰富的IO资源(一般有数百个IO口),容易实现大规模系统,可以方便地连接外设(比如多路AD、DA等)。而单片机的IO口有限,要进行仔细的资源分配、总线隔离。FPGA可以进行硬件重构,在功能扩展或性能改善方面也非常容易。本设计选用了Altera公司的:NioslI软核,使用SOPC的软硬件综合解决方案。与传统的设计方法完全不同,从硬件和软件整体设计上进行了极大的改进,使硬件电路更加简单、有效、易于理解,软件设计更轻松、

9、可移植性更强。第2章 EDA技术与VHDL(删减第二章的内容,篇幅不能超过4页,且第二章不能只介绍EDA相关的内容,你论文中用到的传感器类的相关知识也可以稍微描述一下,总体篇幅要不超过4页)2.1 EDA技术2.1.1 EDA技术的含义EDA即电子设计自动化,是Electronic Design Automation的英文缩写。其发展历程可分为:(1)手工设计阶段(2)早期电子CAD技术(3)电子设计自动化(EDA)技术(4)SOC、ESDA设计技术。(其中SOC:System On a Chip,ESDA:Electronic System Design Automation) 它有广义和狭

10、义两种定义方式,其广义定义范围包括:半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印刷电路板设计自动化、仿真与测试、故障诊断自动化、形式验证自动化,这些都通称为EDA工程。 EDA技术的狭义定义为以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程器件的开发软件及实验开发系统为设计工具,自动完成用软件方式描述的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门多学科融合的新技术。 2.1.2

11、EDA 技术的发展历史 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪9

12、0年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可*性,减轻了设计者的劳动强度。2.1.3 EDA 技术的基本特征EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的

13、关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。下面介绍与EDA基本特征有关的几个概念。 1“自顶向下”的设计方法。10年前,电子设计的基本思路还是选用标准集成电路“自底向上”地构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。 高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计人手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统

14、一级进行验证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避燃计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 2ASIC设计。现代电子产品的复杂度日益提高,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题。解决这一问题的有效方法就是采用ASIC芯片进行设计。ASIC按照设计方法的不同可分为全定制ASIC、半定制ASC和可纪程ASIC(也称为可编程逻辑器件)。 设计全定制ASIC芯片时,设计师要定义芯片上

15、所有晶体管的几何图形和工艺规则,最后将设计结果交由m厂家去进行格模制造,做出产品。这种设计方法的优点是芯片可以获得最优的性能,即面积利用率高、速度快、功耗低,而缺点是开发周期长,费用高,只适合大批量产品开发。 半定制ASIC芯片的版图设计方法分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。2.1.4 EDA技术的主要内容EDA技术涉及面广,内容丰富,从教学和实用的角度看,主要应掌握如下四个方面的内容:(1)大规模可编程逻辑器件;(2)硬件描述语言;(3)软件开发工具;(4)实验开发系统。其中,大规模可编程逻辑器件是利

16、用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段,软件开发工具是利用EDA技术进行电子系统设计的智能化的自动设计工具,实验开发系统则是利用EDA技术进行电子系统设计的下载工具及硬件验证工具。(1) 大规模可编程逻辑器件可编程逻辑器件(简称PLD)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称,现在,FPGA和CPLD器件的应用已十分广泛,它们将随着EDA技术的发展而成为电子设计领域的重要角色。国际上生产FPGA/CPLD的主流公司,并且在国内占有市场份额较大的主要是Xilinx,

17、 Altera, lattice三家公司。Xilinx公司的FPGA器件有XC2000,XC3000,XC4000,XC4000E,XC4000XLA, XC5200系列等,可用门数为120018000;Altera公司的CPLD器件有FLEX600,FLEX8000,FLEX10K,FLEX10KE系列等,提供门数为500025000;lattice公司的ISP-PLD器件有ispLSI1000, ispLSI2000, ispLSI3000, ispLSI6000系列等,集成度多达25000个PLD等效门。FPGA在结构上主要分为三个部分,即可编程逻辑单元,可编程输入/输出单元和可编程连线

18、三个部分。CPLD在结构上主要包括三个部分,即可编程宏单元,可编程输入/输出单元和可编程内部连线。高集成度、高速度和高可靠性是FPGA/CPLD最明显的特点,其时钟延时可小至ns级,结合其并行工作方式,在超高速应用领域和实时测控方面有着非常广阔的应用前景。在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不可靠和PC可能跑飞等问题。FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。由于FPGA/CPLD的集成规模非常大,可利用先进的EDA工具进行电子系统设计和产品开发。由于开发工具的通用性、设计语言的标准化以及

19、设计过程几乎与所用器件的硬件结构没有关系,因而设计开发成功的各类逻辑功能块软件有很好的兼容性和可移植性。它几乎可用于任何型号和规模FPGA/CPLD中,从而使得产品设计效率大幅度提高。可以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场最宝贵的特征。美国IT公司认为,一个ASIC80%的功能可用于IP核等现成逻辑合成。而未来大系统的FPGA/CPLD设计仅仅各类再应用逻辑与IP核(Core)的拼装,其设计周期将更短。与ASIC设计相比,FPGA/CPLD显著的优势是开发周期短、投资风险小、产品上市速度快、市场适应能力强核硬件升级回旋余地大,而且当产品定型核产量扩大后,可将在生产中达到

20、充分检验的VHDL设计迅速实现ASIC投产。对于一个开发项目,究竟是选择FPGA还是选择CPLD呢?主要看开发项目本身的需要。对于普通规模,且产量不是很大的产品项目,通常使用CPLD比较好。对于大规模的逻辑设计ASIC设计,或单片系统设计,则多采用FPGA。另外,FPGA掉电后将丢失原有的逻辑信息,所以在使用中需要为FPGA芯片配置一个专用ROM。(2)硬件描述语言(HDL) 常用的硬件描述语言有VHDL、Verilog、ABEL。VHDL:作为IEEE的工业标准硬件描述语言,在电子工程领域,已成为事实上的通用硬件描述语言。Verilog:支持的EDA工具较多,适用于RTL级核门电路级的描述,

21、其综合过程较VHDL稍简单,但其在高级描述方面不如VHDL。 ABEL:一种支持各种不同输入方式的HDL,被广泛于各种可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,因而适用于各种不同规模的可编程器件的设计。有专家认为,在新世纪中,VHDL与Verilog语言将承担几乎全部的数字系统设计任务。(3)软件开发工具目前比较流行的、主流厂家的EDA的软件工具有Altera的MAX+plus II 、Lattice的ispEXPERT、Xilinx的Foundation Series。MAX+plus II:支持原理图、VHDL和Verilog语言文本文件,以及以波形与EDIF等格式的文件作为设

22、计输入,并支持这些文件的任意混合设计。它具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。在适配之后,MAX+plus II生成供时序仿真用的EDIF、VHDL和Verilog这三种不同格式的网表文件,它界面友好,使用便捷,被誉为业界最易学易用的EDA软件,并支持主流的第三方EDA工具,支持除APEX20K系列之外的所有Altera公司的FPGA/CPLD大规模逻辑器件。ispEXPERT:ispEXPERT System是ispEXPERT的主要集成环境。通过它可以进行VHDL、Verilog及ABEL语言的设计输入、综合、适配、仿真和在系统下载。ispEXPERT Sys

23、tem是目前流行的EDA软件中最容易掌握的设计工具之一,它界面友好,操作方便,功能强大,并与第三方EDA工具兼容良好。Foundation Series:Xilinx公司最新集成开发的EDA工具。它采用自动化的、完整的集成设计环境。Foundation项目管理器集成了Xilinx实现工具,并包含了强大的Synopsys FPGA Express综合系统,是业界最强大的EDA设计工具之一。(4)实验开发系统提供芯片下载电路及EDA实验/开发的外围资源(类似于用于单片机开发的仿真器),供硬件验证用。一般包括:a)实验或开发所需的各类基本信号发生模块,包括时钟、脉冲、高低电平等;b)FPGA/CPL

24、D输出信息显示模块,包括数据显示、发光管显示、声响指示等;c)监控程序模块,提供“电路重构软配置”;d)目标芯片适配座以及上面的FPGA/CPLD目标芯片和编程下载电路。2.1.5 EDA 技术的设计流程可以从传统设计方法和 EDA设计方法的区别说明EDA设计方法的优势:(1) 设计思想不同:(2) EDA是采用自上而下(Top - Down)的设计方法。 自上而下是指将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模快,层层分解,直至整个系统中各个子系统关系合理,并便于逻辑电路级的设计和实现为止。自上而下设计中可逐层描述,逐层仿真,保证满

25、足系统指标。 传统设计方法是采用自下而上(BottomUp)的设计方法。 (2)与传统的基于电路板的设计方法不同,EDA技术是基于芯片的设计方法。(3)描述方式不同: 传统设计方法采用电路图为主; EDA设计方法以硬件描述语言(HDL_ Hard description Language)为主。(4)设计手段不同:传统设计方法以手工设计为主;EDA设计方法其方案验证与设计、系统逻辑综合、布局布线、性能仿真、器件编程等均由 EDA工具一体化完成。2.2 VHDL硬件描述语言2.2.1 VHDL的特点VHDL是一种用普通文本形式设计数字系统的硬件描述语言,主要用于描述数字系统的结构、行为、功能和接

26、口,可以在任何文字处理软件环境中编辑。除了含有许多具有硬件特征的语句外,其形式、描述风格及语法十分类似于计算机高级语言。VHDL程序将一项工程设计项目(或称设计实体)分成描述外部端口信号的可视部分和描述端口信号之间逻辑关系的内部不可视部分,这种将设计项目分成内、外两个部分的概念是硬件描述语言(HDL)的基本特征。当一个设计项目定义了外部界面(端口),在其内部设计完成后,其他的设计就可以利用外部端口直接调用这个项目。VHDL的主要特点如下:(1)作为HDL的第一个国际标准,VHDL具有很强的可移植性。(2)具有丰富的模拟仿真语句和库函数,随时可对设计进行仿真模拟,因而能将设计中的错误消除在电路系

27、统装配之前,在设计早期就能检查设计系统功能的可行性,有很强的预测能力。(3)VHDL有良好的可读性,接近高级语言,容易理解。(4)系统设计与硬件结构无关,方便了工艺的转换,也不会因工艺变化而使描述过时。(5)支持模块化设计,可将大规模设计项目分解成若干个小项目,还可以把已有的设计项目作为一个模块调用。(6)对于用VHDL完成的一个确定设计,可以利用EDA工具进行逻辑综合和优化,并能自动地把VHDL描述转变成门电路级网表文件。(7)设计灵活,修改方便,同时也便于设计结果的交流、保存和重用,产品开发速度快,成本低。VHDL是一种快速的电路设计工具,其功能涵盖了电路描述、电路合成、电路仿真等设计工作

28、。VHDL具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门电路级三个不同层次的设计,能够完成从上层到下层(从抽象到具体)逐层描述的结构化设计思想。用VHDL设计电路主要的工作过程是:1)编辑。用文本编辑器输入设计的源文件(为了提高输入效率,可用某些专用编辑器)。2)编译。用编译工具将文本文件编译成代码文件,并检查语法错误。3)功能仿真(前仿真)。在编译前进行逻辑功能验证,此时的仿真没有延时,对于初步的功能检测非常方便。4)综合。将设计的源文件用自动综合工具由语言转换为实际的电路图(门电路级网表),但此时还没有在芯片中形成真正的电路,就好像是把设计者脑海中的电路画成了原理图。5)布局、

29、布线。用已生成的网表文件,再根据CPLD(或FPGA)器件的容量和结构,用自动布局布线工具进行电路设计。首先根据网表文件内容和器件结构确定逻辑门的位置,然后再根据网表提供的门连接关系,把各个门的输入输出连接起来,类似于设计PCB(印刷电路板)时的布局布线工作。最后生成一个供器件编程(或配置)的文件,同时还会在设计项目中增加一些时序信息,以便于后仿真。6)后仿真(时序仿真)。这是与实际器件工作情况基本相同的仿真,用来确定设计在经过布局、布线之后,是否仍能满足设计要求。如果设计的电路时延满足要求,则可以进行器件编程(或配置)。2.2.2 VHDL语言基础知识1.VHDL的基本结构一个VHDL程序必

30、须包括实体(ENTITY)和结构体(ARCHITECTURE)。一个设计实体可看成一个盒子,通过它只能了解其外部输入及输出端口,无法知道盒子里的东西,而结构体则用来描述盒子内部的详细内容。至于完整的VHDL程序是什么样,实际上并没有统一的标准,因为不同的程序设计目的可以有不同的程序结构。除实体和结构体外,多数程序还要包含库和程序包部分。实体中定义了一个设计模块的外部输入和输出端口,即模块(或元件)的外部特征,描述了一个元件或一个模块与其他部分(模块)之间的连接关系,可以看作是输入输出信号和芯片管脚信息。一个设计可以有多个实体,只有处于最高层的实体称为顶层实体,EDA工具的编译和仿真都是对顶层实

31、体进行的。处于低层的各个实体都可作为单个元件,被高层实体调用。结构体主要用来说明元件内部的具体结构,即对元件内部的逻辑功能进行说明,是程序设计的核心部分。库是程序包的集合,不同的库有不同类型的程序包。程序包用来定义结构体和实体中要用到的数据类型、元件和子程序等。【例6-1】用VHDL设计一个非门(反向器)。非门即 y = a,设反相器的VHDL的文件名是not1.vhd,其中的.vhd是VHDL程序文件的扩展名。程序结构如下:-库和程序包部分LIBRARY IEEE; -打开IEEE库USE IEEE.STD_LOGIC_1164.ALL; -调用库中STD_LOGIC_1164程序包 -实体

32、部分ENTITY not1 IS -实体名为 not1PORT ( -端口说明a:IN STD_LOGIC; -定义端口类型和数据类型y:OUT STD_LOGIC);END not1; -实体结束-结构体部分ARCHITECTURE inv OF not1 IS -结构体名为 invBEGINy = NOT a; -将a取反后赋值给输出端口yEND inv; -结构体结束这是一个完整的VHDL源程序实例。其中的第一部分是库和程序包,是用VHDL编写的共享文件,定义结构体和实体中要用到的数据类型、元件、子程序等,放在名为IEEE的库中。第二部分是实体,相当于定义电路单元的管脚信息。实体名是自己

33、任意取的,但要注意要与项目名和文件名相同,并符合标识符规则。实体以ENTITY开头,以END结束。第三部分是结构体,用来描述电路的内部结构和逻辑功能。结构体名也是任意取的,结构体以ARCHITECTURE开头,以END结束。BEGIN是开始描述实体端口逻辑关系的标志,有行为描述、数据流(也称寄存器)描述和结构描述三种描述方式,这里采用的是数据流描述方式。符号=是信号赋值运算符,从电路角度看就是表示信号传输;NOT是关键字,表示取反(对后面的信号a操作),结构体实现了将a取反后传送到输出端y的功能。两条短划线是注释标识符,其右侧内容是对程序的具体注释,并不执行。所有语句都是以分号结束,另外程序中

34、不区分字母的大小写。【例6-2】用VHDL设计一个将输入端信号直接送到输出端输出的程序。ENTITY mybody IS -mybody是实体名PORT ( -定义端口in1 :IN BIT; output1 :OUT BIT ); END mybody; -实体结束 ARCHITECTURE myprog OF mybody IS -结构体名myprog BEGIN -结构体开始output1 = in1; -输入状态直接送到输出END myprog; -结构体结束程序的15行构成实体部分,mybody是实体名。PORT是关键字(或保留字),定义了实体(元件)的端口(相当于管脚)信息。in1

35、是一个管脚(位信号)名称,自己定义,IN表示信号传输方向是输入,BIT是数据类型名称,其取值范围是0、1。output1也是一个管脚名称,OUT表示输出。END是结束标志,只有一个实体时其右边的实体名称mybody可以省略。程序的69行构成结构体部分,OF mybody说明结构体是属于实体mybody,OF右边的实体名称必须与实体部分的实体名称相同。BEGIN是结构体开始的标志,该关键字是必须的。END myprog是结构体结束标志,只有一个结构体时结构体名myprog可省略。由于例6-2实体中信号使用的数据类型(BIT)和结构体中的运算符(=)都是默认类型,所以程序文件可省略库和程序包。2.

36、VHDL的库和程序包一库库是专门用于存放预先编译好的程序包的地方,对应一个文件目录,程序包的文件就放在此目录中,其功能相当于共享资源的仓库,所有已完成的设计资源只有存入某个“库”内才可以被其他实体共享。库的说明总是放在设计单元的最前面,表示该库资源对以下的设计单元开放。库语句格式如下:LIBRARY 库名 ;常用的库有IEEE库、STD库和WORK库。(1)IEEE库:是VHDL设计中最常用的资源库,包含IEEE标准的STD_LOGIC_1164、NUMERIC_BIT、NUMERIC_STD以及其他一些支持工业标准的程序包。其中最重要和最常用的是STD_LOGIC_1164程序包,大部分程序

37、都是以此程序包中设定的标准为设计基础。(2)STD库:是VHDL的标准库,VHDL在编译过程中会自动调用这个库,所以使用时不需要用语句另外说明。(3)WORK库:是用户在进行VHDL设计时的现行工作库,用户的设计成果将自动保存在这个库中,是用户自己的仓库,同STD库一样,使用该库不需要任何说明。二程序包程序包是用VHDL语言编写的一段程序,可以供其他设计单元调用和共享,相当于公用的“工具箱”,各种数据类型、子程序等一旦放入了程序包,就成为共享的“工具”,类似于C语言的头文件,使用它可以减少代码的输入量,使程序结构清晰。在一个设计中,实体部分所定义的数据类型、常量和子程序可以在相应的结构体中使用

38、,但在一个实体的声明部分和结构体部分中定义的数据类型、常量及子程序却不能被其他设计单元使用。因此,程序包的作用是可以使一组数据类型、常量和子程序能够被多个设计单元使用。程序包分为包头和包体两部分。包头(也称程序包说明)是对包中使用的数据类型、元件、函数和子程序进行定义,其形式与实体定义类似。包体规定了程序包的实际功能,存放函数和过程的程序体,而且还允许建立内部的子程序、内部变量和数据类型。包头、包体均以关键字PACKAGE开头。程序包格式如下。包头格式:PACKAGE 程序包名 IS包头说明语句END 程序包名;包体格式:PACKAGE BODY 程序包名 IS包体说明语句END 程序包名;调

39、用程序包的通用模式为:USE 库名.程序包名.ALL;常用预定义程序包有以下四个:(1)STD_LOGIC_1164程序包STD_LOGIC_1164程序包定义了一些数据类型、子类型和函数。数据类型包括:STD_ULOGIC、STD_ULOGIC _VECTOR、STD_LOGIC和STD_LOGIC _VECTOR,用的最多最广的是STD_LOGIC和STD_LOGIC_VECTOR数据类型。调用STD_LOGIC_1164程序包中的项目需要使用以下语句:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;该程序包预先在IEEE库中编译,是IEEE库中最常用的标

40、准程序包,其数据类型能够满足工业标准,非常适合CPLD(或FPGA)器件的多值逻辑设计结构。(2)STD_LOGIC_ARITH程序包该程序包是美国Synopsys公司的程序包,预先编译在IEEE库中。主要是在STD_LOGIC_1164程序包的基础上扩展了UNSIGNED(无符号)、SIGNED(符号)和SMALL_INT(短整型)三个数据类型,并定义了相关的算术运算符和转换函数。(3)STD_LOGIC_SIGNED程序包该程序包预先编译在IEEE库中,也是Synopsys公司的程序包。主要定义有符号数的运算,重载后可用于INTEGER(整数)、STD_LOGIC(标准逻辑位)和STD_L

41、OGIC _VECTOR(标准逻辑位向量)之间的混合运算,并且定义了STD_LOGIC _VECTOR到INTEGER的转换函数。(4)STD_LOGIC_UNSIGNED程序包该程序包用来定义无符号数的运算,其他功能与STD_LOGIC_SIGNED相似。3.VHDL的实体VHDL描述的对象称为实体,是设计中最基本的模块。实体提供一个设计单元的公共信息(相当于方框图)。实体具体代表什么几乎没有限制,可以是任意复杂的系统、一块电路板、一个芯片、一个单元电路等等。如果对系统自顶向下分层来划分模块,则各层的设计模块都可作为实体。实体的格式如下:ENTITY 实体名 ISGENERIC(类属说明)P

42、ORT(端口说明) END 实体名;实体名代表该电路的元件名称,所以最好根据电路功能来定义。例如:对于4位二进制计数器,实体名可以定义为counter4b,这样容易分析程序。一类属说明类属说明是实体说明的一个可选项(可选项用表示),主要为设计实体指定参数,可以用来定义端口宽度、实体中元件的数目、器件延迟时间等。使用类属说明可以使设计具有通用性。例如,在设计中有一些参数事先不能确定,为了简化设计和减少VHDL源代码的书写量,通常编写通用的VHDL源代码,源代码中这些参数是待定的,在仿真时只要用GENERIC语句将待定参数初始化即可。下面是一个使用类属说明的例子。【例6-3】设计一个二输入与门,两

43、个信号相与后,经过指定的延迟时间才送到输出端。其实体与结构体如下:ENTITY gand2 IS -实体名为andGENERIC (delay:TIME); -类属说明,delay是常数名,为时间类型 PORT ( a,b :IN BIT;c :OUT BIT);END gand2;ARCHITECTURE behave OF gand2 ISBEGINc = a AND b AFTER ( delay ); -a和b与运算后,延迟delay输出END behave;实际器件从输入到输出必然存在延时,但不同型号器件的延迟时间不同,因此可以在源代码中用类属说明语句指定待定参数。AFTER是关键字

44、,表示延迟。当调用这个二输入与门元件时,可以使用GENERIC语句将参数初始化为不同的值。类属说明一定放在端口说明的前面。类属说明语句的格式如下:GENERIC(常数名1:数据类型1:= 设定值1;常数名n:数据类型n:= 设定值n);如上例改写成:GENERIC(delay:TIME:= 10 ns);表示a和b与运算后经10 ns延时才输出。二端口说明端口说明也是实体说明的一个可选项,负责对实体中输入和输出端口进行描述。实体与外界交流的信息必须通过端口输入或输出,端口的功能相当于元件的一个管脚。实体中的每一个输入、输出信号都被称为一个端口,一个端口就是一个数据对象。端口可以被赋值,也可以作为信号用在逻辑表达式中。端口说明语句格式如下:PORT(端口信号名1:端口模式1 数据类型1;端口信号名n:端口模式n 数据类型n);端口信号名是设计者为实体的每一个对外通道所取的名字;端口模式是指这些通道上的信号传输方向,共有四种传输方向,如表6-1所示。表6-1 端口信号传输方向方向定义

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号