eda课程设计 出租车计费器Word文档下载推荐.docx

上传人:b****5 文档编号:19165806 上传时间:2023-01-04 格式:DOCX 页数:15 大小:304.01KB
下载 相关 举报
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

计算乘客所行驶的公里数。

计程器的量程为99公里,满量程自动归零。

2.2.3译码显示模块

该模块经过4位BCD码译码器、计程数据(2位BCD码)动态选择输出。

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

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

3、主要功能的实现

3.1分频模块的实现

由图3-1分频模块封装图可知:

系统是对240HZ时钟脉冲信号进行分频,得到一种频率。

输入为clk,输出为q1.

图3-1分频模块封装图

3.2计量模块的实现

由图3-2可知:

本模块实现对于出租车在行驶过程中计算里程;

当行驶里程大于3KM时,本模块中en0信号变为1;

clk1每来一个上升沿,计量模块实现一次计数,里程数加1。

图3-2计量模块封装图

3.3计费功能的实现

由图3-3可知:

输入一个脉冲信号,同时当start为时开始计价;

c0、c1、c2、c3为价格的显示信号。

图3-3计费模块封装图

3.4控制功能的实现

由图3-4可知:

本模块主要是通过输入的使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块中的输出。

图3-4控制模块封装图

3.5译码和动态扫描功能实现

由图3-5可知:

该模块通过case语句把不同情况的输出用七段显示数码管的输出方式

图3-5译码模块封装图

3.6总体功能原理图

4、程序调试

4.1分频模块波形仿真图

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

由图4-1可知:

当输入240HZ的clk脉冲信号时,clk每出现240个脉冲时q1出现1个,相当于计费1元,帮助计费。

4.2计量模块波形仿真图

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

由图4-2可知:

由于讲输入参数fin一直设为高,将stop一直设为低。

所以k1、k0记录路程的输出量有值。

4.3计费模块波形仿真图

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

由图4-3可知:

输入一个脉冲信号,同时当start为高时开始计价;

c0、c1、c2、c3为价格的显示信号,逢9后一位将进1。

4.4控制模块波形仿真图

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

由图4-4可知:

本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块中的输出,两个输入脉冲是分频模块输出的16HZ、10HZ的脉冲。

4.5译码显示模块波形仿真图

图4-5译码模块波形仿真图

由图4-5可知:

首先以一个case语句进行通道的选择,以8为二进制表示。

当某一位为1时,表示选择该通道接着。

接着又以一个case语句对所选的通道进行动态扫描,由于时间极小,因此在我们用肉眼感觉是同时显示出来的。

4.6总模块的波形仿真图

图4-6总模块的波形仿真图

5、总结

本设计采用VHDL语言完成了具有计费、显示等功能的出租车计费系统,该设计的可靠性高,成本低,通用性强即在不改变电路结构的前提下可根据各地区的需求在VHDL程序中设置各种参数,适应各地区出租车计费的需求,还可以根据各地区需求增加系统功能。

此出租车计费器的设计采用了硬件描述语言的自顶向下的设计方法,将整个系统分为几个相对独立的模块分别设计、仿真、最后连成整个系统集中仿真,很大程度上提高了设计的效率。

最后在试验箱上进行检测,实验现象是:

计费器的初始值是8。

然后按开始键,里程数以一定频率增加,3以后计费器的跳动频率和里程数的跳动频率保持一致。

通过此次课程设计,让我进一步了解了EDA,培养了我发现问题与解决问题的能力。

查找了大量资料后选择了一个模板,按照自己所需要的改写已有程序,这过程碰到了相当的困难。

经过同学的帮助和查找差不多的例子后,终于实现了设计。

6、程序代码

顶层文件

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

----Uncommentthefollowinglibrarydeclarationifinstantiating

----anyXilinxprimitivesinthiscode.

--libraryUNISIM;

--useUNISIM.VComponents.all;

entitychuzucheis

port(clk240,start,fin:

instd_logic;

sg1,sg2,sg3,sg4,sg5,sg6:

outstd_logic_vector(6downto0));

