APP下载

基于FPGA的出租车计费系统设计

2021-06-17徐晶晶杨涛指导教师

电子制作 2021年11期
关键词:计费等待时间上位

徐晶晶,杨涛(指导教师)

(电子科技大学电子科学与工程学院,四川成都,611731)

0 引言

FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。FPGA由可编程逻辑功能块、片内互联线、输入输出块构成,通过修改布线实现可编程。可使用框图或者Verilog HDL来设计FPGA,Verilog HDL 推出已经有 20 多年,拥有广泛的设计群体,成熟的资源比 VHDL丰富,因此本次设计采用Verilog HDL 语言。而出租车是日常出行中必不可少的交通工具,基于出租车的附属品市场前景也是十分广阔。本文基于FPGA设计模拟了一款出租车计费系统,具有开发周期短,设计灵活等优势[1]。

1 FPGA 片内逻辑总体结构设计

■1.1 开发工具

本次设计中 FPGA 型号为 Xilinx公司的 spartan-6 系列的 xc6slx-2ftg256 型号。设计开发工具选用 ISE14.7,针对FPGA 设计的功能和时序仿真,选择 Mentor 公司的Modelsim 仿真工具。

■1.2 总体架构

出租车计费系统的实现框图如图1(a)所示[2],RTL顶层原理图如图1(b)所示,上位机发送指令模拟汽车启动、停止、行驶公里数、等待时间的操作,通过串口将指令发送至设计的出租车计费系统,而后再通过串口将总计费用返回至上位机。

■1.3 系统规范

(1) 上位机实现模拟功能:汽车启动、停止、公里计数、等待时间计数。

(2) 具体计费方式:

里程<3公里:费用=6元;3公里<里程≤19公里:费用=6+(里程-3)*2+等候时间*等候单价1;里程>19公里:费用=里程*里程单价(2)+等候时间*等候单价1。

(3) 费用能够通过上位机显示[3]。

2 模块具体划分

出租车计费系统分为五个模块,分别为串口接收模块uart_rx、里程计数模块mileage_counter、等待时间计数模块wait_time、计费模块charge、串口发送模块uart_tx。

图1

■2.1 串口接收模块uart_rx

串口接收模块负责接收上位机传送的控制指令[4],其RTL原理图如图2所示。表1给出了串口接收模块输入输出端口定义。

图2

表1 串口接收模块输入输出端口定义

串口接收模块的仿真结果如图3所示。

图3

通过串口接收模块仿真波形可以看出uart_rx模块接受控制命令ctrl(0:启动;1:停止;2公里数;3:等待时间数)传送至其他模块。本次模拟的为行驶5公里,等待2个时间单位。

■2.2 里程计数模块mileage_counter

里程计数模块负责计算行驶里程数,其RTL原理图如图4所示。表2给出了里程计数模块输入输出端口定义。

图4

表2 里程计数模块输入输出端口定义

里程计数模块仿真波形如图5所示。

图5

通过里程计数模块仿真波形,可以看出在计费时间内(count_en=1),最终的里程数(kilo_out)为5公里。

■2.3 等待时间计数模块wait_time

等待时间计数模块负责计算等待时长,其RTL原理图如图6所示。表3给出了等待时间计数模块输入输出端口定义。

图6

表3 等待时间计数模块输入输出端口定义

等待时间计数模块仿真波形如图7所示。

图7

通过等待时间计数模块仿真波形,可以看出在计费时间内(count_en=1),最终的等待时间(wait_time)为2。

■2.4 计费模块charge

计费模块负责计算总体开销[5],其RTL原理图如图8所示。表4给出了计费模块输入输出端口定义。

图8

表4 计费模块输入输出端口定义

计费模块仿真波形如图9所示。

图9

通过计费模块仿真波形可以看到总公里数(kilo_out)、等待时间数(wait_time)、产生费用(cost)。通过仿真结果可以看到计费截止时(count_done信号为1),产生的总费用为12元。

■2.5 串口发送模块uart_tx

串口发送模块负责将计费模块计算出的总体开销返回给上位机,其RTL原理图如图10所示。表5给出了串口发送模块输入输出端口定义。

图10

表5 串口发送模块输入输出端口定义

串口发送模块仿真波形如图11所示。

图11

通过串口发送模块的仿真波形可以看出uart_tx模块将产生的总费用(rx_dout_reg)传送回上位机。

3 验证试验

我们连接好开发板如图12所示,将bit文件下载至开发板,而后将USB数据线连接至USB转串口芯片。打开上位机软件(友善串口助手),通过上位机发送控制信号(0:启动;1:停止;2公里数;3:等待时间数),可以通过上位机软件看到返回的产生费用。

如:行驶3公里(控制信号为:00 02 02 02 01)返回的数据为06,表示产生费用为6元;行驶5公里,等待时间为2,(控制信号为:00 02 02 02 02 02 03 03 01),返回的数据为0C,表示产生费用为12元。验证结果如图13所示。

图13

此外本文还验证了一些其他数据,验证结果如图14所示。

图14

4 结论

出租车计费器在日常出行中不可缺少,本文利用FPGA实现了出租车计费系统。出租车计费系统利用Verilog语言设计出来的出租车计费器系统实现了串口接收模块uart_rx、里程计数模块mileage_counter、等待时间计数模块wait_time、计费模块charge、串口发送模块uart_tx。完成了通过控制信号模拟汽车启动、停止、里程计数与等待时间计数,最终将总计费用通过上位机显示了出来。通过FPGA来开发数字电路,缩短了设计时间,减少了PCB面积,具有很强的灵活性,因此具有很大的应用前景。

猜你喜欢

计费等待时间上位
一种基于实际GIS底图的精准计费方式探究
5G融合计费模式设计研究
基于J2EE的计费系统的设计和实现
你承受不起让每个客户都满意
一场史无前例的乐队真人秀
基础油“上位”
顾客等待心理的十条原则
顾客等待心理的十条原则
基于VC的PLC数据采集管理系统
生死大考:网吧计费系统遭黑手!