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

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

软件:Quartus

语言:VHDL

代码功能:

课题内容

本部分主要是使用硬件描述语言(VHDL语言)对系统的软件部分进行设计,来实现出租车实时计费的功能,本设计针对不同地域可以实现灵活计价,可以根据地域不同设置不同的起步价以及公里单价等参数,实时向顾客显示收费数据。VHDL语言不同于其他高级语言,它的程序执行的主体是并行语句,在并行语句中实现顺序控制,系统主要使用状态机来实现功能。设计部分主要包括:CPLD软件部分设计以及硬件部分设计。最后要求系统统一联合调试

课题要求:

(1)查阅有关与此设计思想有关的资料,了解目前发展状况;

(2)熟悉CPLD编程环境以及设计思想,掌握编程技巧;

(3)能完成底层软件部分以及硬件部分设计采用模块化设计,根据系统要求完成出租车计价器的全部功能。

(4)方案设计过程中,充分考虑其它非技术性因素,如软件的人性化等,以进步分析方案的可行性;

(5)翻译与本专业或设计课题相关的英文文献,译文不少于3000字。

出租车计费器.jpg

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


演示视频:

设计文档:

设计文档.doc

1. 工程文件


2. 程序文件

顶层电路图


代码





3. 程序编译



4. 仿真文件


5. 仿真图

整体仿真图



显示模块仿真图




控制模块





速度脉冲模块



部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--控制模块
ENTITY taxi_state IS
   PORT (
      clk              : IN STD_LOGIC;--标准时钟,10hz 
      reset            : IN STD_LOGIC;--复位信号,低有效 
      key_area        : IN STD_LOGIC;--区域价钱切换按键
      stop             : IN STD_LOGIC;--本次行程结束,停止计费,高有效
      start            : IN STD_LOGIC;--启动信号,行程开始,高有效 
      Speed            : IN STD_LOGIC;--0:暂停等待;1:行驶
      one_kilometre    : IN STD_LOGIC;--1公里产生一次脉冲
      seconds_60   : IN STD_LOGIC;--暂停等待,60s产生一次脉冲
      wait_time_out    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      mileage_out      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      totel_money_out  : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--合计费用
   );
END taxi_state;
ARCHITECTURE trans OF taxi_state IS
   constant area1_start:STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000010010110";--15.0----区域1起步价15元
   constant area2_start:  STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000001100100";--10.0--区域2起步价10元
   constant area1_price:STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000011110";--3.0-----区域1每行驶1公里增加3.0元
   constant area2_price:  STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000011000";--2.4---区域2每行驶1公里增加2.4元   
   constant area1_time: STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000010";--0.2-----区域1交通拥堵每分钟收费0.2元  
   constant area2_time:   STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000001";--0.1---区域2交通拥堵每分钟收费0.1元   
   SIGNAL start_fee:STD_LOGIC_VECTOR(15 DOWNTO 0) ;
   SIGNAL price_fee:STD_LOGIC_VECTOR(15 DOWNTO 0) ; 
   SIGNAL time_fee: STD_LOGIC_VECTOR(15 DOWNTO 0) ;
   
   SIGNAL state       : STD_LOGIC_VECTOR(2 DOWNTO 0) := "000";
   SIGNAL totel_money : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000";
   SIGNAL mileage     : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   SIGNAL wait_time     : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
BEGIN
   mileage_out <= mileage;
   
--不同区域计价控制控制,key_area为1时,按区域2计费,key_area为0时,按区域1计费
   start_fee<=area2_start when key_area='1' else area1_start;--起步价
   price_fee<=area2_price when key_area='1' else area1_price;--1公里单价
   time_fee <=area2_time  when key_area='1' else area1_time ;--拥堵每分钟收费
  
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         IF (reset = '0') THEN
            mileage <= "00000000";
         ELSIF (state = "001" OR state = "010" OR state = "100") THEN
            IF (one_kilometre = '1') THEN
               mileage <= mileage + "00000001";--一公里里程加1
            ELSE
               mileage <= mileage;
            END IF;
         ELSIF (stop = '1') THEN
            mileage <= "00000000";--停止
         ELSE
            mileage <= mileage;
         END IF;
      END IF;
   END PROCESS;

代码文件(付费下载):



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

发表评论

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

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

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