地铁自动售票系统VHDL

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通信线路EDA课程项目

--关于VHDL语言模拟地铁售票控制系统设计

项目组负责人:胡弘正通信0903(200985250321)

项目组成员:刘上校通信0903(200985250317)

邹娟通信0901(200985250103)

完成日期:遥遥无期

一、设计要求:

功能描述:用于模仿地铁售票的自动售票,完成地铁售票的核心控制功能。

功能要求:售票机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是5

角和1 元的硬币,纸币的识别范围是1 元、2 元,5 元,10 元。乘客可以连续多次投入钱币。

乘客可以选择的种类为2 元和4 元,乘客一次只能选择一个出站口。购买车票时,乘客先选

择出站名,然后选择所需的票数,再进行投币,投入的钱币达到所需金额时,售票机自动出

票,并找出余额,本次交易结束,等待下一次的交易。在投币期间,乘客可以按取消键取消

本次操作,钱币自动退出。

功能描述:用于模仿地铁售票的自动售票,完成地铁售票的核心控制功能。

功能要求:售票机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是5

角和1 元的硬币,纸币的识别范围是1 元、2 元,5 元,10 元。乘客可以连续多次投入钱币。

乘客可以选择的种类为2 元和4 元,乘客一次只能选择一个出站口。购

买车票时,乘客先选

择出站名,然后选择所需的票数,再进行投币,投入的钱币达到所需金额时,售票机自动出

票,并找出余额,本次交易结束,等待下一次的交易。在投币期间,乘客可以按取消键取消

本次操作,钱币自动退出。

二.课题分析

1.买车票时,乘客按“开始选择”按钮,接着选择出站口接着选择购票数量(根据提示,一次购票数限制在3张以内);然后按“开始投币”按钮,投入钱币;当投入的钱币达到所需金额时,售票机自动出票,并找出余额。考虑到控制整个售票机的物理体积,余额将全部采用5角硬币的形式找出。

2.选择出站口或投币过程中,乘客都可以按“取消”按钮取消该次交易。选择出站口的过程中,若按“取消”,则售票机直接回到初始状态;投币过程中,若按“取消”,则售票机将乘客已经投入的钱币全部退出,再回到初始状态。

3.客一次只能选择一个出站口,根据乘坐的站数确定票价。假设乘客购票所在站到终点站共有15站。若乘坐1-8站,则票价为

2元/张;若乘坐9-16站,则票价为4元/张。16个站用长度位4的二进制向量编码表示,即0001表示乘坐1站,0010表示乘坐2站,依次类推,1111表示乘坐15站(到终点站)。

4.票机有2个进币端口。硬币口可识别5角和1元2种硬币,拟用长度为2的一比特热位(one-hot)编码方式表示,即01表示5角,10表示1元。纸币口类似,用长度为4的一比特热位编码方式表示。乘客可以连续多次投入钱币,并且可以以任意顺序投入硬币和纸币。

5.票机设有钱币“暂存杆”,其有3个状态:退币状态、等待状态、进币状态,分别用00、01、10表示。退币状态下,“暂存杆”

将乘客投入的钱币推出;等待状态下,投入的钱币被“暂存杆”

挡住暂存;进币状态下,“暂存杆”将乘客投入的钱币推入售票机内部。

三、系统流程图:

四.系统状态图

五、程序源代码及注释

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity subway is

port(

clk :in std_logic; --系统时钟

select_start :in std_logic; --“开始选择”按钮

insert_start :in std_logic; --“开始投币”按钮

coin :in std_logic_vector(1 downto 0); --硬币入口

note :in std_logic_vector(3 downto 0); --纸币入口

cancel :in std_logic; --“取消”按钮

ticket_stop :in std_logic_vector(3 downto 0); --出站口编号

ticket_account :in std_logic_vector(1 downto 0); --购票张数

money_gate :out std_logic_vector(1 downto 0); --钱币“暂存杆”

ticket_out :out std_logic_vector(4 downto 0); --购买的车票

ticket_gate :out std_logic; --出票口

change_gate :out std_logic --找零口

);

end subway;

architecture behave of subway is

type state_type is (initialize_state,select_state,insert_state,ticket_state,change_state);

--状态变量申明signal state:state_type; --状态信号申明

begin

process(clk)

variable type_temp :std_logic; --记录是否已选择出站口的变量

variable account_temp :std_logic; --记录是否已选择购票张数的变量

variable temp_type :std_logic_vector(4 downto 0); --记录票种的中间变量

相关文档
最新文档