• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

出租车计费系统设计VHDL代码Quartus仿真

08/25 08:29
236
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2409101Z430913.doc

共1个文件

名称:出租车计费系统设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

出租车计费系统设计

设计要求:

设计一个模拟出租车计费的电路系统,具有以下功能

(1)能实现计费功能,计费标准为:按行驶路程收费,起步价为11元,并在车行3公里(3km)后按2元/公里收费。当总费用达到或超过40元时,每公里收费4元。当遇到红绿灯或客户有事需要停车等待时,则按时间收费计费单价为每20s收费1元。

(2)实现预置功能:能预置起步费、每公里收费、车行加费里程、计时收费。

(3)实现模拟功能:能模拟汽车行驶、停止和暂停等状态。

(4)将路程和车费显示出来,以十进制BCD码方式输出信号

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

原理图

代码

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

里程脉冲模块

控制模块

显示模块

1. 工程文件

2. 程序文件

原理图

代码

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图(顶层模块)

分频模块

状态机模块

数码管控制模块

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--控制模块
ENTITY?ctrl?IS
???PORT?(
??????clk???????????????:?IN?STD_LOGIC;--时钟
??????rst??????????????:?IN?STD_LOGIC;--复位信号
??????start_key??????????????:?IN?STD_LOGIC;--启动信号,行程开始
??????stop_key???????????????:?IN?STD_LOGIC;--中途暂停
??????pulse_in??????:?IN?STD_LOGIC;--1公里脉冲
??????mileage??????????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--里程
??????money??????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0)--合计费用
???);
END?ctrl;
ARCHITECTURE?behave?OF?ctrl?IS
--定义状态
???TYPE?state_type?IS?(S0,S1,S2,S3,S4,S5,S6);??--?定义状态
???SIGNAL?state:?state_type;????--?创建信号
???SIGNAL?all_money???:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";--总价钱
???SIGNAL?all_mileage???????:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";--里程
???SIGNAL?sec_10???:?STD_LOGIC?:=?'0';
???SIGNAL?cnt?:?integer?:=?0;
BEGIN
--状态机
???PROCESS?(clk,?rst)
???BEGIN
??????IF?(rst?=?'0')?THEN
?????????state?<=?S0;--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????CASE?state?IS
????????????WHEN?S0?=>--空闲状态
???????????????IF?(start_key?=?'0')?THEN--按下起动键start,汽车起动
??????????????????state?<=?S1;
???????????????ELSE
??????????????????state?<=?S0;--空闲状态
???????????????END?IF;
????????????WHEN?S1?=>--起步价状态
???????????????IF?(stop_key?=?'0')?THEN--中途停车
??????????????????state?<=?S4;
???????????????ELSIF?(all_mileage?>=?"0000000000000011")?THEN--大于3.0公里
??????????????????state?<=?S2;
???????????????ELSE
??????????????????state?<=?S1;
???????????????END?IF;
????????????WHEN?S2?=>--车行驶?3.0公里后按每公里2元计费
???????????????IF?(all_money?>=?"0000000000101000")?THEN--当总费用达到40元时,每公里按4元收费
??????????????????state?<=?S3;
???????????????ELSIF?(stop_key?=?'0')?THEN--中途停车
??????????????????state?<=?S5;
???????????????ELSE
??????????????????state?<=?S2;
???????????????END?IF;
????????????WHEN?S3?=>--当总费用达到40元时,每公里按4元收费
???????????????IF?(stop_key?=?'0')?THEN--中途停车
??????????????????state?<=?S6;
???????????????ELSE
??????????????????state?<=?S3;
???????????????END?IF;
????????????WHEN?S4?=>--停车等待
???????????????IF?(start_key?=?'0')?THEN--启动
??????????????????state?<=?S1;
???????????????ELSE
??????????????????state?<=?S4;
???????????????END?IF;
????????????WHEN?S5?=>--停车等待
???????????????IF?(start_key?=?'0')?THEN--启动
??????????????????state?<=?S2;
???????????????ELSE
??????????????????state?<=?S5;
???????????????END?IF;
????????????WHEN?S6?=>--停车等待
???????????????IF?(start_key?=?'0')?THEN--启动
??????????????????state?<=?S3;
???????????????ELSE
??????????????????state?<=?S6;
???????????????END?IF;
????????????WHEN?OTHERS?=>
???????????????state?<=?S0;
?????????END?CASE;
??????END?IF;
???END?PROCESS;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1064

  • 2-2409101Z430913.doc
    下载

相关推荐