Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Генерация констант в VHDL
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
vladec
Требуется создать некий набор констант, число N (integer) которых задается в generic модуля. Там же задано некое число M тоже integer.
В architecture задаю такую конструкцию:
Цитата
type cons is ARRAY(N - 1 downto 0) of
integer range 0 to (N * M - 1);

А после ключевого слова begin пытаюсь задекларировать нужный мне массив констант NN:
Цитата
constant NN : cons;

Конкретные значения константам присваиваю далее.

ModelSim такую конструкцию проглатывает без проблем и корректно моделирует, а Xilinx ISE не берет.
Ругается на "constant NN : cons;" типа:
Syntax error near "constant".
cons is not a component

Подскажите как это можно обойти?
andrew_b
Зачем столько слов? Show the code.
Цитата(vladec @ Jun 19 2017, 14:31) *
А после ключевого слова begin пытаюсь задекларировать нужный мне массив констант NN:
А почему после?
vladec
Цитата
А почему после?

Если декларирую "до" тогда ругается уже и ModelSim, типа декларироваться должно в пакадже.

Весь код будет так:
Цитата
architecture RTL of Name is
type cons is ARRAY(N - 1 downto 0) of
integer range 0 to (N * M - 1);
.................................
begin
constant NN : cons;
andrew_b
Цитата(vladec @ Jun 19 2017, 16:31) *
Если декларирую "до" тогда ругается уже и ModelSim, типа декларироваться должно в пакадже.
Не занимайтесь пересказом. Приведите сообщение об ошибке точно.

Цитата
Весь код будет так:
Это неправильно.
Код
architecture RTL of Name is

-- область декларации находится здесь

begin


Приведите точный код, с generic, типом и константой. Пока нет кода, говорить не о чем. Там могут быть другие ошибки.
vladec
Проблему обошел. Тему закрываю
Maverick
Цитата(vladec @ Jun 20 2017, 11:47) *
Проблему обошел. Тему закрываю

Так расскажите как обошли, может другим будет интересно...
PS Это на Ваше усмотрение/желание...
Александр77
Цитата(Maverick @ Jun 20 2017, 12:25) *
Так расскажите как обошли, может другим будет интересно...

В подобной же ситуации сделал так (правда не с integer, а с natural)
Код
...
Type ValuesArray is array (31 downto 0) of natural;
constant Values:ValuesArray:=(143,147,151,155,159,165,167,171,177,181,185,189,193,197,201,205,209,213,217,
221,225,229,233,237,241,245,249,255,259,263,267,271);
signal Val_s:std_logic_vector(sz-1 downto 0);
begin
z:for k in 0 to 31 generate
    Val_s((k+1)*10-1 downto k*10)<=std_logic_vector(to_unsigned(Values(k),10));
end generate;

Допускаю что есть более изящное решение.
vladec
To Александр77
У меня несколько более сложный случай, число генерируемых констант N заранее не известно и задается директивой generic.
To Maverick
Цитата
Так расскажите как обошли, может другим будет интересно...

Ничего интересного, просто отказался от маштабируемости проекта.
Amurak
Цитата(vladec @ Jun 21 2017, 12:09) *
число генерируемых констант N заранее не известно и задается директивой generic.


1. задается тип - массив переменной длины;
2. описывается функция, возвращающая переменную типа этого массива;
3. задается константа, значение которой задается через функцию.

Не?
vladec
Цитата
1. задается тип - массив переменной длины;
2. описывается функция, возвращающая переменную типа этого массива;
3. задается константа, значение которой задается через функцию.


По п.1 -- у меня массив постоянной длинны, просто длинна задается generic-ом.
По пп.2, 3 -- я так и пытался сделать, вопрос где и как описать функцию (N*M) и где задавать константу.
Amurak
Цитата(vladec @ Jun 22 2017, 09:52) *
По пп.2, 3 -- я так и пытался сделать, вопрос где и как описать функцию (N*M) и где задавать константу.


Функция описывается там же, где декларируются сигналы. И константа задается там же.

Код
architecture behavioral of blablabla is
    function f_blabla return t_const is
    begin
        ...
    end function;

    constant c_const : t_const := f_blabla;
begin
    ...
end
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.