EDA课设 出租车计费器.docx

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

EDA课设 出租车计费器.docx

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

EDA课设 出租车计费器.docx

EDA课设出租车计费器

目 录

1引言ﻩ1

2QuartusII介绍2

3出租车计价器设计ﻩ3

3.1出租车计价器的设计原理3

3.2各模块功能模块设计ﻩ3

3.2.1分频模块ﻩ4

3.2.2计量模块ﻩ4

3.2.3控制模块4

3.2.4计费模块ﻩ4

3.2.5译码显示模块5

3.2.6顶层模块ﻩ5

3.3硬件仿真ﻩ6

4总结ﻩ7

参考文献ﻩ8

附录9

1引言

本设计是一个简易的出租车计费系统,实现计价功能,计费标准为按行程里程收费,起步价为6.00元,当里程小于3公里时,按照起价计费,车行超过3公里后在按1.2元/公里收费,等待累积时间超过2min,按照每分钟1.5元计费。

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

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

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

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

此计费器要设有一个由司机控制的整体复位控制。

本设计采用VHDL硬件描述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过QuartusⅡ软件下进行仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。

本次课程设计可以熟练掌握了课本上的一些理论知识,课程设计也是一个学习新知识、巩固加深所学课本理论知识的过程,它培养了我们综合运用知识的能力,独立思考和解决问题的能力。

加深我们对VHDL数字电路设计教程的理解。

 

    

 

     

2QuartusII介绍

QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescription Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,Quartus II 通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

 AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。

Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

支持MAX7000/MAX3000等乘积项器件

3出租车计价器设计

本设计是一种采用FPGA芯片进行出租车计费器,主要分为分频模块、计量模块、计费模块、控制模块等模块,利用FPGA的可编程性,简洁又多变的设计方法,缩短了研发周期。

主要采用了FPGA芯片,使用VHDL语言进行编程,使其具有了更强的移植性,更加利于产品的升级。

3.1出租车计价器的设计原理

根据设计要求,系统的输入信号clk,计价开始信号Start,等待信号Stop,里程脉冲信号fin。

系统得输出信号有:

总费用数cha0~cha3,行驶距离km0~km1,等待时间min0~min1等。

系统有两个脉冲输入信号clk_120、fin,其中clk_120将根据设计要求分频成12Hz、15Hz和1Hz分别作为公里计费和超时计费的脉冲。

两个控制输入开关start、stop;控制过程为:

start作为计费开始开关,当start为高电平时,系统开始根据输入的情况计费。

当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,并去除fin输入脉冲,进行等待计费;当乘客下车且不等待时,将stop和fin同时置为0,来读取最终的行驶路程数、等待时间与最后的总费用,直接将start置为0,系统停止工作;价格开始归为起步价6.00元。

整个设计由分频模块、计量模块、计费模块、控制模块等四个部分组成。

其中计量模块是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分,根据所设计的使能端选择是根据里程计费还是根据等待时间计费;同时设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。

计量模块采用1Hz的驱动信号,计费模块采用12Hz、15Hz的驱动信号;计量模块每计数一次,计费模块就实现12次或者15次计数,即为实现计时的1.5元/min、计程时的1.2元/km的收费。

组成框图如图2-1所示:

   

图3-1系统结构框图

3.2各模块功能模块设计

3.2.1分频模块

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

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

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

 

图3-2 分频模块元件图

3.2.2计量模块

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

计时部分:

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

计程部分:

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

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

3.2.3控制模块

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

3.2.4计费模块

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

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

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

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

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

3.2.5译码显示模块

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

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

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

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

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

3.2.6顶层模块

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

程序最终功能实现仿真波形如图2-11所示

 

图3-3程序最终仿真波形图

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

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

结果验证:

出租车的起步价是6元,收费为6+(20-3)*1.2+(9-2)*1.5=36.9元。

仿真结果于计算结果相同,所以仿真结果正确。

3.3硬件仿真

在QuartusII软件中仿真成功,现在下载到试验箱上以验证其功能。

实验中采用万用模式模式五,程序中各个端口锁定到试验箱上对应的管脚下载验证。

最后得数码管显示计时、计程和计费数据如图2-13所示:

图3-4硬件仿真结果

由上可知等待时间为4分钟,行驶公里数为4公里。

根据设计要求计算所得费用为:

6元+(4km-3km)*1.2元/km+(4min-2min)*1.5元/min=6+1.2+3=10.2元,与试验箱上所得结果相同,仿真下载成功。

 

4总结

通过为期1周的课程设计,出租车计价器系统的设计已基本完成,能按预期的效果模拟汽车启动、等待、停止、复位等功能,并显示车费数目等待时间及行驶路程。

出租车计费系统的设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及CPLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。

通过不断的编写与尝试,遇到问题,讨论问题,解决问题,使我对《VHDL数字电路设计教程》这门学科有了更系统的认识。

