出租车自动计费器Verilog代码Quartus仿真

本文详细介绍了使用Verilog语言在Quartus环境中开发的一款出租车自动计费器的代码,涉及里程计费(起步价16元,超过3公里按2.7元/公里)、等候时间计费(1元/分钟)以及行程结束后费用结算的逻辑。代码展示了状态机设计和计费算法的实现。
摘要由CSDN通过智能技术生成

名称:出租车自动计费器Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

出租车自动计费器

功能:1.里程:起步价16元(3Km内),大于3Km后,按照2.7元/Km的标准收费。

2.等候时间:1元/分钟计费。

3.行程结束,费用结算开始清零。

1. 工程文件

2. 程序文件

3. 程序编译

4. 仿真文件

5. 仿真图

部分代码展示:

//出租车计费器
module taxi_fee(
input clk,//时钟
input reset,//复位信号,低有效 
input stop,//本次行程结束,停止计费,高有效
input start,//启动信号,行程开始,高有效 
input Speed,//0:等待  1:行驶
input one_kilometre,//1公里产生一次
input one_minute,//1分钟产生一次
output reg [15:0] totel_money_out//合计费用
);
parameter s_idle=3'd0;
parameter s_starting_price=3'd1;//起步价
parameter s_mileage_price=3'd2;//按里程计费
parameter s_time_price=3'd3;//按时间计费
parameter s_stop=3'd4;
reg [2:0] state=3'd0;
reg [15:0] totel_money=16'd0;
reg [7:0] mileage=8'd0;//里程
always@(posedge clk)
if(reset==0)
mileage<=8'd0;
else
if(state==s_starting_price || state==s_mileage_price)
if(one_kilometre==1)
mileage<=mileage+8'd1;//一公里里程加1
else
mileage<=mileage;
else if(stop==1) 
mileage<=8'd0;//结束,费用清零
else
mileage<=mileage;
//定义计费方式,可修改
parameter start_price=15'd160;//起步价16.0元
parameter start_kilometres=8'd3;//3公里内起步价
parameter kilometres_price=15'd27;//2.7元每公里
parameter time_price=15'd10;//1.0元每1分钟
always@(posedge clk)
if(reset==0)begin
state<=s_idle;//reset
totel_money<=16'd0;
totel_money_out<=16'd0;
end
源代码

 扫描文章末尾的公众号二维码

电子设计课设报告-基于CYCLONE FPGA设计的出租车计价器+Quartus9.1工程源码, 1.引言: 随着EDA技术的高速发展,电子系统的设计技术发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。本文介绍了一个以Altera公司可编程逻辑芯片cyclone2系列的EP2C5T144C8的fpga芯片为控制核心、附加一定外围电路组成的出租车计费器系统。随着社会的不断进步,人们生活水平的不断提高,出租车逐渐成为人们日常生活不可缺少的交通工具。而计价器作为出租车的一个重要组成部分,关系着出租车司机和乘客双方利益,起着重要的作用,因而出租车计价器的发展非常迅猛。 2.系统规范: 2.1 出租车计价器的要求: 该计价器的计费系统:行程 3公里(不含3公里)内,且等待累计时间2分钟内(不含2分钟),起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟以1.5元计费。 并能显示行驶公里数、等待累计时间、总费用。 主要技术指标 计价范围:0~999.9元 计价分辨率: 0.1元 计程范围:0~99公里 计程分辨率: 1公里 计时范围:0~59分 计时分辨率: 分 2.2 ,系统组成框图: 出租车的一般计费过程为:出租车载客后,启动计费器,整个系统开始运行,里程计数器和时间计数器从0开始计数,费用计数器从6开始计算。再根据行驶里程或停止等待的时间按以上的标准计费。若在行驶状态,则计程器开始加计数,当路程超过二公里后,计费器以每公里1.6元累加。若出租车停止等待状态,则计时器开始加计数,当时间超过三分钟后,计费器以每分钟1.2元累加。出租车到达目的地停止后,停止计费器,显示总费用。 根据出租车计费器的工作过程,本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间 和总费用,控制模块是用来控制计费模块,数码管显示模块用来显示行驶的公里数、等待累计时间和总费用等信息。系统框图如下所示: .各模块设计: 本系统采用层次化、模块化的设计方法,设计顺序为自下向上。首先实现系统框图中的各子模块,然后由顶层模块调用各子模块来完成整个系统。为了便于显示,这里的路程、时间和费用计数器均用十六进制表示。 (1)顶层模块 /*顶层模块变量定义 reset 0为复位,1为启动 stop 0为运行,1为停止 start 0为暂停,1为行驶 clk_count 为轮胎传感器发出的表示转一圈的脉冲信号,实验时用为1024hz时钟信号 clk_1khz 系统工作的主要时钟信号,实验用1024hz时钟信号 clk 时间模块的时钟信号,实验用8hz时钟信号 timeh,timel 分钟的十位和个位 distanceh,distancel 公里的十位和个位 bai,shi,ge,xiao 费用的十位和个位 */ module taxi(reset,start,stop,clk0,seg1,seg2,seg3,seg4,change,); input reset,start,stop,change,clk0; output [6:0] seg1,seg2,seg3,seg4; wire time_enable,distance_enable,select_clk,km,clk_count,clk,clk_1khz; reg [3:0]view1,view2,view3,view4; wire [3:0] timeh,timel,bai,ge,shi,xiao,distanceh,distancel; time_count u8(clk,reset,start,stop,timel,timeh,time_enable); km_count u1(.clk_count(clk_count),.reset(reset),.start(start),.km(km)); distance u2(.clk_1khz(clk_1khz),.start(start),.reset(reset),.stop(stop),.distancel(distancel),.distanceh(distanceh),.km(km),.distance_enable(distance_enable)); select_clk u3(.clk_1khz(clk_1khz),.reset(reset),.start(start),.stop(stop),.time_enable(time_enable),.km(km),.select
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值