进行引脚锁定后就可以进行编程。
代码如下:
-- D:XILINXTUTORIALVCRSTATE.vhd
-- VHDL code created by Xilinx's StateCAD 6.1i
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY VCRSTATE IS
PORT (CLK,PLAYSWITCH,POWERSWITCH,RECORDSWITCH,RESET,STOPSWITCH: IN std_logic ;
PLAYLED,POWERLED,RECORDLED : OUT std_logic);
END;
ARCHITECTURE BEHAVIOR OF VCRSTATE IS
TYPE type_sreg IS (OFF,PLAY,POWERON,RECORDING);
SIGNAL sreg, next_sreg : type_sreg;
SIGNAL next_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';
ELSIF CLK='1' AND CLK'event THEN
sreg <= next_sreg; PLAYLED <= next_PLAYLED;
POWERLED <= next_POWERLED; RECORDLED <= next_RECORDLED;
END IF;
END PROCESS;
PROCESS (sreg,PLAYSWITCH,POWERSWITCH,RECORDSWITCH,STOPSWITCH)
BEGIN
next_PLAYLED <= '0'; next_POWERLED <= '0'; next_RECORDLED <= '0';
next_sreg<=OFF;
CASE sreg IS
WHEN OFF =>
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';
END IF;
WHEN PLAY =>
IF ( POWERSWITCH='1' AND STOPSWITCH='0' ) THEN
next_sreg<=PLAY; next_POWERLED<='1';
next_PLAYLED<='1'; next_RECORDLED<='0';
END IF;
IF ( POWERSWITCH='0' ) THEN
next_sreg<=OFF; next_POWERLED<='0';
next_PLAYLED<='0'; next_RECORDLED<='0';
END IF;
IF ( STOPSWITCH='1' AND POWERSWITCH='1' ) THEN
next_sreg<=POWERON; next_POWERLED<='1';
next_PLAYLED<='0'; next_RECORDLED<='0';
END IF;
WHEN POWERON =>
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';
END IF;
WHEN RECORDING =>
IF ( POWERSWITCH='1' AND STOPSWITCH='0' ) THEN
next_sreg<=RECORDING; next_POWERLED<='1';
next_PLAYLED<='0'; next_RECORDLED<='1';
END IF;
IF ( POWERSWITCH='0' ) THEN
next_sreg<=OFF; next_POWERLED<='0';
next_PLAYLED<='0'; next_RECORDLED<='0';
END IF;
IF ( STOPSWITCH='1' AND POWERSWITCH='1' ) THEN
next_sreg<=POWERON; next_POWERLED<='1';
next_PLAYLED<='0'; next_RECORDLED<='0';
END IF;
WHEN OTHERS =>
END CASE;
END PROCESS;
END BEHAVIOR;