endchuzuche;

architectureBehavioralofchuzucheis

componentfp--实现对分频模块的例化

port(clk:

instd_logic;

q1:

outstd_logic);

endcomponent;

componentjl--实现对计量模块的例化

port(s,fin,clk1:

en0:

inoutstd_logic;

k1,k0:

inoutstd_logic_vector(3downto0));

componentkz--实现对控制模块的例化

port(clkin,e0,clk_in1:

clk3:

outstd_logic);

componentjf--实现对计费模块的例化

port(clk2,s:

c0,c1,c2,c3:

componentym--实现对译码和动态扫描模块的例化

port(clk:

k1,k0,c3,c2,c1,c0:

instd_logic_vector(3downto0);

sg11,sg12,sg13,sg14,sg15,sg16:

outstd_logic_vector(6downto0));

signalm1,n0,l:

std_logic;

--定义中间信号

signaltemp0,temp1,p3,p2,p1,p0:

std_logic_vector(3downto0);

begin

a1:

fpportmap(clk240,m1);

a2:

jlportmap(start,fin,m1,n0,temp1,temp0);

a3:

kzportmap(clk240,n0,m1,l);

a4:

jfportmap(l,start,p0,p1,p2,p3);

a5:

ymportmap(clk240,temp1,temp0,p3,p2,p1,p0,sg1,sg2,sg3,sg4,sg5,sg6);

endBehavioral;

entityfpis

port(clk:

q1:

--频率为16的时钟

endfp;

architectureBehavioraloffpis

process(clk)

variablecout1:

integerrange0to929900000;

begin

ifclk'

eventandclk='

1'

then

ifcout1=9990000--240hz分频为1hz

thencout1:

=0;

q1<

='

;

elsecout1:

=cout1+1;

0'

endif;

endprocess;

计量模块

entityjlis

port(s,fin,clk1:

--计量开始信号

--计量控制信号

--路程的计量

endjl;

architectureBehavioralofjlis

process(clk1)

ifclk1'

eventandclk1='

then--驱动信号发挥作用

ifs='

thenen0<

k1<

="

0000"

k0<

--初始化值

elsif(fin='

)then

if(k0="

1001"

)thenk0<

if(k1="

)thenk1<

elsek1<

=k1+'

endif;

elsek0<

=k0+'

if(k1&

k0>

"

00000010"

)thenen0<

--当路程大于3km时,使能信号en0开始发挥作用

elseen0<

控制模块

entitykzis

port(clkin,e0,clk_in1:

--输入脉冲

--输出脉冲

endkz;

architectureBehavioralofkzis

process(clkin)

ifclkin'

eventandclkin='

if(e0='

)then--根据条件选择所需的通道

clk3<

=clk_in1;

endif;

计费模块

entityjfis

port(clk2,s:

--计费驱动信号--计费开始信号

--费用显示信号

endjf;

architectureBehavioralofjfis

process(clk2,s)

if(s='

)thenc3<

c2<

c1<

c0<

1000"

elsifclk2'

eventandclk2='

if(c0="

)thenc0<

if(c1="

)thenc1<

if(c2="

)thenc2<

if(c3="

--计费功能

elsec3<

=c3+'

elsec2<

=c2+'

elsec1<

=c1+'

elsec0<

=c0+'

译码模块

entityymis

port(

clk:

instd_logic_vector(3downto0);

endym;

architectureBehavioralofymis

signala,b,c,d,e,f:

std_logic_vector(6downto0);

process(clk)--译码

begin

ifclk'

casec0is

when"

=>

a(6downto0)<

1000000"

0001"

1111001"

0010"

0100100"

0011"

0110000"

0100"

0011001"

0101"

0010010"

0110"

0000010"

0111"

1111000"

0000000"

0010000"

whenothers=>

null;

endcase;

casec1is

b(6downto0)<

casec2is

c(6downto0)<

casec3is

d(6downto0)<

casek0is

e(6downto0)<

casek1is

f(6downto0)<

000001

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

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

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

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