出租车计费器文档格式.docx
《出租车计费器文档格式.docx》由会员分享,可在线阅读,更多相关《出租车计费器文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
中文摘要和关键词、目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3)说明书(论文)手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;
打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
4)课程设计说明书(论文)装订顺序为:
封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
3.时间进度安排;
顺序
阶段日期
计划完成内容
备注
1
06.21-06.23
选题,搜集资料,熟悉设计环境
2
06.24-06.28
调试程序
3
06.28-06.29
仿真程序
4
06.30-07.01
撰写课程设计说明书(论文)
5
07.02
答辩
摘要
随着微电子技术和计算机的飞速发展与进步,使得电子系统的设计和应用进入了一个全新时代。
传统的手工设计过程正在被先进的电子设计自动化(EDA)技术所取代。
目前EDA技术已经成为支撑现代电子设计的通用平台,并且逐步向支持系统级设计发展。
只有以硬件描述语言(HDL)和逻辑综合为基础的自顶向下的设计方法才能满足日趋复杂的数字系统设计需求。
出租车行业的逐步发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定,计费准确有防作弊功能;
而且由于油价的不稳定因素,计费系统需要经常调整,因此用户要求计费器能在不改变硬件的情况下,方便修改计费系统.
该系统利用VHDL语言,它可以利用数字电路与系统的描述、仿真和自动设计,并以MAX+PLUSⅡ软件作为开发平台,设计了出租车计费器系统程序并进行了程序仿真。
使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目。
关键词计费器,VHDL
Abstract
Microelectronicsandcomputertechnologyalongwiththerapiddevelopmentandprogress,makingthedesignofelectronicsystemsandapplicationshaveenteredanewera.Thetraditionalmanualdesignprocessisbeingadvancedelectronicdesignautomation(EDA)technologytoreplace.EDAiscurrentlysupportingmoderntechnologyhasbecometheuniversalplatformforelectronicdesign,andstepbysteptosupportthedevelopmentofsystem-leveldesign.Onlytohardwaredescriptionlanguage(HDL)andlogicsynthesis-basedtop-downdesignmethodologytomeettheincreasinglycomplexneedsofdigitalsystemdesign.Theprogressivedevelopmentofthetaxiindustry,thetaximeterisgettinghigherandhigherrequirements,theuserrequiresnotonlytheperformanceofthestabilityofbilling,billingandaccurateanti-cheatfunctions;
andasaresultoftheinstabilityinoilprices,billingsystemtheneedforregularadjustmentofthemetersothatuserscanrequestnottochangethehardwaretofacilitatethebillingsystemmodifications.
ThesystemistheuseofVHDLlanguage,itcanmakeuseofdigitalcircuitsandsystemdescription,simulationandautomaticdesign,andMAX+PLUSⅡsoftwareasadevelopmentplatformdesignedbillingsystemprocedurestaxiandcarriedoutasimulationprogram.Totheachievementofpre-billingandsimulation,aswellascartostart,stop,pauseandotherfunctions,anddynamicscanshowsthenumberoffares.
KeyWords:
chargemachine,VHDL
目录
摘要I
AbstractII
1引 言1
1.1课题的意义1
1.2课程设计的基本要求1
1.3本设计的基本原理描述1
1.4程设计的主要工作内容和结构安排2
1.5EDA设计技术的发展史2
1.5.1EDA设计技术的主要内容3
1.5.2EDA设计技术的基本特征3
2系统设计5
2.1本课程设计的基本方案5
2.2层次设计的方案6
2.2.1分频模块的设计6
2.2.2计量模块的设计6
2.2.3译码模块的设计6
2.3计费器电路的顶层设计和仿真6
2.3.1出租车自动记费系统的主体电路设计及仿真6
2.3.2扫描显示电路设计及仿真10
3出租车计费器顶层电路的设计和仿真16
结论17
致谢18
参考文献19
附录20
1引 言
1.1课题的意义
随着电子技术的发展,目前数字系统的设计科技直接面向用户需求,根据系统的行为和功能要求,自顶向下地逐层完成相应的描述、综合、优化、仿真与验证,直至对器件的配置/编程;
这种在系统编程技术(ISP)的设计方法,可以大大地缩短系统的开发周期.而由美国国防部开发的VHDL语言已由IEEE标准化,并成为国际上通用的硬件描述语言.
计费系统在各大,中城市出租车使用中越来越广泛.针对现有计费系统通用性差的缺陷,采用VHDL语言可以开发出租车计费系统:
该计费系统的可靠性高,成本低,通用性强.该系统在不改变硬件电路的前提下,具有可以重建系统的功能:
采用完全相同电路结构,只要根据各地区的需求在VHDL程序中设置个参数,就可以适应各地区出租车不同计费标准的需要,还可根据各地区需求增加其他功能.
1.2课程设计的基本要求
设计一个出租车计价器,该计价器的记费系统:
车起步开始计费。
首先显示起步价(首次设计起步费为10.0元),车在行驶3km以内,等待累计时间3分钟内,只收起步价10.0元。
车行驶超过3km后,按每公里1.6元计费(在10.0元基础上每行驶1km车费加1.6元),车费依次累加。
等待累计时间超过2分钟,按每分钟1元计费(在10.0元基础上每等待1分钟加1.5元),车费依次累加。
并且能显示行驶公里数,等待累积时间,总费用.用两位数码管显示总里程,最大为99公里;
用两位数码管显示等待时间,最大值为59min.
总费用=起步费+(里程-3km)*里程单价+等待时间*等待单价
1.3本设计的基本原理描述
考虑到目前电子产品的微型化以及模块化,该系统以CPLD芯片为核心硬件,主要采用EDA(电子设计自动化)技术通过其特有的VHDL硬件描述语言对其进行程序编写,以软件设计实现对外界数据的采集反馈来完成其主要的计价,计程,计时功能,并且见所需要的数据信息结合硬件设备想外围电路给予输出.
各部分主要功能包括:
信号输入模块,数据模块(将记费模块输出的车费和路程转换成4位的十进制数据),译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动译码管;
数码管显示模块将公里数,累计等待时间和记费金额均用数码管显示。
1.4程设计的主要工作内容和结构安排
本文主要研究的是出租车计费系统中各个模块的设计,并为后续研究奠定基础。
本文的章节结构如下:
第一章绪论,其中介绍了课题背景,语音识别的发展与现状,以及语音识别的分类方法。
第二章对计费器的原理及实现进行了深入的研究,其中包括时间模块,计费模块,计程模块三大部分等。
本文最后为结论。
1.5EDA设计技术的发展史
EDA技术伴随着计算机,集成电路,电子系统设计的发展,经历了计算机辅助设计(Computer-AidedDesign,CAD),计算机辅助工程设计(Computer-AidedEngineeringDesign,CAED)和电子设计自动化(EDA)3个发展阶段。
(1)20世纪70年代的计算机辅助设计(CAD)阶段
早期的电子系统硬件设计采用的是分立元件,随着集成电路的出现和应用,硬件设计进入到大量选用中小规模标准集成电路阶段。
人们将这些器件焊接在电路板上,做成初级电子系统,对电子系统的调试是在组装好的印刷电路板(PrintedCircuitBoard,PCB)上进行的。
由于设计师对图形符号使用数量有限,传统的手工布图方法无法满足产品复杂性的要求,更不能满足工作效率的要求。
这时,人们开始将产品设计过程中高度重复性的繁杂劳动,如布图布线工作,用二维图形编辑与分析的CAD工具替代,最具代表性的产品就是美国Accel公司开发的Tango布线软件。
由于PCB布图布线工具受到计算机工作平台的制约,其支持的设计工作有限且性能比较差。
20世纪70年代,可以说是EDA技术发展的初期。
(2)20世纪80年代的计算机辅助工程设计(CAED)阶段
初级阶段的硬件设计是用大量不同型号的标准芯片实现电子系统设计的。
随着微电子工艺的发展,相继出现了集成上万只晶体管的微处理器,集成几十万直到上百万存储单元的随机存储器和只读存储器。
此外,支持定制单元电路设计的硅编辑,掩模编程的门阵列,如标准单元的半定制设计方法以及可编程逻辑器件(PAL器件和GAL器件)等一系列微结构和微电子学的研究成果都为电子系统的设计提供了新天地。
因此可以用少数几种通用的标准芯片实现电子系统的设计。
(3)20世纪90年代电子设计自动化(EDA)阶段
20世纪90年代,设计师逐步从使用硬件转向设计硬件,从单个电子产品开发转向系统级电子产品开发片上系统(SOC)。
因此EDA工具是以系统级设计为核心,包括系统行为级描述与结构综合,系统仿真与测试验证,系统划分与指标分配,系统决策与文件生成等一整套的电子设计自动化工具。
1.5.1EDA设计技术的主要内容
如果把EDA的主要内容和传统绘画过程相比较,那么在开始绘画之前,我们必须准备好纸和笔墨,这里的白纸就相当于我们的设计载体——大规模可编程逻辑器件;
绘画所使用的笔墨就好像是我们的软件开发工具;
绘画的方式相当于我们的输入方式。
由此可见,EDA技术主要包括三部分的内容:
①大规模可编程逻辑器件(白纸);
②软件开发工具(笔墨);
③输入方式(方式)。
1.5.2EDA设计技术的基本特征
一般来说,EDA设计技术就是指以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程逻辑器件为实验载体,以ASIC和SOC芯片为设计目标,以电子系统设计为应用方向的电子产品自动化设计过程。
通常,EDA设计技术的基本特征主要包括以下几方面:
(1)自顶向下的设计方法
传统的硬件电路设计中常常采用自底向上的设计方法,它首先用来定义设计系统的子模块,同时还进行子模块的具体设计,然后再根据设计的总体要求,将各个功能子模块合成,以完成硬件的总体设计。
随着数字系统规模的不断扩大,自顶向下的设计方法由于其独特的优越性,从而在各种设计方法中脱颖而出,成为目前数字系统设计中常用的设计方法。
自顶向下的设计方法实际上就是基于芯片的系统设计方法,它在功能划分,任务分配和设计管理上等方面具有一定的优越性。
与传统的自底向上的设计方法比,自顶向下的设计方法有助于在设计的早期发现结构设计中的错误,提高设计的一次成功率。
EDA技术的基本特征之一是采用自顶向下的设计方法。
自顶向下的设计方法就是从设计的总体要求出发,自顶向下的将设计划分为不同的功能子模块,每个功能子模块完成一定的逻辑功能。
这种设计方法首先设计顶层模块,进行顶层模块的设计,然后将顶层模块中逻辑功能划分成不同的功能子模块,再进行功能子模块的详细设计。
(2)硬件描述语言
随着大规模专用集成电路(ASIC)的开发和研制,为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发时间,各ASIC研制和生产厂家相继开发了用于各自目的的硬件描述语言,采用硬件描述语言进行电子系统设计是当前发展的趋势。
所谓硬件描述语言就是指对硬件电路进行行为描述,寄存器传输描述或者结构化描述的一种新兴语言,它能比传统的电路原理图更有效的表示硬件电路的特性。
硬件描述语言的特征是科技借鉴高级程序语言设计的具体方法,从而可以对硬件电路的行为和功能结构进行高度抽象化的描述。
硬件描述语言也可以对硬件电路的设计进行不同层次,不同领域的模块验证和综合优化等处理,从而实现硬件电路设计的高度自动化。
采用硬件描述语言来设计硬件电路可以大大节省人力和物力,缩短研制周期,适应于小批量产品开发,也适用于大批量产品的样品研制,因而得到了广泛的应用。
在目前的电子设计中,设计人员采用的最有代表性的硬件描述语言是美国国防部开发的VHDL语言。
(3)逻辑综合和优化功能
逻辑综合功能是将较高层次的抽象描述转化到较低级别抽象的一种方法,简单地说,就是将设计的描述转化成底层电路表示。
在进行综合时,综合程序将设计描述转化为数据结构,将设计的行为描述转化为寄存器传输级(RTL)描述,然后将RTL描述转换到门级。
从RTL描述转换到门级通常需要3步:
首先将RTL描述转化为布尔描述,然后通过一个优化过程将布尔描述转化成优化的布尔描述,最后将优化的布尔描述映射到门级,即生成网表或一种逻辑方程。
优化功能是指根据布尔方程功能等效的原则,利用逻辑综合生成的结果采用更小更快的综合结果代替一些复杂的单元,然后根据制定的目标可以映射成新的网表或者一组逻辑方程。
设计人员经常采用的一种优化方法是先将非优化的布尔描述转换成最低级描述(pla格式),然后再采用pla优化技术对这种描述进行优化,最后再尝试使用共享公共项去减少逻辑门的个数。
优化的作用是将电路设计的时延缩短到最小和有效利用资源。
几乎所有的EDA综合工具都可以利用约束条件对电路设计进行优化。
一般情况下,常用约束条件主要包括时间约束和面积约束。
(4)开放性和标准化
一般来说,框架是一种软件平台结构,它的主要功能是为EDA工具提供相应的操作环境。
框架的关键在于提供与硬件平台无关的图形用户界面,工具之间的通信,设计数据和设计流程的管理等,另外框架还包括各种与数据库相关的服务项目。
任何一个EDA工具系统只要建立了一个符合标准的开放式框架结构,那么它就可以接纳其他厂商的EDA工具一起进行相应的设计工作。
作为一套使用和配置EDA工具软件包的规范,框架可以实现各种EDA工具间的优化组合,并集成在一个易于管理的统一的环境之下,目的是实现资源共享。
随着硬件描述语言等设计数据格式的逐步标准化,不同设计风格和应用的要求导致各具特色的EDA工具被集成在同一个工作站上,从而使EDA框架标准化。
如今,新的EDA工具系统不仅能够实现高层次的自动综合逻辑和测试码的生成,而且还可以用各个仿真器对同一设计进行协同仿真,进一步提高EDA系统的工作效率和设计的正确性。
2系统设计
2.1本课程设计的基本方案
CPLD具有用户可编程,时序可预测,速度高和容易使用等优点.而且CPLD的可编程性,使修改和产品升级变的方便.用户可以根据原理图或硬件面熟语言自由地设计一个数字系统.然后通过软件仿真事先验证设计的正确性.采用VHDL语言进行软件编程,利用MAX+PLUSⅡ软件平台进行设计输入,项目处理,项目效验及器件编程等.设计出入可以采用原理图输入,文本输入,波形输入或第三方EDA工具形成.
根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块,计量模块,译码和动态扫描显示模块。
图2.1出租车自动计费器系统框图
2.2层次设计的方案
2.2.1分频模块的设计
分频模块对频率为240HZ的输入脉冲进行分频,得到的频率为16HZ、15HZ和1HZ的3中频率。
该模块产生频率信号用于计费,每个1HZ脉冲为0.1元计费控制,15HZ信号为1.5元的计费控制,16HZ信号为1.6元计费控制。
2.2.2计量模块的设计
计量控制模块是出租车自动计费器系统的主题部分,该模块主要完成等待计时功能,计价功能,计程功能,同时产生3分钟的等待计时使能控制信号en1、行程3公里外的使能控制信号en0。
其中计价功能主要完成的任务是:
行程3公里内,切等待累计在3分钟内,起步费为10元;
3公里外以每公里1.6元计费,等待累计时间3分钟外以每分钟1元计费。
计时功能主要完成的任务是:
计算乘客的等待累计时间,计时器的量程为59分,满量自动归零。
计程功能主要完成的任务是:
计算乘客所行驶的公里数,计程器的量程为99公里,满量自动归零。
2.2.3译码模块的设计
该模块经过8选1选择器将计费器数据、计时数据、计程数据动态显示输出。
其中计费数据送入显示译码模块进行译码,最后送至以百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;
计时数据送入显示译码模块进行译码,最后送至一分为单位对应的数码管上显示,最大显示为59分;
计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。
2.3计费器电路的顶层设计和仿真
2.3.1出租车自动记费系统的主体电路设计及仿真
根据上述各个模块功能描述,该电路的核心部分就是记数分频电路,通过VHDL语言的顺序语句IF-THEN-ELSE根据一个或一组条件来选择某一特定的执行通道,生成计费数据,计时数据和里程数据
具体程序如下:
LIBRARYIEEE;
USEIEEE.std_logic_1164.all;
USEIEEE.std_logic_unsigned.all;
USEIEEE.std_logic_arith.all;
ENTITYtaxiis
port(clk_240:
instd_logic;
start:
stop:
fin:
cha3,cha2,cha1,cha0:
outstd_logic_vector(3downto0);
km1,km0:
min1,min0:
outstd_logic_vector(3downto0));
endtaxi;
architecturebehavoftaxiis
signalf_15,f_16,f_1:
std_logic;
signalq_15:
integerrange0to15;
signalq_16:
integerrange0to14;
signalq_1:
integerrange0to239;
signalw:
integerrange0to59;
signalc3,c2,c1,c0:
std_logic_vector(3downto0);
signalk1,k0:
signalm1:
std_logic_vector(2downto0);
signalm0:
signalen1,en0,f:
begin
feipin:
process(clk_240,start)
begin
ifclk_240'
eventandclk_240='
1'
then
ifstart='
0'
then
q_15<
=0;
q_16<
f_15<
='
;
f_16<
f_1<
f<
else
ifq_15=15thenq_15<
elseq_15<
=q_15+1;
endif;
ifq_16=14thenq_16<
elseq_16<
=q_16+1;
endif;
ifq_1=239thenq_1<
elseq_1<
=q_1+1;
ifen1='
thenf<
=f_15;
elsifen0='
=f_16;
elsef<
endprocess;
main:
process(f_1)
iff_1'
eventandf_1='
w<
en1<
en0<
m1<
="
000"
m0<
0000"
k1<
k0<
elsifstop='
ifw=59thenw<
ifm0="
1001"
thenm0<
ifm1<