FPGA课程设计出租车简易计价器.docx

上传人:b****1 文档编号:13882176 上传时间:2023-06-18 格式:DOCX 页数:9 大小:63.58KB
下载 相关 举报
FPGA课程设计出租车简易计价器.docx_第1页
第1页 / 共9页
FPGA课程设计出租车简易计价器.docx_第2页
第2页 / 共9页
FPGA课程设计出租车简易计价器.docx_第3页
第3页 / 共9页
FPGA课程设计出租车简易计价器.docx_第4页
第4页 / 共9页
FPGA课程设计出租车简易计价器.docx_第5页
第5页 / 共9页
FPGA课程设计出租车简易计价器.docx_第6页
第6页 / 共9页
FPGA课程设计出租车简易计价器.docx_第7页
第7页 / 共9页
FPGA课程设计出租车简易计价器.docx_第8页
第8页 / 共9页
FPGA课程设计出租车简易计价器.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

FPGA课程设计出租车简易计价器.docx

《FPGA课程设计出租车简易计价器.docx》由会员分享,可在线阅读,更多相关《FPGA课程设计出租车简易计价器.docx(9页珍藏版)》请在冰点文库上搜索。

FPGA课程设计出租车简易计价器.docx

FPGA课程设计出租车简易计价器

西安邮电大学

FPGA课程设计报告

题 目:

出租车简易计价器设计

 

院  系:

 电子工程学院

专业班级:

 微电子0901 

学生姓名:

      

导师姓名:

  黄海生   

起止时间:

2010.06.18至2012.06.29   

2012年07月01 日

基于FPGA的出租车简易计价器设计

一.功能要求:

设计一个出租车简易计价器,用FPGA开发板的按键手动来控制出租车的状态,即行驶或等待,数码管显示当前的行驶里程,等待时间以及总共的费用。

二.功能描述:

(1)异步复位,复位信号与时钟信号不同步。

(2)基准时钟(50MHZ)由原来的每秒跳变50M下分成每秒跳变3下,即便于人眼的观察,设计5秒钟里程变化一公里,6秒钟时间等待为一分钟。

(3)用一个拨码开关来控制当前的状态,如果是高电平1则开始计里程,如果是低电平0则开始计等待时间。

(4)用7个7段数码管来显示当前的里程,等待时间以及最后的费用。

(5)手动控制计费系统,当一位客人下车而另一位客人上车则按复位键清0,使得数码管只显示起始价8元。

三.系统描述:

(1)系统结构:

(2)输入输出信号描述

信号

输入/输出

目标/源

功能描述

clk

input

pin

系统时钟(50MHZ)

reset

input

pin

异步清零,低电平有效

start

input

pin

状态选择,1时计里程,0时计等待时间

hex0

input

pin

显示里程的十位上的数字

hex1

input

pin

显示里程个位上的数字

hex2

output

pin

显示计时十位上的数字

hex4

output

pin

显示计时个位上的数字

hex5

output

pin

显示计费百位上的数字

hex6

output

pin

显示计费十位上的数字

hex7

output

pin

显示计费个位上的数字

 

 

 

 

(3)顶层划分

(4)设计思想:

计价器功能要求:

出租车起步价为8元,行驶过程中每公里1元,中途停止等待时间累计大于三分钟后按每两分钟1元计价。

计价系统里程显示范围为:

0~99公里,分辨率1公里。

计价费用显示范围为:

0~999元,分辨率1元。

等待计时器显示范围为:

0~60分钟,分辨率1分钟。

计价系统原理:

出租车载客后,启动计费器,整个系统开始运行,里程计数器和时间计数器从0开始计数,费用计数器从8开始计算。

再根据行驶里程或停止等待的时间按以上的标准计费。

若在行驶状态,则计程器开始加计数,每公里1元。

若出租车停止等待状态,则计时器开始加计数,当时间超过三分钟后,计费器以每分钟1元累加。

出租车到达目的地停止计费器,显示总费用。

根据出租车计费器的工作过程,本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。

其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间和总费用,控制模块是用来控制计费模块,数码管显示模块用来显示行驶的公里数、等待累计时间和总费用等信息。

四.模块代码

分频模块:

modulefenpin(clk,reset,clk_1);

inputclk,reset;

outputclk_1;

regclk_1;

reg[29:

0]count;

always@(posedgeclk,negedgereset)

begin

if(!

reset)

begin

count=0;

clk_1=1'b0;

end

elseif(count==25000000)

begin

count=0;

clk_1=!

clk_1;

end

else

count=count+1'd1;

end

endmodule

仿真结果:

里程模块:

modulelicheng(reset,start,clk_1,lch);

inputreset,start,clk_1;

outputlch;

reg[7:

0]lch;

reg[5:

0]count;

always@(negedgereset,posedgeclk_1)

begin

if(!

reset)

begin

lch=8'b00000000;

count=6'b000000;

end

else

begin

if(start)

begin

if(count==6'b000010)

begin

lch=lch+1'b1;

count=count+1'b1;

if(lch[3:

0]>4'b1001)

begin

lch[7:

4]=lch[7:

4]+4'b0001;

lch[3:

0]=4'b0000; 

end

end

elseif(count==6'b000100)

count=6'b000000;

else

count=count+1'b1;

end

else

lch[7:

0]=lch[7:

0];

end

end

endmodule

modulejs(reset,start,clk_1,jishi);

inputreset,start,clk_1;

outputjishi;

reg[5:

0]count1;

reg[7:

0]jishi;

always@(negedgereset,posedgeclk_1)

begin

if(!

reset)

begin

count1=6'b000000;

jishi=8'b00000000;

end

else

begin

if(!

start)

begin

if(count1==6'b000010)

begin

jishi=jishi+1'b1;

if(jishi[3:

0]>4'b1001)

begin

jishi[7:

4]=jishi[7:

4]+4'b0001;

jishi[3:

0]=4'b0000;

end

count1=count1+1'b1;

end

elseif(count1==6'b000100)

count1=6'b000000;

else

count1=count1+1'b1;

end

else

jishi[7:

0]=jishi[7:

0]; 

end

end

endmodule

里程计时模块仿真结果:

说明:

从图上可以看出根据start的不同状态,里程和计时模块交替工作,若在行驶状态,则计程器开始加计数,。

若出租车停止等待状态,则计时器开始加计数。

里程计时模块框图:

计费模块:

modulejf(lch,jishi,fee);

inputlch,jishi;

outputfee;

reg[13:

0]fee;

wire[7:

0]lch;

wire[7:

0]jishi;

always@(lch,jishi)

begin

if(jishi[7:

0]<8'b00000011)

begin

fee[4:

0]={1'b0,lch[3:

0]}+5'b01000;

fee[9:

5]={1'b0,lch[7:

4]};

fee[13:

10]=4'b0000;

if(fee[4:

0]>5'b01001)

begin

fee[4:

0]=fee[4:

0]-5'b01010;

 

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2