出租车计费器设计.docx

上传人:b****5 文档编号:6587828 上传时间:2023-01-08 格式:DOCX 页数:20 大小:898.25KB
下载 相关 举报
出租车计费器设计.docx_第1页
第1页 / 共20页
出租车计费器设计.docx_第2页
第2页 / 共20页
出租车计费器设计.docx_第3页
第3页 / 共20页
出租车计费器设计.docx_第4页
第4页 / 共20页
出租车计费器设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

出租车计费器设计.docx

《出租车计费器设计.docx》由会员分享,可在线阅读,更多相关《出租车计费器设计.docx(20页珍藏版)》请在冰豆网上搜索。

出租车计费器设计.docx

出租车计费器设计

唐山学院

EDA技术课程设计

 

题目出租车计费器设计

系(部)信息工程系

班级10通信本2班

姓名李红辉

学号4100214218

指导教师申彦春、姚明林

2012年12月24日至12月28日共1周

EDA技术课程设计任务书

一、设计题目、内容及要求

设计题目:

出租车计费器设计

内容及要求:

(1)按行驶里程收费,起步价为6.00元,当里程小于3公里时,按照起步价计费,车行驶超过3公里后按1.2元/公里收费,停车等待累积时间超过2分钟,按照每分钟1.5元计费。

(2)实现车辆行驶的模拟:

能模拟汽车的启动,停止,暂停等状态。

(3)计费器显示部分设计:

用LED数码管实时显示车费和汽车行驶里程,用两位数字显示汽车行驶里程,显示方式为“XX”,单位为km。

计程范围为0—99km,计程分辨率为1km;用五位数字显示总费用,显示方式为“XXX.X”,单价为元。

计价范围为0—999.9元,计价分辨率为0.1元。

设计要求:

(1)根据任务要求确定电路各功能模块;

(2)写出设计程序;

(3)分析时序仿真结果;

(4)提交设计总结。

二、设计原始资料

QuartusⅡ软件;EDA实验箱;计算机一台;

三、要求的设计成果(课程设计说明书、设计实物、图纸等)

课程设计说明书1份,不少于2000字,应包含设计原理分析、相关软件介绍、仿真波形分析,实验箱下载验证等。

四、进程安排

周1-周3:

查阅资料,上机编写并调试设计程序;

周4:

整理、撰写说明书;

周5:

课程设计答辩并提交设计说明书。

五、主要参考资料

[1].VokneiA.Pedroni.《VHDL数字电路设计教程》.电子工业出版社,2008.5

[2].潘松,黄继业.《EDA技术实用教程》(第二版).科学出版社,2005.2

[3].焦素敏.《EDA应用技术》.清华大学出版社,2002.4

指导教师(签名):

教研室主任(签名):

课程设计成绩评定表

出勤

情况

出勤天数

缺勤天数

出勤情况及设计过程表现(20分)

课设答辩(20分)

设计成果(60分)

总成绩(100分)

提问

(答辩)

问题

情况

 

 

指导教师签名:

年月日

目录

前言1

1设计任务与要求2

1.1设计任务2

1.2设计要求2

2系统组成3

3主要模块功能的设计4

3.1分频模块4

3.2计量模块4

3.3控制模块5

3.4计费模块5

3.5译码显示模块5

3.6顶层模块6

4程序调试运行7

4.1分频模块源程序及仿真图7

4.2计量模块源程序及仿真图8

4.3控制模块源程序及仿真图9

4.4计费模块源程序及仿真图10

4.5程序最终功能实现仿真波形12

4.6引脚设置13

5设计心得14

参考文献15

附录16

前言

在科技高度发展的今天,集成电路和计算机应用得到了高速发展。

尤其是计算机应用的发展。

它在人们日常生活已逐渐崭露头角。

大多数电子产品多是由计算机电路组成。

而且将来的不久他们的身影将会更频繁的出现在我们身边。

本设计利用VHDL语言、CPLD设计出租车计费系统,以QuartusⅡ软件作为开发平台,设计了出租车计费器系统程序并进行了程序仿真。

使其实现计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目和路程数目。

1.VHDL诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(TheInstituteofElectricalandElectronics)的一种工业标准硬件描叙语言。

VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适合用于可编程逻辑芯片的应用设计。

除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。

