Search code examples
vhdlfpga

VHDL K.I.T.T. Scanner


I try to write the VHDL code for K.I.T.T. scanner on FPGA LED, but I need to change this code:

  with state select 
            led1 <= '1' when forward1,
                '0' when others;

    with state select
        led2 <= '1' when forward2,
            '0' when others;

    with state select
        led3 <= '1' when forward3, 
            '0' when others;

    with state select
        led4 <= '1' when forward4,
            '0' when others;

to

   with state select 
                    led1,led2,led3 <= '1' when forward1,
                        '0' when others;
      with state select
                   led2, led3,led4 <= '1' when forward2,
                    '0' when others;
with state select
                   led3, led4,led5 <= '1' when forward2,
                    '0' when others;

But when I do this, I recieve error - Expected "(" or another. How can I change this code to change multiply outputs?


Solution

  • You could do it this way:

    led_select : process(state)
    begin
      case state is
        when forward1 =>
         led_states <= "00111";
        when forward2 =>
         led_states <= "01110";
        when forward3 =>
         led_states <= "11100";
        when others =>
         led_states <= (others => '0');
      end case;
    end process;
    
    led1 <= led_states(0);
    led2 <= led_states(1);
    led3 <= led_states(2);
    led4 <= led_states(3);
    led5 <= led_states(4);
    

    Where led_states is a signal declared as signal led_states : std_logic_vector(4 downto 0);