基于FPGA的出租车计价器的设计_毕业论文.doc_第1页
基于FPGA的出租车计价器的设计_毕业论文.doc_第2页
基于FPGA的出租车计价器的设计_毕业论文.doc_第3页
基于FPGA的出租车计价器的设计_毕业论文.doc_第4页
基于FPGA的出租车计价器的设计_毕业论文.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

论文题目:基于 fpga 的出租车计价器的设计 专 业:微电子科学与工程 摘 要 出租车计价器是乘客与司机双方的交易准则。具有良好性能的计价器无论是对广大 出租车司机朋友还是乘客来说都是很必要的。现在各大中城市出租车行业都已普及自动 计价器,而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车 行业也将加速发展,所以计价器的普及也是毫无疑问的。 本论文阐述了 eda 的发展及其优势、fpga 的发展趋势及结构特点和 vhdl 语言的优 点及语法结构,并分析了出租车计价器各模块的功能要求、基本原理以及实现方法。本 论文的设计采用 vhdl 硬件描述语言进行编程,基于 quartus ii 软件平台进行编译和仿 真。论文介绍了采用 fpga 芯片设计出租车计价器的方法,阐述了该计价器的主要组成 单元:车轮大小选择模块、计程模块、计时模块及计费模块、数据分配模块、分频模块、 译码模块的设计方法,同时给出了详细的仿真波形,实现了出租车基本计费功能,还能 模拟汽车启动,停止,暂停等状态,同时提高了计费系统的可靠性、通用性。本设计在 fpga 试验箱上运行良好,实现了计费器的各项功能。 关键字关键字 fpga,vhdl,quartus ii,出租车计价器 subject: the design of the taxi meter based on fpga specialty: microeletronics science and engineering name:dan shen (signature) _ instructor: gaili yue (signature) _ abstractabstract taxi meter is the rule of passenger and driver. have a good performance of the meter for our taxi driver or passenger is very necessary. now the automatic taxi meter has popularized, and some small city has not been popular, but with the quickening of city construction, the symbol of the city will accelerate development of the taxi industry. this article elaborates the concept and development of eda , the development trend and structure of the fpga, andexplains the advantages and grammar structure of vhdl ,meanwhile, analysed the function request, the basic principle as well as the method ofaccomplishment of each parts. this systems design programmes in the vhdl, compiled and emulated basing on quartus ii platform of altera consists of four modules, that is speed, mileage, timing and billing module. this paper introduce one method that can use a chip of fpga to design taxi meter, which consists of four modules, that is speed, mileage, timing and billing module, and then, describe the design of each module and give out the simulation. this taxi meter can be self-charging according to mileage, which also can simulate the state of speed,such as start, stop, and pause, at the same time, its reliability and commonality also can be improved. this design fpga test box on running well, realize the different functions of the message accounting device. keykey wordswords fpga , vhdl , quartus ii ,the taxi meter 1 目 录 第 1 章 绪论 1 1.1 课题研究背景及目的 .1 1.2 课题研究现状 .2 1.3 课题研究方法 .3 第 2 章 设计相关工具介绍 4 2.1 eda 介绍 4 2.1.1 eda 的发展 4 2.1.2 eda 的优势 5 2.2 fpga 介绍 .5 2.2.1 fpga 的发展趋势 .6 2.2.2 fpga 结构及其特点 .7 2.3 vhdl 介绍 .7 2.3.1 vhdl 简介 .7 2.3.2 vhdl 代码结构 .8 2.3.3 vhdl 语言设计硬件电路的优点 .9 2.4 quartus ii10 2.4.1 quartus简介 .10 2.4.2 quartus设计流程 .10 2.5 实验箱简述 11 第 3 章 系统的设计 .13 3.1 总体设计 13 3.1.1 出租车计价器的设计要求 13 3.1.2 总体框架设计 13 3.1.3 流程图 .14 3.2 主要模块设计.16 3.2.1 出租车总体模块设计 16 3.2.2 车轮大小选择模块设计 17 3.2.3 计程模块设计 18 3.2.4 计时模块设计 18 3.2.5 计费模块设计 19 3.2.6 数据分配模块设计 21 3.2.7 译码模块设计 21 3.2.8 分频模块设计 22 2 第 4 章 仿真及调试结果 .23 4.1 仿真结果 23 4.1.1 出租车总体模块仿真波形 23 4.1.2 车轮大小选择模块仿真波形 23 4.1.3 计程模块仿真波形 24 4.1.4 计时模块仿真波形 24 4.1.5 计费模块仿真波形 25 4.1.6 数据分配模块仿真波形 25 4.1.7 译码模块仿真波形 26 4.1.8 分频模块仿真波形 26 4.2 管脚分配及说明 27 4.3 调试结果及分析 27 第 5 章 总结 .31 致 谢 .34 参考文献 35 附 录 .36 源代码 36 1 第 1 章 绪论 1.1 课题研究背景及目的 出租车计价器是乘客与司机之间用于公平贸易的工具,同时它也是出租车行业发展 的重要标志。所以具有良好性能的出租车计价器无论是对司机还是乘客来说都是很重要 的。因此,设计出租车计价器是很有价值的。 在 70 年代开始时我国出现了第一辆出租车,但是那时的出租车计价器几乎都是进 口的,不但不够准确,而且价格还十分贵。随着经济的快速发展,出租车行业的发展趋 势已十分突出,直接导致国内各机械厂纷纷研发计价器。同时经济的发展也意味着城市 旅游业的迅猛发展,使得出租车已经成为看一个城市的窗口,也是象征这个城市的文明 程度。现在各大中城市的出租车计价器已经普及,部分小城市虽尚未普及,但随着城市 建设的日益加快,实现计价器的全面普及是毫无疑问的,所以未来出租车计价器的市场 是难以想象的。 现在我国普遍使用的出租车计价器主要是利用单片机来实现计价功能。出租车计价 器的功能由刚开始时只能显示路程,而价钱却需要司机自己通过路程来计算,计算后进 行四舍五入得到,到现在能实现显示总价并且语音提示和打印发票。但是近年来,由于 国际油价的大幅度变动,所以出租车的价格也随着油价的变动而进行调整,但由于计价 器是采用单片机来实现的,而单片机程序并是不通用的,且不同的芯片有不同的指令集, 因此价格的改动都需要将芯片从新烧录,使得每次调价都需要耗费大量的人力物力,所 以很难达到目前油价变动的需求。并且出租车计价器采用硬件模块化设计,分别为:主 控模块,电源模块和按键显示模块。所以其硬件电路很复杂,并且由于分立元器件太多, 造成电源功耗大,使得芯片不易散热,影响计价器的使用寿命。而基于 fpga 的出租车 计价器不仅可以解决由单片机设计引起的诸多问题,而且现场可编程门阵列 fpga 具有 开发简单,静态可重复编程和动态系统编程等优点。随着微电子技术的迅猛发展,使得 fpga 在电子电路设计中可以实现速度更快、集成度更高的显著优势,即可实现的功能也 越来越多。所以基于 fpga 的出租车计价器已成为未来计价方式的首选。 所以这次的毕业设计在实现计价功能的同时,考虑到现在出租车行业的发展趋势以 及对计价器灵活性的高要求,希望利用现场可编程门阵列 fpga 来解决现在出租车计价 2 器存在的问题。 1.利用 fpga 代替 mcu 现场可编程门阵列 fpga 的出现,解决了传统电子设计不能完成的任务。基于 fpga 的出租车计价器电路简单,可采用软件进行编译与仿真,同时可设计相对复杂的功能, 而且已经编好的程序在不同的 fpga 芯片上是通用的。还可以利用 fpga 实现任何数字器 件的功能,基于 fpga 的数字电路,可以缩短设计周期,减少 pcb 面积,提高系统的可 靠性。又因为 fpga 的功能只取决于利用 vhdl 语言或 verilog-hdl 语言编写的程序,而 不受具体芯片的特殊控制,所以基于 fpga 的出租车计价器具有更好的更新换代能力。 2计价标准设定 增加该模块,主要考虑在不改变硬件电路的前提下,可以使计价标准设计显得更加 灵活,即根据各地区的需求可以在 vhdl 程序中设置参数,就可以适应各地区出租车不 同计价标准的需要,还可实现根据各地区的需求增加其他所需功能。同时还体现目前出 租车行业的发展,使因油价变动而方便改变运价成为可能。 3等待时间计价 该模块的增加是为了响应了出租车行业的发展需求,使出租车计价更加合理,让乘 客与出租车司机之间的一个平衡点更容易达到。 1.2 课题研究现状 对于出租车计价器,目前市面上已经出现了许多采用不同方式的设计,譬如有可编 程的门器件 fpga,单片机以及 arm 等,但其中以单片机为主流。下来就以单片机为例讲 述一下现在市面上的出租车计价器存在的弊端。采用单片机实现的出租车计价器因为而 单片机程序不是通用的,且不同的芯片有不同的指令集,因此价格的改动都需要将芯片 从新烧录,使得每次调价都需要耗费大量的人力物力并且所需时间长,所以很难达到目 前油价高频率变动的需求。而且采用了硬件模块化设计,分别为:主控模块,电源模块 和按键显示模块。所以其硬件电路很复杂,并且由于分立元器件太多,造成电源功耗大, 使得芯片不易散热,影响计价器的使用寿命。 在我的这次设计中就利用 fpga 来设计出租车计价器,因为基于 fpga 的出租车计价 器可以解决由单片机设计引起的诸多问题。与利用单片机设计的出租车计价器相比,采 3 用 fpga 设计的出租车计费功能在很大程度上凸显了 eda 的优势。因为利用 eda,不仅可 以实现在线仿真和测试,还可以将所有的设计都集中在统一的文件中,即根据系统需求, 设计所需要的各个模块,最后对各个模块进行系统综合,从而得到我们所需的整个系统 设计。 1.3 课题研究方法 根据系统的总体功能,采用分层次、分模块、自顶向下的设计方式,首先实现系统 框图中的各个子模块,然后由顶层模块调用各子模块实现整个系统。编程完成后就利用 quartus软件进行各模块的仿真,实现后,分别创建原件符号,新建一个电路图,在 图中添加各模块原件符号并进行端口定义和功能划分,通过合理连接和协调各相关的各 个不同端口,得到整个电路系统。然后连接电路,检查电路是否连接正确,最后将程序 下载到实验装置中,进行引脚分配及编译,检验电路是否能实现所设计的功能和要求。 本次设计硬件部分采用 ep2c5q208 芯片作为主控芯片,8 个共阴极数码管,以及 6 个拨码开关,软件部分的仿真在 quartus7.2 环境中进行。首先,对系统时钟分频以 得到各个模块所需的时钟频率,并将所得到的频率送至主控芯片,同时对等待时间脉冲 数,里程脉冲数,计费方式信号,复位信号和等待时间信号等信息经过控制器的处理, 得到总价钱和路程,并最终将所行驶的路程和所需支付的金额通过 led 8 段数码管显示 出来。 4 第 2 章 设计相关工具介绍 2.1 eda 介绍 2.1.1 eda 的发展 随着科学技术的飞速发展,电子设计的规模越来越大,复杂度也越来越高,集成电 路的制作工艺达到 90nm 甚至更小的尺寸。以计算机为工作平台,融合了电子技术和智 能化技术的 eda(electronic design automation,电子设计自动化)工具已经在高速, 复杂的数字系统设计中得到了广泛的应运。 eda 是指利用计算机完成电子系统的设计。eda 技术是以计算机和微电子技术为先 导,汇集了计算机图形学,拓扑学,逻辑学,微电子工艺与结构学和计算数学等多种计 算机应运学科最新成果先进技术。 eda 技术以计算机为工具,代替人完成数字系统的逻辑综合,布局布线和设计仿真 等工作。设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到 设计结果,而且修改设计如同修改软件一样方便,可极大地提高设计效率。 从 20 世纪 60 年代中期开始,人们就不断开发各种计算机辅助设计工具来帮助设计 人员进行电子系统的设计。电路理论和半导体工艺水平的提高,对 eda 技术的发展起了 巨大的推动作用,使 eda 作用范围从 pcb 版设计延伸到电子线路和集成电路设计,甚至 整个系统的设计,也使 ic 芯片系统应用,电路制作和整个电子系统生产过程都集成在 一个环境之中。根据电子设计技术的发展特诊,eda 技术发展可大体分为三个阶段。 cad 阶段:cad(computer aided design,计算机辅助设计)阶段是从 20 世纪 60 年代中期到 20 世纪 80 年代初期,该阶段的特点是一些单独的工具软件,主要有 pcb(printed circuit board)布线设计,电路模拟,逻辑模拟及版图的绘制等,通过 计算机的使用,从而将设计人员从大量繁锁重复的计算和绘图工作中解脱出来。 cae 阶段:cae(computer aided engineering,计算机辅助工程)阶段是从 20 世 纪 80 年代初期到 20 世纪 90 年代初期,这个阶段在集成电路与电子设计方法学以及设 计工具集成化方面取得了许多成果。各种设计工具,如原理图输入,编译与连接,逻辑 模拟,测试码生成,版图自动布局以及各种单元库已齐全。这个阶段主要采用基于单元 5 库的半定制的设计方法,采用门阵列和标准单元设计的各种 asic(application specific integrated circuit,专用集成电路)得到了极大的发展,将集成电路工业 推入 asic 时代。 eda 阶段:20 世纪 90 年代以来,电子设计技术发展到 eda 阶段。此阶段主要出现 了高级语言描述,系统仿真和综合技术为特诊的第三代 eda 技术,不仅极大地提高了系 统的设计效率,而且使设计人员摆脱了大量的辅助性及基础性工作,将精力集中于创造 性的方案与概念的构思上。 2.1.2 eda 的优势 电子产品的设计生产,从选题大,方案论证,性能指标确定,装修电路,修改,定 型参数直到批量生产,是一个复杂而又费时的过程。 传统的电路装配,调试过程,一般均采用专门的焊接板,通过手工连线装配,检查 无误后,进行电路测量,最后评估电路性能。若性能与设计值不符时,需调换参数并重 新调试测量,直至电路符合设计要求为止,但是,当电路非常复杂时,采用焊接板组装 电路时所产生的连接错误,器件损坏等人为错误,常会造成人力,财力,时间的浪费及 错误的性能评估。尤其是集成电路的设计,器件在焊接班上就无法组成向集成电路内部 那样机密复杂的电子电路,装配版上的寄生参数与集成环境中的完全不同。因此,在装 配班测试的特性将无法准确的描述集成电路的真实特性。所以,电子电路的传统设计发 法已经不适应当前电子技术发展的要求,这就要借助计算机完成电子电路的辅助设计, 即电子电路 eda 技术。 eda 包括电子工程设计的全过程,如系统结构模拟,电路特性分析,绘电路图和制 作 pcb 等。eda 还可进行电路仿真,就是把电子器件或电路模块以数学模型表示,并配 合数值分析的方法,实现电路的功能模拟及特性分析。如果采用的电路模型足够精确, 则模拟结果将真实的反映电路特性,甚至可以方便地实现电路结构及性能的优化设计, 并提供相当完整而详细的数据库资料。较之传统的电路设计方法,eda 的优点是显而易 见的。 2.2 fpga 介绍 现场可编程门阵列 fpga 器件是 xilinx 公司于 1985 年首家推出的,它是一种新型 6 的高密度 pld,采用 cmos-sram 工艺制作。 fpga 是一种基于查找表(lut, look up table)的可编程逻辑器件,主要由逻辑单 元(le,logic element)构成的可配置逻辑块,可编程 i/o 和可编程内部互联模块组成。 用户也可以根据需要对它进行编程,使之生成特定的电路结构,完成一定的功能。fpga 内部阵列块之间采用分段式进行互连,因此结构比较灵活,但是延时不可预测。 2.2.1 fpga 的发展趋势 fpga 器件在过去的几十年里已经取得了巨大成就,在功能、成本、功耗、容量和编 程能力方面的性能不断提高,在未来的发展中,将呈现以下几个方面的趋势。 1.向大规模、高集成度方向进一步发展 由于微电子制作工艺的超高速发展,fpga 在性能、容量方面取得的进步非常显著, 有人认为:目前多数系统的瓶颈是处理器、音频及数据的系统引起的 i/o 带宽问题。 i/o 带宽的关键在于收发器性能,这正是 fpga 优于其他解决方案之处,altera 的 strative iv gt 产品中提供了可达 11.3gb/s 的高性能收发器,并将 40nm 工艺、高密度 与高性能收发器完美结合,从而使 fpga 能更完善地用于视频、音频、图像处理领域。 2.向低电压、低功耗的方向发展 目前,电子设计的一个显著趋势是功耗特性变得日益重要,功耗已经成为电子系统 开发中的最重要考虑因素之一,并影响着最终产品的体积、重量和效率。fpga 器件的内 核电压呈不断降低的趋势,经历了 5v-3.3v-2.5v-1.8v-1.2v 的演变,未来将会更低。 工作电压的降低使得芯片的功耗也显著减少,这样使 fpga 器件可适用于便携、低功耗 应用场合,如移动通信设备、个人数字助理等。 3.向高速可预测延时的方向发展 时间特性也是 fpga 器件的一个重要标志。由于在一些高速处理系统中,为了保证 系统的稳定性,fpga 器件的延时可预测性变得十分重要。用户在进行系统重构的同时, 担心的是延时特性会不会因重新布线而改变,是否将导致系统性能的不稳定性,因此, 为了适合未来复杂高速电子系统的要求,fpga 的高速可预测延时也是一个发展趋势。 4.在 fpga 器件内嵌入更多功能模块 现在,fpga 器件中已经广泛嵌入 ram/rom 等存储模块,嵌入了 dsp 模块、硬件乘法 7 器等,可实现快速的乘法累加操作,比 dsp 芯片快很多倍。将来的 fpga 器件还将嵌入 更多功能模块,实现更多复杂运算, 5.向模数混合可编程方向发 迄今为止,fpga 的开发和应用的大部分工作都集中在数字逻辑上,模拟电路及数模 混合电路的可编程技术在未来将得到进一步发展。 2.2.2 fpga 结构及其特点 fpga 结构一般分为三部分,可编程逻辑块,可编程 i/o 模块和可编程内部连线。 fpga 的发展非常迅速,形成了各种不同的结构。按逻辑功能模块的大小分类,fpga 可以分为细粒度 fpga 和粗粒度 fpga。细粒度 fpga 的逻辑功能块比较小,资源可以充分 利用,但是随着设计密度的增加,信号不得不通过许多开关,路由延迟也快速增加,从 而削弱了整体性能,导致速度降低;粗粒度 fpga 的逻辑功能块规模大,功能强,可以 用较少的功能块和内部连线就能完成较复杂的逻辑功能,易于获得较好的性能,但其缺 点是资源不能充分利用。从逻辑功能的结构上分类,可分为查找表结构、多路开关结构 和多级与非门结构。根据 fpga 内部连线的结构不同,可分为分段互联型 fpga 和连续互 连性、型 fpga 两种。分段互连型 fpga 中具有多种不同长度的金属线,各金属线段之间 通过开关矩阵或反熔丝编程链接,走线灵活方便,但走线延时无法预测;连续互连型 fpga 是利用相同长度的金属线,连接与距离远近无关,布局走线是固定的和可预测的。 根据编程方式,fpga 可分为一次编程型和可重复编程型两类。一次编程型采用反熔丝开 关元件,具有体积小、集成密度高、互连线特性阻抗低、寄生电容小和高速度的特点, 此外还具有加密位、防拷贝、抗辐射、抗干扰、不需外接 prom 或 eprom 的特点,但只 能一次编程。可重复编程型 fpga 采用 sram 开关元件或快闪 eprom 控制的开关元件,配 置数据存储在 sram 或快闪 eprom 中。sram 型 fpga 的突出优点是可反复编程,系统上电 时,给 fpga 加载不同的配置数据就可以完成不同的硬件功能,甚至在系统运行中改变 配置,实现系统功能的动态重构。快闪 eprom 型 fpga 具有非易失性和可重复编程的双 重优点,但不能动态重构,功耗也较 sram 型高。 8 2.3 vhdl 介绍 2.3.1 vhdl 简介 vhdl 是一种硬件描述语言,它可以对电子电路系统和系统的行为进行描述。基于这 种描述,结合相关的软件工具,可以得到所期望的实际电路系统。 vhdl 是 vhsic hardwar description language(vhsic 硬件描述语言) 。vhsic 是 very high speed integrated circuit hdl(超高速集成电路硬件描述语言)的缩写, 是在 ada 语言基础上发展起来的硬件描述语言。是 20 世纪 80 年代在美国国防部资助下 始创的,并最终导致了 vhdl 语言的出现。它的第一个规范版本为 vhdl 87,vhdl 93 是 其后续的升级版本。 使用 vhdl 语言描述的电路,可以进行综合与仿真。然而,值得注意的是,尽管所 有 vhdl 代码都是可仿真的,但并不是所有代码都是可综合的。vhdl 语言被广泛使用的 基本原因在于它是一种标准语言,是与工具和工艺无关的,从而可以方便的进行移植和 重用。vhdl 语言的两个最直接的应用领域是可编程逻辑器件和专用集成的电路,其中可 编程逻辑器件包括复杂可编程逻辑器件和现场可编程门阵列。一段 vhdl 代码编写完成 后,用户可以使用可编程逻辑器件来实现整个电路。 vhdl 语言与常规的顺序执行的计算机程序不同,vhdl 从根本上将是并发执行的。 因此,我们通常称之为代码,而不是程序。在 vhdl 中,只有在进程(process) ,函数 (function)和过程(procedure)内部的语句才是顺序执行的。 2.3.2 vhdl 代码结构 1代码基本单元 一段独立的 vhdl 代码至少包含 3 个组成部分: 库(library)声明:列出了当前设计中需要用到的所有库文件,如 ieee,std 和 work 等。 实体(entity):定义了电路的输入/输出引脚。 构造体(architecture):所包含的代码描述了电路要实现的功能。 2.代码语法结构 库声明:使用一个库之前,需要首先对库进行声明。经过声明之后,在设计中就可 9 以调用库中的代码了。库的声明方式如下: library libray_name; use libray_name.package_name.package_parts; 其中 library 和 use 是 vhdl 保留的关键字。 实体:是用来描述电路的所有输入/输出引脚,其语法结构如下: entity entity_name is poqt ( pore_name:signal_model signal_type; pore_name:signal_model signal_type; ); end entity_name; 端口的信号模式是以下 4 中之一:in,out,inout,buffer。entity 名称的选取没有 严格的规定,但须注意不要与 vhdl 保留的关键字发生冲突。 构造体:构造体中的代码用来描述电路行为和实现的功能,其语法结构如下: architecture architecture_name of entity_name is declarations begin (code) end architecture_name; 从语法结构中可以看到,一个 architecture 包含两部分:声明部分(可选) ,用于 对信号和常量等进行声明;代码部分(begin 和 end 之间的部分) ,用来描述电路的行为 或工功能。与 entity 一样,可以采用除 vhdl 关键字以外的任何名称为 architecture 命名,并且允许和 entity 具有相同的名称。 2.3.3 vhdl 语言设计硬件电路的优点 1.vhdl 支持结构化和自顶向下的设计方法,这样非常便与设计的模块化。设计者从 系统整体要求出发,自上而下将系统内容细化,最后将模块组合成完整的整体设计。 2.vhdl 具有多层次描述和仿真系统硬件功能的能力,可以从系统到门级电路不同层 10 次对数字进行建模和描述,不同的描述还可以混合使用,大大简化了硬件设计任务,提 高了设计效率和可靠性,缩短了产品开发周期。 3.vhdl 是一种工业语言,设计者,eda 开发工具的供应商和 ic 芯片生产商都要遵 循这一标准,因此它具有设计和开发环境,具有电路实现工艺以及采用的实现芯片无关 的特点,设计成果便于移植,交流和二次开发。另外由于其语法严格,是强类型语言, 因此涉及安全性好,也便于阅读。 4.vhdl 即支持传输延时也支持惯性延迟,不仅可以很好地描述系统和电路的逻辑功 能,也可以真实地反映系统和电路的时间特性。 5.vhdl 可以支持各种不同类型的数字电路和系统的设计。既支持同步电路也支持异 步电路;既支持 ttl 电路,也支持 cmos 电路;即可以采用 cpld 芯片实现,也可以采用 fpga 芯片实现。 2.4 quartus ii 2.4.1 quartus简介 quartus是 altera 公司在 21 世纪初推出的可编程逻辑器件的集成开发软件,这 个软件是该公司前一代可编程逻辑器件集成开发软件 max+plus的更新换代产品。 quartus集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件结构 五官的设计环境。软件界面友好,使设计者能够方便的进行设计输入、设计处理和器件 编程。 quartus集成开发软件不仅支持利用硬件描述语言通过文本编辑的方法完成电路 设计,而且该软件也提供类似传统电子设计中绘制电路图的输入方式。当使用原理图输 入方式时,设计者可以很方便地使用开发软件提供的各种元件来提高设计及速度和设计 质量。 2.4.2 quartus设计流程 quartus集成开发软件的核心是模块化的编译器。编译器包括的功能模块有分析/ 综合器、适配器、装配器、时序分析器、设计辅助模块和 eda 网表文件生成器。 利用 quartus集成开发软件进行可编程逻辑器件开发的全部过程包括以下步骤: 设计输入、综合、布局布线、验证和仿真,以及可编程逻辑器件的编程和配置。 11 quartus集成开发软件的功能模块与可编程逻辑器件开发过程之间的关系如图 2-2 所 示。 设计输入是将设计者所需要的电路构思已开发软件要求的形式表达出来。 quartus软件支持模块/原理图输入方式、文本输入方式、core 输入方式和第三方 eda 工具输入方式等。quartus软件同时允许用户在需要对器件的编译或变成进行必要的 条件约束的环境下,使用分配编辑器设定初始设计的约束条件。 综合是将 hdl 语言、原理图等设计输入依据给定的硬件结构组件和约束控制条件进 行编译、优化、转换和综合,生成门级电路,或更底层电路的描述网表文件,以供适配 器实现。 适配也称为布局布线,这个步骤利用适配器将逻辑综合生成的网表文件映射到某一 具体的器件。该过程包括将设计的逻辑和时序要求与器件的可用资源相匹配;将每个逻 辑功能分配到最好的逻辑单元位置,进行布局和时序分析;选择相应的互联路径和引脚 分配。适配完成后,生成可用于时序仿真的仿真文件和可用于编程的编程文件。 仿真包括功能仿真和时序仿真。功能仿真实在不考虑期间延时的理想情况下仿真设 计项目,以验证其逻辑功能的正确性,功能仿真又称前仿真。时序仿真是在考虑具体适 配器的各种延时的情况下仿真设计项目,它是接近真实器件运行特性的仿真,时序仿真 又称后仿真。 器件编程与配置是指设计输入编译成功后,设计者试用器件编译器将编程文件下载 到实际器件的过程。 quartus集成开发软件允许用户在开发过程中使用 quartus图形用户界面、eda 工具界面和命令执行界面。用户可以在整个开发过程中使用这些界面中的任意一个,也 可以在开发过程中的不同步骤中使用不同的界面。 上述任何一步出错,均需要回到设计输入阶段纠正错误,并重新按设计流程进行设 计。 2.5 实验箱简述 本设计采用的实验箱为 lte_eda_02f 型 eda/soc 实验开发系统,选用的芯片为 ep2c5q208c8。关于 fpga/cpld 器件的配置: 12 当在 quartus中完成设计后,就应当将所设计的电路下载到 cpld 芯片中,结合用 户系统进行统一的调试。针对 cpld 器件不同的内部结构,altera 公司提供了不同的器 件配置方式。altera 可编程逻辑器件的配置可通过编程器、jatg 接口在线编程及 altera 在线配置三种方式进行。 altera 器件编程的连接硬件包括 byteblaster 并口下载电缆,byteblastermv 并口 下载电缆,masterblaster 串行/usb 通信电缆,bitblaster 串口下载电缆。altera 公 司提供的 epc1、epc2、epc16 和 epc144 等 prom 配置芯片。本设计采用的是 byteblaster 并口下载电缆。byteblaster 并口下载电缆提供两种下载模式: 1.标准串行模式(as 模式)用来产品定型后,完成对 fpga 代码的固化,在下次 上电后,能够自动对 fpga 进行配置,使产品独立工作; 2.jtag 模式具有工业标准的 jtag 边界扫描测试电路(符合 ieee 1149.1:1990 标准),用来调试 fpga 或 nioscpu,多在产品开发初期使用。 13 第 3 章 系统的设计 3.1 总体设计 3.1.1 出租车计价器的设计要求 按照计价标准能实现计价功能;实现预置功能:能预置起步价、每公里收价、行车 加价里程;实现模拟功能:能模拟汽车启动、停止、暂停等状态。 该计价系统可靠性高、成本低、通用性强;该系统在不改变硬件电路的前提下,要 具有可以重构系统的功能,采用完全相同电路结构,只要根据各地区的需求在 vhdl 程 序中设置各参数,就可以适应各地区出租车不同计价标准的需要,还可实现根据各地区 需求增加其他功能。 具体计费方式如下: 1.车起步开始计价。首先显示起步价(本次设计起步价分为 7:00 至 22:00 为 10.00 元,22:00 至 7:00 为 15 元),车在行驶 3 km 以内,只收起步价。 2.在 7:00 至 22:00 行驶时,超过 3 km 未达 20km 后在 10 元基础上每行驶 1km 车价 加 2 元,行驶路程达到或超过 20 km 后,车费变成按每公里 3.3 元开始计价;在 22:00 至 7:00 行驶时,超过 3 km 未达 20km 后在 15 元基础上每行驶 1km 车价加 4 元,行驶路 程达到或超过 20 km 后,车费变成按每公里 5 元开始计价。 3.车暂时停止(行驶中遇红灯或中途暂时停车)等待累计时间超过 5 分钟时,按 1 元/分钟累计费用。 3.1.2 总体框架设计 等待时间计数 模块 计费模块 数 码 管 显 示 分 频 模 块 控 制 模 块 行驶路程计数 模块 时钟 14 图 3.1 系统设计总框图 分频模块用来将实验系统所提供的时钟进行分频,得到所需要的时钟频率。 行驶路程计数模块来统计路程。当出租车启动并行驶的过程中,当时钟的上升沿检 测到公里信号(输入端 clkout)为 1 时,对路程计数器的个位和十位进行加法计数,并 在累计路程超过 3km 是,让标志位 enable 为高电平,该信号将传给控制模块。 等待时间计数模块来统计等待时间。在出租车启动并停止等待的过程中(即复位 reset 为 0 时,停止信号 stop 为 0) ,计数器在时钟的上升沿进行加法计数,每 60 进制 产生进位脉冲使分钟计数器个位和十位进行加法计数,并在累计等待时间超过 5 分钟时, 让标志位 timecount 为高电平,该信号将传给控制模块。 计费模块用于出租车启动后,根据行驶路程和停止等待时间计算费用。该模块的时 钟使用控制模块输出的信号。当出租车停车复位时,时钟控制模块为 clk 信号,用于将 费用计数器复位为起步价 10 元;当出租车处于行驶状态时,时钟控制模块为满 3km 信 号时 enable,路程每满 1km,费用计数器加 2 元,时钟控制模块为满 20km 信号时,路程 每满 1km,费用计数器加 3.3 元, ;当出租车处于停止等待状态时,时钟控制模块为满 5 分钟信号 timecount,时间每满 1 分钟,费用计数器加 1 元。 控制模块为计数模块提供时钟信号。停止复位状态输出时钟信号 clk;停止等待状 态时输出时间计数模块产生的满 5 分钟脉冲 timecount;行驶状态是输出模拟满公里数的 信号 clkout。 数码管显示模块用来显示所行驶的路程和所花费的价钱。 3.1.3 流程图 系统工作流程图如图 3.2 所示。系统工作流程为:出租车载客后,启动计价器即 start 为 1,整个系统开始运行,进入初始化状态,即计程和计时从 0 开始,计价从起步 价开始,白天起步价为 6.0 元,晚上起步价为 7.0 元。再根据 pause 信号判断行驶或是 停止等待。若 pause 为 0,表示行驶状态,则计程器开始计数,当路程超过 3km 后,如 果是白天,计价器按每公里 1.4 元的单价进行累加,如果是晚上,计价器按每公里 2.0 元累加,否则计程器保持不变;当路程超过 20km 后,如果是白天,计价器按每公里 2.0 元的单价进行累加,如果是晚上,计价器按每公里 3.0 元累加,否则继续按 3km 后 15 的计价方式计价;若 pause 为 1,便是停止等待状态,则计时器开始加数,当每超过 5min 后计价器加 1 元,否则计价器保持不变;出租车停止后,按下 stop 键,停止计程 和计时;然后按下 reset 键,将所有计数器复位。 reset 信号 start 信号 计费器以每公 里2元累加 等待时间累 积,行驶路程 不变 计费器不变 计费器以每公 里3.3元累加 计费器以每5分 钟1元累加 行驶路程累 计,等待时间 不变 超过5分钟 超过3km未至 20km 各计数器 复位 pause 信号 未至3km 1 0 n y n y y 计费器只显示 起步价 n 图 3.2 程序流程图 16 3.2 主要模块设计 3.2.1 出租车总体模块设计 图 3.3 出租车计价器设计的顶层原理图 构建原理图的方法:首先建立相应的原理图文件。点击 new - block diagram/schematic file,生成一个后缀名为.bdf 的文件。第二步,打开将要生成元件 的主代码页面,然后选择 file- create/_update - create symbol files for current file.在.bdf 文件的空白处左键双击一下,弹出一个 symbol 的窗口,在左边窗 17 口处选择需要的器件,在 project 下是自己的代码生成的元件。然后将所添加的元件按 逻辑关系连接起来,最后加上 output 和 input 的管脚。然后对管脚命名。 上图就是按上述方法所得到的。其中计价,计程,计时,数据分配和尺寸大小选择 模块都使用相同的时钟脉冲,均由分频模块将系统时钟经过分频后传送给各个模块。译 码模块用于显示路程和价钱。choose 输入端口用于选择白天模式和晚上模式。 3.2.2 车轮大小选择模块设计 不同型号的车轮,其所对应的直径不同,每行驶 100m,对应的圈数也不同,车轮直 径与每公里需要转过圈数对照表由下表 3.1 给出。 表 3.1 车轮直径与每千米所转圈数对应表 车轮直径 (mm) 520540560580 dip 开关表示00011011 对应计费圈数640610580550 图 3.4 车轮大小选择模块原理框图 开关 sp 控制不同车型所应该给出计程圈数,达到所给的圈数给出相应的计程脉冲, clk 为输入脉冲时钟信号,reset 为复位键,stop 为停止键,start 为开始计价键,所 有信号均为高有效。 18 3.2.3 计程模块设计 图 3.5 计程模块原理框图 管脚说明:reset 为复位信号,clkout 为里程计费脉冲,km_cnt0km_cnt3 为路程 的十分位到百位输出。 当复位信号为1时,里程的百,十,个,十分位均被复位为0 ;反之, clkout 开始循环计数。当十分位为 9 时,十分位清零,向个位进 1,个位为 9 时,向十 位进 1,个位清零,同理,十位和百位的计数方式同前。当计程为 999.9 公里时,达到 最大计程范围,里程的各位被清零。 3.2.4 计时模块设计 图 3.6 计时模块原理框图 管脚说明:clk 为时钟信号,reset 为复位信号,start 为开始信号,stop 为停止 19 信号,pause 为暂停信号。 当 start=1 ,stop=0且 pause=1时,开始记间,当计时达到 30 秒时, timecount 输出一个脉冲,然后重新开始计时。 3.2.5 计费模块设计 图 3.7 计费模块原理框图 管脚说明: 时钟信号 clk,里程计数脉冲 clkout,计时计数脉冲 timecount,复位信 号 reset,chooose 为白天、晚上选择输入端,km_cnt0km_cnt3 为路程的十分位到百 位,money0money3 是费用的角,元,十元,百元输出端。 3km 以内为起步价,大于 3km 以后,每行驶 1km 费用按 price 进行变化,所以需要 路程信号标志位 enable,当 enable 为 1 时,说明此时所行路程已经大于 3km,否则小 于 3km。为了更切合实际,采用白天和晚上起步价和计价单价不同的方式,其选择信号 为 choose,当 choose=1时,按白天所要求的计价方式计价,反之,为晚上。 timecount 以 1 元基准进行累加,在时钟信号下对计时脉冲进行累加,当达到一定 数值时,总价加 1 元,否则计时脉冲继续累加。代码如下: elsif timecount=1then -每来一次计时脉冲计费加 1 if money_cn3=“1001“and money_cn2=“1001“and money_cn1=“1001“ then-费用等 于 999 20 money_cn3=4 时,money0 和 money1 和计价单价(price0 和 price1)相应进行相加,在相加的过程会产生进位,设计中考虑了如下进位情况: 1.money0 与 price0 相加没有进位,money1 与 price1 相加没有进位; 2.money0 与 price0 相加没有进位,money1 与 price1 相加有进位; 3.money0 与 price0 相加有进位,money1 与 price1 相加没有进位; 4.money0 与 price0 相加有进位,money1 与 price1 相加有进位。 代码见附录。 21 3.2.6 数据分配模块设计 图 3.8 数据分配模块原理框图 在时钟信号 clk 的控制下,将里程信号百位十位个位以及十分位,还有费用信号的 值分时输出。其中,moneymoney3 分别是费用的角,元,十元,百元信号输入端, km_cnt0km_cnt3 为里程的十分位到里程的百位输出,用到八位数码管,需要用 3 位选 择信号 sel0sel2,还有小数点信号 dp 和输出信号 d。最终利用人的视觉暂留,提高 扫描频率,这样人眼就看到稳定的里程和费用信号的显示。 3.2.7 译码模块设计 图 3.9 译码模块原理框图 译码模块的输入为4位的 bcd 码,输出的是共阴极七段数码管的7位,输入,输出 一一对应,将输入的信号,正确的在数码管上显示出来,让人更为直观的看到我们所想 22 要看到的结果。 3.2.8 分频模块设计 图 3.10 分频模块原理框图 输入信号 clk1,输出信号 clk。计价器的各模块所需的时钟信号不同,这就需要对 已有的信号进行分频。 23 第 4 章 仿真及调试结果 4.1 仿真结果 4.1.1 出租车总体模块仿真波形 图 4.1 出租车总体模块仿真波形图 随着脉冲数的增加,八段数码管也在发生相应的变化,且显示结果与预期一样。 4.1.2 车轮大小选择模块仿真波形 图 4.2 车轮大小选择模块仿真波形图 从波形图中可以看出随着 sp 的不同,clkout 输出脉冲所需的系统时钟脉冲数也会 发生变化。当 sp 由 00 变为 10 是,clkout 输出脉冲所需的系统时钟脉冲数较之前减少。 24 4.1.3 计程模块仿真波形 图 4.3 计程模块仿真波形图 km_cno 为路程输出的十分位,km_cn1 为路程输出的个位,

温馨提示

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

评论

0/150

提交评论