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

下载本文档

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

文档简介

1、基于 VHDL的出租车计费器设计摘要近年来,随着人们生活水平的提高, 出租车已经成为人们出行必 不可少的交通工具之一。而出租车计费器是出租车上的一个重要仪 器,它是乘客与司机双方的公平交易准则。在出租车的需求量不断加 大的情况下,对出租车计费器系统的稳定性,灵活性的要求增加,具 有良好性能的计费器对于司机和乘客都是很有必要的。 本文设计了一 个基于 VHDL的出租车计费器系统, 该系统分为计费和显示两大模块。 计费模块是实现系统功能的核心,根据输入信号,将里程、计费和等 候时间以 BCD码形式显示出来,显示模块将其译码轮流扫描显示。本 设计首先在 Quartus 软件中,用 VHDL语言对各个

2、模块进行设计, 其 次画出顶层原理图, 然后对顶层文件进行仿真测试,最后将仿真成功 的设计文件下载到 EDA实验箱进行验证。 验证结果具有计时、计里程、 计费等功能 。 矚慫润厲钐瘗睞枥庑赖。关键词: 出租车计费器; VHDL; Quartus ;设计Design of Taximeter Based on VHDLAbstractWith the development of peoples living standard, taxi has become an important transportation in recent years. And taxi meter is an im

3、portant instrument in taxi, it is the fair trade standards in both passengers and drivers. In the situation that the demand of taxi is increasing continuously and the requirements of taxi meter systems stability and flexibility are increase, the taxi meter which have a good performance is very neces

4、sary for drivers and passengers. This paper designs a taxi meter based on VHDL, the taxi meter system is divided into two modules: charge control and display control. The charge control module is the core to realize the function of the system, according to the input signal, display the mileage, char

5、ge and waiting time by BCD code. The display module will be scan and display decoding alternately. Firstly, using VHDL language compile the various parts in Quartus software, and draw the top diagram. Then the simulation test. Finally, the success of simulation program will be downloaded into the ED

6、A experiment box. The validation result comply with the design requirements, there are many functions, as record the time, mileage and charge. 聞創沟燴鐺險爱氇谴净。Key woords: taximeter; VHDL; Quartus ; design目录中文摘要 . 残骛楼諍锩瀨濟溆塹籟。英文摘要 .1 引言 酽1锕极額閉镇桧猪訣锥。1.1 设计背景 彈1贸摄尔霁毙攬砖卤庑。1.2 VHDL 简介 謀1荞抟箧飆鐸怼类蒋薔。1.3 Quartus简介

7、 3厦礴恳蹒骈時盡继價骚。2 出租车计费器的设计 茕3 桢广鳓鯡选块网羈泪。2.1 系统设计要求 鹅3娅尽損鹌惨歷茏鴛賴。2.2 设计思路 籟4丛妈羥为贍偾蛏练淨。2.3 出租车计费器系统工作流程图 4預頌圣鉉儐歲龈讶骅籴。3 出租车计费器的实现 渗6 釤呛俨匀谔鱉调硯錦。3.1 出租车计费器的顶层原理图 6铙誅卧泻噦圣骋贶頂廡。3.2 系统各功能模块的实现 6擁締凤袜备訊顎轮烂蔷。3.2.1 模块 taxi:charge_control 贓6 熱俣阃歲匱阊邺镓騷。3.2.2 模块 display:display_control 7坛摶乡囂忏蒌鍥铃氈淚。4 出租车计费器系统仿真及分析 8蜡變黲

8、癟報伥铉锚鈰赘。4.1 顶层实体的仿真波形 8買鲷鴯譖昙膚遙闫撷凄。4.2 计费模块的仿真波形 9綾镝鯛駕櫬鹕踪韦辚糴。4.3 显示模块的仿真波形 10驅踬髏彦浃绥譎饴憂锦。4.4 管脚锁定 1猫0虿驢绘燈鮒诛髅貺庑。4.5 显示结果的几种情况 1锹1 籁饗迳琐筆襖鸥娅薔。5 总结 1構1氽頑黉碩饨荠龈话骛。参考文献 1輒2峄陽檉簖疖網儂號泶。致 谢 1尧3侧閆繭絳闕绚勵蜆贅。附 录 1识4饒鎂錕缢灩筧嚌俨淒。巢湖学院 2012 届本科毕业论文 (设计 )1 引言1.1 设计背景出租车行业在我国八十年代初开始兴起, 因为其方便快捷的特点受到人们的 欢迎。尤其是近几年里,人们物质生活水平得到提高

