Перейти к содержанию
    

Добрый день всем.

Работая с ModelSim заметил странную вещь.

В одном проекте имеются два компонента памяти: 1-портовая и 2-портовая, обе синхронные.

При симуляции проекта, во время чтения каждой из памятей получаю разные задержки данных на выходе относительно сигнала "rden".

Вот две картинки:

для однопортовой:

post-59925-1331712342_thumb.png

для двухпортовой:

post-59925-1331712349_thumb.png

 

По нулевому адресу в обеих памятях лежит значение "F00..", т.е. не ноль.

 

Подскажите что делать, если Вы знаете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разбираться, что раскосячилось в первом примере. Выведите внутренние сигналы из модели памяти для начала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите что делать, если Вы знаете.

при генерации памяти поставить одинаковую read latency %)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

при генерации памяти поставить одинаковую read latency %)

Какую "read latency"??? :01:

В МегаВизарде вообще нет такой опции для памяти %)

 

З.Ы.: прошу отвечать тех, кто сталкивался с такой проблемой или знает решение.

Изменено пользователем billidean

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

З.Ы.: прошу отвечать тех, кто сталкивался с такой проблемой или знает решение.

 

Смешно, ей богу...

Ну, про МоделСим кое-что мы знаем. Но откуда Визард? Какая память? Откуда взялась однопортовая память и двухпортовая? Этого кроме Вас похоже никто не знает. Но Вы об этом нем не сообщаете.

Так что каков вопрос, таков и ответ...

а телепаты ушли за пивом... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но откуда Визард? Какая память? Откуда взялась однопортовая память и двухпортовая?

 

Ладно...

 

Разрабатываю проект в Квартусе (VHDL), где Визардом создал памяти( RAM:1-Port и RAM:2-Port ). Перед отладкой проекта на железе решил промоделировать систему в МоделСиме и наткнулся на проблему.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разрабатываю проект в Квартусе (VHDL), где Визардом создал памяти

Ну, уже легче. Теперь остается взять описание мегафункций Квартуса и прочесть два раздела о памяти. И обратить внимание на латентность.

А если Квартус генерит визардом файлы, которые можно прочитать, то как написал des можно их тогда исследовать на латентность...

Или скажем так. Если бы я делал двухпортовку, то она бы выглядела так: блок памяти и у него на адресной шине - мультиплексор, который коммутирует шину адресов с порта А или с порта Б. Соответственно, после мультиплексора я бы поставил регистр для фиксации адреса. Вот и получился бы лишний такт латентности...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот vhd-файл, сгенеренный Визардом:

qwerty.vhd

Покажител, плз, где настраивается задержка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот vhd-файл, сгенеренный Визардом:

qwerty.vhd

Покажител, плз, где настраивается задержка

Задержка и не настраивается. Она задается режимами работы. Если задали синхронный режим, значит адрес будет защелкиваться. Если задали еще и регистр по выходу, значит данные будут защелкиваться еще и на выходе и задержка будет в 2 такта. А ваш файл ссылается на библиотечный altsyncram, вот там и смотрите... Если он доступен для чтения...

Читайте описание мегафункций. Там все должно быть описано. Я давно с Альтерой работал...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если задали синхронный режим, значит адрес будет защелкиваться. Если задали еще и регистр по выходу, значит данные будут защелкиваться еще и на выходе и задержка будет в 2 такта.

В том то и дело, что обе памяти у меня сформированы на основе библиотечного компонента altsyncram, обе в синхронном режиме, и обе имеют регистры на выходе, даже тактируются одной частотой, но вот ведут себя по разному, одна имеет на выходе задержку в 1 такт, другая - 2 такта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

, но вот ведут себя по разному, одна имеет на выходе задержку в 1 такт, другая - 2 такта.

Так у них же разная "начинка". Почему же они должны иметь одинаковую задержку? Я же Вам написал, что скорее всего дело в мультиплексоре входных адресов. Если там есть регистр, то он даст задержку на один такт. Или вы ему "приказываете" как это называется "по щучьему веленью, хочу чтобы задержки не было"....

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так у них же разная "начинка". Почему же они должны иметь одинаковую задержку?

Вообще-то обе этих памяти в железе (циклон,стратикс...) имеют одинаковую задержку выходных данных относительно сигнала rden, два такта.

Или Вы с ними в железе не сталкивались?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

судя по тому что в выложеным вами файле, параметр используется outdata_reg_a => "CLOCK0", при генерации памяти вы поставили ее латентность == 2.

 

тогда следующий вопрос, как именно сформирован сигнал rden на эту память в тестбенче, правильно ли он ложиться на дельта циклы симулятора ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При написании такого кода

...
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 такта.

 

Т.е. получается, что проекты заточенные конкретно для железа нельзя сразу моделировать, не расставив задержки по всем устанавливаемым сигналам?

Изменено пользователем billidean

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...