- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Error (1): VHDL syntax error at Test.vhd(46) near text "WITH"; expecting "end", or "(", or an identifier ("with" is a reserved keyword), or a sequential statement
Error (2): VHDL syntax error at Test.vhd(47) near text "WHEN"; expecting ";" Error (3): VHDL syntax error at Test.vhd(65) near text "WITH"; expecting "end", or "(", or an identifier ("with" is a reserved keyword), or a sequential statement Error (4): VHDL syntax error at Test.vhd(66) near text "WHEN"; expecting ";" LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; USE IEEE.STD_LOGIC_ARITH.all; USE IEEE.STD_LOGIC_UNSIGNED.all; ENTITY Test IS PORT( SW : IN STD_LOGIC_VECTOR(17 DOWNTO 0); CLOCK : IN STD_LOGIC; RESET : IN STD_LOGIC; LOCKIN : IN STD_LOGIC; LED : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ); END Test; ARCHITECTURE a OF Test IS TYPE STATE_TYPE IS ( RESET_GAME, XTURN, XCHECK, XWIN, OTURN, OCHECK, OWIN ); SIGNAL STATE : STATE_TYPE; SIGNAL SWX : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL SWO : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN SWX <= (SW(8) & SW(7) & SW(6) & SW(5) & SW(4) & SW(3) & SW(2) & SW(1) & SW(0)); SWO <= (SW(17) & SW(16) & SW(15) & SW(14) & SW(13) & SW(12) & SW(11) & SW(10) & SW(9)); PROCESS (STATE,CLOCK,RESET,SWX,SWO) BEGIN IF (RESET='1') then STATE <= RESET_GAME; ELSIF (RISING_EDGE(CLOCK)) then CASE state IS WHEN RESET_GAME => LED(0) <= '0'; LED(1) <= '0'; WHEN XTURN => IF (LOCKIN='1') THEN STATE <= XCHECK; ELSE STATE <= XTURN; END IF; WHEN XCHECK => WITH SWX SELECT <-------error 1 here STATE <= XWIN WHEN SWX="000000111", <-------error 2 here XWIN WHEN SWX="000111000", XWIN WHEN SWX="111000000", XWIN WHEN SWX="001001001", XWIN WHEN SWX="010010010", XWIN WHEN SWX="100100100", XWIN WHEN SWX="100010001", XWIN WHEN SWX="001010100", OTURN WHEN OTHERS; WHEN XWIN => LED(1) <= '1'; WHEN Oturn => IF (LOCKIN='1') THEN STATE <= OCHECK; ELSE STATE <= XTURN; END IF; WHEN OCHECK => WITH SWO SELECT <-------error 3 here STATE <= OWIN WHEN SWO="000000111", <-------error 4 here OWIN WHEN SWO="000111000", OWIN WHEN SWO="111000000", OWIN WHEN SWO="001001001", OWIN WHEN SWO="010010010", OWIN WHEN SWO="100100100", OWIN WHEN SWO="100010001", OWIN WHEN SWO="001010100", XTURN WHEN OTHERS; WHEN OWIN => LED(0) <= '1'; END CASE; END IF; END PROCESS; END a;Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
You can only use WITH outside a process. Use CASE instead. Mark.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page