9、以及生活节奏加快了,很多 城市的出租车行业迅速发展, 出租车已经成为人们出行的普遍选择之一。 而出租 车计费器是出租车内重要的仪器之一, 它能够规范出租车市场, 减小乘客与司机 之间发生纠纷的可能性。 要想加强出租车行业的管理, 提高服务的质量就必须要 有一种功能齐全,准确计量,简单又易用的出租车计费器。因为出租车计费器计 数是连续累加的, 所以它可以显示出任一时刻乘客应付的费用。 我国最初所使用 的计费器只有一种功能,即计量。我国第一家生产计费器的是重庆起重机厂,早 期的计费器就是个里程表 , 因为它们都是用的机械齿轮结构,只能实现最简单的 计程功能。如今我国有上百家企业生产出租车计费器,

10、这些企业主要分布在北京, 上海,广州和沈阳等地。随着时代的发展,第一代计费器已经不能满足人们的需 求,科学技术的发展使第二代计费器应运而生。 它实现了半机械半电子化的设计, 采用的是手摇计算机与机械结构相结合的方式, 它不仅能实现计程的功能, 同时 还能完成计价的工作, 给计费器的使用者带来了方便。 而大规模集成电路的发展 又给计费器带来了新的变化,产生了第三代计费器,即全电子化的计费器。它的 功能变得更多,同时也在不断完善的过程之中。在改进和完善的过程中,产生了 很多实用的附加功能,给人们带来了更多的方便。例如: (1)LED 显示功能。在 计费器中添加数码管,让计费器多屏显示的功能得以实现

11、; (2) 永久时钟功能。 将日历时钟芯片运用到计费器当中, 即使是在非营运的状态下, 计费器上的时钟 也可以永久显示; (3) 存储功能。计费器可长时间存储多项营运数据,以便于需 要的时候查询 1 。凍鈹鋨劳臘锴痫婦胫籴。1.2 VHDL 简介硬件描述语言已经有几十年的发展历史,并且在系统的仿真、验证和设计、 综合等方面得到成功的应用。 目前常用的硬件描述语言有 VHDL、 Verilog HDL 、出租车计费器的设计及实现ABEL等234 。VHDL则起源于 20世纪 70 年代末和 80 年代初,美国国防部提出 的 VHSIC计划,目标是为下一代集成电路的生产、 实践阶段性的工艺极限和完

12、成 10 万门级以上的电路设计而建立一种新的描述方法5 。 VHDL 的英文全称为Very-High-Speed Integrated Circuit Hardware Description Language, 是 IEEE 标准化的硬件描述语言,并且已经成为系统描述的国际公认标准,得到众多 EDA 公司的支持。 恥諤銪灭萦欢煬鞏鹜錦。VHDL具有很多的优点使它能够被大多数人认可,被广泛应用在逻辑电路的 设计方面,并且成为了标准化的硬件描述语言,其优点如下: 鯊腎鑰诎褳鉀沩懼統庫。(1) 功能强大和设计灵活。 一个简洁的使用 VHDL语言编写的程序就可以描述 一个复杂的逻辑电路,因为 VHD

13、L拥有强大的语言结构 6 。VHDL多层次的设计描 述功能可以有效地控制设计的实现, 支持设计库和可重复使用的元件生成, 还支 持多种设计方式,如层次化设计、模块化设计和同步、异步和随机电路设计。 硕 癘鄴颃诌攆檸攜驤蔹。(2) 与具体器件无关。用 VHDL设计硬件电路时不用先确定设计要用到哪种器 件,也不用特别熟悉器件的内部结构, 这样可以使设计人员专注于进行系统设计。 设计完成后,可以根据消耗的资源选择合适的器件,而不造成资源的浪费。 阌擻輳 嬪諫迁择楨秘騖。(3) 很强的移植能力。 VHDL由很多不同的工具支持,同一个设计的程序可以 在包括综合工具、仿真工具、系统平台等工具中使用。 氬嚕

