У меня есть вопрос об операторе case и VHDL 2008. У меня есть объект, определенный следующим образом:
entity multiplier_v2 is
generic( WIDTH_WORD : integer := 32;
WIDTH_RSA : integer := 2048;
LENGTH_ADDRESS : integer := 6 );
port (
reset : in std_logic;
clk : in std_logic;
start : in std_logic;
input_1 : in std_logic_vector(WIDTH_WORD - 1 downto 0);
input_2 : in std_logic_vector(WIDTH_WORD - 1 downto 0);
module : in std_logic_vector(WIDTH_WORD - 1 downto 0);
output : out std_logic_vector(WIDTH_WORD - 1 downto 0);
ack_data : out std_logic;
data_valid : out std_logic;
new_module : in std_logic;
Внутри модуля я объявил сигнал следующим образом:
signal counter_ack : std_logic_vector(LENGTH_ADDRESS - 1 downto 0);
Я использую этот сигнал в операторе case:
case counter_ack is
when (others => '1') =>
ack_data <= '0';
when others =>
counter_ack <= counter_ack + 1;
end case;
Теперь я почти уверен, что опция VHDL-2008 включена в моем инструменте синтеза, но у меня есть следующая ошибка в отношении этой части моего кода:
2049990 ОШИБКА - E:/My_Designs/Custom Module/Montgomery_Multiplier/Diamond/src/multiplier_v2.vhd(456,6-461,15) (VHDL-1544) тип массива case выражение должно иметь локально статический подтип
Я читал, что эта ошибка должна быть исправлена в VHDL-2008. Любые идеи ?