2017-03-26 2 views
-3

ich einen Code geschrieben und ich habe ein Problem definieren, die if-AnweisungVHDL mit Auswahl und "AND"

port ( 
    clk: in std_logic; 
    restb: in std_logic; 
    bout : std_logic_vector(3 downto 0) 
); 
    end entity; 

    architecture behave of mod9and5 is 

    signal state: unsigned(3 downto 0); 
    signal state_next: unsigned(3 downto 0); 

    begin 

    with state select state_next <= 
    "0001" when (state <= "0000") and (mode = '0'); 


    "0000" when others; 

- hier ist mein Problem - was ich ist, wenn der Eingang 0000 tun wollte und der Modus 0 dann 0001

+0

Error (10500): VHDL Syntaxfehler bei HW31911.vhd (24) in der Nähe von Text ""; erwartet "<=" –

+0

Ich habe bereits mode: in std .... und auch fixed bout: out ... –

+0

mit zustand select state_next <= "0001" wenn "0000", "0010" wenn "0001" & (Modus = '0'); "0011" wenn "0010" & (Modus = '0'), "0100" wenn "0011" & (Modus = '0'), "0101" wenn "0100" & (Modus = '0') , "0110" wenn "0101" & (Modus = '1'), "0111" wenn "0110" & (Modus = '1'), "1000" wenn "0111" & (Modus = '1'), "1001" wenn "1000" & (Modus = '1'), –

Antwort

0

with.. select ist keine if-Anweisung. Aber trotzdem. Google es! vhdl with select

Das Symbol ; beendet eine Aussage. Es ist am falschen Ort.

Da Sie zwei Eingänge zum Auswählen verwenden, müssen Sie sie verketten, bevor Sie auswählen. Somit:

signal select_input : std_logic_vector(4 downto 0); 
begin 
    select_input <= state & mode; 
    with select_input select state_next <= 
     "0001" when "00000", 
     "0010" when "00010", 
     "0011" when "00100", 
     "0100" when "00110", 
     "0101" when "01000", 
     "0110" when "01011", 
     "0111" when "01101", 
     "1000" when "01111", 
     "1001" when "10001", 
     "0000" when others; -- required!