14、躑竄贸恳彈瀘颔澩。(4) 强大的硬件描述能力。 VHDL可以描述系统级电路和门级电路,而且描述 方式多样,可以采用行为描述、寄存器传输描述或者结构描述,也可以用其混合 描述方式。同时, VHDL可以准确地建立硬件电路模型,因为它支持惯性延迟和 传输延迟。 VHDL的数据类型很丰富,支持标准定义的数据类型,当标准定义的 数据类型不能满足用户的需求时, 用户可以自己定义的所需要的数据类型, 增加 了设计的自由度。 釷鹆資贏車贖孙滅獅赘。(5) 语法规范,易于共享。当把用 VHDL编写的代码文件看作是程序时,它可 以作为设计人员之间的交流内容; 当把它看作是文档时, 可以作为签约双方的合 同文本。

15、VHDL易于共享的特点,使得大规模的协作开发容易实现。同时,这些 特点也促进了 VHDL的发展和完善。 怂阐譜鯪迳導嘯畫長凉。综上所述, VHDL有很多其他的硬件描述语言所不具备的优点。但是, VHDL 仍然存在一些缺点,主要是 3 个方面。 谚辞調担鈧谄动禪泻類。巢湖学院 2012 届本科毕业论文 (设计 )(1) 要求设计者对硬件电路知识甚至是芯片结构方面的知识了解较多。应该 摆脱一般的高级语言程序设计思路,因为在电路世界里的事件很多是并行发生 的,并且硬件电路系统内部的模块可以是互相独立的,也可以是互为因果的,所 以,在用 VHDL设计硬件电路时应摆脱一般的高级语言程序设计思路。在设计电

16、 路时,应先构思电路,然后才能描述。 嘰觐詿缧铴嗫偽純铪锩。(2) 不能进行太抽象的系统描述。 因为 EDA工具无法综合抽象性太强的系统 故用 VHDL描述系统电路时不能太抽象。目前的 VHDL很难综合实际的硬件电路, 只能适用于系统建模。 熒绐譏钲鏌觶鷹緇機库。(3) 不能描述模拟电路。对于模拟电路而言, VHDL并不是一种理想的硬件描 述语言。但可以预见, 未来硬件描述语言的发展方向是模拟电路和数模混合电路 的描述方式。 鶼渍螻偉阅劍鲰腎邏蘞。1.3 Quartus 简介Quartus II 是 Altera 公司的综合性 PLD开发软件,可以采用多种输入方式, 如 VHDL、 Veril

17、og HDL 、AHDL(Altera Hardware Description Language) 及电路 图等。它支持一些比较成熟的模块,如 LPM/MegaFunction 宏功能模块库等,设 计者可以直接调用这些模块, 从而使设计的复杂性降低了, 设计的速度也加快了。 Quartus II 内带有综合器和仿真器, 可以完成从设计输入到硬件配置的完整 PLD 设计流程,减少了设计者的工作量。 Quartus II 是一种综合性的开发平台,在 Quartus II 中可以进行系统级设计嵌入式的软件开发和可编程逻辑的设计。 Quartus II 越来越受到数字系统设计者的欢迎,是因为 Qua

18、rtus II 拥有强大 的设计能力和直观易用的接口, 可以在多种平台上使用, 如 XP、Linux 以及 Unix 等,具有完善的用户图形界面设计方式,运行速度快,功能集中,易学易用等特 点78 。 纣忧蔣氳頑莶驅藥悯骛。2 出租车计费器的设计2.1 系统设计要求系统设计要求为:出租车计费器的设计及实现(1) 起步价为 8.00 元,起步公里为 3 公里;(2) 超过 3 公里,每公里按 1.00 元收费;(3) 单程行驶里程超过 20 公里,每公里租价加收 50%;(4) 等候时间累计 1 分钟,则每分钟折算 1 公里里程价。 要求显示里程、计费及等候时间。乘客上车后,按下启动键,开始计费

19、,除非同一乘客往返乘车,否则按下单 程键,这样当行驶里程超过 20 公里时,每公里收费 1.5 元。 颖刍莖蛺饽亿顿裊赔泷。2.2 设计思路根据系统的功能要求,分为 2 个模块来实现,分别是计费模块,显示模块。 计费模块是实现系统功能的核心,里面有分为分频、计时、公里计数、计费等部 分。分频部分是把外部提供的 300Hz进行分频得到系统工作需要的工作脉冲, 计 费部分包括两个内容, 一个是正常行驶的里程数所产生的费用, 另一个是车行中 途暂停的时间所产生的费用。 然后将里程、 计费和等候时间以 BCD码形式显示出 来,显示模块将其译码轮流扫描显示。 濫驂膽閉驟羥闈詔寢賻。2.3 出租车计费器系

