My title page contents

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

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

软件:Quartus

语言:VHDL

代码功能:

出租车计费系统设计

设计要求:

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

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

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

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

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

要求2.jpg

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


演示视频:

设计文档:

设计文档1.doc

设计文档2.doc

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;

代码文件(付费下载):






1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 出租车计费系统设计VHDL代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员