1、VHDL 语言的出租车计费器设计- 1 -VHDL 语言的出租车计费器设计1 引 言最近几年出租车行业发展迅速,在全国有几千家出租车公司,因此出租车计费器的市场是庞大的。随着电子科学技术的不断发展,特别是集成电路的迅猛发展,电子设计自动化已经成为主要的设计手段。随着 EDA 技术的大力发展,FPGA 等数字可编程器件的出现,数字出租车计费器的设计也就变得更加简单,而且性能更稳定、能实现较复杂的功能,且运用 EDA 软件可方便的在计算机上实现设计与仿真。本设计基于VHDL(FPGA )语言是电子设计领域中最具活力和发展前途的一项技术,未来必定会取代部分落伍的数字元元件。1.1 课程设计目的随着电
2、子技术的不断发展与进步,集成电路的设计方法也在不断地更新。时至今日,传统的手工设计过程已经被先进的电子设计自动化(EDA)工具所代替。只有以硬件描述语言和逻辑综合为基础的子项项下的电路设计方法才能满足日趋复杂的集成电路系统设计需求,才能缩短设计周期以满足设计对集成电路系统日益急迫的需求。在这种情形下,传统的出租车计费器设计方法已不能跟上现在的节奏,以往的出租车计费器在功能上也远不能满足现实的需求。以往的出租车计费器的不稳定性,功能稍等缺点是的大家开始寻求更新的,功能更强大,性能更稳定,价钱更低廉的新型出租车计费器。而大规模可编程逻辑器件的出现,VHDL 硬件描述语言的出现,使得这一切成为可能。
3、本设计的研究目标和意义也就是要使用价钱低廉、性能稳定、价钱低廉、可扩性强、适应目前出租车市场需求的出租车计费器,以解决目前出租车计费器存在的一系列问题。1.2 课程设计要求1. 能实现计费功能,计费标准为:按行驶里程收费,起步费为 10.00 元,并在车行 3 公里后再按 2 元/公里,当计费器计费达到或超过一定收费(如 20 元)时,每公里加收 50%的车费,车停止不计费。VHDL 语言的出租车计费器设计- 2 -2. 实现预置功能:能预置起步费、每公里收费、车行加费里程。3. 实现模拟功能:能模拟汽车启动、停止、暂停、车速等状态。4. 设计动态扫描电路:将车费显示出来,有两位小数。5. 用
4、 VHDL 语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。6. 各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。7. 完成电路全部设计后,通过系统实验箱下载验证设计的正确性。1.3 设计平台MAX + plus是美国 Altera 公司的一种 EDA 软件,用于开发 CPLD 和 FPGA 进行数字系统的设计。2 应用工具介绍作为当今最流行的计算机软件系统,EDA 技术是以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。EDA 可提供文本输入以及图形编辑的方法将设计者的意图用程序或者图
5、形方式表达出来,而我们经常用到的 VHDL 语言便是用于编写源程序所需的最常见的硬件描述语言(HDL)之一。2.1 EDA 技术介绍EDA 是电子设计自动化(Electronic Design Automation)的缩写,在 20 世纪 90 年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。EDA 技术是在电子 CAD 技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计 1。EDA 技术就是以计算机为工具,设计者在 ED
6、A 软件平台上,用硬件描述语言 HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、VHDL 语言的出租车计费器设计- 3 -布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。典型的 EDA 工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在 EDA 平台上完成的针对某个系统项目的 HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器
7、是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD 相映射的网表文件。在今天,EDA 技术已经成为电子设计的普遍工具,无论设计芯片还是设计系统,没有 EDA 工具的支持,都是难以完成的。EDA 工具已经成为设计师必不可少的武器,起着越来越重要的作用。从目前的 EDA 技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。EDA 技术发展迅猛,完全可以用日新月异来描述。EDA 技术的应用广泛,现在已涉及到各行各业。EDA 水平不断提高,设计工具趋于完美的地步。2.2VHDL 语言介绍电子设计自动化(EDA)的关键技术之
8、一是要求用形式化方法来描述数字系统的硬件电路。VHDL 硬件描述语言在电子设计自动化中扮演着重要的角色,他是 EDA 技术研究的重点之一。硬件描述语言是 EDA 技术的重要组成部分,VHDL 是作为电子设计主流硬件描述语言,VHDL (Very High Speed Integrated Circuit Hardware Description Language)于1983 年由美国国防部发起创建,由 IEEE 进一步发展并在 1987 年作为 IEEE 标准10760 发布。因此,VHDL 成为硬件描述语言的业界标准之一。VHDL 作为 IEEE 的工业标准硬件描述语言,得到众多 EDA 公
9、司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL 语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,使用 VHDL 语言,可以就系统的总体要求出发,自上而下地将设计内容细化,最后完成系统硬件的整体设计。一个完整的 VHDL 程序包括以下几个基本组成部分:实体(Entity) ,结构体(Architecture) ,程序包(Package) ,库(Library) 。其中,实体是一VHDL 语言的出租车计费器设计- 4 -个 VHDL 程序的基本单元,由实体说明和结构体两部分组成,实体说明用于描述设计系统
10、的外部接口信号;结构体用于描述系统的行为,系统数据的流程或系统组织结构形式。程序包存放各设计模块能共享的数据类型,常数,子程序等。库用于存放已编译的实体,机构体,程序包及配置。VHDL 语言的编译环境有不同的版本,我们应用的是 Altera 公司的 Maxplus 软件,它的操作顺序如下:使用 TEXTEDITOR 编写 VHDL 程序使用 COMPILER 编译VHDL 程序;使用 WAVE2FORMEDITOR,SIMULAROT 仿真实验;使用TIMINGANALTZER 进行芯片的时序分析;用 FLOORPLANEDITOR 锁定芯片管脚位置;使用 PROGRAMMER 将编译好的 V
11、HDL 程序下载到芯片中。VHDL 进行工程设计的优点是显而易见的。1与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。2VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。3VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速地完成必须有多人甚至多个代发组共同并行工作才能实现。4对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动的将 VHDL 描述设计转变成门
12、级网表。5VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。6用 VHDL 语言编写的源程序便于文档管理,用源代码描述来进行复杂控制逻辑的设计,既灵活方便,又便于设计结果的交流、保存和重用。3 设计原理VHDL 语言的出租车计费器设计- 5 -图 3.1 系统顶层框图计费器按里程收费,每 100 米开始一次计费。各模块功能如下:(1) 车速控制模块当起停键为启动状态时(高电平) ,模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;当处于停止状态时暂停发出脉冲,此时计费器和里程显示模块相应的停止计
13、数。(2) 里程动态显示模块其包括计数车速控制模块发出的脉冲以及将计数显示动态显示出来,每来一个脉冲里程值加 0.1(控制器每发一个脉冲代表运行了 0.1 公里) 。(3) 计费动态显示模块其初值为 10 元,当里程超过 3 公里后才接受计数车速控制模块发出的脉冲的驱动,并且计数显示动态显示出来,每来一个脉冲(代表运行了 0.5 公里)其数值加 1 元,当收费超过 20 时数值加 1.5 元。车速选择起/停开关基本速率Reset扫描时钟显示输出 显示输出车速控制模块计费动态显示里程动态显示VHDL 语言的出租车计费器设计- 6 -4 设计步骤VHDL 设计流程图(如图 4.0):VHDL 文本
14、编辑VHDL 文本编辑FPGA/CPLD 适配器FPGA/CPLD 编辑下载器VHDL仿真器FPGA/CPLD器件和电路系统时序与功能仿真器图 4.0 VHDL 设计流程图4.1 程序设计图 4.1 系统的总体模块图VHDL 语言的出租车计费器设计- 7 -(1)模块 MS 的实现(如图 4.1.1 所示)图 4.1.1 模块 MS 图模块 MS,输入端口 CK0、CK1 为两个不同的时钟信号,来模拟汽车的加速和匀速,JS 加速按键。(2)模块 SOUT 的实现(如图 4.1.2 所示)图 4.1.2 模块 SOUT 图该模块实现车行状态输出功能,其中 clk 为时钟信号,enable 为启动
15、使能信号,sto 暂停信号, clr 为清零信号,st 为状态信号。(3)模块 PULSE 的实现(如图 4.1.3 所示)图 4.1.3 模块 PULSE 图VHDL 语言的出租车计费器设计- 8 -该模块实现将时钟信号 5 分频功能。(4)模块 COUNTER 的结果验证(如图 4.1.4 所示)图 4.1.4 模块 COUNTER 图实现汽车模拟计费功能。clr1 为清零信号,si 为状态信号,c1,c2,c3 分别为费用的三为显示。(5)模块 SCAN_LED 的实现(如图 4.1.5 所示)图 4.1.5 模块 SCAN_LED 图该模块实现显示车费功能。BT 为选位信号,SG 译码
16、信号4.2 系统仿真:系统仿真是在实际系统上进行实验研究比较困难时适用的必不可少的工具,它是指通过系统模型实验去研究一个已经存在或正在设计的系统的过程,通俗地讲,就是进行模型实验。因而,系统仿真的结果决定整个课程设计任务完成的到位程度。程序输入完成后进行编译,编译完成后,可以对所进行的设计进行仿真,本课程设计VHDL 语言的出租车计费器设计- 9 -的仿真平台是 MAX+plus,通过对 VHDL 源程序进行编译检错,然后创建波形文件(后缀名为.scf) ,加入输入输出变量,选择适用的芯片以及设定仿真结束时间,设置好输入初值进行仿真,得到仿真波形图:1.模块 MS 的结果验证(如图 4.2.1
17、)图 4.2.1当 JS 为高电平,CLK_OUT 按照 CLK1 输出;低电平时,按照 CLK0 输出2 模块 SOUT 的结果验证(如图 4.2.2)enable 高电平时,每一个时钟上升沿时,CQI 计数加 1,若 CQI=30 时,state 赋01,30CQI=80 时,state 赋 10 态,.;enable 低电平时,CQI 计数暂停,保持不变图 4.2.23 模块 PULSE 的结果验证(如图 4.2.3)VHDL 语言的出租车计费器设计- 10 -每个 CLK0 上升沿时,CNT 计数加 1,加到 4 时在下一个时钟上升沿赋值 0;cnt 不为 0时 fout 赋值高电平,否则低电平图 4.2.34 模块 COUNTER 的结果验证(如图 4.2.4)SI 为出租车状态信号:“00”表示计费值停止,Q1Q3 不变;“01”计费清零,设置为起步价 10 元,Q2=1,Q3=0,Q1=0;“10” 正常计费,每公里 1 元, “11”超过 20 元后,每公里 1.5 元;Q1,Q2,Q3 的信号分别赋值给 C1,C2,C3图 4.2.45 模块 SCAN_LED 的结果验证(如图 4.2.5)BT 位选,SG 译码对应数字 09