20、统工作流程图对出租车计费器系统的功能要求进行分析,得到如下工作流程图:巢湖学院 2012 届本科毕业论文 (设计 )图 1 工作流程图出租车载客后,启动计费器,整个系统开始工作,进入初始化状态,即计程 从 0 开始,计费从 8 开始。再根据 stop 信号判断行驶还是暂停。若是行驶状态, 计费器开始进行里程计数,当里程超过 3 公里时,计费器开始累加,按 1.00 元 每公里计算,计程器则继续,否则计费器不变。当里程超过 20 公里,按 1.50 每 公里进行累加。若是暂停状态,计费器开始进行等候时间计数,当等候时间累计 1分钟,则每分钟折算 1公里里程价。 最后将等候时间、 里程、计费都显示

21、出来。 銚銻縵哜鳗鸿锓謎諏涼。出租车计费器的设计及实现3 出租车计费器的实现3.1 出租车计费器的顶层原理图图 2 顶层原理图原理图中输入部分分别是 clk :系统时钟信号;mile :公里脉冲信号;single : 单程键; start :计费器启动信号; stop :等待信号。输出部分为七段译码 show 和位选码 sel ,show 显示出来的是等候时间、里程和计费。 挤貼綬电麥结鈺贖哓类。描述系统顶层实体的 VHDL程序见附录。3.2 系统各功能模块的实现3.2.1 模块 taxi:charge_control6巢湖学院 2012 届本科毕业论文 (设计 )图 3 计费模块设计计费模块

22、的难点在于小数计算,由计费规则知,单程行驶里程超过 20 公里,每公里租价加收 50%,即每公里租价 1.5 元。20 公里是临界值, 在此以后, 计费以 1.5 元累加,需要对计数进行讨论,因为个位为 8或 9都可能导致进位。 等候时间累计 1分钟,则每分钟折算 1 公里里程价,所以,等候和行驶都可使计 费增加。为此,设计 2 个时钟脉冲,公里脉冲和等候脉冲,根据汽车行驶还是等 候选择计费脉冲。 赔荊紳谘侖驟辽輩袜錈。描述计费模块的 VHDL程序见附录。3.2.2 模块 display:display_control图 4 显示模块显示模块用来将计费模块输出译码,然后轮流扫描数码管。如图5,

23、出租车计费器共有 8 个数码管,带一个使能端,高电平有效。 塤礙籟馐决穩賽釙冊庫。abh g f e d c b a8 7 6 5 4 3 2 1ch图 5 七段数码管与向量元素对应表 1 七段数码管段位码十进制数字段位码0001111111000001107出租车计费器的设计及实现201011011301100111401100110501101101601111101700100111801111111901101111灭00000000描述显示模块的 VHDL程序见附录4 出租车计费器系统仿真及分析4.1 顶层实体的仿真波形图 6 系统顶层实体仿真波形图之一图 7 系统顶层实体仿真波形图

24、之由图 7 可知 001(表示 c1) 对应 11101111(表示 9.) , 100(表示 k0) 对应 01100110(表示 4) ,其余均对应 00111111(表示 0) ,即显示为行驶 4公里,费用 为 9.0 元。 裊樣祕廬廂颤谚鍘羋蔺。巢湖学院 2012 届本科毕业论文 (设计 )4.2 计费模块的仿真波形图 8(a)图 8(b)图 8(c)图 8 均为计费模块的仿真波形图, 由图 8(a) 可看出汽车是单程行驶, 图 8(b) 可看出汽车在中途暂停了一段时间,在图 8(c) 中可直观地看出汽车行驶了 75 公 里,等候时间为 4分钟,应付的费用为 113.5 元。 仓嫗盤紲

25、嘱珑詁鍬齊驁。出租车计费器的设计及实现4.3 显示模块的仿真波形钟,将计费模块输出译码,然后轮流扫描数码管,显示各个数据,等候时间 4 分 里程 75 公里,计费 113.5 元。 绽萬璉轆娛閬蛏鬮绾瀧。4.4 管脚锁定在验证出租车计费器系统的功能之前, 需要清楚实验箱与各个信号之间的对 应关系,参照资料得出本设计中各引脚的对应情况如下: 骁顾燁鶚巯瀆蕪領鲡赙。图 10 管脚锁定管脚锁定后将顶层文件下载到 EDA实验箱芯片中,验证计费器的功能10巢湖学院 2012 届本科毕业论文 (设计 )4.5 显示结果的几种情况图 11 表示汽车行驶 21 公里,应付费 26.5 元,符合设计要求图 12

