Forum Discussion
Altera_Forum
Honored Contributor
14 years agoCase?
Can anyone help me shorten this if into a case ?
Is it smart? -- Signaltap end
PROCESS (CLOCK_50, KEY(0), KEY(1))
BEGIN
IF (CLOCK_50'EVENT AND CLOCK_50 = '1') THEN -- Trigger Condition
IF KEY(0) = '0' AND KEY(1) = '0' THEN
q <= q;
ELSE
IF KEY(0) = '1' AND KEY(1) = '0' THEN
q <= '1'; -- Set
ELSE
IF KEY(0) = '0' AND KEY(1) = '1' THEN
q <= '0'; -- Reset
END IF;
END IF;
END IF;
END IF;
END PROCESS;2 Replies
- Altera_Forum
Honored Contributor
PROCESS (CLOCK_50)
BEGIN IF (CLOCK_50'EVENT AND CLOCK_50 = '1') THEN -- Trigger Condition IF KEY(0) = '1' AND KEY(1) = '0' THEN q <= '1'; -- Set ELSIF KEY(0) = '0' AND KEY(1) = '1' THEN q <= '0'; -- Reset ELSE null; END IF; END IF; END PROCESS; - Altera_Forum
Honored Contributor
--- Quote Start --- Can anyone help me shorten this if into a case ? --- Quote End ---
--- Quote Start --- Is it smart? --- Quote End --- No it is not smart...people can be smart, but 'it' cannot. Kevin JenningsPROCESS (CLOCK_50) -- Key() should not be in the list , KEY(0), KEY(1)) variable KeyCode: natural range 0 to 3; BEGIN IF (CLOCK_50'EVENT AND CLOCK_50 = '1') THEN -- Trigger Condition -- Assuming that Key is a std_logic_vector and possibly longer than -- just two bits. KeyCode := to_integer(unsigned(Key(1 downto 0)); case KeyCode is when 1 => q <= '1'; -- Set when 2 => q <= '0'; -- Reset when others => null; end case; END IF; END PROCESS;