VHDL的程序特点是将一项工程设计,或称为设计实体(可以是个元件、电路模块或一个系统)分成外部(或称可示部分,即端口)和内部(或称为不可视部分,即结构体)两部分,外部负责对设计实体和端口引脚命名和说明,内部负责对模块功能和算法进行描述。

在对一个设计实体定义了外部界面后,一旦其内部结构、功能开发完成,即可生成共享功能模块,这就意味着,在顶层综合或其他设计中可以直接调用这个实体模块。

VHDL具有较强的行为描述能力,可避开具体的器件结构,从逻辑功能和行为上进行描述和设计。

2.QuartusⅡ简介:

QuartusII是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。

该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。

QuartusII是Altera公司推出的CPLD/FPGA开发工具,QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:

可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片平面布局连线编辑;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。

1设计任务与要求

1.1设计任务

本课题要求设计车租车自动计价器,能基本实现自动计价的功能。

1.2设计要求

本出租车计价器的计费系统:

行程3公里内,且等待累计时间2分钟内,起步费为6元;3公里外以每公里1.2元计费,等待累计时间2分钟外以每分钟1.5元计费。

并能显示行驶公里数、总费用。

设计的主要技术指标如下:

1.计价范围:

0~999.9元计价分辨率:

0.1元

2.计程范围:

0~99公里计程分辨率:

1公里

3.计时范围:

0~59分计时分辨率:

1分

 

2系统组成

出租车自动计价器的系统方框图如图2-1所示:

它有分频模块、控制模块、计时模块、计费模块及显示等模块组成。

图2-1出租车自动计价器的系统方框图

 

3主要模块功能的设计

3.1分频模块

由于试验箱上没有12Hz和15Hz的整数倍时钟信号,因此我们采用频率较大的240Hz进行分频,以近似得到12Hz、15Hz和1Hz的时钟频率。

本设计中通过以上三种不同频率的脉冲信号实现在计程车在行驶、等待两种情况下的不同计费。

分频模块元件如图3-1所示:

图3-1分频模块元件图

3.2计量模块

计量模块主要完成计时和计程功能。

计时部分:

计算乘客的等待累积时间,当等待时间大于2min时,本模块中en1使能信号变为1;当clk1每来一个上升沿,计时器就自增1,计时器的量程为59min,满量程后自动归零。

计程部分:

计算乘客所行驶的公里数,当行驶里程大于3km时,本模块中en0使能信号变为1;当clk1每来一个上升沿,计程器就自增1,计程器的量程为99km,满量程后自动归零。

计量模块元件框图3-2所示:

图3-2计量模块元件图

3.3控制模块

本模块主要是通过计量模块产生的两个不同的输入使能信号en0、en1,对两个分频模块输出的12HZ、15HZ的脉冲进行选择输出的过程;本模块实现了双脉冲的二选一;最终目的为了计费模块中对行驶过程中不同的时段进行计价。

控制模块元件如图3-3所示:

图3-3控制模块元件图

3.4计费模块

当计费信号Start一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同单价的时段进行计费。

即行程在3km内,而且等待累积时间小于2min则为起步价6元;3km外以每公里按1.2元计费,等待累积时间超过2min则按每分钟1.5元计费。

c0、c1、c2、c3分别表示费用的显示。

计费模块元件如图3-4所示:

图3-4计费模块元件图

3.5译码显示模块

译码显示模块完成计价、计时和计程数据显示。

计费数据送入译码显示模块进行译码,最后送至以百元、十元、元、角为单位对应的数码管上显示。

计时数据送入译码显示模块进行译码,最后送至以分为单位对应的数码管上显示。

计程数据送入译码显示模块进行译码,最后送至以km为单位的数码管上显示。

由于本次课程设计所用实验箱上自带数码管译码显示电路,因此不需再写译码程序,选定模式直接管脚锁定在对用的数码管上即可实现。

3.6顶层模块

本模块用图形输入法实现出租车的计费器系统设计,将各个模块组合在一起。

顶层模块元件如图3-5所示:

图3-5顶层模块元件图

 

4程序调试运行

4.1分频模块源程序及仿真图

architecturert1offenpinis

signalq_12:

integerrange0to9;--定义中间信号量

signalq_15:

integerrange0to7;

signalq_1:

integerrange0to119;

begin

process(clk_240)

begin

