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

Покрытие памяти блоками M9K

Добрый день. Есть у меня в проекте память (ROM) глубиной 216 слов и шириной 96 бит. Проект на цыклоне 3. После компиляции заглядываю в отчет фиттера - Resource section - RAM summary и вижу в строке с этой памятью в колонке M9Ks цифру 6. Смотрю в даташит цыклона 3 (табличка на картинке) - там написано что M9K может быть организован как 256х32 и 256х36. Путем нехитрых вычислений получаем 96/32 = 3, полагая что квартус поставит 3 M9K с конфигурацией 256х32 и запаралелит входную шину адреса у блоков.

Уважаемые, подскажите где подвох, где я ошибся, почему в ресурсах использовано на эту память 6 блоков М9К?

post-15968-1293285678_thumb.jpg

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


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

слева во фрейме, где отображается иерархия проекта, найдите этот модуль и посмотрите с какими параметрами соотв. lpm вызывается (достаточно курсор навести, выскочит подсказка). в отчете о компиляции тоже должно быть

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


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

слева во фрейме, где отображается иерархия проекта, найдите этот модуль и посмотрите с какими параметрами соотв. lpm вызывается (достаточно курсор навести, выскочит подсказка). в отчете о компиляции тоже должно быть

Вот они, вроде ничего подозрительного нет...

post-15968-1293290757_thumb.jpg

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


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

Вот они, вроде ничего подозрительного нет...

 

True dual-port mixed width support (2)

(2) Width modes of ×32 and ×36 are not available.

 

Можно оценить на Single-Port Mode

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


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

True dual-port mixed width support (2)

(2) Width modes of ×32 and ×36 are not available.

 

Можно оценить на Single-Port Mode

Не понял. Так ведь у меня не dual-port, по крайней мере оно мне не надо. У меня просто ROM - там таблица, ее только читать надо, причем через один порт. А Вы где-то увидели dual port? Если так, то подскажите как от этого dual port избавиться пжл.

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


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

А Вы где-то увидели dual port?

 

Я просто в документацию вскользь посмотрел. Не более. Извините.

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


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

слева во фрейме, где отображается иерархия проекта, найдите этот модуль и посмотрите с какими параметрами соотв. lpm вызывается (достаточно курсор навести, выскочит подсказка). в отчете о компиляции тоже должно быть

 

А кстати, что должно быть?

 

 

UPD: Вобще перестал понимать как память покрывается блоками.

Гуру, распутайте пожалуйста ситуацию ! На рисунке отчет фиттера по RAM. Зеленым выделена та память которая меня интересовала. Но оказалось это не самое интересное. Красным показано две памяти. Первая 216 слов Х 36 бит - занимает 1 М9К - как и должно быть. Вторая (!!!) 216 слов Х 12 бит - занимает шесть!!!! М9К. Стесняюсь спросить НАФИГА ТАМ 6 ИХ??? Режимы у всех одинаковы - ROM mode. По отчету видно - все настройки одинаковы.

Че за математика непонятная???

post-15968-1293304526_thumb.jpg

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


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

Можно посмотреть technology map netlist. Ну и отчеты о синтезе и фиттере выложите, только скажите как модуль называется

 

Че за математика непонятная???

Вы из кода инферите или мегафункцию вызываете?

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


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

Можно посмотреть technology map netlist. Ну и отчеты о синтезе и фиттере выложите, только скажите как модуль называется

 

 

Вы из кода инферите или мегафункцию вызываете?

Визардом память делаю какую мне надо, в библиотеке называется altsyncram. В файле txt написан путь в иерархии к памяти, на которую 6 блоков использовано.

 

1.rar

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

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


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

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

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


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

Визардом память делаю какую мне надо, в библиотеке называется altsyncram. В файле txt написан путь в иерархии к памяти, на которую 6 блоков использовано.

Попробуйте lpm_rom. По-моему, она должна больше подходить для вашей задачи.

Хотя написано - только для обратной совместимости... :(

Скорее всего, что-то в параметрах мегафункции не так описано.

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


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

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

 

Прошу прощения, не вырваться было.

В файле все что относится к altsyncram3 (216слов Х 12 бит) и картинка где его использую. Кстати, заметил все-таки единственное отличие от памяти 216 слов Х36 бит, на которую использован 1 М9К - у нее на выходе данные не регистрятся, а у этой (216х12) регистрятся. Неужто из-за этого в 6 раз объем необходимый вырастает?

1.rar

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


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

Неужто из-за этого в 6 раз объем необходимый вырастает?

 

Неужто кому то надо ПЗУ подключать к выходному регистру, который надо обнулять.

Обычно устанавливают счетчик адреса, чтобы получить нужное значение.

 

Какой смысл обсуждать некорректные схемные решения.

 

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


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

Неужто кому то надо ПЗУ подключать к выходному регистру, который надо обнулять.

Обычно устанавливают счетчик адреса, чтобы получить нужное значение.

 

Какой смысл обсуждать некорректные схемные решения.

 

Конечно могу ошибаться, но регистр к выходу подключил не от того что его обнулить надо. Так и сделано - счетчик адреса, dff-ы для компенсации пайплайновой задержки остальной части схемы. Если без регистров на адресе (адрес после регистра не только на память идет) и на выходе - по таймингам схема не проходит. Конечно можно снаружи подцепить регистр к выходу, наверно так и попробую. Так что выводы о некорректных схемных решениях, думаю уважаемый sazh сделал преждевременные. Повторюсь могу ошибаться, тогда поправьте меня, скажите где неправ и как это схемное решение сделать корректным с точки зрения профессионалов.

 

А по существу: почему память altsyncram3 занимает 6 М9К а не 1 как должно быть? От схемы включения думаю тут мало чего зависит.

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

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


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

На половину вопросов, задаваемых на форуме, существует универсальный ответ -

Выделите проблемную часть проекта в отдельный проект. Оставьте только самое необходимое. Скомпилируйте. Исследуйте вдоль и поперек. Глядишь, и наступит просветление.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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