基于FPGA的出租车计费系统设计
2021-06-17徐晶晶杨涛指导教师
徐晶晶,杨涛(指导教师)
(电子科技大学电子科学与工程学院,四川成都,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所示。……
