76范文网为您提供各类范文参考!
当前位置:76范文网 > 知识宝典 > 免费论文 > 论文:出租车计费器

论文:出租车计费器

来源:76范文网 | 时间:2019-02-13 09:43:22 | 移动端:论文:出租车计费器

论文:出租车计费器 本文简介:

XX大学物联网工程学院VerilogHDL项目设计报告题目出租车计费器_________专业电子科学与技术__________学号1562910227、1562910209授课班号6292758—01_________学生姓名XXX、XXX______指导教师XX、齐XX_______摘要本次课设我

论文:出租车计费器 本文内容:

XX大学物联网工程学院
Verilog
HDL项目设计报告

题目

出租车计费器_________
专业电子科学与技术__________
学号
1562910227、1562910209授课班号6292758—01_________

学生姓名XXX、XXX______

指导教师
XX、齐XX_______
摘要
本次课设我们采用可编程逻辑器件(FPGA/Verilog)进行对出租车计费器的设计。本设计实现了出租车计费器所需的一些基本功能,计费金额包括起步价、里程计费等。该设计采用模块化设计,在VIVADO2015.4软件平台下,采用Verilog
HDL
硬件描述语言描述和模拟仿真了分频模块、计程模块、计费模块,译码显示模块,完成了出租车计费器仿真设计实现。
关键词:出租车计价器,Verilog
HDL,同步脉冲,数码显示
Abstract
This
class
set
we
use
programmable
logic
device
(FPGA/Verilog)
to
design
a
taxi
meter.
The
design
and
implementation
of
some
of
the
basic
functions
required
for
taxi
billing,
billing
amount
including
starting
price,
mileage
and
so
on.
The
design
uses
the
modular
design
in
ISE
software
platform,
using
Verilog
HDL
hardware
description
language
description
and
Simulation
of
frequency
module,
meter
module,
billing
module,
decoding
module,
realizes
the
design
of
Taximeter
simulation.
Key
words:
taximeter,
Verilog
HDL,Sync
pulse,
digital
display

目录
一、方案设计
二、模块设计
三、仿真调试
四、总结
五、参考文献
六、附录
一、方案设计
1、设计目标
完成简易出租车计价器设计,选做停车等待计价功能。
(1)起步8元/3公里,此后1元/550米;
(2)里程指示信号为每前进50米一个高电平脉冲,上升沿有效;
(3)前进里程开始之前显示价钱,精确到0.1元;
2、设计原理
出租车的一般计费过程为:出租车载客后,启动计费器,整个系统开始运行,里程计数器从0开始计数,费用计数器从8开始计算。再根据行驶里程按以上的标准计费。若在行驶状态,则计程器开始加计数,
当路程超过三公里后,计费器以每50米/0.1元累加。出租车到达目的地停止后,停止计费器,显示总费用。根据课程设计要求计价器可根据车轮转数计算路程,每一个脉冲是代表50米,当一个脉冲到里程计算模块,计价器增加0.1元,则经过十一个脉冲后是每550米,一共经历11个状态,价格增加1.0元。
二、模块设计
1、分频模块
将时钟信号进行分频,分出的频率供后面的计程模块和计价模块用,以及后面的数码显示扫描模块都会用到。此模块的功能是对总的时钟进行分频,分出的频率是让计数器用的,因为总的时钟是50K的。设计该模块的时候用了一个16位的计数器,当计数器计到500的时候产生时钟。
always@(posedge
clk
or
posedge
rst)///frequency
division
if(rst)begin
clk0<=0;count<=0;end
else
if(count==500)begin
clk0<=~clk0;count<=0;end
else
count<=count+1;
2、同步脉冲信号处理模块
同步脉冲信号处理模块主要完成对脉冲start的同步处理,本部分采用三个D触发器和一个与门完成对start信号的同步处理,处理之后在clk上升沿检测start信号的高低电平。
always@(posedge
clk
or
posedge
rst)//signal
porcessing
if(rst){pulse1,pulse2,pulse3}<=0;
elsebegin

