vladec 10 19 июня, 2017 Опубликовано 19 июня, 2017 · Жалоба Требуется создать некий набор констант, число 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 16 19 июня, 2017 Опубликовано 19 июня, 2017 · Жалоба Зачем столько слов? Show the code. А после ключевого слова begin пытаюсь задекларировать нужный мне массив констант NN:А почему после? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 10 19 июня, 2017 Опубликовано 19 июня, 2017 · Жалоба А почему после? Если декларирую "до" тогда ругается уже и 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 16 19 июня, 2017 Опубликовано 19 июня, 2017 · Жалоба Если декларирую "до" тогда ругается уже и ModelSim, типа декларироваться должно в пакадже.Не занимайтесь пересказом. Приведите сообщение об ошибке точно. Весь код будет так:Это неправильно. architecture RTL of Name is -- область декларации находится здесь begin Приведите точный код, с generic, типом и константой. Пока нет кода, говорить не о чем. Там могут быть другие ошибки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 10 20 июня, 2017 Опубликовано 20 июня, 2017 · Жалоба Проблему обошел. Тему закрываю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 20 июня, 2017 Опубликовано 20 июня, 2017 · Жалоба Проблему обошел. Тему закрываю Так расскажите как обошли, может другим будет интересно... PS Это на Ваше усмотрение/желание... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 20 июня, 2017 Опубликовано 20 июня, 2017 · Жалоба Так расскажите как обошли, может другим будет интересно... В подобной же ситуации сделал так (правда не с 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 10 21 июня, 2017 Опубликовано 21 июня, 2017 · Жалоба To Александр77 У меня несколько более сложный случай, число генерируемых констант N заранее не известно и задается директивой generic. To Maverick Так расскажите как обошли, может другим будет интересно... Ничего интересного, просто отказался от маштабируемости проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Amurak 0 21 июня, 2017 Опубликовано 21 июня, 2017 · Жалоба число генерируемых констант N заранее не известно и задается директивой generic. 1. задается тип - массив переменной длины; 2. описывается функция, возвращающая переменную типа этого массива; 3. задается константа, значение которой задается через функцию. Не? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 10 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба 1. задается тип - массив переменной длины; 2. описывается функция, возвращающая переменную типа этого массива; 3. задается константа, значение которой задается через функцию. По п.1 -- у меня массив постоянной длинны, просто длинна задается generic-ом. По пп.2, 3 -- я так и пытался сделать, вопрос где и как описать функцию (N*M) и где задавать константу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Amurak 0 22 июня, 2017 Опубликовано 22 июня, 2017 · Жалоба По пп.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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться