billidean 0 14 марта, 2012 Опубликовано 14 марта, 2012 · Жалоба Добрый день всем. Работая с ModelSim заметил странную вещь. В одном проекте имеются два компонента памяти: 1-портовая и 2-портовая, обе синхронные. При симуляции проекта, во время чтения каждой из памятей получаю разные задержки данных на выходе относительно сигнала "rden". Вот две картинки: для однопортовой: для двухпортовой: По нулевому адресу в обеих памятях лежит значение "F00..", т.е. не ноль. Подскажите что делать, если Вы знаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 14 марта, 2012 Опубликовано 14 марта, 2012 · Жалоба Разбираться, что раскосячилось в первом примере. Выведите внутренние сигналы из модели памяти для начала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 марта, 2012 Опубликовано 14 марта, 2012 · Жалоба Подскажите что делать, если Вы знаете. при генерации памяти поставить одинаковую read latency %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 15 марта, 2012 Опубликовано 15 марта, 2012 (изменено) · Жалоба при генерации памяти поставить одинаковую read latency %) Какую "read latency"??? :01: В МегаВизарде вообще нет такой опции для памяти %) З.Ы.: прошу отвечать тех, кто сталкивался с такой проблемой или знает решение. Изменено 15 марта, 2012 пользователем billidean Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба З.Ы.: прошу отвечать тех, кто сталкивался с такой проблемой или знает решение. Смешно, ей богу... Ну, про МоделСим кое-что мы знаем. Но откуда Визард? Какая память? Откуда взялась однопортовая память и двухпортовая? Этого кроме Вас похоже никто не знает. Но Вы об этом нем не сообщаете. Так что каков вопрос, таков и ответ... а телепаты ушли за пивом... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба Но откуда Визард? Какая память? Откуда взялась однопортовая память и двухпортовая? Ладно... Разрабатываю проект в Квартусе (VHDL), где Визардом создал памяти( RAM:1-Port и RAM:2-Port ). Перед отладкой проекта на железе решил промоделировать систему в МоделСиме и наткнулся на проблему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба Разрабатываю проект в Квартусе (VHDL), где Визардом создал памяти Ну, уже легче. Теперь остается взять описание мегафункций Квартуса и прочесть два раздела о памяти. И обратить внимание на латентность. А если Квартус генерит визардом файлы, которые можно прочитать, то как написал des можно их тогда исследовать на латентность... Или скажем так. Если бы я делал двухпортовку, то она бы выглядела так: блок памяти и у него на адресной шине - мультиплексор, который коммутирует шину адресов с порта А или с порта Б. Соответственно, после мультиплексора я бы поставил регистр для фиксации адреса. Вот и получился бы лишний такт латентности... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба Вот vhd-файл, сгенеренный Визардом: qwerty.vhd Покажител, плз, где настраивается задержка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба Вот vhd-файл, сгенеренный Визардом: qwerty.vhd Покажител, плз, где настраивается задержка Задержка и не настраивается. Она задается режимами работы. Если задали синхронный режим, значит адрес будет защелкиваться. Если задали еще и регистр по выходу, значит данные будут защелкиваться еще и на выходе и задержка будет в 2 такта. А ваш файл ссылается на библиотечный altsyncram, вот там и смотрите... Если он доступен для чтения... Читайте описание мегафункций. Там все должно быть описано. Я давно с Альтерой работал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба Если задали синхронный режим, значит адрес будет защелкиваться. Если задали еще и регистр по выходу, значит данные будут защелкиваться еще и на выходе и задержка будет в 2 такта. В том то и дело, что обе памяти у меня сформированы на основе библиотечного компонента altsyncram, обе в синхронном режиме, и обе имеют регистры на выходе, даже тактируются одной частотой, но вот ведут себя по разному, одна имеет на выходе задержку в 1 такт, другая - 2 такта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба , но вот ведут себя по разному, одна имеет на выходе задержку в 1 такт, другая - 2 такта. Так у них же разная "начинка". Почему же они должны иметь одинаковую задержку? Я же Вам написал, что скорее всего дело в мультиплексоре входных адресов. Если там есть регистр, то он даст задержку на один такт. Или вы ему "приказываете" как это называется "по щучьему веленью, хочу чтобы задержки не было".... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 15 марта, 2012 Опубликовано 15 марта, 2012 · Жалоба Так у них же разная "начинка". Почему же они должны иметь одинаковую задержку? Вообще-то обе этих памяти в железе (циклон,стратикс...) имеют одинаковую задержку выходных данных относительно сигнала rden, два такта. Или Вы с ними в железе не сталкивались? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 марта, 2012 Опубликовано 16 марта, 2012 · Жалоба судя по тому что в выложеным вами файле, параметр используется outdata_reg_a => "CLOCK0", при генерации памяти вы поставили ее латентность == 2. тогда следующий вопрос, как именно сформирован сигнал rden на эту память в тестбенче, правильно ли он ложиться на дельта циклы симулятора ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 18 марта, 2012 Опубликовано 18 марта, 2012 · Жалоба извиняюсь, а что такое дельта циклы симулятора? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 19 марта, 2012 Опубликовано 19 марта, 2012 (изменено) · Жалоба При написании такого кода ... process clk begin if ( rising_edge(clk) ) then ... ram_wren <= '1'; --сигнал чтения памяти ... end if; ... end process; ... в моделсиме получаю задержку выходных данных из памяти в 1 такт, но уже при коде ... process clk begin if ( rising_edge(clk) ) then ... ram_wren <= '1' after 1 ns; --сигнал чтения памяти ... end if; ... end process; ... получаю нормальную рабочую задержку, как в железе, в 2 такта. Т.е. получается, что проекты заточенные конкретно для железа нельзя сразу моделировать, не расставив задержки по всем устанавливаемым сигналам? Изменено 19 марта, 2012 пользователем billidean Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться