




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、农业工程学院毕 业 设 计基于cpld的出租车计价器设计 软件设计姓 名 院(系) 信息学院专业班级 电子信息工程041班学 号 指导教师 职 称 助教(硕士)论文答辩日期 2008年04月18日农业工程学院教务处制学生承诺书本人在此声明:本人所呈交的学位论文,是在本人的导师指导下,独立完成。除文中已经注明引用的内容外,本人学位论文不包含任何他人享有的著作权的内容。对本论文所涉及的研究工作做出贡献的他人和集体,均已在文中明确标明。本人在此授权农业工程学院,其有权保留送交论文的复印件,允许其对本人的论文进行查阅,可以将学位论文的全部或部分内容编入有关的数据库进行检索,可以采用影印或其他复制手段保
2、存论文。 签名:_ 年 月 日摘 要本文论述了一种基于cpld的出租车计价系统的设计。该计价器通过数码管和按键可以显示时间、单价、起步价、里程数,并用扫描电路显示所走路程需要的费用。本论文主要工作是软件设计,它主要包括四个子模块:按键模块,控制模块,译码模块和显示模块。设计时采用vhdl硬件描述语言,通过软件quartus ii对本设计进行设计,下载到芯片epm7128slc84l5中,从而实现计价器的计费功能。关键词:cpld 出租车计价器 vhdl quartusii 目 录1 绪论11.1 出租车计价器的发展概况11.2 出租车行业的管理现状12 出租车计价器系统硬件结构22.1 硬件系
3、统概述22.1.1 eda概述22.1.2 cpld器件max7000系列22.1.3 霍尔传感器32.2 vhdl硬件描述语言42.2.1 vhdl概述42.2.2 vhdl语言基础知识43 软件编程环境53.1 quartusii软件的特点63.2 quartusii软件的集成工具63.3 设计输入73.4 综合73.5 布局布线83.6 仿真83.7 编程与配置84 出租车计价器的软件设计过程94.1 出租车计费器工作原理94.2 基本的设计思想94.2.1 控制模块94.2.2 译码显示模块124.3 设计的整个过程154.4 各个模块的仿真结果224.4.1 控制模块仿真结果224.
4、4.2 译码显示模块仿真结果235 出租车计价器存在的问题和改进工作255.1 出租车计价器存在的问题255.2 改进方法25结束语25参考文献27英文摘要28附录一 出租车计价器软件设计的流程图29附录二 软件设计的源代码30致谢37农业工程学院毕业设计成绩评定表381 绪论1.1 出租车计价器的发展概况出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分1。多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器中有90%为台湾所生产。现今我国生产计价器的企业有上百家,主要是集中在北京,上海,沈阳和广州等地。我国第一
5、家生产计价器的是重庆市起重机厂,最早的计价器全部采用机械齿轮构,只能完成简单的计程功能,可以说,早期的计价器就是个里程表。随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。此时它在计程的同时还可完成计价的工作。大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善。出租汽车计价器是一种专用的计量仪器,它安装在出租汽车上,能连续累加,并指示出行程中任一时刻乘客应付费用的总数,其金额值是计程和计时时间的函数2。出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。随着电子技术的发展以及对
6、计价器的不断改进和完善,便产生了诸多的附加功能。例如:(1)led显示功能,数码管的使用让计价器实现多屏显示的功能,可同时显示各项营运数据,使乘客一目了然;(2)永久时钟功能,在非营运状态下,日历时钟芯片的使用使计价器可以显示永久时钟;(3)存储功能,可存储多项营运数据,便于查询。新型数据存储器的应用使得计价器的营运数据在掉电情况下还可以保存10年。1.2 出租车行业的管理现状随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。近几年来,出租车汽车行业在各地蓬勃发展,出租车经营也从无序状态逐渐走入正轨。出租车计价器成为出租车运营中必配的、可靠的计量器具,其使用准确性直接关系到
7、经营者与乘客的经济利益。但在实际运营中,总有不少经营者或乘客反映相同路径,不同的出租车的收费有较大的出入3。本课题采用cpld芯片为核心,用较少的硬件和适当的软件相互配合主要解决以下问题:(1) 不同地区的计费方式存在差异;即使同一地区,不同车型的出租车,其计费方式也有差别;另一方面,出租车还面临几年一次的调价或调整计费方式等问题。因此,所设计的计费器不仅要能满足不同地区的要求,而且计费方式的调整也应当很方便。(2) 由于个别地区对计费器有特殊要求,有时必须修改软件;另外,计费器还面临软件的升级;因而,所设计的计费器应能很方便地重新编程。(3) 计费器必须要有防作弊功能,能有效防止司机作弊;同
8、时要防止计费器在营运过程中死机4。本课题实现上述设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,具有一定的应用价值。由于科技的发展,芯片中的数据可保持十年不变,且芯片体积小,容量大,因此这种方式是可行的,具有十分重要的现实意义和广阔的市场前景。2 出租车计价器系统硬件结构2.1 硬件系统概述2.1.1 eda概述电子设计自动化(eda,electronic design automation)是指计算机完成电子系统的设计。利用eda技术(特指ies/asic自动设计技术)进行电子系统的设计,具有以下几个特点:1.用软件的方式设计硬件;2.用软件方式设计的系统到硬件系统的转换是由有关
9、的开发软件自动完成的;3.设计过程中可用有关软件进行各种仿真;4.系统可现场编程,在线升级;5.整个系统可集成在一个芯片上,体积小、功耗低、可靠性高;6.从以前的“组合设计”转向真正的“自由设计”;7.设计的移植性好,效率高;8.非常适合分工设计,团体协作。因此,eda技术是现代电子设计的发展趋势。本设计是借助eda软件,用大规模可编程逻辑器件取代中小规模集成电路所构成的专用数字系统具有体积小,重量轻,功耗小,可靠性高,修改调试容易等优点来实现的5,采用eda软件quartusii用单片cpld(complex programable logic device,复杂可编程逻辑器件)设计的出租汽
10、车车费自动计价电路。2.1.2 cpld器件max7000系列1 高性能cpld:altera的 max 7000 cplds基于先进的多阵列矩阵max(multiple array matrix)架构,为大量应用提供了世界级的高性能解决方案。基于电可擦除可编程只读存储器eeprom(electrically erasable programmable read only memory)的max7000产品采用先进的cmos工艺制造,提供从32到512个宏单元的密度范围,速度达3.5 ns的管脚到管脚延迟。max 7000器件支持在系统可编程能力isp(in system programmab
11、le),可以在现场轻松进行重配置。2 高级i/o(input output system)标准:altera提供5.0v,3.3v和2.5v核电压的max 7000 器件。altera的multivolt 多电压接口允许设计人员在max 7000设计中无缝集成1.8v,2.5v,3.3v和5.0v逻辑电平,max器件是很多高速逻辑接口应用的理想方案。3 出众的硅片特性:max 7000器件是即用性,非易失性,提供全局时钟,在系统可编程,开路输出,可编程上电状态,快速输入建立时间和可编程输出回转速率控制特性的器件。和许多其他硅片特性一起,max 7000器件适用于大量系统级的应用。本次设计中使用
12、的cpld芯片是altera公司的max7000系列的epm7128slc84一l5,其基本结构为:(1)低密度、高性能cmos可编程逻辑器件之一。(2)84脚的plcc(plastic leaded chip carrier package)封装。(3)4个直接输入2,1,84,83和64个i/o引脚(i/o引脚既可作为输出、又可作为输入)。(4)tms(testing mode selection),tdi(testing data in),tdo(testing data out),tck(testing clock)是在系统编程信号,在系统编程之后,四个信号不可作为i/o引脚。(5)8
13、个相似的逻辑阵列块lab(logic array block)。每个lab有16个宏单元(macrocell),2个独立的全局时钟和一个全局清除,每个宏单元有一个寄存器。(6)一个可编程连线阵列pla(programmable line array)。(7)多个输入/输出控制块(i/o block)。(8)可用的门电路达到2500个,内含128个宏单元,引脚到引脚速度最快支到5ns6。2.1.3 霍尔传感器霍尔式传感器是目前出租汽车计价器所选配的主流传感器,可以检测转速、转数,霍尔传感器尺寸小,价格便宜,应用电路简单,性能可靠,在计价器配套使用很广泛。霍尔元件是在半导体薄片的两端通过控制电流,
14、并在薄片的垂直方向上施加磁场,且垂直于电流和磁场方向上将产生电压即称为霍尔电压,这一现象就是霍尔效应7。根据霍尔效应制造的元件就是霍尔元件。虽然它的转换率较低,温度影响大,要求转换精度较高时必须进行温度补偿,但霍尔式传感器结构简单,体积小,坚固,频率响应宽(从 直流到微波),动态范围(输出电动势的变化)大,无触点,使用寿命长,可靠性高,易于微型化和集成电路化,因此在测量技术、自动化技术和信息处理等方面得 到广泛的应用。今天的霍尔元件、放大器、温度补偿电路及稳压电源做在一个芯片上,成为霍尔传感器,目前计价器用传感器均为开关型霍尔传感器。其工作原理:当外加磁感应强度超过动作点时,传感器输出低电平,
15、但磁感应强度降到动作点以下时,传感器输出电平不变,一直降到释放点时,传感器才由低电平跃到高电平。目前,大部分传感器厂家多使用honeywell公司生产的ss443a开关型霍尔传感器。2.2 vhdl硬件描述语言2.2.1 vhdl概述vhdl的英文全名是very-high-speed integrated circuit hardware description language,诞生于1982年。vhdl主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,vhdl的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计,或
16、称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。应用vhdl进行工程设计的优点是多方面的,和其他语言相比,vhdl语言具有如下优点:1. 通用性和设计的可交换性2. 支持多种设计方法和设计技术3. 系统硬件描述能力强4. 大规模设计和设计的再利用82.2.2 vhdl语言基础知识1 vhdl的程序结构:vhdl程序设计采用自顶向下的模块化设计设计方法
17、。一个完整的vhdl程序是由实体(entity),结构体(architecture),配置(configuration),程序包(package)和库(library)五部分组成的。其中,实体和结构是vhdl设计文件的两个基本组成部分。实体部分描述设计系统的外部接口信号;结构体用于描述系统的内部电路。配置用于从库中选取所需元件安装到设计单元的实体中;程序包(包集合)存放各设计模块都能共享的数据类型,常数,子程序等;库用于存放已编辑的实体,结构体,包集合和配置9。2 vhdl三种描述方式:vhdl作为一种新的语言,新的设计方法,它不是用门级原理图而是用代码来设计数字电路。在使用vhdl时除了要编
18、写代码,还要建立层次结构。vhdl覆盖了各个层次,自上而下的设计整个系统,有三种描述方法:行为描述、数据流描述、结构描述。这些描述方法给电子线路设计师带来很大的自由度10。 (1)行为描述方式:行为描述方式对应于真值表,不需要具体电路的信息,只要把真值表描述出来即可。其结构体的名称一般是behaviour。优点是抽象能力最强,设计者只需清楚输入与输出的行为,而不需花更多的精力关注设计功能的门级实现,但这种描述方式与硬件电路之间没有明确的对应关系,难于进行逻辑综合。 (2)数据流描述:数据流描述对应于逻辑方程式,又称寄存器级传输描述。与行为描述方式相比还要写出表达式和进行化简。数据易于进行逻辑综
19、合,但要求设计者对设计实体的功能实现有一定了解,有时还需对内部电路了解,在结构体中的名称一般是dataflow。(3)结构描述:结构描述对应逻辑原理图。但又不同于原理图,在这里原理图并不是用门级的逻辑门的符号表示,而是用一些方框来表示,方框内不包含信息。可以用vhdl代码来描述方框内的信息。方框与方框之间的连接也是用vhdl代码来实现。结构体的名称一般是structure。在设计一个实际的复杂系统的过程中,往往这三种描述方式都会用到,这时也可称作混合描述方式。3 软件编程环境本设计采用altera的quartus ii软件进行设计,quartus ii 是altera公司在21世纪初推出的fp
20、ga/cpld开发环境,是max+plusii的更新换代的产品,其功能强大,界面友好,使用便捷。通过使用此开发工具,设计者可以自己创建,组织和管理自己的设计,quartus ii 设计流程的图示说明,请参见图1。图1 quartus ii 设计流程 3.1 quartusii软件的特点quartusii软件的特点:1 支持多时钟定时分析,logiclocktm 基于块的设计,sopc(可编程片上系统),内嵌signaltap ii 逻辑分析器和功率估计器等高级工具。2 强大的hdl综合能力。3 包含有maxplus ii 的gui,且容易使maxplus ii的工程平稳过渡到quartus i
21、i开发环境。4 易于引脚分配和时序约束。5 对于fmax的设计具有很好的效果。6 支持多种操作系统。7 支持器件种类众多,如:stratix 系列,cyclone 系列,hardcopy ii系列,apex ii系列,flex10k系列,flex6000系列,max ii系列,max3000a系列,max7000系列和max 9000系列等等。8 提供第三方工具如综合,仿真等的链接11。3.2 quartusii软件的集成工具集成工具有如下:1.设计输入;2.综合;3.布局布线;4.时序分析;5.仿真;6.编程和配置;7.系统级设计;8.软件开发;9.基于块的设计;10.eda界面;11.时序
22、逼真;12.调试;13.工程更改管理。3.3 设计输入软件中所使用的工程由所有的设计文件和与设计文件相关的设置组成,可以采用原理图输入方式,文本输入方式,模块输入方式和eda设计输入工具等表达电路构思。1 设计的输入方式:设计输入的文件可以是文本形式的文件,存储数据的文件,原理图设计输入文件和第三方eda工具产生的文件,也可以同时混合使用上面几种设计输入文件进行设计,主要有以下三种:verilog hdl/vhdl 硬件描述语言设计输入;ahdl(altera hard description language)输入方式;模块/原理图输入方式。2 设计方法logiclock提供的设计方法有:自
23、底向上的设计方法,自顶向下的设计方法,基于块的设计方法。常用的设计方法有:原理图和图表模块编辑,文本编辑,混合编辑(自底向上和自顶向下)。3 约束输入建立好工程和设计后,可以使用分配编辑器,setting 对话框,timequest分析器,引脚规划器,设计划分窗口和时序逼近平面布局等来进行分配引脚和设置时序约束的操作,也可以在“assignments”菜单的“import assignments”命令或者“export assignments”命令,导入和导出分配。分配引脚:将设计文件的输入/输出信号指定到器件的某个引脚,设置此引脚的电平标准和电流强度等。时序约束:为了使高速数字电路的设计满足
24、运行速率的要求,在综合和布局布线阶段附加的约束。(1)分配编辑器:用于建立节点,编辑节点和实体级分配,允许或者禁止单独分配功能,也可为分配加入注释;分配是为逻辑指定各种选项和设置。(2)引脚规划器:是分配引脚和引脚组的工具之一,包括器件的封装视图,用不同颜色和符号表示不同类型的引脚和以其他符号表示的i/o口。(3)settings 对话框:用来为工程指定分配和选项,也可以用来设置工程一般的选项及综合,适配,仿真和时序分析等。3.4 综合在工程中添加设计文件和设置引脚后,就要对工程进行综合,它主要是将hdl语言翻译成最基本的与门,或门,非门,ram和触发器等基本逻辑单元的链接关系,根据约束关系优
25、化所生成的门级逻辑链接,输出网络表文件,供布局布线用。3.5 布局布线quartus ii软件中的布局布线,是使用analysis & synthesis 生成的网络表文件,将工程的逻辑和时序要求与器件的可用资源相匹配,将每个逻辑单元分配给最好的逻辑单元,进行布线和时序,选择相应的互连路径和引脚分配,在设计中若执行了资源的分配,则布局布线器将这些资源与器件上的资源相匹配,尽力的满足该设计中其他约束条件,优化设计中的其余逻辑,如果没有对设计设置任何约束条件,则布局布线将自动优化设计。在布局布线之前,需要输入约束和设置布局布线器的参数,以更好地使布局布线结果满足设计的要求。3.6 仿真成功的布局布
26、线之后,只能说明当前选用的器件资源满足设计需要,但时序是否满足还需要仿真来观察,仿真的目的分为功能仿真和时序仿真,功能仿真是在设计输入之后,综合和布局布线之前的仿真,又称为行为仿真或前仿真,不考虑电路的逻辑和门的时间延时着重考虑电路在理想环境下的行为和设计构思的一致性。时序仿真又称为后仿真,是在综合,布局布线后,也即电路已经映射到特定的工艺环境后,考虑器件延时信息是通过反向标注时序延时信息实现的。功能仿真的目的是设计出能工作的电路,它不是一个孤立的过程,与综合,时序分析等形成一个反馈工作过程,只有过程收敛,之后的综合,布局布线等环节才有意义。所以,首先要保证功能仿真结果是正确的,不过孤立的功能
27、仿真通过也是没有意义的,如果在时序分析中发现时序不满足,需要更改代码,而功能仿真必须重新进行,quartus ii 软件中集成的仿真器可以对工程中的设计或设计的一部分进行仿真或时序仿真。3.7 编程与配置对设计进行成功的编译和功能及时序均满足要求后,要对altera器件进行编辑和配置了,quartus ii 对器件的编程和配置设计的流程如下所表示。1 建立编程文件:配置altera器件需要设置符合用户配置要求的文件类型和参数。assembler自动生成一个或多个programmer对象文件或sram对象文件,作为布局布线后的包含器件,逻辑单元和引脚分配的编程文件。2 器件的编程和配置:生成可编
28、程文件以后,即可对器件进行编程和配置以进行板级调试。programmer允许建立包含设计所用器件名称和选项的链式描述文件。对于允许对多器件进行编程和配置的编程模式,cdf还指定sof,pof,.jam文件和设计所用器件的自顶向下顺序及链中器件的顺序。4 出租车计价器的软件设计过程4.1 出租车计费器工作原理本设计中出租车有起动键,停止键和暂停键,起动键为一脉冲信号,用一个按键来实现,当有电平有变换时,表示该汽车已启动,在汽车运动的过程中,根据汽车的车轮上转过的圈数来计算车的车速,车子每转过一圈时,霍尔元件式传感器送给cpld一个脉冲信号(计数脉冲)来实现路程的计数,在根据相应的计费公式来算出车
29、费,同时显示在数码管上,在刚开始数码管显示的是起始价;当停止键为高电平时,表示汽车停止前进,同时停止发生脉冲,此时路程计数和车费清零;当暂停键为高电平时,表示汽车暂停并停止发生脉冲,此时路程计数和车费暂停。具体的计算方法:汽车按行驶的路程计费,起价5.00元,并在车行驶3km后按1.5元/km计费,当计费器达到或超过20元时,每一公里加收50%的车费,车停止和暂停不计费,车轮每旋转一周带动传感器传送一个脉冲信息到计价器,计价器将脉冲信号转化为公里数值,再转为金额显示。这样,我们有下面三式:s = 2 * 3.14 * r * n(1)p1= 5.00(s=3km)(2)p2=(s-3000)/
30、1000*1.5+5.00(s3km)(4) 其中,s为车辆路程;n为传感器传送的脉冲信号数;r为车辆驱动轮转动半径。由(1)式可知:当n为一可确定值时,s也为一确定值;由(2)或(3)或(4)式可知p1或p2也是一确定值。4.2 基本的设计思想本次设计主要分成两大模块,即控制模块和译码显示模块,控制模块包括控制模块和按键模块;译码显示模块包括译码模块,显示模块,显示模块包括路程显示和费用显示。4.2.1 控制模块1 按键部分按键主要是有起动,暂停和停止三个按键,当这三个按键按下时,相对应的电平变为高电平,把该电平传输给控制模块做相应的操作。其实现的过程主要是在硬件上做相应的设计就可以实现,如
31、电路图2。图2 按键模块2 控制部分控制部分主要是对各个按键的功能进行描述,当有键按下时,就会给控制模块送一个高电平,控制模块就运行相应的操作;控制模块还根据传感器送来的电平信号计算出汽车的里程数,并计算出相应的费用。代码段主要是用if的顺序语句,执行语句首先要进行if后的条件表达式的布尔值判断是否为真,若为真就顺序直性then后的顺序语句直至endif;否则跳过顺序语句,直接结束if语句的执行,如图3。图3 控制模块的框图其主要的vhdl代码如下:if stop=1 then 汽车停止 money_a:=0; 计费显示清零distance_a:=0; 路程显示清零dis:=0; 千米标志位n
32、umber:=0; 传感器脉冲计数器elsif start=1 then 汽车启动,计费显示起步价为5.00元,路程显示为零money_a:=500;distance_a:=0;dis:=0;number:=0;elsif pause=1 then汽车暂停时,各个变量的值保持不变money_a:= money_a;distance_a:= distance_a;dis:= dis;number:= number;elsif clkevent and clk=1 then if stop=0 and start=0 and pause=0 then汽车在正常工作过程中 if number=1 t
33、hen 假设车轮的周长为0.5米number:=0;distance_a:=distance_a+1; else number:=number+1; end if; if distance_a=999 then 当里程数为1km的时候 dis:=1; else dis:=0; end if; end if; if distance_a=3000 if money_a2000 and dis=1 then money_a:=money_a+225;当车费超过20元时,每公里加收50%的费用 end if; end if;end if;4.2.2 译码显示模块1 译码部分译码部分主要是将车费的十进
34、制和里程数的十进制转化为四位的十进制数,以便于显示模块将车费和里程数都是显示在四位的数码管上。译码的主要源程序代码还是用if语句来实现,如下:将车费的十进制转化为四位的十进制数 if combamoney_in then if comba_1=9 and comba_2=9 and comba_3=9 then comba_1:=”0000”; comba_2:=”0000”; comba_3:=”0000”; comba_4:= comba_4+1; comba:= comba+1; else comba_1=9 and comba_2=9 then comba_1:=”0000”; com
35、ba_2:=”0000”;comba_3:= comba_3+1; comba:= comba+1; else comba_1=9 then comba_1:=”0000”;comba_2:= comba_2+1; comba:= comba+1;else comba_2:= comba_2+1; comba:= comba+1; end if; elsif comba=money_in then money_one=comba_1; money_ten=comba_2; money_hun=comba_3; money_thomoney_in thencomba_1:=”0000”; com
36、ba_2:=”0000”; comba_3:=”0000”; comba_4:= ”0000”; comba:=0; end if;其里程数的十进制转化为四位的十进制数的方法和上面的车费的十进制转化为四位的十进制数是一样的,其代码段也如上所示。2 显示部分显示是实现将转化后的里程数和车费的四位十进制数显示在四位的数码管上,在本设计中,利用视觉暂留效应,采用动态扫描电路,节约了硬件资源和能源:硬件电路简单,软件工作量少,使产品的性价比高等优点。由于本模块采用动态扫描电路,所以在此之前要进行设置动态扫描的频率,其频率不能低于人视觉暂留现象的频率,视觉暂留现象指当人眼所看到的影像消失后,人眼仍能继续
37、保留其影像0.1-0.5秒左右的图像。本设计中系统时钟为2mhz的,在cpld中对其进行1khz的分频,再对数码管的地址进行扫描,其vhdl的代码如下: if clk20mevent and clk20m=1 then if count=999 then clk1kdata=m_one; dp=0; scandata=m_ten; dp=0; scandata=m_hun; dp=1; scandata=m_tho; dp=0; scandata=d_one; dp=0; scandata=d_ten; dp=0; scandata=d_hun; dp=1; scandata=d_tho; d
38、p=0; scansegsegsegsegsegsegsegsegsegsegseg=“0000000”;end case;出租车计价器软件设计的流程图见附录一,先进行“start”按键的判断,再进行“stop”按键的判断,再进行“pause”的判断,当状态为运动时,车轮转一圈时传感器的脉冲计数加一,当计数到达一定的要求时,里程数加一和计数的初值重新设定,其标志位为一,接着就对价钱按要求进行设置,最终让它们显示在数码管上。4.3 设计的整个过程出租车计价器的电路符号如下所表示,clk为传感器的脉冲信号输入端,clk24mhz为系统的时钟脉冲输入端,start为汽车的起动键,pause为汽车的暂
39、停键,stop为汽车的停止键,scan7.0为数码管地址选择信号输出端,seg6.0为7段显示控制信号输出端,dp为小数点信号输出端,如下图4为出租车计价器的电路符号。图4 出租车计价器的电路符号在软件quartus ii中,本设计采用混合编辑(自顶向下)的方法,先设计不同的模块,在原理图编辑器中连接个模块作为顶层设计,如下:1 在quartus ii中建立新的工程taximeter:2 建立一个空白的原理图文件,并命名为taximeter:3 创建图标模块,单击block tool按键,放置模块taxi,如下图5:图5 放置符号块4 设置模块:(1)在图5所示的符号块上单击鼠标右键,从弹出来
40、的菜单中选择“block properties”命令,在弹出的对话框“general”页面中的“name”栏中输入设计文件的名称,在“instance name”栏中输入模块的名称。(2)单击“i/os”页标签,如图6。在“name”栏中分别输入输入名称和输出名称;在“type”栏中分别选择与输入和输出相对应的类型,完成后单击“确定”按钮,结果如图7所示。图6“block properties”对话框的“i/os” 页面图7 完成模块的属性的设置5 添加模块的引线并设置属性:(1)在图7中taxi模块的左右两侧分别用4条引线和2条总线连接,如图8,在每条线靠近模块的一侧都有图标,双击它弹出“m
41、apper properties”对话框,在“general”页面的“type”栏中选择输入,输出类型。图8 添加模块的引线(2)单击“mappings”页标签,在“i/o on block”栏里选择引脚,在“signals in node”栏中输入连线节点的名称,最后单击“add”,最后结果如图9。图9 完成一条引线设置(3)同理,对其他引线用相同的方法进行设置,模块左侧为输入信号,右侧为输出信号,最终的结果如图10。图10 完成模块的引线的设置6 创建设计文件:在图12的符号块上单击鼠标右键,在弹出的菜单中“create design file from selected block”中的
42、“file type”中选择“vhdl”,单击“ok”按钮,在弹出生成模块文件的确认对话框中单击“确定”按钮后,进入vhdl文本编辑窗口,如图11。图11 vhdl文本编辑窗口7 输入代码:将图11中vhdl文本编辑窗口中的代码修改成所要设计的代码,一个模块的创建和设计就完成,本模块的代码见附录。8 添加其他模块,并完成顶层电路的设计:在本设计中再添加一个模块decoder,并设计其引脚,完成顶层电路的设计,其操作过程和taxi模块一样的,重复上面的操作,最终的结果如下图12所示。图12 顶层电路设计9 编译工程:在“taximeter.bdf”当前页面下单击快捷键“start compila
43、tion”对所设计的工程项目进行编译,再做相应的修改,直到编译能通过,没有错误为止。10 建立矢量波形文件:单击“file”菜单下的“new”命令,在弹出的“new”的对话框中选择“other file”页面,选择“vector waveform file”选项后单击“ok”按钮弹出如图13的矢量波形编辑窗口。图13 矢量波形编辑窗口11 添加引脚:(1)在图13中双击“name”下方的空白处,弹出“insert node or bus”对话框,单击对话框的“node finder”按钮后,弹出“node finder”对话框。(2)单击“list”按钮,在“node found”栏中列出设计
44、的引脚号,把所有需要仿真的输入输出信号复制到右边一侧。(3)单击“ok”按钮后,返回“insret node or bus”对话框,单击“ok”按钮,则选中的输入输出被添加到矢量波形编辑窗口。12 编辑输入信号并保存:在“name”下方对各个输入信号进行波形的设置。13 仿真波形:(1)功能仿真单击“assignments”菜单下的“setting”命令,在弹出的对话框中进行设置,在右侧“simulation mode”的下拉菜单中选择“functional”。设置完成以后需要生成功能仿真网络表,单击“processing”菜单下的“generate functional simulation
45、 netlist”命令自动生成,最后单击“start simulation”即可。(2)时序仿真单击“assignments”菜单下的“setting”命令,在弹出的对话框中进行设置,在右侧“simulation mode”的下拉菜单中选择“timing” ,最后单击“start simulation”即可。14 引脚的分配和下载:引脚的分配是为了对所设计的工程进行硬件的测试,将输入输出的信号锁定在器件的引脚上。单击“assignment”菜单下的“pins”命令,弹出的对话框进行设置,再将本次设计所生成的文件下载电路板上。4.4 各个模块的仿真结果4.4.1 控制模块仿真结果对控制模块tax
46、i进行仿真,其功能仿真结果如图17,时序仿真结果如图18,观察波形,当起动键(start)为一个脉冲时,表示汽车已起动,车费(money)显示初价,路程(distance)开始计数;当停止键(stop)为1时,表示汽车停止,车费(money)和路程(distance)都为0;当暂停键为1时,车费(money)和路程(distance)的值都保持不变。在图14和15中,先设定小车运行,再设为停止,接着再对暂停功能进行检测,其结果基本符合要求。图14 控制模块taxi功能仿真结果图15 控制模块taxi时序仿真结果4.4.2 译码显示模块仿真结果译码显示模块decoder的功能仿真结果如图16,时
47、序仿真结果如图17。在仿真之前先将数码管的分频系数改小,系统的时钟比传感器的脉冲压要高很多才能实时显示出车费和路程的变化,当输入车费和路程后,此时计数器开始计数,一直到与车费和路费相等为止,再转换成十进制数。数码管的控制端口scan不断的重复循环扫描8个数码管来显示车费和里程数,数码管显示的数据是以money和distance的数据为依据的,图16和图17基本符合要求,由于时钟的问题,seg有部分失真。图16 译码显示模块decoder的功能仿真结果图17 译码显示模块decoder的时序仿真结果5 出租车计价器存在的问题和改进工作5.1 出租车计价器存在的问题目前出租车计价器存在的问题主要有
48、:1 计价器作弊的问题,有些出租汽车司机在计价器上做手脚,多收乘客租金。常见的手段是:输入非法脉冲,计价器主要靠传感器发出的脉冲来计数,脉冲数的多少即汽车行驶里程的多少。作弊者利用这一原理,额外向计价器输入脉冲,其方法多种多样如利用车内收音机、电动剃须刀。2 毛刺(竞争冒险)现象。主要影响数字系统设计有效性和可靠性的主要因素,由于毛刺的存在,使得系统存在诸多潜在的不稳定因素,尤其是对尖峰脉冲或脉冲边沿敏感的电路就更是如此。毛刺通常主要对电路的触发清零端clr、触发复位端reset、cp端、锁存器的门控端和专用芯片的控制端等产生严重的影响,会使电路发生误动作,从而造成数字系统的逻辑混乱12。5.
49、2 改进方法1 相对于计价器作弊的问题,改进的方法:(1)传感器输出编码脉冲。传感器输出的脉冲其脉冲宽度、占空比等参数都是可变的,使计价器与传感器对号入座。(2)传感器输出加密脉冲,近年来由于电子技术的发展,已有商品化的加、解密器件供应,只要在传感器与计价器之间加入这种器件,就可以使计价器发出的加密脉冲,而其他传感器或脉冲一概不认13。2 在竞争冒险消除毛刺的主要的方法:(1)调整路径延时,毛刺归根到底是由于延时不同而引起的,因此只要让门电路的所有输入信号具有相同的延时,毛刺就不会产生。所以消除毛刺最原始、最直接的方法就是调整延时;(2)引入选通信号,由于竞争仅仅发生在输入信号变化转换的瞬间,
50、在稳定状态是没有竞争的,所以在输入信号稳定后进行选通就可以彻底消除尖峰脉冲。结束语本设计是基于出租车计价器的软件系统,采用了硬件描述语言vhdl进行编写源程序,分成四个模块:按键模块,控制模块,译码模块和显示模块。采用分模块设计的方法便于程序编写和在测试过程中的检查,提高各个部分功能的抗干扰性,能增加准确度。通过本次设计,我学到了很多东西,以前虽然在上课和实验室都接触过cpld和其学习的平台,但是接触的不是很深,仅是老师和课本的要求,自己并没有很主动很深入的掌握,这增加了毕业设计的难度,延长了做设计的时间。在做设计的过程,我发现自己的电子专业的基础还不是很扎实,理论知识的欠缺还是很多的,在做本设计之前我阅读很多有关的专著,期刊文章和电子文献。这让我知道查阅资料和利用工具书的重要性。作为电子信息工程的学生,由于专业涉及知识广,不仅要懂模拟电子、数字电子、protel 99 se,单片机还有cpld等方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能硬件更新合同:VR设备与AR眼镜
- 2025年低碳节能住宅项目买卖合同(附绿色建材使用承诺)
- 2025年度特色咖啡厅店面租赁合同(含咖啡制作技艺培训及品牌加盟)
- 2025年度智能电网变压器专业技术人员能力提升培训协议
- 2025年新能源汽车充电桩建设安全施工验收合同
- 合作产品保密协议
- 电梯安装工程公司员工保密合同
- 临床输血管理制度考核试题及答案
- 钢结构构件运输与吊装方案
- 风电项目风险评估与应对措施
- 杭汽12MW背压机组运行规程
- 小学综合教研组的工作计划PPT模板下载
- GB/T 7588.1-2020电梯制造与安装安全规范第1部分:乘客电梯和载货电梯
- GB/T 3406-2010石油甲苯
- GB/T 3098.9-2020紧固件机械性能有效力矩型钢锁紧螺母
- GB/T 15566.9-2012公共信息导向系统设置原则与要求第9部分:旅游景区
- GB/T 152.2-2014紧固件沉头螺钉用沉孔
- 幼儿园中班绘本:《我喜欢我的小毯子》
- 改革开放以来教育方面的变化课件
- DB44-T 2197-2019配电房运维服务规范-(高清现行)
- 山西省运城市各县区乡镇行政村村庄村名居民村民委员会明细
评论
0/150
提交评论