Ошибка (10500): ошибка синтаксиса VHDL ------ ожидается "(", или идентификатор ("другие" - зарезервированное ключевое слово), или унарный оператор - PullRequest
0 голосов
/ 24 октября 2018

Кто-нибудь может увидеть, что не так с моим кодом?

Я скопировал код из учебника, но есть некоторые ошибки, которых нет в моей книге.

Это ошибки:

library IEEE;
use IEEE.std_logic_1164.all;

entity Moore_State is
port(
    CLK: in STD_LOGIC;
    S: in STD_LOGIC;
    FB: in STD_LOGIC;
    BACK_OUT: out STD_LOGIC;
    FORWARD_OUT: out STD_LOGIC
    );
end Moore_State;

architecture Moore1_arch of Moore_State is
type StateType is (idle,ready,back,forward);
signal state:StateType;
begin
Process(CLK)
begin
if(CLK'event and CLK='1') then

case state is

when idle=>
        if S='1' then state<=ready;
        else state<=idle;
        end if;
when ready=>
        if FB='0' then state<=back;
        else state<=forward;
        end if;
when back=>
        if S='1' then state<=idle;
        else state<=back;
        end if;
when forward=>
        if S='1' then state<=idle;
        else state<=forward;
        end if;

        end case;
    end if;
end Process;

with state select
    BACK_OUT <='1' when back,
            '0' when others;
    FORWARD_OUT <='1' when forward,
            '0' when others;

end Moore1_arch;

и сообщения об ошибках появляются в последнем абзаце:

1.Error (10500): синтаксическая ошибка VHDL в VHDL1.vhd (48) рядом с текстом ",";ожидание ";"

2. Ошибка (10500): синтаксическая ошибка VHDL в VHDL1.vhd (49) рядом с текстом "другие";ожидается "(", или идентификатор ("другие" - зарезервированное ключевое слово), или унарный оператор

1 Ответ

0 голосов
/ 24 октября 2018

Вы забыли оператор with-select во второй части:

with state select
    BACK_OUT     <= '1' when back,
                    '0' when others;

with state select
    FORWARD_OUT  <= '1' when forward,
                    '0' when others;
...