2013-03-09 11 views
5

Mam następujący kod (koduje szereg prasowanej przycisku):VHDL: z-select dla wielu wartości

with buttons select 
    tmp <= "000" when x"1", 
     "001" when x"2", 
     "010" when x"4", 
     "011" when x"8", 
     "100" when others; 
code <= input(1 downto 0); 
error <= input(2); 

Próbuję przepisać go bez użycia tmp sygnał. Czy to możliwe? Poniższa nie działa:

with buttons select 
    error & code <= "000" when x"1", 
        "001" when x"2", 
        "010" when x"4", 
        "011" when x"8", 
        "100" when others; 

Odpowiedz

3

Zamiast z select, można użyć sprawy:

my_process_name : process(buttons) 
begin 
    case buttons is 
    when x"1" => 
     error <= '0'; 
     code <= "00"; 
    when x"2" => 
     error <= '0'; 
     code <= "01"; 
    when x"4" => 
     error <= '0'; 
     code <= "10"; 
    when x"8" => 
     error <= '0'; 
     code <= "11"; 
    when others => 
     error <= '1'; 
     code <= "00"; 
    end case; 
end process; 
+1

To działa tylko w procesach: http://www.quicknet.se/hdc/hdl/ educaton/mux4_1/index.htm – rburny

+0

Czy istnieje jakiś szczególny powód, dla którego nie chcesz umieszczać go w procesie? – TOTA

+1

Po prostu uczę się VHDL i szukałem najprostszego, najbardziej eleganckiego rozwiązania. Czy istnieje jakaś różnica semantyczna, jeśli w procesie umieszczam kod kombinatoryczny? – rburny

Powiązane problemy