用STATECAD快速设计有限状态机
ARCHITECTUREBEHAVIOROFVCRSTATEIS
TYPEtype_sregIS(OFF,PLAY,POWERON,RECORDING);
SIGNALsreg,next_sreg:type_sreg;
SIGNALnext_PLAYLED,next_POWERLED,next_RECORDLED:std_logic;
BEGIN
PROCESS(CLK,RESET,next_sreg,next_PLAYLED,next_POWERLED,next_RECORDLED)
>BEGIN
IF(RESET='1')THEN
sreg<=OFF;PLAYLED<='0';
POWERLED<='0';RECORDLED<='0';
ELSIFCLK='1'ANDCLK'eventTHEN
sreg<=next_sreg;PLAYLED<=next_PLAYLED;
POWERLED<=next_POWERLED;RECORDLED<=next_RECORDLED;
ENDIF;
ENDPROCESS;
PROCESS(sreg,PLAYSWITCH,POWERSWITCH,RECORDSWITCH,STOPSWITCH)
BEGIN
next_PLAYLED<='0';next_POWERLED<='0';next_RECORDLED<='0';
next_sreg<=OFF;
CASEsregIS
WHENOFF=>
IF(POWERSWITCH='1')THEN
next_sreg<=POWERON;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='0';
ELSE
next_sreg<=OFF;next_POWERLED<='0';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
WHENPLAY=>
IF(POWERSWITCH='1'ANDSTOPSWITCH='0')THEN
next_sreg<=PLAY;next_POWERLED<='1';
next_PLAYLED<='1';next_RECORDLED<='0';
ENDIF;
IF(POWERSWITCH='0')THEN
next_sreg<=OFF;next_POWERLED<='0';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
IF(STOPSWITCH='1'ANDPOWERSWITCH='1')THEN
next_sreg<=POWERON;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
WHENPOWERON=>
IF(POWERSWITCH='0')THEN
next_sreg<=OFF;next_POWERLED<='0';
next_PLAYLED<='0';next_RECORDLED<='0';
ELSIF(RECORDSWITCH='1')THEN
next_sreg<=RECORDING;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='1';
ELSIF(PLAYSWITCH='1')THEN
next_sreg<=PLAY;next_POWERLED<='1';
next_PLAYLED<='1';next_RECORDLED<='0';
ELSE
next_sreg<=POWERON;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
WHENRECORDING=>
IF( 《用STATECAD快速设计有限状态机(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/172835.html
TYPEtype_sregIS(OFF,PLAY,POWERON,RECORDING);
SIGNALsreg,next_sreg:type_sreg;
SIGNALnext_PLAYLED,next_POWERLED,next_RECORDLED:std_logic;
BEGIN
PROCESS(CLK,RESET,next_sreg,next_PLAYLED,next_POWERLED,next_RECORDLED)
>BEGIN
IF(RESET='1')THEN
sreg<=OFF;PLAYLED<='0';
POWERLED<='0';RECORDLED<='0';
ELSIFCLK='1'ANDCLK'eventTHEN
sreg<=next_sreg;PLAYLED<=next_PLAYLED;
POWERLED<=next_POWERLED;RECORDLED<=next_RECORDLED;
ENDIF;
ENDPROCESS;
PROCESS(sreg,PLAYSWITCH,POWERSWITCH,RECORDSWITCH,STOPSWITCH)
BEGIN
next_PLAYLED<='0';next_POWERLED<='0';next_RECORDLED<='0';
next_sreg<=OFF;
CASEsregIS
WHENOFF=>
IF(POWERSWITCH='1')THEN
next_sreg<=POWERON;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='0';
ELSE
next_sreg<=OFF;next_POWERLED<='0';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
WHENPLAY=>
IF(POWERSWITCH='1'ANDSTOPSWITCH='0')THEN
next_sreg<=PLAY;next_POWERLED<='1';
next_PLAYLED<='1';next_RECORDLED<='0';
ENDIF;
IF(POWERSWITCH='0')THEN
next_sreg<=OFF;next_POWERLED<='0';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
IF(STOPSWITCH='1'ANDPOWERSWITCH='1')THEN
next_sreg<=POWERON;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
WHENPOWERON=>
IF(POWERSWITCH='0')THEN
next_sreg<=OFF;next_POWERLED<='0';
next_PLAYLED<='0';next_RECORDLED<='0';
ELSIF(RECORDSWITCH='1')THEN
next_sreg<=RECORDING;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='1';
ELSIF(PLAYSWITCH='1')THEN
next_sreg<=PLAY;next_POWERLED<='1';
next_PLAYLED<='1';next_RECORDLED<='0';
ELSE
next_sreg<=POWERON;next_POWERLED<='1';
next_PLAYLED<='0';next_RECORDLED<='0';
ENDIF;
WHENRECORDING=>
IF( 《用STATECAD快速设计有限状态机(第2页)》