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

上传人:b****7 文档编号:10591901 上传时间:2023-02-21 格式:DOCX 页数:23 大小:312.66KB
下载 相关 举报
FPGA课程设计出租车简易计价器.docx_第1页
第1页 / 共23页
FPGA课程设计出租车简易计价器.docx_第2页
第2页 / 共23页
FPGA课程设计出租车简易计价器.docx_第3页
第3页 / 共23页
FPGA课程设计出租车简易计价器.docx_第4页
第4页 / 共23页
FPGA课程设计出租车简易计价器.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

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

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

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;

fee[9:

5]=fee[9:

5]+5'b00001;

end

end

else

begin

fee[4:

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

0]}+{1'b0,lch[3:

0]}-5'b00011+5'b01000;

fee[9:

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

4]}+{1'b0,lch[7:

4]};

fee[13:

10]=4'b0000;

if(fee[4:

0]>5'b10011)

begin

fee[4:

0]=fee[4:

0]-5'b10100;

fee[9:

5]=fee[9:

5]+5'b00010;

end

elseif(fee[4:

0]>5'b01001)

begin

fee[4:

0]=fee[4:

0]-5'b01010;

fee[9:

5]=fee[9:

5]+5'b00001;

end

if(fee[9:

5]>5'b10011)

begin

fee[9:

5]=fee[9:

5]-5'b10100;

fee[13:

10]=fee[13:

10]+4'b0010;

end

elseif(fee[9:

5]>5'b01001)

begin

fee[9:

5]=fee[9:

5]-5'b01010;

fee[13:

10]=fee[13:

10]+4'b0001;

end

end

end

endmodule

仿真结果:

说明:

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

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

计费模块框图:

数码管显示:

moduledisplay(clk_1,lch,reset,jishi,fee,hex0,hex1,hex2,hex4,hex5,hex6,hex7);

inputclk_1,lch,jishi,fee,reset;

outputhex0,hex1,hex2,hex4,hex5,hex6,hex7;

wirereset;

wire[7:

0]lch;

wire[7:

0]jishi;

wire[13:

0]fee;

reg[6:

0]hex0,hex1,hex2,hex4,hex5,hex6,hex7;

always@(posedgeclk_1,negedgereset)

begin

if(!

reset)

begin

hex6[6:

0]=7'b1000000;

hex7[6:

0]=7'b1000000;

hex4[6:

0]=7'b1000000;

hex5[6:

0]=7'b1000000;

hex0[6:

0]=7'b1000000;

hex1[6:

0]=7'b1000000;

hex2[6:

0]=7'b1000000;

end

case(lch[3:

0])

4'b0000:

hex6[6:

0]=7'b1000000;

4'b0001:

hex6[6:

0]=7'b1111001;

4'b0010:

hex6[6:

0]=7'b0100100;

4'b0011:

hex6[6:

0]=7'b0110000;

4'b0100:

hex6[6:

0]=7'b0011001;

4'b0101:

hex6[6:

0]=7'b0010010;

4'b0110:

hex6[6:

0]=7'b0000010;

4'b0111:

hex6[6:

0]=7'b1111000;

4'b1000:

hex6[6:

0]=7'b0000000;

4'b1001:

hex6[6:

0]=7'b0010000;

default:

hex6[6:

0]=7'b1000000;

endcase

case(lch[7:

4])

4'b0000:

hex7[6:

0]=7'b1000000;

4'b0001:

hex7[6:

0]=7'b1111001;

4'b0010:

hex7[6:

0]=7'b0100100;

4'b0011:

hex7[6:

0]=7'b0110000;

4'b0100:

hex7[6:

0]=7'b0011001;

4'b0101:

hex7[6:

0]=7'b0010010;

4'b0110:

hex7[6:

0]=7'b0000010;

4'b0111:

hex7[6:

0]=7'b1111000;

4'b1000:

hex7[6:

0]=7'b0000000;

4'b1001:

hex7[6:

0]=7'b0010000;

default:

hex7[6:

0]=7'b1000000;

endcase

case(jishi[3:

0])

4'b0000:

hex4[6:

0]=7'b1000000;

4'b0001:

hex4[6:

0]=7'b1111001;

4'b0010:

hex4[6:

0]=7'b0100100;

4'b0011:

hex4[6:

0]=7'b0110000;

4'b0100:

hex4[6:

0]=7'b0011001;

4'b0101:

hex4[6:

0]=7'b0010010;

4'b0110:

hex4[6:

0]=7'b0000010;

4'b0111:

hex4[6:

0]=7'b1111000;

4'b1000:

hex4[6:

0]=7'b0000000;

4'b1001:

hex4[6:

0]=7'b0010000;

default:

hex4[6:

0]=7'b1000000;

endcase

case(jishi[7:

4])

4'b0000:

hex5[6:

0]=7'b1000000;

4'b0001:

hex5[6:

0]=7'b1111001;

4'b0010:

hex5[6:

0]=7'b0100100;

4'b0011:

hex5[6:

0]=7'b0110000;

4'b0100:

hex5[6:

0]=7'b0011001;

4'b0101:

hex5[6:

0]=7'b0010010;

4'b0110:

hex5[6:

0]=7'b0000010;

4'b0111:

hex5[6:

0]=7'b1111000;

4'b1000:

hex5[6:

0]=7'b0000000;

4'b1001:

hex5[6:

0]=7'b0010000;

default:

hex5[6:

0]=7'b1000000;

endcase

case(fee[3:

0])

4'b0000:

hex0[6:

0]=7'b1000000;

4'b0001:

hex0[6:

0]=7'b1111001;

4'b0010:

hex0[6:

0]=7'b0100100;

4'b0011:

hex0[6:

0]=7'b0110000;

4'b0100:

hex0[6:

0]=7'b0011001;

4'b0101:

hex0[6:

0]=7'b0010010;

4'b0110:

hex0[6:

0]=7'b0000010;

4'b0111:

hex0[6:

0]=7'b1111000;

4'b1000:

hex0[6:

0]=7'b0000000;

4'b1001:

hex0[6:

0]=7'b0010000;

default:

hex0[6:

0]=7'b1000000;

endcase

case(fee[8:

5])

4'b0000:

hex1[6:

0]=7'b1000000;

4'b0001:

hex1[6:

0]=7'b1111001;

4'b0010:

hex1[6:

0]=7'b0100100;

4'b0011:

hex1[6:

0]=7'b0110000;

4'b0100:

hex1[6:

0]=7'b0011001;

4'b0101:

hex1[6:

0]=7'b0010010;

4'b0110:

hex1[6:

0]=7'b0000010;

4'b0111:

hex1[6:

0]=7'b1111000;

4'b1000:

hex1[6:

0]=7'b0000000;

4'b1001:

hex1[6:

0]=7'b0010000;

default:

hex1[6:

0]=7'b1000000;

endcase

case(fee[13:

10])

4'b0000:

hex2[6:

0]=7'b1000000;

4'b0001:

hex2[6:

0]=7'b1111001;

4'b0010:

hex2[6:

0]=7'b0100100;

4'b0011:

hex2[6:

0]=7'b0110000;

4'b0100:

hex2[6:

0]=7'b0011001;

4'b0101:

hex2[6:

0]=7'b0010010;

4'b0110:

hex2[6:

0]=7'b0000010;

4'b0111:

hex2[6:

0]=7'b1111000;

4'b1000:

hex2[6:

0]=7'b0000000;

4'b1001:

hex2[6:

0]=7'b0010000;

default:

hex2[6:

0]=7'b1000000;

endcase

end

endmodule

仿真结果:

说明:

数码管有两种显示方式动态显示与静态显示,由于在本文中用到了七个数码管所以选择了动态显示,在时钟的控制下,当reset为高电平的时候把费用,公里,时间译码输出

显示模块框图:

控制:

modulePIS_QQ_LX(reset,start,clk,hex0,hex1,hex2,hex4,hex5,hex6,hex7,clk_1);

inputreset,start,clk;

outputhex0,hex1,hex2,hex4,hex5,hex6,hex7,clk_1;

wirereset,start,clk;

wire[6:

0]hex0,hex1,hex2,hex4,hex5,hex6,hex7;

wireclk_1;

wire[7:

0]lch,jishi;

wire[13:

0]fee;

fenpinQQ1(.clk(clk),.reset(reset),.clk_1(clk_1));

lichengQQ2(.clk_1(clk_1),.reset(reset),.start(start),.lch(lch));

jsQQ5(.clk_1(clk_1),.reset(reset),.start(start),.jishi(jishi));

jfQQ3(.lch(lch),.jishi(jishi),.fee(fee));

displayQQ4(.reset(reset),.jishi(jishi),.clk_1(clk_1),.lch(lch),.fee(fee),.hex0(hex0),.hex1(hex1),.hex2(hex2),.hex4(hex4),.hex5(hex5),.hex6(hex6),.hex7(hex7));

endmodule

五.验证方案

验证流程图:

5.1系统仿真:

初步设计完成后,即可将分模块和顶层模块进行仿真测试,同时可根据设计要求加入测试输入条件。

仿真后得到的相应输出结果如与预先的结果不相符,则应修改设计,直到相符为止。

没有译码的仿真结果如下所示:

(a)为行驶中未停时的系统电路仿真结果:

(b)为行驶中时(在两公里之内)的系统电路仿真结果:

(c)为停止时(在两分钟之外)的系统电路仿真结果:

从(a)可以看出当reset=1时,系统复位,路程计数器、和等待时间计数器均为0,费用计数器为8元;当reset为0时,系统启动,start=1表示出租车行驶,clk-1每产生一个脉冲,路程计数器加1;路程2公里内,费用保持8不变,超过2公里,费用计数器进行加计数,每增加1公里费用加1元,此时等待时间计数器不变。

而根据(b),(c)的仿真波形可知,当reset为0时,系统启动,start=0表示出租车处于停止等待状态,此时等待时间计数器计数,在2分钟等待时间内,费用计数器不变;等待时间超过2分钟后,每增加2分钟,费用计数器增加1元,此时路程计数器保持不变。

5.2综合:

QuartusII软件综合的报表:

5.3综合的RTL级电路:

从综合的RTL级电路可以看出完全符合系统规范。

六.实验心得:

本文介绍了一种全新的出租车计价器计费系统的FPGA设计方法。

分别介绍了整个系统和各个模块的设计,使用FPGA芯片、VHDL硬件描述语言作为设计手段,利用自顶向下的模块化设计思路,通过在QuartusⅡ软件下进行的模拟仿真,并进行相应的硬件下载调试,证明所设计的系统完成了出租车计费器的功能,各项技术指标符合预定标准,具有一定实用性。

如果将该设计再结合到实际应用中,那么,只需改变设计中计费要求,就可以应用到出租车上。

另外,如果再任意输入该出租车计价器的计费标准,那么,它的适用范围可能就更广泛了。

本次课程设计还是比较有成就感的,因为遇到一些很棘手的问题,最终解决之后感觉很好,还学到一些之前没学到的东西。

 

西安邮电学微电子系课程设计成绩鉴定表

学生姓名

鲁彬

班级/学号

微电子0901/04094031

进行时间

2012年06月18日—2012年06月29日

成绩鉴定

学习内容(20分)

与教学任务计划结合程度(10分)

与专业培养结合程度(6分)

其它(4分)

接受单位评价

(20分)

实践能力(10分)

学习态度(6分)

学习纪律(4分)

报告鉴定

(60分)

报告内容与实践过程紧密结合(15分)

报告内容与教学计划内容紧密结合(15分)

报告质量(主题、结构、观点、逻辑、资料、字数30分)

评阅教师姓名

职称

成绩

评语

 

评阅教师签字

年月日

西安邮电学院微电子系课程设计过程考核表

学生姓名

鲁彬

班级/学号

微电子0901/04094031

承担任务实验室(单位)

电科实验室

所在部门

电子工程学院

实施时间

2012年06月18日—2012年06月29日

具体内容

第一周

•讲解PFGA课程设计内容和要求;

•讲解PFGA课程设计的题目;

沟通交流,学生选择课设题目;

制订《技术规范》

制订《技术规范》

制订《总体设计方案》

制订《详细设计方案》

模块、电路设计

模块、电路设计

制订《功能验证方案》

第二周

制订《功能验证方案》仿真验证

综合布局布线后仿真

后仿真FPAG硬件调试

FPAG硬件测试

FPAG课程设计检查验收

撰写课设报告

……

 

指导教师(师傅)姓名

黄海生

职务或职称

教授

指导教师(师傅)

对学生的评价

学习态度

□认真□一般□不认真

学习纪律

□全勤□偶尔缺勤□经常缺勤

实践能力

□很强□一般□较差

指导教师(师傅)对学生专业知识或社会实践能力等情况的意见

 

指导教师(师傅)签字

年月日

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

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

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