Скажите, что мне нужен сигнал для представления чисел от 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;
Я предполагаю, что здесь 'compiler' ('synthesizer') автоматически выведет, что ему нужно3 бита длины памяти, так как это целое число ранжируется со значениями от 0 до 5. Если это так, мой вопрос таков: можно ли каким-то образом распечатать этот бит ширина / длина / размер вОТЧЕТ?
Хитрость, конечно, в том, что что-то вроде этого:
report("Bit width of myInteger is "& integer'image(myInteger'length));
... потерпит неудачу (скажем, с " HDLParsers: 3389 - Префикс длины атрибута долженбыть объектом массива"), поскольку, насколько я понимаю, все эти атрибуты, такие как 'length
и 'range
, применимы только к массивам ( Общие сведения об атрибутах VHDL )тогда как целое число (натуральное) не является массивом - это число :) ( VHDL-векторное целочисленное преобразование, вопрос )
Опять же, я знаю, что ямог бы использовать log2 ( вычисление ширины переменной без знака из максимального значения? ) - но я хотел бы просто увидеть быстро ( во время синтеза ) сколько 'бит«синтезатор», выделенный для возможного синтезированного проекта, и, следовательно, приблизительный объем, который будет использоваться в терминах конечных ресурсов ПЛИС (, особенно если бы я использовал «универсальные», чтобы каким-то образом вычислить конкретное максимальное значение для целого числа *)1043 *).
Ну, заранее спасибо за любыеответит, ура!
РЕДАКТИРОВАТЬ: немного контекста: я использую ISE Webpack 9.2;Я пытаюсь использовать «общие» переменные / константы в качестве параметров, а затем использовать уравнения для расчета максимальных значений для счетчиков.Это вычисление, я полагаю, происходит во время «компиляции» (которое было бы «Синтезировать» в ISE, а не «Реализация дизайна»), и поэтому именно здесь я хочу, чтобы сообщения отчета появлялись (, и я фактически получилих так, для собственно std_logic_vector, в журнале синтеза - однако, те же самые сообщения для меня появляются и при запуске поведенческого моделирования, что вполне нормально ).
И цель этих сообщений отчета - убедиться, что мои уравнения в порядке, и что синтезатор не будет пытаться вывести 32-битный счетчик - даже если я хочу считать только от 0 до 5:)