版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科毕业论文(设计)题 目 基于 fpga 与色敏传感器的颜色识别系统(数字部分)指导教师 职称 学生姓名 学号 专 业 自动化 班级 (1) 院 (系)电子信息工程学院电子工程系完成时间 i基于 fpga 与色敏传感器的颜色识别系统(数字部分)摘要本论文主要介绍了颜色识别系统, 本颜色识别系统主要实现对几种典型颜色的自动识别.本设计基于 fpga 与色敏传感器来实现,包括模拟和数字两个主要部分.模拟部分主要负责颜色信号的采集、放大,采集信号使用 cls9032 单晶硅双结型色敏传感器;数字部分主要负责颜色信号的处理和识别,也是本设计的核心部分,硬件使用 altera 公司的 niosii 处
2、理器 fpga 系统组建,软件使用vhdl 语言编程。数字部分用到的核心部件是 fpga,不同于单片机。单片机(如 8051 系统)每条指令都需要 12 个振荡周期,fpga 只需要 2 个振荡周期,所以同样条件下,fpga 有更快的运行速度,这也是本设计的创新之处。关键词关键词:颜色传感器;fpga;vhdl 语言;sensitive sensors based on fpga with color color identification system (digital iipart)abstract this paper introduces color identification s
3、ystem, the primary color identification 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, ampl
4、ification, signal acquisition using 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 o
5、f the core component is used in 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 ; f
6、pga; vhdl language;目 录iii摘要iabstractii第 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 与色敏传感器的颜色识别
7、系统(数字部分)164.1 设计原理及工作要求164.2 模拟部分174.3 数字部分(重要)174.4 altera quartus ii 坏境下的仿真19结束语20致谢21iv参考文献22(附 录)231第 1 章 绪 论(稍增加一些内容,绪论中主要写论文的设计背景,意义,设计内容及预期目标)在当今的社会生活中,颜色识别得到越来越广泛的应用。各个领域的广泛应用需求使颜色识别技术有了长足的发展,结合其他技术,可为工业控制、产品制造等多个行业更好地服务。目前,颜色识别技术主要是通过结构简单、使用方便的单片机来实现,而本设计选用 fpga 来实现,该系统可应用于印染、油漆、汽车等行业,也可以装在
8、自动生产线上对产品的颜色进行监测。这样选择的好处有以下几点:fpga 芯片是并行运算的,每个振荡周期都可以执行任务,而单片机(如 8051 系列)的每条指令都需要 12 个振荡周期。例如,单片机 io 端口的变化最快也需要 24 个振荡周期,而 fpga 只需要 2 个振荡周期,所以同样的振荡周期下,fpga 速度更快。fpga 有丰富的 io 资源(一般有数百个 io 口),容易实现大规模系统,可以方便地连接外设(比如多路 ad、da 等)。而单片机的 io 口有限,要进行仔细的资源分配、总线隔离。fpga 可以进行硬件重构,在功能扩展或性能改善方面也非常容易。本设计选用了 altera 公
9、司的:niosli 软核,使用 sopc 的软硬件综合解决方案。与传统的设计方法完全不同,从硬件和软件整体设计上进行了极大的改进,使硬件电路更加简单、有效、易于理解,软件设计更轻松、可移植性更强。第 2 章 eda 技术与 vhdl(删减第二章的内容,篇幅不能超过 4 页,且第二章不能只介绍 eda 相关的内容,你论文中用到的传感器类的相关知识也可以稍微描述一下,总体篇幅要不超过 4 页)2.1 eda 技术2.1.1 eda 技术的含义eda 即电子设计自动化,是 electronic design automation 的英文缩写。其发展历程可分为:(1)手工设计阶段(2)早期电子 cad
10、 技术(3)电子设计自动化(eda)技术(4)soc、esda 设计技术。 (其中 soc:system on a chip,esda:electronic system design automation) 它有广义和狭义两种定义方式,其广义定义范围包括:半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印刷电路板设计自动化、仿真与测试、故障诊断自动化、形式验证自动化,这些都通称为 eda 工程。2 eda 技术的狭义定义为以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程器件的开发软件及实验开发系统为设计工具,自动完成用软件方
11、式描述的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门多学科融合的新技术。 2.1.2 eda 技术的发展历史 20 世纪 90 年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如 cpld、fpga)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而
12、使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了 eda 技术的迅速发展。 eda 是电子设计自动化(electronic design automation)的缩写,在 20世纪 90 年代初从计算机辅助设计(cad)、计算机辅助制造(cam)、计算机辅助测试(cat)和计算机辅助工程(cae)的概念发展而来的。eda 技术就是以计算机为工具,设计者在 eda 软件平台上,用硬件描述语言 hdl 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程
13、下载等工作。eda 技术的出现,极大地提高了电路设计的效率和可*性,减轻了设计者的劳动强度。2.1.3 eda 技术的基本特征eda 代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(asic)实现,然后采用硬件描述语言(hdl)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。下面介绍与 eda 基本特征有关的几个概念。 1“自顶向下”的设计方法。10 年前,电子设计的基本思路还是选用标准集成电路“自底向上”地构造出一个新的系
14、统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。 高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计人手,在顶层进行功能方框3图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避燃计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 2asic 设计。现代电子产品的复杂度日益提高,一个电子系统可
15、能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题。解决这一问题的有效方法就是采用 asic 芯片进行设计。asic 按照设计方法的不同可分为全定制 asic、半定制 asc 和可纪程 asic(也称为可编程逻辑器件)。 设计全定制 asic 芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由 m 厂家去进行格模制造,做出产品。这种设计方法的优点是芯片可以获得最优的性能,即面积利用率高、速度快、功耗低,而缺点是开发周期长,费用高,只适合大批量产品开发。 半定制 asic 芯片的版图设计方法分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设
16、计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。2.1.4 eda 技术的主要内容eda 技术涉及面广,内容丰富,从教学和实用的角度看,主要应掌握如下四个方面的内容:(1)大规模可编程逻辑器件;(2)硬件描述语言;(3)软件开发工具;(4)实验开发系统。其中,大规模可编程逻辑器件是利用eda 技术进行电子系统设计的载体,硬件描述语言是利用 eda 技术进行电子系统设计的主要表达手段,软件开发工具是利用 eda 技术进行电子系统设计的智能化的自动设计工具,实验开发系统则是利用 eda 技术进行电子系统设计的下载工具及硬件验证工具。(1) 大规模可编程逻辑器件可编程逻辑器件(简
17、称 pld)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。fpga 和 cpld 分别是现场可编程门阵列和复杂可编程逻辑器件的简称,现在,fpga 和 cpld 器件的应用已十分广泛,它们将随着 eda 技术的发展而成为电子设计领域的重要角色。国际上生产 fpga/cpld 的主流公司,并且在国内占有市场份额较大的主要是 xilinx, altera, lattice 三家公司。xilinx 公司的 fpga 器件有 xc2000,xc3000,xc4000,xc4000e,xc4000xla, xc5200 系列等,可用门数为 120018000;altera 公司的 cpld 器件有f
18、lex600,flex8000,flex10k,flex10ke 系列等,提供门数为500025000;lattice 公司的 isp-pld 器件有 isplsi1000, isplsi2000, isplsi3000, isplsi6000 系列等,集成度多达 25000 个 pld 等效门。fpga 在结构上主要分为三个部分,即可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分。cpld 在结构上主要包括三个部分,即可编程宏单元,可编程输入/输出单元和可编程内部连线。4高集成度、高速度和高可靠性是 fpga/cpld 最明显的特点,其时钟延时可小至 ns 级,结合其并行工作方式,在
19、超高速应用领域和实时测控方面有着非常广阔的应用前景。在高可靠应用领域,如果设计得当,将不会存在类似于mcu 的复位不可靠和 pc 可能跑飞等问题。fpga/cpld 的高可靠性还表现在几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。由于 fpga/cpld 的集成规模非常大,可利用先进的 eda 工具进行电子系统设计和产品开发。由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用器件的硬件结构没有关系,因而设计开发成功的各类逻辑功能块软件有很好的兼容性和可移植性。它几乎可用于任何型号和规模 fpga/cpld中,从而使得产品设计效率大幅度提高。可
20、以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场最宝贵的特征。美国 it 公司认为,一个asic80%的功能可用于 ip 核等现成逻辑合成。而未来大系统的 fpga/cpld 设计仅仅各类再应用逻辑与 ip 核(core)的拼装,其设计周期将更短。与 asic 设计相比,fpga/cpld 显著的优势是开发周期短、投资风险小、产品上市速度快、市场适应能力强核硬件升级回旋余地大,而且当产品定型核产量扩大后,可将在生产中达到充分检验的 vhdl 设计迅速实现 asic 投产。对于一个开发项目,究竟是选择 fpga 还是选择 cpld 呢?主要看开发项目本身的需要。对于普通规模,且产量不
21、是很大的产品项目,通常使用cpld 比较好。对于大规模的逻辑设计 asic 设计,或单片系统设计,则多采用fpga。另外,fpga 掉电后将丢失原有的逻辑信息,所以在使用中需要为fpga 芯片配置一个专用 rom。(2)硬件描述语言(hdl) 常用的硬件描述语言有 vhdl、verilog、abel。vhdl:作为 ieee 的工业标准硬件描述语言,在电子工程领域,已成为事实上的通用硬件描述语言。verilog:支持的 eda 工具较多,适用于 rtl 级核门电路级的描述,其综合过程较 vhdl 稍简单,但其在高级描述方面不如 vhdl。 abel:一种支持各种不同输入方式的 hdl,被广泛于
22、各种可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,因而适用于各种不同规模的可编程器件的设计。有专家认为,在新世纪中,vhdl 与 verilog 语言将承担几乎全部的数字系统设计任务。(3)软件开发工具目前比较流行的、主流厂家的 eda 的软件工具有 altera 的 max+plus ii 、lattice 的 ispexpert、xilinx 的 foundation series。max+plus ii:支持原理图、vhdl 和 verilog 语言文本文件,以及以波形与 edif 等格式的文件作为设计输入,并支持这些文件的任意混合设计。它具有门级仿真器,可以进行功能仿真和时序仿
23、真,能够产生精确的仿真结果。在适配之后,max+plus ii 生成供时序仿真用的 edif、vhdl 和 verilog 这三种5不同格式的网表文件,它界面友好,使用便捷,被誉为业界最易学易用的 eda软件,并支持主流的第三方 eda 工具,支持除 apex20k 系列之外的所有altera 公司的 fpga/cpld 大规模逻辑器件。ispexpert:ispexpert system 是 ispexpert 的主要集成环境。通过它可以进行 vhdl、verilog 及 abel 语言的设计输入、综合、适配、仿真和在系统下载。ispexpert system 是目前流行的 eda 软件中最
24、容易掌握的设计工具之一,它界面友好,操作方便,功能强大,并与第三方 eda 工具兼容良好。foundation series:xilinx 公司最新集成开发的 eda 工具。它采用自动化的、完整的集成设计环境。foundation 项目管理器集成了 xilinx 实现工具,并包含了强大的 synopsys fpga express 综合系统,是业界最强大的 eda 设计工具之一。(4)实验开发系统提供芯片下载电路及 eda 实验/开发的外围资源(类似于用于单片机开发的仿真器) ,供硬件验证用。一般包括:a)实验或开发所需的各类基本信号发生模块,包括时钟、脉冲、高低电平等;b)fpga/cpld
25、 输出信息显示模块,包括数据显示、发光管显示、声响指示等;c)监控程序模块,提供“电路重构软配置”;d)目标芯片适配座以及上面的 fpga/cpld 目标芯片和编程下载电路。2.1.5 eda 技术的设计流程可以从传统设计方法和 eda 设计方法的区别说明eda 设计方法的优势:(1 1)设设计计思思想想不不同同:(2)eda 是采用自上而下(top - down)的设计方法。 自上而下是指将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模快,层层分解,直至整个系统中各个子系统关系合理,并便于逻辑电路级的设计和实现为止。自上而下设计中可逐层
26、描述,逐层仿真,保证满足系统指标。 传统设计方法是采用自下而上(bottom up)的设计方法。6 (2 2)与与传传统统的的基基于于电电路路板板的的设设计计方方法法不不同同,e ed da a 技技术术是是基基于于芯芯片片的的设设计计方方法法。7(3 3)描描述述方方式式不不同同: 传统设计方法采用电路图为主; eda 设计方法以硬件描述语言(hdl_ hard description language)为主。( 4 4)设设计计手手段段不不同同: 传统设计方法以手工设计为主;eda 设计方法其方案验证与设计、系统逻辑综合、布局布线、性能仿真、器件编程等均由 eda 工具一体化完成。2.2
27、vhdl 硬件描述语言2.2.1 vhdl 的特点vhdl 是一种用普通文本形式设计数字系统的硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口,可以在任何文字处理软件环境中编辑。除了含有许多具有硬件特征的语句外,其形式、描述风格及语法十分类似于计算机高级语言。vhdl 程序将一项工程设计项目(或称设计实体)分成描述外部端口信号的可视部分和描述端口信号之间逻辑关系的内部不可视部分,这种将设计项目分成内、外两个部分的概念是硬件描述语言(hdl)的基本特征。当一个设计项目定义了外部界面(端口) ,在其内部设计完成后,其他的设计就可以利用外部端口直接调用这个项目。vhdl 的主要特点如下:(
28、1)作为 hdl 的第一个国际标准,vhdl 具有很强的可移植性。(2)具有丰富的模拟仿真语句和库函数,随时可对设计进行仿真模拟,因而能将设计中的错误消除在电路系统装配之前,在设计早期就能检查设计系统功能的可行性,有很强的预测能力。8(3)vhdl 有良好的可读性,接近高级语言,容易理解。(4)系统设计与硬件结构无关,方便了工艺的转换,也不会因工艺变化而使描述过时。(5)支持模块化设计,可将大规模设计项目分解成若干个小项目,还可以把已有的设计项目作为一个模块调用。(6)对于用 vhdl 完成的一个确定设计,可以利用 eda 工具进行逻辑综合和优化,并能自动地把 vhdl 描述转变成门电路级网表
29、文件。(7)设计灵活,修改方便,同时也便于设计结果的交流、保存和重用,产品开发速度快,成本低。vhdl 是一种快速的电路设计工具,其功能涵盖了电路描述、电路合成、电路仿真等设计工作。vhdl 具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门电路级三个不同层次的设计,能够完成从上层到下层(从抽象到具体)逐层描述的结构化设计思想。用 vhdl 设计电路主要的工作过程是:1)编辑。用文本编辑器输入设计的源文件(为了提高输入效率,可用某些专用编辑器) 。2)编译。用编译工具将文本文件编译成代码文件,并检查语法错误。3)功能仿真(前仿真) 。在编译前进行逻辑功能验证,此时的仿真没有延时,对于初
30、步的功能检测非常方便。4)综合。将设计的源文件用自动综合工具由语言转换为实际的电路图(门电路级网表) ,但此时还没有在芯片中形成真正的电路,就好像是把设计者脑海中的电路画成了原理图。5)布局、布线。用已生成的网表文件,再根据 cpld(或 fpga)器件的容量和结构,用自动布局布线工具进行电路设计。首先根据网表文件内容和器件结构确定逻辑门的位置,然后再根据网表提供的门连接关系,把各个门的输入输出连接起来,类似于设计 pcb(印刷电路板)时的布局布线工作。最后生成一个供器件编程(或配置)的文件,同时还会在设计项目中增加一些时序信息,以便于后仿真。6)后仿真(时序仿真) 。这是与实际器件工作情况基
31、本相同的仿真,用来确定设计在经过布局、布线之后,是否仍能满足设计要求。如果设计的电路时延满足要求,则可以进行器件编程(或配置) 。2.2.2 vhdl 语言基础知识1.vhdl 的基本结构一个 vhdl 程序必须包括实体(entity)和结构体(architecture) 。一个设计实体可看成一个盒子,通过它只能了解其外部输入及输出端口,无法知道盒子里的东西,而结构体则用来描述盒子内部的详细内容。至于完整的vhdl 程序是什么样,实际上并没有统一的标准,因为不同的程序设计目的可以有不同的程序结构。除实体和结构体外,多数程序还要包含库和程序包部分。9实体中定义了一个设计模块的外部输入和输出端口,
32、即模块(或元件)的外部特征,描述了一个元件或一个模块与其他部分(模块)之间的连接关系,可以看作是输入输出信号和芯片管脚信息。一个设计可以有多个实体,只有处于最高层的实体称为顶层实体,eda 工具的编译和仿真都是对顶层实体进行的。处于低层的各个实体都可作为单个元件,被高层实体调用。结构体主要用来说明元件内部的具体结构,即对元件内部的逻辑功能进行说明,是程序设计的核心部分。库是程序包的集合,不同的库有不同类型的程序包。程序包用来定义结构体和实体中要用到的数据类型、元件和子程序等。【例 6-1】用 vhdl 设计一个非门(反向器) 。非门即 y = a,设反相器的 vhdl 的文件名是 not1.v
33、hd,其中的.vhd 是 vhdl程序文件的扩展名。程序结构如下:-库和程序包部分library ieee; -打开 ieee 库use ieee.std_logic_1164.all; -调用库中 std_logic_1164 程序包 -实体部分entity not1 is -实体名为 not1port ( -端口说明a:in std_logic; -定义端口类型和数据类型y:out std_logic) ;end not1; -实体结束-结构体部分architecture inv of not1 is -结构体名为 invbeginy = not a; -将 a 取反后赋值给输出端口 ye
34、nd inv; -结构体结束这是一个完整的 vhdl 源程序实例。其中的第一部分是库和程序包,是用vhdl 编写的共享文件,定义结构体和实体中要用到的数据类型、元件、子程序等,放在名为 ieee 的库中。第二部分是实体,相当于定义电路单元的管脚信息。实体名是自己任意取的,但要注意要与项目名和文件名相同,并符合标识符规则。实体以 entity 开头,以 end 结束。第三部分是结构体,用来描述电路的内部结构和逻辑功能。结构体名也是任意取的,结构体以 architecture 开头,以 end 结束。begin 是开始描述实体端口逻辑关系的标志,有行为描述、数据流(也称寄存器)描述和结构描述三种描
35、述方式,这里采用的是数据流描述方式。符号=是信号赋值运算符,从电路角度看就是表示信号传输;not 是关键字,表示取反(对后面的信号 a 操作) ,结构体实现了将 a 取反后传送到输出端 y 的功能。两条短划线是注释标识符,其右侧内容是对程序的具体注释,并不执行。所有语句都是以分号结束,另外程序中不区分字母的大小写。【例 6-2】用 vhdl 设计一个将输入端信号直接送到输出端输出的程序。entity mybody is -mybody 是实体名port ( -定义端口10in1 :in bit; output1 :out bit ); end mybody; -实体结束 architectur
36、e myprog of mybody is -结构体名 myprog begin -结构体开始output1 = in1; -输入状态直接送到输出end myprog; -结构体结束程序的 15 行构成实体部分,mybody 是实体名。port 是关键字(或保留字) ,定义了实体(元件)的端口(相当于管脚)信息。in1 是一个管脚(位信号)名称,自己定义,in 表示信号传输方向是输入,bit 是数据类型名称,其取值范围是0 、 1 。output1 也是一个管脚名称,out 表示输出。end 是结束标志,只有一个实体时其右边的实体名称 mybody 可以省略。程序的 69 行构成结构体部分,o
37、f mybody 说明结构体是属于实体mybody,of 右边的实体名称必须与实体部分的实体名称相同。begin 是结构体开始的标志,该关键字是必须的。end myprog 是结构体结束标志,只有一个结构体时结构体名 myprog 可省略。由于例 6-2 实体中信号使用的数据类型(bit)和结构体中的运算符(=)都是默认类型,所以程序文件可省略库和程序包。2.vhdl 的库和程序包一库库是专门用于存放预先编译好的程序包的地方,对应一个文件目录,程序包的文件就放在此目录中,其功能相当于共享资源的仓库,所有已完成的设计资源只有存入某个“库”内才可以被其他实体共享。库的说明总是放在设计单元的最前面,
38、表示该库资源对以下的设计单元开放。库语句格式如下:library 库名 ;常用的库有 ieee 库、std 库和 work 库。(1)ieee 库:是 vhdl 设计中最常用的资源库,包含 ieee 标准的std_logic_1164、numeric_bit、numeric_std 以及其他一些支持工业标准的程序包。其中最重要和最常用的是 std_logic_1164 程序包,大部分程序都是以此程序包中设定的标准为设计基础。(2)std 库:是 vhdl 的标准库,vhdl 在编译过程中会自动调用这个库,所以使用时不需要用语句另外说明。(3)work 库:是用户在进行 vhdl 设计时的现行工
39、作库,用户的设计成果将自动保存在这个库中,是用户自己的仓库,同 std 库一样,使用该库不需要任何说明。二程序包程序包是用 vhdl 语言编写的一段程序,可以供其他设计单元调用和共享,相当于公用的“工具箱” ,各种数据类型、子程序等一旦放入了程序包,就成为共享的“工具” ,类似于 c 语言的头文件,使用它可以减少代码的输入量,使程序结构清晰。在一个设计中,实体部分所定义的数据类型、常量和子程序可以在相应的结构体中使用,但在一个实体的声明部分和结构体部分中定义的11数据类型、常量及子程序却不能被其他设计单元使用。因此,程序包的作用是可以使一组数据类型、常量和子程序能够被多个设计单元使用。程序包分
40、为包头和包体两部分。包头(也称程序包说明)是对包中使用的数据类型、元件、函数和子程序进行定义,其形式与实体定义类似。包体规定了程序包的实际功能,存放函数和过程的程序体,而且还允许建立内部的子程序、内部变量和数据类型。包头、包体均以关键字 package 开头。程序包格式如下。包头格式:package 程序包名 is包头说明语句end 程序包名;包体格式:package body 程序包名 is包体说明语句end 程序包名;调用程序包的通用模式为:use 库名.程序包名.all;常用预定义程序包有以下四个:(1)std_logic_1164 程序包std_logic_1164 程序包定义了一些数
41、据类型、子类型和函数。数据类型包括: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 库中最常用的标准程序包,其数据类型能够满足工业标准,非常适合 cpld(或 fpga)器件的多值逻辑设计结构。(2)std_logic_arith 程序包该程
42、序包是美国 synopsys 公司的程序包,预先编译在 ieee 库中。主要是在std_logic_1164 程序包的基础上扩展了 unsigned(无符号) 、signed(符号)和 small_int(短整型)三个数据类型,并定义了相关的算术运算符和转换函数。(3)std_logic_signed 程序包该程序包预先编译在 ieee 库中,也是 synopsys 公司的程序包。主要定义有符号数的运算,重载后可用于 integer(整数) 、std_logic(标准逻辑位)和std_logic _vector(标准逻辑位向量)之间的混合运算,并且定义了std_logic _vector 到
43、integer 的转换函数。(4)std_logic_unsigned 程序包该程序包用来定义无符号数的运算,其他功能与 std_logic_signed 相似。3.vhdl 的实体vhdl 描述的对象称为实体,是设计中最基本的模块。实体提供一个设计单元的公共信息(相当于方框图) 。实体具体代表什么几乎没有限制,可以是任意复杂的系统、一块电路板、一个芯片、一个单元电路等等。如果对系统自顶向下分层来划分模块,则各层的设计模块都可作为实体。实体的格式如下:entity 实体名 is12generic(类属说明)port(端口说明) end 实体名;实体名代表该电路的元件名称,所以最好根据电路功能来
44、定义。例如:对于 4位二进制计数器,实体名可以定义为 counter4b,这样容易分析程序。一类属说明类属说明是实体说明的一个可选项(可选项用表示) ,主要为设计实体指定参数,可以用来定义端口宽度、实体中元件的数目、器件延迟时间等。使用类属说明可以使设计具有通用性。例如,在设计中有一些参数事先不能确定,为了简化设计和减少 vhdl 源代码的书写量,通常编写通用的 vhdl 源代码,源代码中这些参数是待定的,在仿真时只要用 generic 语句将待定参数初始化即可。下面是一个使用类属说明的例子。【例 6-3】设计一个二输入与门,两个信号相与后,经过指定的延迟时间才送到输出端。其实体与结构体如下:
45、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 是关键字,表示延迟。当调用这个二输入与门元件时,可以使
46、用 generic 语句将参数初始化为不同的值。类属说明一定放在端口说明的前面。类属说明语句的格式如下:generic(常数名 1:数据类型 1:= 设定值 1;常数名 n:数据类型 n:= 设定值 n) ;如上例改写成:generic(delay:time:= 10 ns) ;表示 a 和 b 与运算后经 10 ns 延时才输出。二端口说明端口说明也是实体说明的一个可选项,负责对实体中输入和输出端口进行描述。实体与外界交流的信息必须通过端口输入或输出,端口的功能相当于元件的一个管脚。实体中的每一个输入、输出信号都被称为一个端口,一个端口就是一个数据对象。端口可以被赋值,也可以作为信号用在逻辑
47、表达式中。端口说明语句格式如下:port(端口信号名 1:端口模式 1 数据类型 1;13端口信号名 n:端口模式 n 数据类型 n) ;端口信号名是设计者为实体的每一个对外通道所取的名字;端口模式是指这些通道上的信号传输方向,共有四种传输方向,如表 6-1 所示。表 6-1 端口信号传输方向方向定义说明in单向输入模式,将变量或信号信息通过该端口读入实体out单向输出模式,信号通过该端口从实体输出inout双向输入输出模式,既可以输入端口,还可以输出端口buffer缓冲输出模式,具有回读功能的输出模式,可以输入端口,也可以输出端口其中,in 相当于电路中的只允许输入的管脚;out 相当于只允
48、许输出的管脚;inout 相当于双向管脚,是在普通输出端口基础上增加了一个三态输出缓冲器和一个输入缓冲器构成的,既可以作输入端口,也可以作输出端口;buffer是带有输出缓冲器并可以回读的管脚,是 inout 的子集,buffer 作输入端口使用时,信号不是由外部输入,而是从输出端口反馈得到,即 buffer 类的信号在输出到外部电路的同时,也可以被实体本身的结构体读入,这种类型的信号常用来描述带反馈的逻辑电路,如计数器等。数据类型指的是端口信号的类型,常用数据类型如表 6-2 所示。表 6-2 常用端口数据类型4.vhdl 的结构体一个实体中可以有一个结构体,也可以有多个结构体,但各个结构体
49、不应有重名,结构体之间没有顺序上的差别。结构体用来描述设计实体的内部结构或行为,是实体的一个重要组成部分,定义了实体的具体功能,规定了实体中的信号数据流程,确定了实体中内部元件的连接关系。结构体用三种方式对设计实体进行描述,分别是行为描述、寄存器传输描述和结构描述。其格式如下:关键字说明boolean布尔类型,取值有 false、true 两种,只用于关系运算,不能用于计算bit二进制位类型,取值只能是 0、1,由 standard程序包定义bit_vector位向量类型,表示一组二进制数,常用来描述地址总线、数据总线等端口std_logic工业标准的逻辑类型,取值 0、1、x、z 等,由st
50、d_logic_1164 程序包定义std_logic_vector工业标准的逻辑向量类型,是 std_logic 的组合integer整数类型,可用作循环的指针或常数,通常不用作 i/o 信号14architecture 结构体名 of 实体名 is结构体说明部分;begin功能描述语句;end 结构体名;结构体说明部分是一个可选项,位于关键字 architecture 和 begin 之间,用来对结构体内部所使用的信号、常数、元件、函数和过程加以说明。要注意的是,所说明的内容只能用于这个结构体,若要使这些说明也能被其他实体或结构体所引用,则需要先把它们放入程序包。在结构体中也不要把常量、变
51、量或信号定义成与实体端口相同的名称。位于 begin 和 end 之间的结构体功能描述语句是必需的,具体描述结构体(电路)的行为(功能)及其连接关系,主要使用信号赋值、块(block) 、进程(process) 、元件例化(component map)及子程序调用等 5 类语句。【例 6-4】通过中间信号 m 实现输入端到输出端的数据传输。entity mybody is -实体名为 mybodyport( in1 :in bit; -定义端口output1 :out bit );end mybody;architecture myprog of mybody is -结构体名为 myprog
52、signal m:bit; -定义中间信号 mbeginm = in1; -输入信号传送给中间信号output1 = m; -中间信号送给输出信号end myprog;第 3 章 色敏传感器与 fpga 的简单介绍(移至第二章)3.1 色敏传感器本设计中采用的色敏传感器是 cls9032。该传感器有 2 个垂直连接的 pn结,其厚度可以给色敏传感器起到一个光学滤波器的作用。波长较短的光在硅的表面就被吸收了,而波长较长的光到达深一些的位置才会被吸收。基于这种光谱的敏感性,根据光的波长来选择信号(颜色)。使用 2 个光电二极管之间的对数电流比作为信号处理的方法。不同颜色的光照射时,该色敏传感器红、
53、绿、蓝区 3 个引脚都会输出电流信号,但是相应颜色的引脚输出的电流信号会比其他引脚输出的电流信号强。利用这种原理能够有效地避免外界环境造成的输出电流的起伏,因此这种器件具有较高的可靠性。 在距离色敏传感器 15 cm 处,分别用红、绿、蓝 3 种颜色的光源直接照射,检测经过模拟部分处理后的输出电压信号。实际测试数据如表 1 所列。153.2 fpgafpga 采用了逻辑单元阵列 lca(logic cell array)这样一个概念,内部包括可配置逻辑模块 clb(configurable logic block) 、输出输入模块 iob(input output block)和内部连线(in
54、terconnect)三个部分。fpga 的基本特点主要有: 1)采用 fpga 设计 asic 电路,用户不需要投片生产,就能得到合用的芯片。 2)fpga 可做其它全定制或半定制 asic 电路的中试样片。 3)fpga 内部有丰富的触发器和 io 引脚。 4)fpga 是 asic 电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) fpga 采用高速 chmos 工艺,功耗低,可以与 cmos、ttl 电平兼容。 可以说,fpga 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 fpga 是由存放在片内 ram 中的程序来设置其工作状态的,因此,工作时需要对片内的 r
55、am 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,fpga 芯片将 eprom 中数据读入片内编程 ram 中,配置完成后,fpga 进入工作状态。掉电后,fpga 恢复成白片,内部逻辑关系消失,因此,fpga 能够反复使用。fpga 的编程无须专用的 fpga 编程器,只须用通用的 eprom、prom 编程器即可。当需要修改 fpga 功能时,只需换一片 eprom 即可。这样,同一片 fpga,不同的编程数据,可以产生不同的电路功能。因此,fpga 的使用非常灵活。 fpga 芯片是并行运算的,每个振荡周期都可以执行任务,而单片机(如 8051 系列)的每条指令都
56、需要 12 个振荡周期。例如,单片机 io 端口的变化最快也需要 24 个振荡周期,而 fpga 只需要 2 个振荡周期,所以同样的振荡周期下,fpga 速度更快。 fpga 有丰富的 io 资源(一般有数百个 io 口),容易实现大规模系统,可以方便地连接外设(比如多路 ad、da 等)。而单片机的 io 口有限,要进行仔细的资源分配、总线隔离。 fpga 可以进行硬件重构,在功能扩展或性能改善方面也非常容易。 本设计选用了 altera 公司的:niosli 软核,使用 sopc 的软硬件综合解决16方案。与传统的设计方法完全不同,从硬件和软件整体设计上进行了极大的改进,使硬件电路更加简单
57、、有效、易于理解,软件设计更轻松、可移植性更强。3.3 a/da/d 转换器是数字化测量和显示仪表的重要组成部分,其转换速度、精度和分辨率,直接影响着测量结果和显示的质量指标。本设计采用的 a/d 转换器是 adc0809,adc0809 是 cmos 的 8 位 a/d 转换器,片内有 8 路模拟开关,可控制 8 个模拟量中的一个进入转换器中。adc0809 的分辨率为 8 位,转换时间约含锁存器控制的 8 路多路开关,输出有三态缓冲控制,单 5v 电源供电。adc0809 以其易于集成,分辨率较高、转换速度较快的特点而得到了广泛的应用。在实际使用中通常采用微处理器或单片机实现对 a/d 器
58、件的采样控制。 第四章 基于 fpga 与色敏传感器的颜色识别系统(数字部分)的设计(本章主要介绍系统的整体功能设计及各部分的具体程序实现,(本章主要介绍系统的整体功能设计及各部分的具体程序实现,是论文的重点,请重点修改!)是论文的重点,请重点修改!)4.1 设计原理及工作要求设计原理 图,表都要按照章节排序!如图 1 所示,颜色识别系统主要由模拟和数字两部分组成。模拟部分主要用来转换光电信号、放大信号和滤除噪声。数字部分主要用来对 ad 采样进来的数字信号 实现中值滤波、查对数表、求对数比,以及显示等操作。 图自己重新画!先介绍整体!整体系统流程的介绍要清晰,系统如何工作,如何实现,用什么样
59、的器件,器件之间如何连接,都需要介绍!17在介绍完整体的基础上说明哪些属于数字部分,哪些属于模拟部分,你负责哪些部分的工作!4.2 模拟部分(略)去掉,不是你的工作不需要介绍!4.3 数字部分(重要)1.本次设计的核心地方是数字部分,系统的搭建是基于 altera 公司的niosii 处理器。电压信号经过滤波处理,被传送到 ad 转换器,经过 ad 转换得到数字信号,为数字部分对信号的识别处理作准备。根据所选用的色敏传感器的工作原理,用 sopc 系统进行控制,对 3 路模拟电路信号进行同步的 ad 转换以增强系统准确性。在保证可靠性和精度的前提下,为降低系统成本,满足对输入数字信号倍数 的要
60、求,ad 转换器选用 8 位串行输出的 adc0809 转换器。采用 niosii 软核搭建的 fpga 系统处理数字信号,主要经过以下操作: 中值滤波,进一步去除干扰信号; 查对数表,查数据所对应的对数值; 求对数比,对分别采集到的 2 个数据求对数比,为判断是哪种颜色提供依据; 显示颜色识别结果,亮不同的灯来表明所识别出来的不同颜色。 2.硬件设计硬件设计(用你现在的系统介绍!不要拿别人的东西过(用你现在的系统介绍!不要拿别人的东西过来直接写!)分步介绍,来直接写!)分步介绍,a/d 怎么做,怎么做,fpga 中做哪些工作,中做哪些工作,显示怎么做,多清晰的一个系统,被你搞得这么乱!这部分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理健康基础与心理疾病预防
- 中药草本面膜在护肤中的功效
- 外贸谈判中的心理战术应用
- 老年人学习中医药文化的重要性及价值体现
- 建筑工程施工图纸解析与实例
- 现代医疗联合诊断模式探讨
- 文化创意产业文案策划方法论
- 汽车尾气检测:汽车排放中氧气含量标准解析
- 医学实验室的电位滴定分析法实践
- 健身房器械使用与运动损伤预防安全教育培训
- 英语学科跨学科整合心得体会
- 4.2依法履行义务 课 件 2024-2025学年统编版道德与法治八年级下册
- 2025年中山中考物理试题及答案
- 2024年贵州省普通高中学业水平选择性考试地理试题(原卷版+解析版)
- 办公室安全知识培训
- 《GNSS定位测量》考试复习题库(含答案)
- 塑料搅拌机安全操作规程
- 2024年皖西卫生职业学院单招职业适应性测试题库及答案解析
- 《爱鸟惜花守家园·考察身边的生物资源》课件 2023-2024学年辽海版《综合实践活动》七年级下册
- GB/T 6553-2024严酷环境条件下使用的电气绝缘材料评定耐电痕化和蚀损的试验方法
- 《家用电冰箱与空调器维修》课件
评论
0/150
提交评论