《通信电路EDA》课程项目报告地铁售票控制系统设计.doc

《通信电路EDA》课程项目报告地铁售票控制系统设计.doc

PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 2 《通信电路EDA》课程项目报告 系 别 水利计通系 专 业 通信工程 地铁售票控制系统设计 1 引 言 1.项目描述:用于模仿地铁售票的自动售票,完成地铁售票的核心控制功能。 2.项目要求:售票机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是5角和1 元的硬币,纸币的识别范围是1 元、2 元,5 元,10 元。乘客可以连续多次投入钱币。 乘客可以选择的种类为2 元和4 元,乘客一次只能选择一个出站口。购买车票时,乘客先选择出站名,然后选择所需的票数,再进行投币,投入的钱币达到所需金额时,售票机自动出票,并找出余额,本次交易结束,等待下一次的交易。在投币期间,乘客可以按取消键取消 本次操作,钱币自动退出。 2 设计思想 1.买车票时,乘客按“开始选择”按钮,接着选择出站口接着选择购票数量(根据提示,一次购票数限制在3张以内);然后按“开始投币”按钮,投入钱币;当投入的钱币达到所需金额时,售票机自动出票,并找出余额。考虑到控制整个售票机的物理体积,余额将全部采用5角硬币的形式找出。 2.选择出站口或投币过程中,乘客都可以按“取消”按钮取消该次交易。选择出站口的过程中,若按“取消”,则售票机直接回到初始状态;投币过程中,若按“取消”,则售票机将乘客已经投入的钱币全部退出,再回到初始状态。 3.乘客一次只能选择一个出站口,根据乘坐的站数确定票价。假设乘客购票所在站到终点站共有15站。若乘坐1-8站,则票价为2元/张;若乘坐9-16站,则票价为4元/张。16个站用长度位4的二进制向量编码表示,即0001表示乘坐1站,0010表示乘坐2站,依次类推,1111表示乘坐15站(到终点站)。 出票机有2个进币端口。硬币口可识别5角和1元2种硬币,拟用长度为2的一比特热位(one-hot)编码方式表示,即01表示5角,10表示1元。纸币口类似,用长度为4的一比特热位编码方式表示。乘客可以连续多次投入钱币,并且可以以任意顺序投入硬币和纸币。 出票机设有钱币“暂存杆”,其有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 sta

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档