[an error occurred while processing this directive]
|
Препроцессор - да, с ним было бы лучше.
Попытаюсь обьяснит что я хочу услышать. (Помоему и условная компиляция где то здесь рядом)
-Под for я понимаю sequential цикл. Так? Он ставиться внутрь process-а.
-generate это concurrent конструкция.
-Instance внутри процесса устанавливать нельзя.
-2001-го Верилога не знаю. (но базар затеваю именно чтоб узнать о нём) Говорю про "до него".
Например надо сделать параметризованный декодер Витерби.
1) Меняется количество входов (я имею ввиду скорость кода, не разрядность (разрядность пусть будет 2 бита)) для branch metric calculation:
in1(width-1:0)
in2(width-1:0)
inN(width-1:0)
С помощью VHDL-ного generic или Verilog-овского parameter их можно бы объединить в in(N*width-1:0). Циклом for просчитать всё.
VHDL-ным generate-ом возможно сохранить имена входов (но не в entity) in(1), in(2), in(N). В entity всё равно придётся загнаться на максимальное количество входов. В этом месте преимущества generate не серьёзное.
2) State metric calculation. Можно одной "бабочкой" последовательно рассчитывать все состояния, можно двумя в параллель, 4-мя... или сразу все состояния параллельно. При фиксированнном известном количестве этих "бабочек" это можно описать циклом for.
А если надо найти компромисс между скоростью и площадью? Поиграть с количеством вычислительных блоков. Т.е. именно придётся устанавливать instance-ы. VHDL-ным generate-ом можно параметризировать это дело. В Veriloge для каждого количества блоков надо будет в исходнике переписывать цикл for.
Вот как быть в такой ситуации на Verilog2001?
E-mail: info@telesys.ru