在这次课程设计中我熟练地掌握了VHDL语言中的并行语句与顺序语句的应用、区别与联系;从根本上了解了信号与变量之间的区别;熟练掌握并应用了有限状态机与元件例化的方法;锻炼了我的独立思考能力,培养了我敢于创新的思想:

让我学会了团结同学、互帮互助、在讨论中提炼真知。

在本次设计中还存在很多不足,可以改进的地方目前有以下几点:

一、该设计虽然实现了基本的计费和计程,但是很多问题并没有解决,如本设计只实了一种车速的计费。

若要实现出租车的不同档位下的计程计费,还需要进一步讨论。

二、该设计智能化水平较低,启动、等待、复位等信号需要人为输入,若在实际中出现操作偏差,会导致计费不准确。

通过此次课程设计,我们更进一步的深入了解了VHDL设计语言,并在使用过程中对它有了更深的体会。

对编程过程中可能遇到的问题有了一定的了解和解决方法,在理论学习和编程练习以及硬件测试方面都获得了较大的收获,对于今后进行程序设计有很大的帮助。

最后在此再次向带领我们这次课程设计的老师说声:

谢谢!

 

          

 

参考文献

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

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

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

西安交通大学出版社,2008.4

[4]刘江海.《EDA技术课程设计》.华中科技大学出版社,2009.5

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

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

附录

LIBRARYIEEE;ﻩﻩﻩﻩ

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

entitytaxiisﻩﻩ--出租车计费器整体设计模块;

port ( clk_120:

instd_logic;    --系统时钟

 clk_12:

bufferstd_logic;  --12分频

  clk_15:

bufferstd_logic;      --15分频ﻩ

 clk_1:

bufferstd_logic;  --1分频

 start:

in std_logic;      --计费开始信号 

ﻩfin:

instd_logic;   --里程脉冲信号

 stop:

instd_logic;     --行驶中,中途等待信号

ﻩen1,en0:

bufferstd_logic;  --计费单价使能信号

ﻩk1,k0:

buffer std_logic_vector(3 downto0);   --行驶公里计数

ﻩ m1,m0:

bufferstd_logic_vector(3 downto0);  --等待时间计数

   clk_out:

bufferstd_logic;    --计程和等待时间选择输出信号

  c0,c1,c2,c3:

buffer std_logic_vector(3 downto0)); --输出显示出租车总费用;ﻩ

endtaxi;

architecturetaxi oftaxiis

signalq_12:

integerrange0to 9;      --定义中间信号

 signalq_15:

integerrange0to7; 

signalq_1:

integerrange 0to119;

signalw:

integerrange0to59;          --计时范围0~59 ﻩ

beginﻩ

process(clk_120)

begin

if (clk_120'eventandclk_120='1')then   --分频模块;

if (q_12=4)then q_12<=0;clk_12<=not clk_12;

elseq_12<=q_12+1;

endif;        --得12hz频率信号

if (q_15=3)thenq_15<=0;clk_15<=notclk_15; 

elseq_15<=q_15+1;

 endif;        --得15hz频率信号

if(q_1=59)thenq_1<=0;clk_1<=notclk_1;   

elseq_1<=q_1+1;

end if;         --得1hz频率信号

 end if;

endprocess;

process(clk_1)ﻩﻩﻩﻩﻩ     --计量模块

begin

if (clk_1'event andclk_1='1') then 

if (start='0')then

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

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

if(w=59)then w<=0;  --计时范围为0-59分;;

elsew<=w+1;

endif;         

if(m0="1001")then m0<="0000";    

if(m1="0101") thenm1<="0000";

else m1<=m1+1;

endif;

elsem0<=m0+1;

endif; 

ifstop='1'thenen0<='0';      --车停止行驶开始记等待时间;   

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

elseen1<='0';   

end if;

endif;

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

if (k0="1001")thenk0<="0000";      

if (k1="1001") thenk1<="0000";  --计程范围0~99;

else k1<=k1+1;

endif;

elsek0<=k0+1;

endif;

if(stop='0') thenen1<='0';          

if(k1&k0>"00000011")thenen0<='1';   --若行驶里程大于3km则en0置1    

else en0<='0';               

endif; 

endif; 

endif; 

end if;

if (stop='0'andfin='0')then

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

end if;

endprocess;

process(en0,en1)ﻩﻩﻩﻩ --控制模块设计;

begin

 if(en0='1')then       --计时和计程方式选择

clk_out<=clk_15;

elsifen1='1'then

  clk_out<=clk_12;

 elseclk_out<=null;

 endif;

end process;

process(clk_out,start)ﻩﻩ      --计费模块设计

begin

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

elsif(clk_out'eventandclk_out='1')then  --输出脉冲出现上升沿计费累计

if(c0="1001") thenc0<="0000";          

if(c1="1001")then c1<="0000";

if(c2="1001")then c2<="0000";

if(c3="1001")thenc3<="0000";     --计价范围0~999.9元

elsec3<=c3+1;

endif;

elsec2<=c2+1;

endif;

else c1<=c1+1;

endif;

else c0<=c0+1;     

endif;

end if;

end process;

endtaxi;

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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