出租车计费器

本文详细介绍了使用Verilog HDL设计的出租车计费器,包括功能要求、设计思想和过程。计费器根据行驶里程计算费用,具备模拟汽车启动、停止、暂停等功能,并通过数码管显示车费和里程。设计中,作者通过always块处理里程计数和车费计算,并使用Quartus和Modelsim进行功能仿真。测试平台验证了设计的正确性,最终通过布局布线可在硬件上实现验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.课程设计目的

全面熟悉、掌握Verilog HDL语言基本知识,掌握利用verilog HDL语言对常用的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。

2.课程设计题目描述和要求

本课程设计完成的计费器应具有如下功能。

(1)实现计费功能,计费标准为:按行驶里程计费,起步价为7元,并在车行3km后按2元/km计费,当计费器达到或超过20元时,每千米加收50%的车费,车停止不计费。(2)现场模拟功能:以开关按键模拟千米计数,能模拟汽车启动、停止、暂停等状态。(3)将车费和路程分别以十进制形式显示出来。

3.设计思想和过程

本次出租车计费器的设计主要是基于FPGA芯片,使用硬件描述语言Verilog HDL,采用“自顶向下”的设计方法,编写-一个出租车计费器芯片,并使用quatus 软件和Modelsim软件进行编程,同时用软件进行功能和时序的仿真。把出租车计费器划分为端口定义部分、计费部分、里程部分、数码管显示部分,共同实现出租车计费以及预置和模拟汽车启动、停止、暂停等功能,并动态扫描显示车费数目和里程数。最后使用quartus 进行编译和布局布线,还可以使用时序仿真验证实际电路功能的正确性。由于本课程设计电路规模较小;调用时序仿真步骤可以省略,直接使用硬件开发板DE2-115 就可以完成整个设计的验证,同时验证的结果更加直接,所以在操作步骤中省略了时序仿真步骤,只保留功能仿真,最后的结果可以由硬件电路来完成验证。由于无法实际使用车轮来进行公里数的统计,可采用信号模拟的方式来进行代替。以使用一个输入信号,当输入信号出现一次上升沿时表示车轮运转了一次然后按照一定的数量如200次累计完成1km。 由于是近似代替,所以直接使用信号上升沿表示1km, 这样方便设计和仿真,如果需要其他的数量可以使用分频器来进行处理。在设计过程中,首先进行端口定义,money 和kilometer 分别是记录车费数和公里数,start、stop、 suspend 分别是控制开始、停止、暂停的功能按钮,a是输入信号,当其为高电平时,则认为汽车已经走了1km,相应的kilometer 加1。Money 根据题目要求随着不同的计费方式而相应的钱数,m1, m2,k1, k2分别是用数码管显示的译码数据、动态显示数据,在计算money和kilometer时分别用到两个always模块处理这两个输出信号,这样程序的大体结构就完成了,然后就是具体的部分涉及一些细节,如语法方面,注意要在一些地方加入begin...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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值