artur 0 30 декабря, 2018 Опубликовано 30 декабря, 2018 (изменено) · Жалоба Добрый день! немогу запустить симуляцию интельского IP-блока (ALTFP-CONVERT) Modelsim выдаёт много различных предупреждений (которые мне не совсем понятны) и обрубает симуляцию знает ли кто нибудь в чём проблема и как её решить? Благодарю! Изменено 30 декабря, 2018 пользователем artur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 30 декабря, 2018 Опубликовано 30 декабря, 2018 · Жалоба U означает undefined, не определено. У вас входной клок и входные данные не заданы. На выходе соответственно тоже ничего не выдаётся. Незнаю как вы моделирует корку, но правильнее было написать ещё один файл тестбенча, назвать его к примеру tb, в нем подключить корку и подать на вход корки частоту (сгенерить клок) и входные данные (int_in - видимо целые числа подать на вход, а на выходе получите floating point). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artur 0 30 декабря, 2018 Опубликовано 30 декабря, 2018 · Жалоба 1 час назад, novartis сказал: U означает undefined, не определено. У вас входной клок и входные данные не заданы. На выходе соответственно тоже ничего не выдаётся. Незнаю как вы моделирует корку, но правильнее было написать ещё один файл тестбенча, назвать его к примеру tb, в нем подключить корку и подать на вход корки частоту (сгенерить клок) и входные данные (int_in - видимо целые числа подать на вход, а на выходе получите floating point). тестбенч у меня написан, я его не написал потому что он очень простенький и без него ничего работать не будет Но посмотрите, может быть вы нейдёте ошибку: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY top_vhd_tst IS END top_vhd_tst; ARCHITECTURE top_arch OF top_vhd_tst IS -- constants -- signals SIGNAL clk50 : STD_LOGIC; SIGNAL int_in : STD_LOGIC_VECTOR(31 DOWNTO 0) := (others => '0'); SIGNAL output : STD_LOGIC_VECTOR(31 DOWNTO 0); COMPONENT top PORT ( clk50 : IN STD_LOGIC; int_in : IN STD_LOGIC_VECTOR(31 DOWNTO 0) := (others => '0'); output : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END COMPONENT; BEGIN i1 : top PORT MAP ( -- list connections between master ports and signals clk50 => clk50, int_in => int_in, output => output ); process begin clk50 <= '0'; wait for 10 ns; clk50 <= '1'; wait for 10 ns; end process; process begin int_in <= x"0000000a"; wait for 10 us; int_in <= x"00000001"; wait for 10 us; end process; END top_arch; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 30 декабря, 2018 Опубликовано 30 декабря, 2018 · Жалоба 4 минуты назад, artur сказал: тестбенч у меня написан, я его не написал потому что он очень простенький и без него ничего работать не будет Но посмотрите, может быть вы нейдёте ошибку: BEGIN i1 : top PORT MAP ( -- list connections between master ports and signals clk50 => clk50, int_in => int_in, output => output ); А чем определяются значения внутренних сигналов в момент времени "0"??? или же вот это - int_in <= x"0000000a";?? Это оно, причем для всех сигналов модуля ALTFP-CONVERT? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artur 0 30 декабря, 2018 Опубликовано 30 декабря, 2018 · Жалоба 3 минуты назад, iosifk сказал: А чем определяются значения внутренних сигналов в момент времени "0"??? или же вот это - int_in <= x"0000000a";?? Это оно, причем для всех сигналов модуля ALTFP-CONVERT? инициализация сигнала "int_in" проиходит вот здесь "SIGNAL int_in : STD_LOGIC_VECTOR(31 DOWNTO 0) := (others => '0');" здесь генерируется тактовый сигнал (50 Мгц): process begin clk50 <= '0'; wait for 10 ns; clk50 <= '1'; wait for 10 ns; end process; а вот здесь подаётся число (10) на вход блока и через 10 мкс на этот же вход подаётся другое число (1) снова проходят 10 мкс и всё повторяется с начала: process begin int_in <= x"0000000a"; wait for 10 us; int_in <= x"00000001"; wait for 10 us; end process; RTL выглядит вот так: то есть всё очень просто, на вход подаём число и ожидаем результат с компиляцией никаких проблем нет, а вот симуляция не работает VHDL Top-Level: library ieee; use ieee.std_logic_1164.all; entity top is port ( clk50 : in std_logic; int_in : in std_logic_vector(31 downto 0); output : out std_logic_vector(31 downto 0) ); end entity; architecture beh of top is component int_to_fp IS PORT ( clock : IN STD_LOGIC ; dataa : IN STD_LOGIC_VECTOR (31 DOWNTO 0); result : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) ); END component int_to_fp; begin i1: int_to_fp port map ( clock => clk50, dataa => int_in, result => output ); end beh; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 30 декабря, 2018 Опубликовано 30 декабря, 2018 · Жалоба 26 минут назад, iosifk сказал: А чем определяются значения внутренних сигналов в момент времени "0"??? или же вот это - int_in <= x"0000000a";?? Это оно, причем для всех сигналов модуля ALTFP-CONVERT? Еще раз. Читайте внимательно. В модуль, который Вы хотите симулировать входит сигнал int_in. В этом модуле есть триггера, счетчики, автоматы? Сигнал int_in приводит все эти триггера в исходное состояние? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artur 0 30 декабря, 2018 Опубликовано 30 декабря, 2018 · Жалоба 11 минут назад, iosifk сказал: Еще раз. Читайте внимательно. В модуль, который Вы хотите симулировать входит сигнал int_in. В этом модуле есть триггера, счетчики, автоматы? Сигнал int_in приводит все эти триггера в исходное состояние? если вы имеете в виду порт сброса, то конечно нет, вход "int_in" только для числа которое надо преобразовать. что касается сброса, в связи с тем что он был опциональный, я его отключил так как он мне был не нужен но не хотите ли вы мне сказать, что симуляция не может работать так как регистры для симулятора не хаходятся в исходном положении (т.е. нет сброса)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 31 декабря, 2018 Опубликовано 31 декабря, 2018 · Жалоба Artur, на самой первой картинке у вас иерархия проекта в моделсиме top -> i1, а файл тестбенча у вас top_vhd_tst, с него то и должна начинаться иерархия. Если этот файл тестбенча у вас в проект моделсима добавлен, то старт симуляция надо делать с него. Переходите в моделсиме на вкладку Library, раскрываете work, там находите свой файл тестбенча, кликаете на нем правой клавишей мыши, выбираете Simulation without optimization. Откроется вкладка Wave. Ну или в командной строке написать vsim -novopt work.top_vhd_tst. Дальше уже добавьте сигналы в wave и стартаните симуляцию run 50us. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artur 0 2 января, 2019 Опубликовано 2 января, 2019 · Жалоба В 31.12.2018 в 06:25, novartis сказал: Artur, на самой первой картинке у вас иерархия проекта в моделсиме top -> i1, а файл тестбенча у вас top_vhd_tst, с него то и должна начинаться иерархия. Если этот файл тестбенча у вас в проект моделсима добавлен, то старт симуляция надо делать с него. Переходите в моделсиме на вкладку Library, раскрываете work, там находите свой файл тестбенча, кликаете на нем правой клавишей мыши, выбираете Simulation without optimization. Откроется вкладка Wave. Ну или в командной строке написать vsim -novopt work.top_vhd_tst. Дальше уже добавьте сигналы в wave и стартаните симуляцию run 50us. С Новым Годом! невероятно, но факт, все заработало! Я никогда так не делал, фаил для тестбенча я генерировал и выбирал в самом квартусе, а заходя в моделсим писал только сам тестбенч и всегда все работало. Благодарю! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться