欢迎来到天天文库
浏览记录
ID:2119492
大小:31.50 KB
页数:6页
时间:2017-11-14
《通过自动售邮票机谈如何设计最优化的状态机》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、设计一个自动售邮票机。每次只允许投入一枚五角或者一元的硬币,累计投入两元硬币给出一张邮票。如果投入一元五角硬币以后再投入一枚一元硬币,则给出邮票的同时还应找回五角钱第一种设计思路:通过状态机扫描各种给出邮票的情况,按照每次只能投币一次,依据投币的先后顺序。能够给出邮票的有五种情况:l四个五角硬币。两个二元硬币。l三个五角硬币和一个一元硬币(给出邮票同时找回五角)。l两个五角硬币和一个一元硬币。ll一个五角硬币和两个一元硬币(给出邮票并找回五角)。设计两个计数器,一个是五角硬币的累加计数,一个是一元硬币的累加计数。每投入一个硬
2、币认为是输入一个脉冲。那么计数器通过各自投入硬币的脉冲沿触发计数。如果累计满两元或者两元五角,那么输出邮票或者输出邮票并找回五角的同时。两个计数器同时清零,清零信号保持一个时钟周期后回复到正常的计数状态。扫描状态机在不断扫描各种情况,每一种状态对应一种给出邮票的情况。若累计不足输出邮票,则输出邮票信号为零,找回五毛信号也为零。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENT
3、ITYautomachineISPORT(CLK:INSTD_LOGIC;FIM:INSTD_LOGIC;--五毛硬币ONY:INSTD_LOGIC;--一元硬币RESET:INSTD_LOGIC;STP:OUTSTD_LOGIC;--输出邮票BFIM:OUTSTD_LOGIC);--找回五毛ENDENTITY;ARCHITECTUREbehavOFautomachineISSIGNALFCOUNT:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALOCOUNT:STD_LOGIC_VECTOR(1DOWNT
4、O0);SIGNALMSTATE:STD_LOGIC_VECTOR(4DOWNTO0);SIGNALRETCON:STD_LOGIC;SIGNALSIG_STP:STD_LOGIC;SIGNALSIG_BFIM:STD_LOGIC;BEGINPROCESS(RESET,CLK)BEGINIFRESET='1'THENMSTATE<="10000";ELSIFCLK'EVENTANDCLK='1'THENMSTATE(4)<=MSTATE(0);MSTATE(3DOWNTO0)<=MSTATE(4DOWNTO1);ENDIF;
5、ENDPROCESS;PROCESS(FIM,RETCON,FCOUNT)BEGINIFRETCON='1'THENFCOUNT<="000";ELSIFFIM'EVENTANDFIM='1'THENFCOUNT<=FCOUNT+1;ELSEFCOUNT<=FCOUNT;ENDIF;ENDPROCESS;PROCESS(ONY,RETCON,OCOUNT)BEGINIFRETCON='1'THENOCOUNT<="00";ELSIFONY'EVENTANDONY='1'THENOCOUNT<=OCOUNT+1;ELSEOCO
6、UNT<=OCOUNT;ENDIF;ENDPROCESS;PROCESS(CLK,MSTATE,FCOUNT,OCOUNT)BEGINIFCLK'EVENTANDCLK='1'THENCASEMSTATEISWHEN"10000"=>IFFCOUNT="000"ANDOCOUNT="10"THENSIG_STP<='1';SIG_BFIM<='0';RETCON<='1';ELSESIG_STP<='0';SIG_BFIM<='0';RETCON<='0';ENDIF;WHEN"01000"=>IFFCOUNT="001"A
7、NDOCOUNT="10"THENSIG_STP<='1';SIG_BFIM<='1';RETCON<='1';ELSESIG_STP<='0';SIG_BFIM<='0';RETCON<='0';ENDIF;WHEN"00100"=>IFFCOUNT="010"ANDOCOUNT="01"THENSIG_STP<='1';SIG_BFIM<='0';RETCON<='1';ELSESIG_STP<='0';SIG_BFIM<='0';RETCON<='0';ENDIF;WHEN"00010"=>IFFCOUNT="011"
8、ANDOCOUNT="01"THENSIG_STP<='1';SIG_BFIM<='1';RETCON<='1';ELSESIG_STP<='0';SIG_BFIM<='0';RETCON<='0';ENDIF;WHEN"00001"=>IFFCOUNT="100"ANDOCOUNT="0
此文档下载收益归作者所有