26、 验证结果 2图 12 表示汽车行驶 25 公里,在行驶 20公里之后的一段时间内停留 4 分钟, 应付费 38.5 元,符合设计要求。 瑣钋濺暧惲锟缟馭篩凉。5 总结本设计采用 VHDL硬件描述语言 , 通过 Quartus 开发平台设计了出租车计费 器系统,经过编译仿真基本无误,在此次设计中我主要做了以下工作: 鎦诗涇艳损楼 紲鯗餳類。1对所选题目进行仔细的审阅,理顺思路,了解熟悉设计的基本思路,掌 握整个设计工作的框架;2学习设计所需要用到的 Quartus 软件,做到熟练掌握软件的各种仿真 功能;11出租车计费器的设计及实现3学习 VHDL硬件描述语言,做到能读懂 VHDL程序,并能够

27、编写本设计所 需要的程序;4用软件对程序进行编译和仿真,观察波形,符合设计的要求后,准备硬 件下载工作;5在实验室把程序下载到实验板上,经过数码管显示结果符合设计要求, 完成整个设计工作部分的实验环节。出租车计费器系统的设计已经全部完成,能够按照预期的效果显示等候时 间、里程和车费数目。车行驶或暂停按其各自的计费规则进行计费,车费总数为 两项之和,若停止则车费清零,等待下一次计费的开始 9 。在出租车计费器系统 的两个模块计费模块、显示模块中,计费模块是实现系统功能的核心,里面 又分为分频、计时、公里计数、计费等部分;显示模块将显示等候时间,里程和 费用。各模块成功编译运行后,再将它们组合到一

28、起,完成完整的出租车系统的 设计10 。栉缏歐锄棗鈕种鵑瑶锬。通过这次的论文设计, 我对 VHDL编程语言有了更深层次的了解, 对 Quartus 软件的应用更加的熟练, 加强了我的动手能力, 使我在理论学习和编程练习方 面都有了较大的收获。 辔烨棟剛殓攬瑤丽阄应。参考文献1 李蓉.基于 VHDL语言的出租车自动计费器的设计 J.科技风, 2008,24: 42-462 侯伯亨,顾新 .VHDL硬件描述语言与数字逻辑电路设计 (修订版 )M. 西安: 西安电子科技大学出版社, 2005:3-9 峴扬斕滾澗辐滠兴渙藺。3 孟庆海,张洲 .VHDL基础及经典实例开发 M. 西安:西安交通大学出版社

29、, 2008,4:1-5 詩叁撻訥烬忧毀厉鋨骜。4 王行,李衍 .EDA技术入门与提高 M. 西安:西安电子科技大学出版社, 2005:17-325 周彩宝等 .VHDL语言及其应用 J. 计算机工程, 1998,10:17-206 孙冰等. VHDL 在计算机组成原理实验中的应用研究 J.价值工 程,2011,30(27): 56-59 则鯤愜韋瘓賈晖园栋泷。7 黄正瑾等编著 .CPLD系统设计技术入门与应用 M. 北京: 电子工业出版12巢湖学院 2012 届本科毕业论文 (设计 )社,2002:13-23 胀鏝彈奥秘孫戶孪钇賻。8 刘爱荣等编著 . EDA 技术与 CPLD/FPGA开发

30、应用简明教程 M. 北京: 清华大 学出版社 ,2007:45-56 鳃躋峽祷紉诵帮废掃減。9 席砺莼等 . 基于 VHDL语言的出租车计费系统设计 J. 现代电子技术, 2003,3:57-6110 高健等.基于 Verilog HDL 出租车计费系统的研制 J. 实验室研究与探索 , 2004,10: 34-37 稟虛嬪赈维哜妝扩踴粜。致谢在这次毕业设计的设计过程中, 得到了很多人的帮助。 首先要感谢我的指导 老师陈初侠老师,在课程设计上给予我的指导,提供给我的支持和帮助,让 我能把系统做得更加完善。在完成毕业论文的过程中,我学到了许多新的知识, 也巩固了一些已经学过的知识,弥补了以前的不