if(clk_240'eventandclk_240='1')then

ifq_12=9thenq_12<=0;clk_12<=notclk_12;

elseq_12<=q_12+1;

endif;--得12hz频率信号

ifq_15=7thenq_15<=0;clk_15<=notclk_15;

elseq_15<=q_15+1;

endif;--得15hz频率信号

ifq_1=119thenq_1<=0;clk_1<=notclk_15;

elseq_1<=q_1+1;

endif;--得1hz频率信号

endif;

endprocess;

endrt1;

分频模块波形仿真图如图4-1:

图4-1分频模块仿真波形图

由图4-1可知当输入240Hz的clk脉冲信号时clk每出现240个脉冲时q1、q15、q12分别出现1、15、12个相当于计费1元、1.5元、1.2元帮助计费。

4.2计量模块源程序及仿真图

architecturert2ofjiliangis

signalw:

integerrange0to59;--计时范围0~59

begin

process(clk_1)

begin

ifclk_1'eventandclk_1='1'then

ifstart='0'then

w<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";k1<="0000";k0<="0000";

elsifstop='1'then--计时开始信号

ifw=59thenw<=0;

elsew<=w+1;

endif;

ifm0="1001"thenm0<="0000";

ifm1="0101"thenm1<="0000";

elsem1<=m1+1;

endif;

elsem0<=m0+1;

endif;

ifstop='1'thenen0<='0';

ifm1&m0>"00000001"thenen1<='1';--若等待时间大于2min则en1置1

elseen1<='0';

endif;

endif;

elsiffin='1'then--里程计数开始

ifk0="1001"thenk0<="0000";

ifk1="1001"thenk1<="0000";--计程范围0~99

elsek1<=k1+1;

endif;

elsek0<=k0+1;

endif;

ifstop='0'thenen1<='0';

ifk1&k0>"00000010"thenen0<='1';--若行驶里程大于3km则en0置1

elseen0<='0';

endif;

endif;

endif;

endif;

ifstop='0'andfin='0'then

en0<='0';en1<='0';

endif;

endprocess;

endrt2;

计量模块波形仿真图如图4-2所示:

图4-2计量模块波形仿真图

由波形可知,Start置1程序始终处于计费状态,当fin脉冲到来时k0和k1进入计程状态,且k0每次满9就向k1进位,超过3km时en0就变为高电平;同理,当stop由0置为1时开始由计程进入等待状态,fin脉冲归为0里程计数停止,等待时间开始计时,m0每次满9就向m1进位,超过2min时en1就变为高电平。

4.3控制模块源程序及仿真图

architecturert3ofkongzhiis

begin

process(en0,en1)

begin

ifen0='1'then--实现二选一功能

clk_out<=clk_in12;

elsifen1='1'then

clk_out<=clk_in15;

elseclk_out<=null;

endif;

endprocess;

endrt3;

控制模块仿真波形如图4-3所示:

图4-3控制模块仿真波形图

由图可知当en0=1时clk_out为clk_15的脉冲,en1=1时为clk_12的脉冲。

4.4计费模块源程序及仿真图

architecturert4ofjifeiis

begin

process(clk_out,start)

begin

ifstart='0'thenc3<="0000";c2<="0000";c1<="0110";c0<="0000";--起步价6元

elsifclk_out'eventandclk_out='1'then

ifc0="1001"thenc0<="0000";

ifc1="1001"thenc1<="0000";

ifc2="1001"thenc2<="0000";

ifc3="1001"thenc3<="0000";--计价范围0~999.9元

elsec3<=c3+1;

endif;

elsec2<=c2+1;

endif;

elsec1<=c1+1;

endif;

elsec0<=c0+1;

endif;

endif;

endprocess;

endrt4;

计费模块仿真波形如图4-4所示:

图4-4计费模块仿真波形图

由图可知当处于计费状态时,随着clk2的高电平的到来,计费起步价为6元。

c0满9向c1进位,c1满9向c2产生进位,依次逐级进位,从而完成计费功能。

4.5程序最终功能实现仿真波形

程序最终功能实现仿真波形如图4-5所示:

图4-5程序最终仿真波形图

由图中可以看出,当fin脉冲信号到来时,实现了行驶计费,当行驶里程超过三公里,则再按每公里1.2元计费;当stop为高电平,即进入等待计时收费;当等待时间超过2min时,每过一分钟加1.5元,即为实现每等一分钟收费1.5元。

当stop为电平时所有数值清零,只显示初始值6元,但本次仿真中等待时间为7分钟,行驶里程为33km,应收取费用值为49.3元。

结果验证:

出租车的起步价是6元,收费为6+(33km—3km)*1.2+(7-2)*1.5=49.5元。

仿真结果于计算结果几乎相同,因存在时钟信号延迟等误差,所以仿真结果正确。

4.6引脚设置

做硬件验证之前需要清楚实验板上各键与各信号的链接情况,参照资料得出本设计中各引脚的对应情况如下。

引脚设置如图4-6所示:

图4-6引脚设置图

 

5设计心得

这次课程设计是出租车计费器,通过这次课程设计对EDA技术有了更进一步的熟悉,VHDL语言和C语言等其他语言还是有很大的区别。

VHDL是EDA技术的重要组成部分,其具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化、结构化设计方面,表现了强大的生命力和应用潜力。

其主要的也是最大的优点就在于设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。

其实,在实际操作中发现设计和课本上的知识有很大联系,但又高于课本,一个简单的原理要把它应用以及和其他功能综合起来就有些困难。

通过设计也巩固了我们的书本知识以及通过借阅书籍和上网查找资料,也丰富了自己对EDA的了解。

但是,本次设计也存在一些不足,暴露了自己对EDA的掌握还有所欠缺。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.通过这次设计,本人在多方面都有所提高。

同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。

在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

不经意间,为期一周的课程设计已经接近尾声。

在这次设计中,我学到了在设计这种思维很严密的报告中一定要按照老师给的要求和步骤一步一步的走下去。

自己在动手之前一定要先有一个总体的设计,总的框架图,这样在设计中不至于手忙脚乱的或者丢三落四。

同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。

在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次设计的每个细节和每个数据,都离不开老师您的细心指导。

而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。

 

参考文献

[1]VoleiA.Pedroni.《VHDL数字电路设计教程》.电子工业出版社,2010.11.

[2]孟庆海,张洲.VHDL基础及经典实例开发.西安:

西安交通大学出版社,2008.4

[3]潘松,黄继业.EDA技术与VHDL[M].清华大学出版社.220-228

[4]江国强.EDA技术与应用[M].电子工业出版社.310-312

[5]蒋小燕,余伟钧,张立臣.《EDA技术及VHDL》.2008.12.

[6]焦素敏.《EDA应用技术》.清华大学出版社,2002.4

 

附录

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityjijiaqiis

port(clk_240:

instd_logic;

clk_12:

bufferstd_logic;

clk_1:

bufferstd_logic;

clk_15:

bufferstd_logic;

start:

instd_logic;

fin:

instd_logic;

stop:

instd_logic;

en1,en0:

bufferstd_logic;

k1,k0:

bufferstd_logic_vector(3downto0);

m1,m0:

bufferstd_logic_vector(3downto0);

clk_out:

bufferstd_logic;

c0,c1,c2,c3:

bufferstd_logic_vector(3downto0));

endjijiaqi;

architecturert1ofjijiaqiis

signalq_12:

integerrange0to9;

signalq_15:

integerrange0to7;

signalq_1:

integerrange0to119;

signalw:

integerrange0to59;

begin

process(clk_240)

begin

if(clk_240'eventandclk_240='1')then

ifq_12=9thenq_12<=0;clk_12<=notclk_12;

elseq_12<=q_12+1;

endif;

ifq_15=7thenq_15<=0;clk_15<=notclk_15;

elseq_15<=q_15+1;

endif;

ifq_1=119thenq_1<=0;clk_1<=notclk_1;

elseq_1<=q_1+1;

endif;

endif;

endprocess;

process(clk_1)

begin

ifclk_1'eventandclk_1='1'then

ifstart='0'then

w<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";k1<="0000";k0<="0000";

elsifstop='1'then

ifw=59thenw<=0;

elsew<=w+1;

endif;

ifm0="1001"thenm0<="0000";

ifm1="0101"thenm1<="0000";

elsem1<=m1+1;

endif;

elsem0<=m0+1;

endif;

ifstop='1'thenen0<='0';

ifm1&m0>"00000001"thenen1<='1';

elseen1<='0';

endif;

endif;

elsiffin='1'then

ifk0="1001"thenk0<="0000";

ifk1="1001"thenk1<="0000";

elsek1<=k1+1;

endif;

elsek0<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1