pulse1<=pulse0;

pulse2<=pulse1;

pulse3<=pulse2;end
always@(*)
beginpulse<=pulse2&&(~pulse3);
//SYNC
pulse
end
3、计程模块
此模块的功能是计算出租车行驶的路程。在出租车启动并行驶的过程中(即复位/启动信号rst为1),当时钟clk是上升沿的时候且输入一个正脉冲时,系统即对路程计数器的里程计数器进行加计数。
always@(posedge
clk
or
posedge
rst)//distance
if(rst)meter<=0;
else
if(pulse)begin

if(meter==5)
meter<=0;

else

meter<=meter+5;end
always@(posedge
clk
or
posedge
rstn)
if(rst){kmeter_4,kmeter_3,kmeter_2,kmeter_1}<=0;
else
if(pulse)begin

if(meter==5)
if(kmeter_l==9)
if(kmeter_2==9)if(kmeter_3==9)

if(kmeter_4==9)

begin
kmeter_l<=0;kmeter_2<=0;kmeter_3<=0;kmeter_4<=0;end

else
begin
kmeter_l<=0;kmeter_2<=0;kmeter_3<=0;kmeter_4<=kmeter_4+1;endelse
begin
kmeter_l<=0;kmeter_2<=0;kmeter_3<=kmeter_3+1;end
else
begin
kmeter_l<=0;kmeter_2<=kmeter_2+1;end
else
begin
kmeter_l<=kmeter_l+1;endend
4、计费模块
费用计数器模块用于出租车启动后,根据行驶路程计算费用。当出租车停车时,时钟rst用于将费用计数器复位为起步价8.0元;当车处于行驶状态时,且满3公里后路程每满50米,费用计数器加0.1元;
always@(posedge
clk
or
posedge
rst)//money
if(rst)begin
{money_4,money_3,money_l}<=0;
money_2<=8;money<=1;end
else
if(pulse)begin