31、足之处,锻炼了我的动手能力, 使我的设计能力得到提高。其次,我要感谢帮助过我的同学们,他们也为我解决 了不少难题,同时也感谢学院为我提供了良好的做毕业设计的环境。最后,要感 谢各位老师抽出时间对本文进行评阅。 陽簍埡鲑罷規呜旧岿錟。13出租车计费器的设计及实现附录顶层实体的 VHDL编程:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;port(clk: in std_logic;- 输入 300Hz 时钟start: in std_log

32、ic;- 计费器启动stop: in std_logic;- 等待信号mile: in std_logic;- 公里脉冲信号single: in std_logic;- 单程键sel: out std_logic_vector(2 downto 0);- 位选show: out std_logic_vector(7 downto 0);-7 段数码管译码输出entity taximeter is應。end taximeter;沩氣嘮戇苌鑿鑿槠谔14巢湖学院 2012 届本科毕业论文 (设计 )architecture structural of taximeter is component t

33、axiport(clk: in std_logic;start: in std_logic;stop: in std_logic;mile: in std_logic;singlein std_logic;蔺。char0: out std_logic_vector(3 downto 0);- 计费输出小数点位钡嵐縣緱虜荣产涛團char1: out std_logic_vector(3 downto 0);- 计费输出个位char2: out std_logic_vector(3 downto 0);- 计费输出十位char3: out std_logic_vector(3 downto 0);

34、- 计费输出百位min0: out std_logic_vector(3 downto 0);- 等待时间输出个位懨俠劑鈍触乐鹇烬觶騮。min1: out std_logic_vector(3 downto 0);- 等待时间输出十位謾饱兗争詣繚鮐癞别瀘。km0: out std_logic_vector(3 downto 0);- 行驶公里输出个位呙铉們欤谦鸪饺竞荡赚。km1: out std_logic_vector(3 downto 0);- 行驶公里输出十位莹谐龌蕲賞组靄绉嚴减。end component; component display port(clk : in std_log

35、ic;char0 : in std_logic_vector(3 downto 0); char1 : in std_logic_vector(3 downto 0); char2 : in std_logic_vector(3 downto 0); char3 : in std_logic_vector(3 downto 0);min0: in std_logic_vector(3 downto 0);min1: in std_logic_vector(3 downto 0);km0: in std_logic_vector(3 downto 0);km1: in std_logic_vec

36、tor(3 downto 0);sel: out std_logic_vector(2 downto 0);show : out std_logic_vector(7 downto 0)end component;signal char0 :std_logic_vector(3 downto 0);signal char1 :std_logic_vector(3 downto 0);signal char2 :std_logic_vector(3 downto 0);signal char3 :std_logic_vector(3 downto 0);signal min0std_logic_

37、vector(3 downto 0);signal min1std_logic_vector(3 downto 0);signal km0: std_logic_vector(3 downto 0);signal km1: std_logic_vector(3 downto 0);begincharge_control:taxi15出租车计费器的设计及实现port map(clk= clk,start= start,stop= stop,mile= mile,single= single,char0= char0,char1= char1,char2= char2,char3= char3,m

38、in0= min0,min1= min1,km0= km0,km1= km1);display_control:displayport map(clk= clk,char0= char0,char1= char1,char2= char2,char3= char3,min0= min0,min1= min1,km0= km0,km1= km1,sel= sel,show= show)end structural;计费模块的 VHDL编程:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ie

39、ee.std_logic_arith.all;entity taxi isport(clk: instd_logic;- 输入 300Hz 时钟start: instd_logic;- 计费器启动stop: instd_logic;- 等待信号mile: instd_logic;- 公里脉冲信号singleinstd_logic;- 单程键麸肃鹏镟轿騍镣缚縟糶。char0 : out std_logic_vector(3 downto 0);- 计费输出小数点位 char1 : out std_logic_vector(3 downto 0);- 计费输出个位 char2 : out std_

40、logic_vector(3 downto 0);- 计费输出十位 char3 : out std_logic_vector(3 downto 0);- 计费输出百位 min0 : out std_logic_vector(3 downto 0);- 等待时间输出 min1 : out std_logic_vector(3 downto 0);- 等待时间输出16巢湖学院 2012 届本科毕业论文 (设计 )km0: out std_logic_vector(3 downto 0);- 行驶公里输出km1: out std_logic_vector(3 downto 0);- 行驶公里输出 納

41、畴鳗吶鄖禎銣腻鰲锬。end taxi;architecture behave of taxi isconstant n signal f_mile1 signal f_mile2 signal f_mile_r signal start_r signal clk1hz signal q signal sec: integer := 30;: std_logic;- 延迟时间: std_logic;- 延迟时间: std_logic;- 延迟时间: std_logic;- 延迟时间: std_logic;- 分频所得 1Hz 时钟: integer range 0 to n-1;- 分频器: i

42、nteger range 0 to 59;signal c3,c2,c1,c0 : std_logic_vector(3 downto 0);- 计费寄存器 風撵鲔貓铁频钙蓟纠庙。signal k0 signal k1 signal m1 signal m0 signal en0 signal en1 signal f_wait signal f: std_logic_vector(3 downto 0);- 公里寄存器 灭嗳骇諗鋅猎輛觏馊藹。: std_logic_vector(3 downto 0);- 公里寄存器 铹鸝饷飾镡閌赀诨癱骝。: std_logic_vector(3 downt

43、o 0);- 等待时间寄存器 攙閿频嵘陣澇諗谴隴泸。: std_logic_vector(3 downto 0);- 等待时间寄存器 趕輾雏纨颗锊讨跃满賺。: std_logic;- 路程大于 3 公里,使能有效: std_logic;- 单程且大于 20 公里,使能有效: std_logic;- 等待时间, 1 脉冲 / 分钟: std_logic;- 计费时钟begin-输出显示min0 = m0;min1 = m1;km0 = k0;km1 = k1;char0 = c0; char1 = c1; char2 = c2; char3 = c3;-分频进程u1:process(clk)be

44、ginif rising_edge(clk) then if q=299 then q=0;else q=q+1;end if;end if;17出租车计费器的设计及实现end process;clk1hz = 0 when qinteger(n/2) else 1;-等待计时进程u2:process(clk1hz,start)beginif start=0 thenf_wait=0;elsif rising_edge(clk1hz) thenif stop=1 then if sec=59 then sec=0; f_wait=1;if m0=1001 then m0=0000;if m1=

45、0101 then m1=0000;else m1=m1+1;end if;else m0=m0+1;end if;elsef_wait=0; sec=sec+1;end if;else f_wait=0;end if;end if;end process;-延迟信号,检测上升沿u3:process(clk1hz)beginif rising_edge(clk1hz) then f_mile2 = f_mile1; f_mile1 = mile; start_r = start;end if;end process;18巢湖学院 2012 届本科毕业论文 (设计 )f_mile_r= f_mi

46、le1 and not(f_mile2);-选择不同的计费时钟f= f_wait when stop=1 else f_mile_r when en0=1 else 0;-公里计数进程u4:process(start,f_mile_r)begin if start=0 thenk0=0000; k1=0000;en0=0; en1=0;elsif rising_edge(f_mile_r) then if k0=1001 then k0=0000;if k1=1001 then k1=0000;else k1=k1+1;end if; elsek0=k0+1; end if;-大于 3 公里,

47、使能有效 if k0=0011 thenen0=1; end if;-单程且大于 20 公里,使能有效 if k1=0001 and k0=1001 and single=1 then en1=1;end if;end if;end process;-计费进程u5:process(start,f,start_r)beginif start=1 and start_r=0 then19出租车计费器的设计及实现c0=0000;c1=1000;c2=0000;c3=0000;elsif rising_edge(f) thenif en1=0 then-小于 20 公里时,每公里 1元if c1=10

48、01 thenc1=0000;if c2=1001 thenc2=0000;if c3=1001 thenc3=0000;elsec3=c3+1;end if;elsec2=c2+1;end if;elsec1=c1+1;end if;else-超过 20 公里,每公里 1.5 元 if(c0=0101 and c1=1000) or c1=1001 then- 等于 XX9.5 时,累加得 XX1.0 if c1=1001 and c0=0101 thenc0=0000;c1=0001;- 等于 XX9.0 ,累加得 XX0.5 elsif c1=1001 and c0=0000 then c0=0101;c1=0000;- 等于 XX8.5 时,累加得 XX0.0 e

温馨提示

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

评论

0/150

提交评论