отчет («Битовая ширина myInteger is» & integer'image (myInteger'left - myInteger'Right));

м, мне нужен сигнал для представления чисел от 0 до 5; очевидно, что для этого нужно 3 бита std_logic (т.е. если MAXVAL = 5, то битовая ширина = {wcalc "floor(logtwo($MAXVAL))+1"}).

Я знаю, что мог бы сделать:

SIGNAL myLogicVector : STD_LOGIC_VECTOR(2 downto 0) := 5; 

с помощью которого я бы явно указал массив из трех битов std_logic и установил начальное значение; тогда я мог бы использовать REPORT, чтобы распечатать длину (в данном случае, 3):

report("Bit width of myLogicVector is "& integer'image(myLogicVector'length));

Все идет нормально. Но, допустим, вместо этого я использую целочисленный (числовой) тип:

SIGNAL myInteger : NATURAL range 0 to 5 := 5;

Я предполагаю, что здесь «компилятор» («синтезатор») будетавтоматически сделать вывод, что ему нужно 3 бита для хранения, поскольку это целое число ранжируется со значениями от 0 до 5. Если это так, мойвопрос это: возможно ли как-то распечатать этот бит ширина / длина / размер в отчете?

Хитрость, конечно, в том, что-то вроде этого:

report("Bit width of myInteger is "& integer'image(myInteger'length));

... потерпит неудачу (скажем, с "HDLParsers: 3389 - Префикс длины атрибута должен быть объектом массива"), так как, насколько я понимаю, все эти атрибуты, как'length а также'range применимы только кмассивы (Понимание атрибутов VHDL), тогда как целое число (натуральное) не является массивом - этономер :) (VHDL - векторное целочисленное преобразование)

Опять же, я знаю, что мог бы использовать log2 (Вычислить ширину переменной без знака из максимального значения?) - но то, что я хотел бы, это просто посмотреть быстро (во время синтеза) сколько «битов» «синтезатора» выделено для возможного синтезированного проекта и, следовательно, приблизительно, сколько будет использовано в терминах конечных ресурсов ПЛИС (особенно если бы я использовал «дженерики», чтобы как-то вычислить конкретное максимальное значение для целого числа).

Ну, заранее спасибо за любые ответы, ура!

РЕДАКТИРОВАТЬ: немного контекста: я использую ISE Webpack 9.2; Я пытаюсь использовать «общие» переменные / константы в качестве параметров, а затем использовать уравнения для расчета максимальных значений для счетчиков. Это вычисление, я полагаю, происходит во время «компиляции» (которое будет «Синтезировать» в ISE, а не «Реализация проекта»), и поэтому именно здесь я хочу, чтобы сообщения отчета появлялись (и я фактически получил их так, для собственно std_logic_vector, в журнале синтеза - однако, те же самые сообщения отчета для меня появляются и в начале поведенческого моделирования, что хорошо).

И цель этих сообщений отчета состоит в том, чтобы убедиться, что мои уравнения в порядке, и что синтезатор не будет пытаться вывести 32-битный счетчик - даже если я хочу считать только от 0 до 5 :)

Ответы на вопрос(4)

Ваш ответ на вопрос