if({kmeter_2,kmeter_l,meter}>=11"b00101001101)
//
>=2950m
if(money_l==9)
if(money_2==9)if(money_3==9)

if(money_4==9)
begin
money_l<=0;money_2<=0;money_3<=0;money_4<=0;money<=1;
end

else
begin
money_l<=0;money_2<=0;money_3<=0;money_4<=money_4+1;money<=1;
endelse
begin
money_l<=0;money_2<=0;money_3<=money_3+1;money<=1;end
else
begin
money_l<=0;money<=1;money_2<=money_2+1;end
else
begin
case(money)1:money_l<=1;2:money_l<=2;3:money_l<=3;4:money_l<=4;5:money_l<=5;6:money_l<=5;7:money_l<=6;8:money_l<=7;9:money_l<=8;10:money_l<=9;11:money_l<=0;
endcase

money<=money+1;

endend
5、数码管显示模块
数码管显示模块为四位数码管,设置一个开关,当为低电平其中四位显示公里数,当为高电平时四位显示价钱数,精度分别为
0.1km

0.1
元,此模块需要将计数值通过译码电路将数据译码为数码管显示的数据即可
always@(posedge
clk
or
posedge
rst)//display
if(rst)state<=0;
else
if(state==23)state<=0;
elsestate<=state+1;
always@(posedge
clk
or
posedge
rst)
if(rst)begin
display<=8"b11000000;en<=4"b0000;variable<=0;end
elsebegin

case(variable)
0:begin
display[6:0]<=7"b1000000;end
1:begin
display[6:0]<=7"b1111001;end
2:begin
display[6:0]<=7"b0100100;end
3:begin
display[6:0]<=7"b0110000;end
4:begin
display[6:0]<=7"b0011001;end
5:begin
display[6:0]<=7"b0010010;end
6:begin
display[6:0]<=7"b0000010;end
7:begin
display[6:0]<=7"b1111000;end
8:begin
display[6:0]<=7"b0000000;end
9:begin
display[6:0]<=7"b0010000;end

default:begin
display<=8"b11111111;en<=4"b1111;end

endcasebegin

case(turn)

0:

begin

if(state>=0&&state<=1)begin
display[7]<=1;variable<=money_l;en<=4"b1110;end
else
if(state>=3&&state<=4)begin
display[7]<=0;variable<=money_h;en<=4"b1101;end
else
if(state>=6&&state<=7)begin
display[7]<=1;variable<=money_hh;en<=4"b1011;end
else
if(state>=9&&state<=10)begin
display[7]<=1;variable<=money_hhh;en<=4"b0111;end
else
begin
en<=4"b1111;variable<=10;end

end

1:

begin

if(state>=0&&state<=1)begin
display[7]<=1;variable<=kmeter_l;en<=4"b1110;end

else
if(state>=3&&state<=4)begin
display[7]<=0;variable<=kmeter_h;en<=4"b1101;end

else
if(state>=6&&state<=7)begin
display[7]<=1;variable<=kmeter_hh;en<=4"b1011;end

else
if(state>=9&&state<=10)begin
display[7]<=1;variable<=kmeter_hhh;en<=4"b0111;end

else
begin
en<=4"b1111;variable<=10;end

end

default:begin
display<=8"b11111111;
en<=4"b1111;end

endcaseend
end
三、设计仿真与调试
1、仿真
计价电路由于计价要求精确到
0.1元,而每
550m计价一元且每
50m来一个脉冲;即每一个脉冲大约为九分钱,因此本次计价按四舍五入法计价,同时为了满足出租车计价的现实性,故需每次计价最终结果要比实际值多
0.1元。出租车计价应该是在三公里以内始终显示八元,而当刚好是三公里时应当显示
8.1
元,即在
2.95km时就开始计价,之后再按照脉冲采用四舍五入法来计价,并且每
11
个脉冲计价
1元,这样就满足了出租车计价的现实性。
2、调试
电路用数码管显示行走里程数和价钱数,由于没有行走
50m的脉冲信号,故采用按键模拟出租车行走
50m的脉冲信号。用数码管显示里程数和价钱。
(1)
三公里以内
价格为8元
里程数
(2)
三公里以外
4.1公里
价格10.1元
3、验收结果
验收时老师要求将起步价改为7元,复位信号端口改成任意指定端口。改变起步价只需将计费模块中
begin
{money_4,money_3,money_l}<=0;
money_2<=8;money<=1;end
这条语句中的money_2<=8改成money_2<=7即可。而改变端口需改变约束文件的端口定义,将其改为指定端口的端口号即可。
四、总结
这次课程设计经历了两周的时间,从中我们学到了很多。我们不仅巩固了学过的知识,而且学到了很多在书本上所没有学到过的知识,经历了仿真与开发板的验证,在开发板上初步达到了设计的任务要求。
这次设计进一步加深了我们对verilog
的了解。中途也遇到一些问题,例如仿真时遇到了困难,想要的结果不能再波形上得到正确的显示,后来,经过屡次的调试之后,才发现在写代码之前对信号的考虑不足。这次课设中我懂得了理论与实际相结合很重要。仅凭理论知识远远不够,只有把所学的理论知识与实践想结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。我们设计的过程中发现了自己的不足之处,以后还需加以改进。
总的来说,这次设计还算成功,尽管在设计中遇到了很多问题,我们都十分努力地化解问题。我们不仅学到了知识,而且锻炼了自己的能力,让自己对以后的路有了更加清楚的认识。
五、参考文献
夏宇闻.verilog数字系统设计教程.北京航天航空大学出版社
六、附录
1、主程序
module
taxi(clk,pulse0,rst,turn,display,en);
input
clk,rst,pulse0,turn;
//clk0=100MHZ
ASYNC
pulse0
output[7:0]display;
output[3:0]en;
wire
clk,rstn,pulse0;
reg[7:0]display;
reg[3:0]en;
reg
clk0,pulse1,pulse2,pulse3,pulse;
reg[2:0]meter;
reg[5:0]state;
reg[15:0]count;
reg[3:0]
variable,money,kmeter_1,kmeter_2,kmeter_3,kmeter_4,money_1,money_2,money_3,money_4;
always@(posedge
clk
or
posedge
rst)///frequency
division
if(rst)begin
clk0<=0;count<=0;end
else
if(count==500)begin
clk0<=~clk0;count<=0;end
else
count<=count+1;
always@(posedge
clk
or
posedge
rst)//signal
porcessing
if(rst){pulse1,pulse2,pulse3}<=0;
elsebegin

pulse1<=pulse0;

pulse2<=pulse1;

pulse3<=pulse2;end
always@(*)
beginpulse<=pulse2&&(~pulse3);
//SYNC
pulse
end
always@(posedge
clk
or
posedge
rst)//distance
if(rst)meter<=0;
else
if(pulse)begin

if(meter==5)
meter<=0;

else

meter<=meter+5;end
always@(posedge
clk
or
posedge
rstn)
if(rst){kmeter_4,kmeter_3,kmeter_2,kmeter_1}<=0;
else
if(pulse)begin

if(meter==5)
if(kmeter_l==9)
if(kmeter_2==9)if(kmeter_3==9)

if(kmeter_4==9)

begin
kmeter_l<=0;kmeter_2<=0;kmeter_3<=0;kmeter_4<=0;end

else
begin
kmeter_l<=0;kmeter_2<=0;kmeter_3<=0;kmeter_4<=kmeter_4+1;endelse
begin
kmeter_l<=0;kmeter_2<=0;kmeter_3<=kmeter_3+1;end
else
begin
kmeter_l<=0;kmeter_2<=kmeter_2+1;end
else
begin
kmeter_l<=kmeter_l+1;endend
always@(posedge
clk
or
posedge
rst)//money
if(rst)begin
{money_4,money_3,money_l}<=0;
money_2<=8;money<=1;end
else
if(pulse)begin

if({kmeter_2,kmeter_l,meter}>=11"b00101001101)
//
>=2950m
if(money_l==9)
if(money_2==9)if(money_3==9)

if(money_4==9)

begin
money_l<=0;money_2<=0;money_3<=0;money_4<=0;money<=1;
end

else
begin
money_l<=0;money_2<=0;money_3<=0;money_4<=money_4+1;money<=1;
endelse
begin
money_l<=0;money_2<=0;money_3<=money_3+1;money<=1;end
else
begin
money_l<=0;money<=1;money_2<=money_2+1;end
else
begin
case(money)1:money_l<=1;2:money_l<=2;3:money_l<=3;4:money_l<=4;5:money_l<=5;6:money_l<=5;7:money_l<=6;8:money_l<=7;9:money_l<=8;10:money_l<=9;11:money_l<=0;
endcase

money<=money+1;

endend
always@(posedge
clk
or
posedge
rst)//display
if(rst)state<=0;
else
if(state==23)state<=0;
elsestate<=state+1;
always@(posedge
clk
or
posedge
rst)
if(rst)begin
display<=8"b11000000;en<=4"b0000;variable<=0;end
elsebegin

case(variable)
0:begin
display[6:0]<=7"b1000000;end
1:begin
display[6:0]<=7"b1111001;end
2:begin
display[6:0]<=7"b0100100;end
3:begin
display[6:0]<=7"b0110000;end
4:begin
display[6:0]<=7"b0011001;end
5:begin
display[6:0]<=7"b0010010;end
6:begin
display[6:0]<=7"b0000010;end
7:begin
display[6:0]<=7"b1111000;end
8:begin
display[6:0]<=7"b0000000;end
9:begin
display[6:0]<=7"b0010000;end

default:begin
display<=8"b11111111;en<=4"b1111;end

endcasebegin

case(turn)

0:

begin

if(state>=0&&state<=1)begin
display[7]<=1;variable<=money_l;en<=4"b1110;end
else
if(state>=3&&state<=4)begin
display[7]<=0;variable<=money_h;en<=4"b1101;end
else
if(state>=6&&state<=7)begin
display[7]<=1;variable<=money_hh;en<=4"b1011;end
else
if(state>=9&&state<=10)begin
display[7]<=1;variable<=money_hhh;en<=4"b0111;end
else
begin
en<=4"b1111;variable<=10;end

end

1:

begin
if(state>=0&&state<=1)begin
display[7]<=1;variable<=kmeter_l;en<=4"b1110;end

else
if(state>=3&&state<=4)begin
display[7]<=0;variable<=kmeter_h;en<=4"b1101;end

else
if(state>=6&&state<=7)begin
display[7]<=1;variable<=kmeter_hh;en<=4"b1011;end

else
if(state>=9&&state<=10)begin
display[7]<=1;variable<=kmeter_hhh;en<=4"b0111;end

else
begin
en<=4"b1111;variable<=10;end

end

default:begin
display<=8"b11111111;
en<=4"b1111;end

endcaseend
end
endmodule
2、测试文件程序
module
taxi_test;
reg
clk0,rstn,pulse0,turn;
wire
[7:0]display;
wire
[3:0]en;
wire
[3:0]
variable;
wire
[3:0]
kmeter_l;
wire
pulse;
taxi
taxi(.clk0(clk0),.rstn(rstn),.pulse0(pulse0),.turn(turn),.display(display),.en(en),.variable(variable),.kmeter_l(kmeter_l),.pulse(pulse));
initial
turn=1;
always
#10
turn=~turn;
initial
clk0=0;
always
#0.001
clk0=~clk0;
initial
begin
rstn=0;
#1
rstn=1;
#1
rstn=0;
end
initial
begin
pulse0=0;
while(1)
begin
#1
pulse0=1;
#1.5pulse0=0;
end
#0.05
$finish;
end
endmodule
3、约束文件程序
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[7]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[6]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[5]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[4]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[3]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[2]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[1]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{display[0]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{en[3]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{en[2]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{en[1]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports?{en[0]}]
set_property?IOSTANDARD?LVCMOS33?[get_ports
turn]
set_property?IOSTANDARD?LVCMOS33?[get_ports?clk0]
set_property?IOSTANDARD?LVCMOS33?[get_ports?pulse0]
set_property?IOSTANDARD?LVCMOS33?[get_ports?rstn]
set_property?PACKAGE_PIN?W5?[get_ports?clk0]
set_property?PACKAGE_PIN?T17?[get_ports?pulse0]
set_property?PACKAGE_PIN?U18?[get_ports?rstn]
set_property?PACKAGE_PIN?T1?[get_ports?turn]
set_property?PACKAGE_PIN?V7?[get_ports?{display[7]}]
set_property?PACKAGE_PIN?U7?[get_ports?{display[6]}]
set_property?PACKAGE_PIN?V5?[get_ports?{display[5]}]
set_property?PACKAGE_PIN?U5?[get_ports?{display[4]}]
set_property?PACKAGE_PIN?V8?[get_ports?{display[3]}]
set_property?PACKAGE_PIN?U8?[get_ports?{display[2]}]
set_property?PACKAGE_PIN?W6?[get_ports?{display[1]}]
set_property?PACKAGE_PIN?W7?[get_ports?{display[0]}]
set_property?PACKAGE_PIN?W4?[get_ports?{en[3]}]
set_property?PACKAGE_PIN?V4?[get_ports?{en[2]}]
set_property?PACKAGE_PIN?U4?[get_ports?{en[1]}]
set_property?PACKAGE_PIN?U2?[get_ports?{en[0]}]

本文档由论文格式(http://www.csmayi.cn/)用户上传

论文:出租车计费器 本文关键词:出租车,论文,计费器

论文:出租车计费器  来源:网络整理

  免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


论文:出租车计费器》由:76范文网互联网用户整理提供;
链接地址:http://www.yuan0.cn/a/58023.html
转载请保留,谢谢!
相关文章