基于VHDL编程FPGA的地铁自动售票机
更新时间:2023-09-22 13:12:01 阅读量: 经管营销 文档下载
- vhdl语言编程推荐度:
- 相关推荐
地铁自动售票机
一、设计要求
1、功能描述
用于模仿地铁售票自动售票,完成地铁售票的核心控制功能。
2、功能要求
售票机有两个进币孔,一个是输入硬币,识别的范围是一元硬币;一个是纸币,识别的范围是一元、两元、五元、十元、二十元。乘客可以连续多次投入钱币。乘客 一次只能选择一个出站口,购买车票时,乘客先选出站口,有六个出站口可供选择,再选择所需的票数,然后投币,投入的钱币达到或者超过所需金额时,售票机自 动出票,并找零。本次交易结束后,等待下一次交易。在选择出站口、所需票数以及在投币期间,乘客可以按取消键取消操作,钱币自动退出。
二、实验分析
1、 买票时,乘客按下开始键,售票机进入站台选择程序,乘客选择出站口后,可以按取消键重新选择,否则售票机自动进入票数选择程序,同样这时可以按下取消键重新开始选择出站口以及票数。
2、 当选择好出站口以及所需票数时,乘客可以投硬币或者用纸币,当所投的钱币总额大于或者等于票价时,售票机自动出票以及找零。期间,可以按下取消键重新开始选择,并退出所有的钱币。
3、 乘客若还没选择出站口或者票数,就投币或者使用纸币,售票机会自动退出所有的钱币。
4、 有六个站台可供乘客选择,每个乘客最多可以买3张票,六个站台编号为1到6,票价从2元依次递增到7。
三、系统流程图
四、程序源代码
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_arith.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY metrosell IS PORT(
clk:in std_logic; startselect:in std_logic; sure:in std_logic; save your forward step(s)
coin1y:in std_logic; pmoney1y:in std_logic; pmoney2y:in std_logic; pmoney5y:in std_logic; pmoney10y:in std_logic; money
pmoney20y:in std_logic; money
cancel:in std_logic; number:in std_logic_vector(3 downto 0); the tickets
platform:in std_logic_vector(3 downto 0); want to reach
moneystorage:out std_logic; acceptmo:out std_logic; stamp:out std_logic; --set the clock signal --start to select the platform --this button is to --1 yuan coin
--1 yuan paper money --2 yuan paper money --5 yuan paper money --10 yuan paper --20 yuan paper --cancel the forward step(s) --choose the number of --choose the platform you --to store the money --accept the money --stamp outgate
charge:out std_logic_vector(3 downto 0); --the mount of charge,up to 15 yuan
chargegate:out std_logic --charge outgate ); END metrosell;
ARCHITECTURE sell OF metrosell IS
type state_type is
(initial_type,selectp_type,selectnum_type,insert_type,stamp_type,charge_type); --define six types
signal state:state_type; --define a shared state BEGIN
main:process(clk,state,startselect,platform,number,coin1y,pmoney1y,pmoney2y,pmoney5y,pmoney10y,pmoney20y,cancel,sure)
variable univalence :integer range 0 to 7; --the univalence of the ticket variable total_money :integer range 0 to 21; --the price of the ticket(s) variable selectp_alr:std_logic; --the flag of select platform type
variable selectnum_alr:std_logic; --the flag of select number type
variable stamp_alr:std_logic; --the flag of the stamp gate variable charge_alr:std_logic; --the flag of the charge gate
variable money_reg:integer range 0 to 21; --the mount of money put in variable coin1y_f:std_logic; --the flag of one yuan coin variable pmoney1y_f:std_logic; --the flag of one yuan paper money
variable pmoney2y_f:std_logic; --the flag of two yuan paper money
variable pmoney10y_f:std_logic; --the flag of ten yuan paper money
variable pmoney20y_f:std_logic; --the flag of twelve yuan paper money
variable pmoney5y_f:std_logic; --the flag of five yuan paper money
variable charge_reg:integer range 0 to 15; begin
if(rising_edge(clk)) then case state is
when initial_type => variables
univalence:=0; selectp_alr:='0'; selectnum_alr:='0'; stamp_alr:='0'; charge_alr:='0'; money_reg:=0; total_money:=0; coin1y_f:='0'; pmoney1y_f:='0'; pmoney2y_f:='0'; pmoney5y_f:='0';
--the register of charge --initialize some pmoney10y_f:='0'; pmoney20y_f:='0'; moneystorage<='0'; stamp<='0'; charge_reg:=0; charge<=\ acceptmo<='0'; chargegate<='0'; if (startselect='1') then state<=selectp_type; end if; when selectp_type =>
if(selectp_alr='0'and cancel='0') then --choose the platform if(platform=\ elsif(platform=\ elsif(platform=\ elsif(platform=\ elsif(platform=\ elsif(platform=\ elsif(platform=\ else null; end if;
elsif(selectp_alr='1'and cancel='1')then state<=initial_type; elsif(selectp_alr='1'and sure='1') then state<=selectnum_type;
end process main; END sell;
五、波形仿真
1、乘客按下开始按钮,进入选站台模式,选择二号站台,按下确定键,再选择票数为2张,按下确定键,售票机钱箱关闭,投入一张两元和五元纸币(对顺序没有要求),此时钱币总额大于票价,出两张票并找零一元。之后系统进入初始化状态。具体仿真如图 1 仿真1
图 1 仿真1
2、测试cancel键,当乘客按正确的操作完成选站台时,按下取消键,再重新选择,如图 2 cancel仿真,仿真波形如下。
图 2 cancel仿真
3、还是测试cancel键,当乘客选择好票数时,按下cancel键,然后重新选择两张单价为七块钱的六号站台票,投入一张20元和5元,找零六元。仿真波形如图 3 cancel仿真2
图 3 cancel仿真2
4、乘客选择五号站台,两张票,然后先后投入一元纸币,两元纸币,一元纸币,五元纸币,然后按下取消键,售票机自动放出所有的钱币。仿真如图 4 cancel仿真3。
图 4 cancel仿真3
六、心得体会
在我的设计中,有一个moneystorage信号量用于控制储存钱币箱的开与关,这个设计主要考虑到当乘客要求退币时,最好不是从售票机中取出投入的钱数,然
后退还,设置了这个开关,就可以在按下取消键时,直接从储存钱币箱中退出钱币。
还有,乘客选择的站台以及票数,在售票机内部会自动将这两个信号传给出票系统,从而自动出票,以上写的程序只是让系统知道怎样收钱以及找零。 这次实验总体上来说比六人抢答器简单,但是因为这个售票机完全是自己写的,所以也不是想象中的那么简单。这也让我看出,要完全自己去做一件东西不是简单的,特别是要考虑很全面,还是要发一些时间的。
正在阅读:
基于VHDL编程FPGA的地铁自动售票机09-22
材料分析速算05-10
xx年春季农田水利基本建设实施方案12-22
都是时间惹的祸作文300字07-07
部编版道德与法治二年级下册教案-10 清新空气是个宝306-07
《电子政务》复习题及参考答案03-29
医疗器械经营企业变更申请表06-09
河南省禁止非医学需要胎儿性别鉴定和选择性别人工终止妊娠条例12-07
致辖区广大居民的一封信03-27
2019年某镇人民代表大会工作报告05-24
- 教育局拟征求中考升学奖励制度
- 2020房地产销售主管年终工作总结
- 虚拟多台位互感器检定装置投资项目可行性分析
- 车间工人辞职报告范本
- 溴投资项目可行性分析
- 改名字申请书怎么写
- 忧与爱作文素材
- 溴苯腈投资项目可行性分析
- 2020清华大学考研复试时间:3月6日至22日
- 2020年蚌埠高考查分系统网址
- 2020年二建《建筑工程实务》测试题及答案(13)
- 生死感悟——人间世观感一
- 武陵源区军地小学观看魏书生《如何当好班主任》讲座录像
- 全球10大安全旅游国出炉日本排名第9
- 企业策划书模板
- 高中英语教师工作总结3篇
- 法定代表人证明范本
- 大学助学金申请书范文1700字
- 案外人申请不予执行仲裁裁决司法解释施行首份申请书递交齐齐哈尔...
- 环球国际房地产开发项目策划
- 售票机
- 地铁
- 基于
- 编程
- 自动
- VHDL
- FPGA
- 材料科学基础章作业参考答案
- “十三五”规划重点-辣椒片粉项目建议书(立项报告)
- 装卸工艺主要内容
- 历年二建建筑实务真题 - 图文
- 泵站集水池清淤方案
- 村党组织换届选举工作注意环节
- 微信与微博模式分析
- 大兴区2017-2018高三物理一模试题及答案
- 常用且好玩美国俚语 Interesting American Slan
- 小学三年级作文基本功训练之写段训练
- 实用的一百八十个偏方
- 《煤矿职业安全健康》考核题库
- 小学教师教育教学基本功竞赛理论学习材料
- 中企在缅水电项目被妖魔化 突被叫停蒙巨额损失
- “聚焦教与学转型难点”的信息化教学设计讲解
- 天津市河西区2017-2018学年高三二模理科数学试卷
- 环境水利学形成性考核册
- 四大类微生物菌落形态的比较和识别
- 码头施工组织设计(投标) - secret - 图文
- 专题七:劳动价值论与社会主义市场经济