2017-03-26 163 views
-3

我寫了一個代碼,我定義了一個問題if語句VHDL與選與「和」

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; 

- 這裏是我的問題 - 我想要做的是,如果輸入0000模式0 then 0001

+0

錯誤(10500):在HW31911.vhd(24)附近的文本 「」 VHDL語法錯誤;期待「<=」 –

+0

我已經擁有模式:在std ....以及固定回合:輸出... –

+0

帶狀態選擇state_next <= 「0001」當「0000」, 「0010」當「0001」 &(mode ='0');當「0100」&(mode ='0')時,當「0011」&(mode ='0')時, 「0100」, 「0101」當「0110」&(mode ='1'), 「1000」,當「0111」&(mode ='1')時, 「0111」, 「0111」 ), 當「1000」&(mode ='1'), –

回答

0

with.. select不是if語句。但無論如何。去谷歌上查詢! vhdl with select

符號;結束語句。它在錯誤的地方。

由於您正在使用兩個輸入進行選擇,所以在使用select之前,必須將它們連接起來。 因此:

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!