Я изучаю VHDL, используя Altera Max V и Quartus, чтобы сделать несколько примеров, и у меня возникают проблемы при использовании оператора «With Select when». У меня есть простой декодер 2-4 следующим образом:
library ieee;
use ieee.std_logic_1164.all;
entity lesson9 is
port(
x: in std_logic_vector(1 downto 0);
en: in std_logic;
y: out std_logic_vector(3 downto 0)
);
end lesson9;
architecture rtl of lesson9 is
signal outputBuff: std_logic_vector(3 downto 0);
begin
decoder2to4: process(x)
begin
with x select
outputBuff <= "0001" when "00",
"0010" when "01",
"0100" when "10",
"1000" when "11";
end process decoder2to4;
y <= outputBuff;
end rtl;
И я получил сообщение об ошибке:
возле текста "с"; ожидая «конец», или «(», или идентификатор («с» — зарезервированное ключевое слово), pr последовательный оператор
Я пытался проверить свой код, но не смог найти проблему?
with ... select
не является конструкцией VHDL-2008, ноwith ... select
в последовательном коде (например, в процессе) является новым. Вам нужно либо удалить процесс, чтобы сделатьwith ... select
параллельным, либо включить компиляцию с функциями 2008, если ваш инструмент их поддерживает. - person Paebbels   schedule 03.05.2017