EDA出租车计价器设计Word文档下载推荐.docx
《EDA出租车计价器设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA出租车计价器设计Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
能预置起步费、每公里收费、车行加费里程。
4.实现模拟功能:
能模拟汽车启动、停止等状态。
5.设计动态扫描电路:
将车费显示出来,有两位小数。
6.用VHDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
7.各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。
8.完成电路全部设计后,通过系统实验箱下载验证设计的正确性。
过
程
一、实验平台
(1)硬件:
计算机、EDA实验箱;
(2)软件:
MAX+plusII10.0;
(3)编写程序后,并在MAX+plusII10.0工具平台中进行编译、综合、适配、仿真下载到EDA实验箱进行验证,通过LED显示来观察结果。
二、实验原理
(1)控制模块
(2)分频模块
(3)计费动态显示模块
其初值为5元,当里程超过5公里后才接受计数控制模块发出的脉冲的驱动,并且计数显示动态显示出来。
三、出租车计费系统的实现
3.1系统的总体模块图:
四、实验步骤
1、建立工作库文件夹和编辑设计文件
2、程序清单和波形图:
libraryieee;
useieee.std_logic_1164.all;
entitybcd_decoderis
port(bcd:
instd_logic_vector(4downto0);
ledseg:
outstd_logic_vector(7downto0));
endbcd_decoder;
architecturebehaviorofbcd_decoderis
begin
process(bcd)
casebcdis
when"
00000"
=>
ledseg<
="
00111111"
;
00001"
00000110"
00010"
01011011"
00011"
01001111"
00100"
01100110"
00101"
01101101"
00110"
01111101"
00111"
00000111"
01000"
01111111"
01001"
01101111"
10000"
10111111"
10001"
10000110"
10010"
11011011"
10011"
11001111"
10100"
11100110"
10101"
11101101"
10110"
11111101"
10111"
10000111"
11000"
11111111"
11001"
11101111"
whenothers=>
00000000"
endcase;
endprocess;
endbehavior;
entitymux41is
port(a,b,c,d:
instd_logic_vector(4downto0);
sel:
instd_logic_vector(1downto0);
y:
outstd_logic_vector(4downto0));
endmux41;
architectureoneofmux41is
begin
process(a,b,c,d,sel)
caseselis
00"
y<
=a;
01"
=b;
10"
=c;
11"
=d;
whenothers=>
null;
endcase;
endprocess;
endone;
---计程控制
useieee.std_logic_unsigned.all;
entitykilois
port(clk:
instd_logic;
start:
stop:
k1:
outstd_logic_vector(3downto0);
k2:
k3:
cn:
outstd_logic);
endkilo;
architecturebehavofkilois
process(clk,start,stop)
variablek_v:
std_logic_vector(11downto0);
ifstop='
1'
thenk_v:
=(others=>
'
0'
);
elsifclk'
eventandclk='
then
ifstart='
then
ifk_v(3downto0)="
1001"
then
k_v:
=k_v+"
0111"
elsek_v(3downto0):
=k_v(3downto0)+1;
endif;
ifk_v(7downto4)="
1010"
k_v:
01100000"
endif;
ifk_v(11downto0)>
000001010000"
thencn<
='
elsecn<
k1<
=k_v(3downto0);
k2<
=k_v(7downto4);
k3<
=k_v(11downto8);
endbehav;
entityfenpin100is
co:
constantd:
integer:
=50;
end;
architecturew1offenpin100is
process(clk)
variableq:
std_logic_vector(7downto0);
ifclk'
ifq=d-1thenq:
co<
elseq:
=q+1;
entitydianis
port(a:
instd_logic_vector(3downto0);
e:
outstd_logic);
enddian;
architecturert1ofdianis
process
caseais
when"
0001"
e<
0101"
whenothers=>
endrt1;
--零位
entitycounter110is
en:
rest:
cq:
outstd_logic_vector(4downto0);
cout:
endcounter110;
architecturebehavofcounter110is
process(clk,rest,en)
variablecqi:
std_logic_vector(4downto0);
ifrest='
thencqi:
cout<
ifen='
ifcqi<
9thencqi:
=cqi+6;
cout<
ifcqi>
=9thencout<
cqi:
=cqi-"
01010"
cq<
=cqi;
--十位
entitycounter10is
endcounter10;
architecturebehavofcounter10is
=cqi+1;
elsecqi:
ifcqi=9thencout<
elsecout<
--个位
entitycounter_10is
endcounter_10;
architecturebehavofcounter_10is
process(clk,rest,en,cn)
ifcn='
elsifen='
=9thencqi:
ifcqi=10thencout<
=cqi+"
entitycnt4is
q:
outstd_logic_vector(1downto0));
endcnt4;
architectureaofcnt4is
variablea:
std_logic_vector(1downto0);
ifclk'
ifa="
a:
else
=a+1;
q<
enda;
五、编译过程
(1)输入完程序之后逐个编译;
(2)逐个编译无错之后进行全程编译;
六、实验小结
这次课程设计中,我们主要是运用VHDL语言设计了一个出租车计费器,并且用层次化的设计方法来实现这个电路。
在程序编写结束后,我们还对该程序进行了调试,能按预期的效果进行模拟汽车启动、停止等功能,基本完成课程设计的
要求。
通过此次课程设计,我们更进一步的深入了解了VHDL设计语言,并通过使用对它有了更深的体会。
对于编程过程中可能遇到的问题有了一定的了解,也明白了其中的一些注意事项,对于下次进行编程设计有很大的帮助和提高。
总之,这次实验不仅仅加强了我的动手编程能力,也大大加强了团队合作以及设计能力,使我在理论学习和编程练习方面都获得了较大的收获。
成绩
评定