出租车计费器设计VHDL代码Quartus仿真
名称:出租车计费器设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
课题内容
本部分主要是使用硬件描述语言(VHDL语言)对系统的软件部分进行设计,来实现出租车实时计费的功能,本设计针对不同地域可以实现灵活计价,可以根据地域不同设置不同的起步价以及公里单价等参数,实时向顾客显示收费数据。VHDL语言不同于其他高级语言,它的程序执行的主体是并行语句,在并行语句中实现顺序控制,系统主要使用状态机来实现功能。设计部分主要包括:CPLD软件部分设计以及硬件部分设计。最后要求系统统一联合调试
课题要求:
(1)查阅有关与此设计思想有关的资料,了解目前发展状况;
(2)熟悉CPLD编程环境以及设计思想,掌握编程技巧;
(3)能完成底层软件部分以及硬件部分设计采用模块化设计,根据系统要求完成出租车计价器的全部功能。
(4)方案设计过程中,充分考虑其它非技术性因素,如软件的人性化等,以进步分析方案的可行性;
(5)翻译与本专业或设计课题相关的英文文献,译文不少于3000字。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
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仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 出租车计费器设计VHDL代码Quartus仿真
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm