Как заставить этот VHDL цикл for работать без ошибок в modelsim? - PullRequest
1 голос
/ 01 июля 2019

У меня в цикле VHDL есть цикл for, который выдает ошибку modelsim: «Недопустимый параллельный оператор».

Моя архитектура VHDL имеет длину в несколько сотен строк, поэтому я просто покажу, что даетошибка:

for k in 0 to 19 loop
    DATA_SERDES(k)  <= DATA_SERDES_inv(19-k);
end loop;

Это работает, когда я заменяю цикл на:

DATA_SERDES(0)      <= DATA_SERDES_inv(19);
DATA_SERDES(1)      <= DATA_SERDES_inv(18);
DATA_SERDES(2)      <= DATA_SERDES_inv(17);
DATA_SERDES(3)      <= DATA_SERDES_inv(16);
DATA_SERDES(4)      <= DATA_SERDES_inv(15);
DATA_SERDES(5)      <= DATA_SERDES_inv(14);
DATA_SERDES(6)      <= DATA_SERDES_inv(13);
DATA_SERDES(7)      <= DATA_SERDES_inv(12);
DATA_SERDES(8)      <= DATA_SERDES_inv(11);
DATA_SERDES(9)      <= DATA_SERDES_inv(10);
DATA_SERDES(10)     <= DATA_SERDES_inv(9);
DATA_SERDES(11)     <= DATA_SERDES_inv(8);
DATA_SERDES(12)     <= DATA_SERDES_inv(7);
DATA_SERDES(13)     <= DATA_SERDES_inv(6);
DATA_SERDES(14)     <= DATA_SERDES_inv(5);
DATA_SERDES(15)     <= DATA_SERDES_inv(4);
DATA_SERDES(16)     <= DATA_SERDES_inv(3);
DATA_SERDES(17)     <= DATA_SERDES_inv(2);
DATA_SERDES(18)     <= DATA_SERDES_inv(1);
DATA_SERDES(19)     <= DATA_SERDES_inv(0);

Для меня оба объявления эквивалентны, но modelsim видит ошибку.У меня нет другой переменной "k" или любого другого цикла в архитектуре.Я использую VHDL 93 и компилирую с modelsim 10.4c

Есть идеи?

Спасибо,

SLP

1 Ответ

2 голосов
/ 01 июля 2019

Цикл for может использоваться только внутри процессов, функций или процедур.Может быть, то, что вы ищете, это выражение «генерировать»:

generate_label: for k in 0 to 19 generate
    DATA_SERDES(k)  <= DATA_SERDES_inv(19-k);
end generate;
...