У меня есть следующий VHDL-код, который выдает ошибку «выражение не является константой» для строки «сигнал FiltReg» :
--FILE A--
PORT
(
FindParam : OUT STD_LOGIC_VECTOR(48 DOWNTO 0);
...
);
ARCHITECTURE a OF b IS
SIGNAL MAtaps : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
FindParam <= (MAtaps & ...);
PROCESS (clk, clr_n)
BEGIN
IF clr_n = '0' THEN
MAtaps <= (OTHERS => '0');
ELSIF (clk'EVENT AND clk = '1') THEN
MAtaps <= param2((MAtaps'HIGH) DOWNTO 0);
END IF;
END PROCESS;
.
--FILE B--
PORT
(
FindParam : in STD_LOGIC_VECTOR(48 DOWNTO 0);
...
);
-- Local signals
signal MAtaps : integer range 0 to 16;
signal FiltReg : UNSIGNED(MAtaps DOWNTO 0);
BEGIN
MAtaps <= to_integer(unsigned(FindParam(48 DOWNTO 44)));
Похоже, что объявление сигнала должно быть постоянным, что не соответствует действительности.
Вопрос: Существует ли решение или обходной путь для использования MAtaps для объявления сигнала FiltReg?
РЕДАКТИРОВАТЬ: Сообщение об ошибке Quartus:
Заранее спасибо