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

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

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

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
    下载

相关推荐