oss 0 7 марта, 2006 Опубликовано 7 марта, 2006 · Жалоба При симуляции появляется WARNING: CONV_INTEGER: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been converted to 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oval 0 7 марта, 2006 Опубликовано 7 марта, 2006 · Жалоба При симуляции появляется WARNING: CONV_INTEGER: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been converted to 0. Ну, появляется, и что? Вопрос-то в чем состоит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oss 0 7 марта, 2006 Опубликовано 7 марта, 2006 · Жалоба В том что функция CONV_INTEGER не работает, как я понял нужно задать начальное значение для аргумента: Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0). Но может я не прав? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Very_hard 0 7 марта, 2006 Опубликовано 7 марта, 2006 (изменено) · Жалоба А поподробнее можно? Кстати, какой тип у Вас имеет Adr_width? Изменено 7 марта, 2006 пользователем Very_hard Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oss 0 7 марта, 2006 Опубликовано 7 марта, 2006 · Жалоба GENERIC( Adr_width : integer := 4; -- Width of address bus Dec_width : integer := 4; -- Width of address decode internal registers Dat_width : integer := 16); -- Width of data bus PORT (Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0); -- Slave Address Reg_Data : IN std_ulogic_vector(((2 ** Dec_width) * Dat_width) - 1 DOWNTO 0); -- Data from all internal registers RWI : IN std_ulogic; -- Read/Write Rd_Early : IN std_ulogic; -- read early signal Rd_Clr : IN std_ulogic; -- read clear signal Wr_Stb : IN std_ulogic; -- write strobe signal Rd_Stb : IN std_ulogic; -- Read strobe signal Data_out : OUT std_ulogic_vector((Dat_width - 1) DOWNTO 0); -- Data out FispBus Rd_Early_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0); -- read early strobes (for each regsiter) Rd_Clr_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0); -- read clear strobes (for each regsiter) Rd_Stb_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0); -- read Strobes (for each Register) Wr_Stb_strobes : OUT std_ulogic_vector(((2 ** Dec_width) - 1) DOWNTO 0) -- write strobes (for each regsiter) ); ... Функция в которой WARNING: uvect_2_int Decode_address <= uvect_2_int(Address_In((Dec_width - 1) DOWNTO 0)); -- Convert decode address to integer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 7 марта, 2006 Опубликовано 7 марта, 2006 · Жалоба С какой целью вы используете неразрешаемые(resolved) типы сигналов? Гараздо удобнее пользоваться std_logic' ами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oval 0 7 марта, 2006 Опубликовано 7 марта, 2006 · Жалоба В том что функция CONV_INTEGER не работает, как я понял нужно задать начальное значение для аргумента: Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0). Но может я не прав? Почему, функция работает, она возвращает 0 (то, что и выводит в сообщении). Просто в качестве аргумента она получает вектор, содержащий в одном или нескольких битах состояния U|X|W|Z, что лишает ее возможности конвертировать этот вектор в адекватное целое число, она выводит предупреждение и возвращает 0. Причины могут быть разными, в том числе и отсутствие начального значения сигнала-аргумента этой функции. Так что Вы правы. С какой целью вы используете неразрешаемые(resolved) типы сигналов? Гараздо удобнее пользоваться std_logic' ами. Неразрешаемый тип сигналов (unresolved) иногда вполне оправдано использовать с целью предупреждения ошибки назначения более одного драйвера (источника) сигнала. В этом случае данная ошибка обнаруживается уже на этапе компиляции. Уловить преимущество использования std_logic по отношению к std_ulogic мне так и не удалось. Везде, где сигнал имеет единственный драйвер (источник), я использую тип std_ulogic. А вот, что касается векторов, то использование std_ulogic_vector ведет к некоторым проблемам при преобразовании типов, равно как и для std_ulogic_vector нет некоторых полезных функций. Поэтому всегда использую std_logic_vector. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oss 0 7 марта, 2006 Опубликовано 7 марта, 2006 · Жалоба Как правильно задать начальное значение для Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MadMakc 0 13 марта, 2006 Опубликовано 13 марта, 2006 · Жалоба Как правильно задать начальное значение для Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0); Address_In : IN std_ulogic_vector((Adr_width - 1) DOWNTO 0):=(others => '0'); Вроде так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 14 марта, 2006 Опубликовано 14 марта, 2006 · Жалоба После прочтения данной темы решил задать всем сигналам (в модулях и тестбенче) своего проекта начальные значения (раньше не обращал на это внимания). При симуляции прекратилось "мелькание" в логе, вызванное постоянными появлениеми сообщений типа WARNING: CONV_INTEGER: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been converted to 0. Но, самое главное, значительно уменьшилось время симуляции проекта: вчера ждал три часа, так и не дождался, ушел домой, а сегодня - 25 минут. В качестве лирического отступления замечу, что освоение процесса проектирования на ПЛИС в нашей конторе держится, к сожалению, на энтузиазме (моем). Часто слышу, как руководство гордо заявляет заказчикам "Мы перешли на ПЛИС!!!". А я в это время сижу в углу и посмеиваюсь. Вообще я это к тому, что посоветоваться мне на работе не с кем, так что хорошо, что есть такой форум, который мне помогает вырабатывать правильный стиль проектирования. Всем большое спасибо!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 14 марта, 2006 Опубликовано 14 марта, 2006 (изменено) · Жалоба Присимуляции прекратилось "мелькание" в логе, вызванное постояннымипоявлениеми сообщений типа WARNING: CONV_INTEGER: There is an'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, and it has been convertedto 0. Но, самое главное, значительно уменьшилось время симуляциипроекта: вчера ждал три часа, так и не дождался, ушел домой, а сегодня- 25 минут. Логично: вывод разных сообщений и запись их в файл занимает относительно много времени. Кстати, нигде не промелькнуло название симулятора, который вы используете. В ModelSim есть возможность подавить вывод этих сообщений либо через диалоги настройки симулятора, либо редактированием ini-файла, либо соответствующей командой tcl. Изменено 14 марта, 2006 пользователем andrew_b Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 14 марта, 2006 Опубликовано 14 марта, 2006 · Жалоба Кстати, нигде ни промелькнуло название симулятора, который выиспользуете. В ModelSim есть возможность подавить вывод этих сообщениелибо через диалоги настройки симулятора, либо редактированиемini-файла, либо соответствующей командой tcl. Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь! Сейчас проектирую в нем, даже синтез и имплемент запускаю оттуда (ISE 6.3). C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :( Спасибо за подсказку душить сообщения. Иногда это может помочь быстрее выполнить работу. Но мне кажется, лучше все же присвоить сигналам нач. значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 марта, 2006 Опубликовано 14 марта, 2006 · Жалоба Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь! Сейчас проектирую в нем, даже синтез и имплемент запускаю оттуда (ISE 6.3). C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :( К большому сожалению этот симулятор не поддерживает PSL :(, поэтому квеста сим рулит :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 14 марта, 2006 Опубликовано 14 марта, 2006 (изменено) · Жалоба Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь! Такой монстр, что ужоснах. C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :( Я всегда пользовался только моделсимом, но ни с чем подобным никогда не сталкивался. Все работало замечательно. Изменено 14 марта, 2006 пользователем andrew_b Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 14 марта, 2006 Опубликовано 14 марта, 2006 · Жалоба Сравнительно недавно попробовал Active HDL, и понял что это надолго :) Классная вещь! Сейчас проектирую в нем, даже синтез и имплемент запускаю оттуда (ISE 6.3). C моделсимом работал раньше, мне очень не нравятся его тормоза и даже полные зависоны при путешествии по вейфрейму :( К большому сожалению этот симулятор не поддерживает PSL :(, поэтому квеста сим рулит :) В смысле Active HDL и моделсим не поддерживают PSL? Я правильно понял? Для меня это не страшно, я слаб еще в тестбенчах на vhdl, а до PSL мне как до луны. Тем более с таким подходом, как у нас в конторе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться