EDA大作业 出租车计费系统的设计Word下载.docx

上传人:b****5 文档编号:16634516 上传时间:2022-11-25 格式:DOCX 页数:15 大小:279.43KB
下载 相关 举报
EDA大作业 出租车计费系统的设计Word下载.docx_第1页
第1页 / 共15页
EDA大作业 出租车计费系统的设计Word下载.docx_第2页
第2页 / 共15页
EDA大作业 出租车计费系统的设计Word下载.docx_第3页
第3页 / 共15页
EDA大作业 出租车计费系统的设计Word下载.docx_第4页
第4页 / 共15页
EDA大作业 出租车计费系统的设计Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

EDA大作业 出租车计费系统的设计Word下载.docx

《EDA大作业 出租车计费系统的设计Word下载.docx》由会员分享,可在线阅读,更多相关《EDA大作业 出租车计费系统的设计Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

EDA大作业 出租车计费系统的设计Word下载.docx

④计数器D完成计数到20(完成车费的起步价)。

⑤计数器E完成模拟实现车行驶100m的功能。

(2)当超出起步价时就自动在起步价的基础上每增加一个100m脉冲就增加相应的费用,而当总里程达到或超过一定的数值时,能按新的收费标准进行收费。

(3)译码/动态扫描电路模块将路程与费用的数值译码后用动态扫描的方式驱动6只数码管,即所连接的数码管共用一个数据端,由片选信号依次选择输出,轮流显示。

(4)数码管显示将千米数和计费金额均用3位LED数码管显示(2位整数,1位小数)。

7.具体模块设计:

7.1车速控制模块

当启停键为启动状态(高电平时),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;

当处于暂停状态,暂停发出脉冲,此时里程计数模块和计费模块相应地停止计数。

当处于停止状态时,停止发出脉冲,此时计费器和里程显示模块数清零。

如图所示。

程序代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSPEEDIS

PORT(

CLK,RESET,START,STOP:

INSTD_LOGIC;

SPEEDUP:

INSTD_LOGIC_VECTOR(4DOWNTO0);

CLKOUT:

OUTSTD_LOGIC

);

ENDSPEED;

ARCHITECTUREAOFSPEEDIS

SIGNALCOUNT1:

STD_LOGIC_VECTOR(1DOWNTO0);

SIGNALTEMPCLK,CLKS:

STD_LOGIC;

SIGNALKINSIDE:

STD_LOGIC_VECTOR(4DOWNTO0);

BEGIN

KINSIDE<

="

00000"

-SPEEDUP;

CLKS_LABEL:

PROCESS(RESET,CLK)

VARIABLECOUNT2:

STD_LOGIC_VECTOR(4DOWNTO0);

IFSTOP='

1'

THENTEMPCLK<

='

0'

;

ELSIFRESET='

andstop='

THEN

COUNT2:

ELSIFCLK'

EVENTANDCLK='

ANDSTOP='

IFSTART='

IFCOUNT2=KINSIDETHENCOUNT2:

ENDIF;

IFNOT(SPEEDUP="

)THENCOUNT2:

=COUNT2+1;

IFCOUNT2="

00001"

=NOTTEMPCLK;

ENDPROCESSCLKS_LABEL;

CLKOUT<

=TEMPCLK;

ENDA;

仿真结果:

启动后(包括暂停)

复位后

停止后

7.2里程计数模块

由车速控制模块发出的脉冲作为计数脉冲,行驶里程大于3KM时,本模块中信号变为1,并将计数动态显示出来,每来一个脉冲,里程值加0.1(每收到一个脉冲代表运行了0.1公里)。

程序中要将计数值从十六进制转换成十进制,即在十六进制的数上加7或6,同时产生了相应的进位信号。

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYjichengIS

PORT(CLK,RESET,STOP:

COUNT1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUNT3:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDjicheng;

ARCHITECTUREAAOFjichengIS

BEGIN

PROCESS(CLK,RESET,STOP)

VARIABLEMM:

STD_LOGIC_VECTOR(11DOWNTO0);

IFRESET='

MM:

000000000000"

ELSIFCLK='

THENMM:

IFMM(3DOWNTO0)="

1001"

=MM+7;

ELSEMM:

=MM+1;

IFMM(7DOWNTO4)="

1010"

=MM+"

01100000"

COUNT1<

=MM(3DOWNTO0);

COUNT2<

=MM(7DOWNTO4);

COUNT3<

=MM(11DOWNTO8);

ENDPROCESS;

ENDAA;

开始计程

个位开始计数

十位开始计数

7.3计费模块

计费模块启动reset信号,根据输入的clk信号变化,调节费用的计数,用c1、c2、c3显示费用。

其初值为6,当里程数超过2km后,才接受计数车速控制模块发出的脉冲的驱动,并且将计数显示动态显示出来,每一个脉冲其数值加0.12,当里程超过15km时数值加0.18。

当启动键为启动状态(高电平时),模块根据车速选择和基本车速发出响应频率的脉冲驱动计费器和里程显示模块进行计数;

当处于停止状态时,暂停发出脉冲,此时计费器和里程显示模块相应的停止计数,全部归零。

ENTITYjifeiIS

PORT(CLK,RESET,stop:

INSTD_LOGIC;

JUDGE2:

INSTD_LOGIC_VECTOR(3DOWNTO0);

JUDGE3:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUNT4:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDjifei;

ARCHITECTUREAAOFjifeiIS

SIGNALEN:

SIGNALMONEY:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALMCOUNT:

STD_LOGIC_VECTOR(15DOWNTO0);

MONEY<

00011000"

WHEN((MCOUNT(15)='

)OR(MCOUNT(14)='

)OR(MCOUNT(13)='

))ELSE"

00010010"

EN<

WHENJUDGE3="

0000"

ANDJUDGE2(3DOWNTO1)="

000"

ELSE'

PROCESS(clk,reset)

VARIABLEmm:

std_logic_vector(15downto0);

ifstop='

andclk='

THENmm:

0000000000000000"

elsIFreset='

THEN

mm:

0000011000000000"

--复位,计费显示为起步费6.00

ELSIFclk'

eventandclk='

IFen='

=mm+money;

--里程超过2公里

IF(mm

(1)='

or(mm(3downto1)="

)or(mm(3downto2)="

11"

))THEN

=mm+6;

ENDIF;

--十六进制转换成十进制

IFmm(7)='

and(not(mm(6downto5)="

00"

=mm+"

IFmm(11)='

and(not(mm(10downto9)="

011000000000"

count1<

=mm(3downto0);

count2<

=mm(7downto4);

count3<

=mm(11downto8);

count4<

=mm(15downto12);

mcount<

=mm;

ENDaa;

起步后开始计费

行驶2公里后

行驶15公里后

7.4动态扫描模块

动态扫描电路将计数器A、B、C的计费状态用数码管显示出来,所连接的数码管共用一个数据端,由片选信号依次选择输出,轮流显示。

该模块经过6选1选择器将计费数据(3位BCD码)、计程数据(3位BCD码)动态选择输出。

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

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

如图所示:

 

片选:

ENTITYpianxuanIS

PORT(CLK:

A:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDpianxuan;

ARCHITECTURERT1OFpianxuanIS

PROCESS(CLK)

VARIABLEB:

STD_LOGIC_VECTOR(2DOWNTO0);

IF(CLK'

)THEN

IF(B="

101"

B:

ELSE

=B+1;

A<

=B;

ENDRT1;

六选一:

ENTITYliuxuanyiIS

PORT(C:

INSTD_LOGIC_VECTOR(2DOWNTO0);

DP:

OUTSTD_LOGIC;

A1,A2,A3,B1,B2,B3:

D:

ENDliuxuanyi;

ARCHITECTURERT1OFliuxuanyiIS

PROCESS(C,A1,A2,A3,B1,B2,B3)

VARIABLECOMB:

COMB:

=C;

CASECOMBIS

WHEN"

=>

D<

=A1;

DP<

001"

=A2;

010"

=A3;

011"

=B1;

100"

=B2;

=B3;

WHENOTHERS=>

NULL;

ENDCASE;

ENDRT1;

译码:

ENTITYyimaIS

PORT(D:

Q:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDyima;

ARCHITECTURERT1OFyimaIS

PROCESS(D)

CASEDIS

Q<

0111111"

0001"

0000110"

0010"

1011011"

0011"

1001111"

0100"

1100110"

0101"

1101101"

0110"

1111101"

0111"

0100111"

1000"

1111111"

1101111"

译码举例

7.5顶层模块

将以上各模块的原理图对应的端口连接,如图所示。

启动后

暂停

换挡

行驶超过2公里后

心得体会:

通过本次对于出租车计费系统的设计,我们进一步掌握了VHDL这一语言,熟悉了Quartus2操作环境,更进一步地熟悉了有关数字电路的知识和具体应用。

并能根据仿真结果来分析设计存在的问题及缺陷,从而能进行程序的调试和完善。

总的来说,通过本次设计更进一步的增加了动手能力,对出租车计费系统的原理也有了更透彻的理解。

虽然出租车计费系统已经初步实现其功能,但还存在一定的缺陷和不足,我们也还有很多该努力的地方!

以后的日子里,我们要更加努力学习,争取学有所用,把所学的知识用于实践,对社会做一些有益的事情!

附:

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

当前位置:首页 > 外语学习 > 日语学习

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

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