МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: SDRAM MT48LC4M16A2-75

SDRAM MT48LC4M16A2-75 3 года 8 мес. назад #3065

  • alman
  • alman аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 263
  • Спасибо получено: 41
Беда беда беда. Ну вот никак не могу запустить SDRAM на плате Марсохода2. Брал различные решения, но наилучший результат получил вот с этим кодом - marsohod.org/11-blog/281-sdramvhdl Контроллер без труда интегрировался в проект и подаёт признаки жизни - запиывая и читая слова, обнаруживаю от 256 байт до полумегабайта ОЗУ. Но работает очень нестабильно и разрядность от 16 до 32 бит пришлось реализовывать самому.
Другие контроллеры SDRAM из различных проектов "не завелись". При том котроллер marsohod.org/index.php/prodmarsohod2/amb...-2012-10-08-10-25-17 показался через чур сложным (wishbone избыточен для моих целей), а другие не поддерживают регенерацию.

Уважаемые коллеги, помогите пожалуйста раз и навсегда решить поблему с MT48LC4M16A2-75. Например, адаптировав вот этот

Вложенный файл:

Имя файла: SDRAM_Controller_v.zip
Размер файла: 6 KB


контроллер к Марсоходу2. У меня он не завёлся. (кое что пришлось закоментировать чтобы исходник компилировался в Квартусе, может быть это и создало проблему).

Или, как вариант, предложите другое рабочее решение - простое, с регенерацией, универсальное, быстрое, надёжное и легко интегрируемое в проект. Всё же 8Мб это чертовски много и с их помощью можно сделать очень много полезного. Очень надеюсь на вашу помощь.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

SDRAM MT48LC4M16A2-75 3 года 8 мес. назад #3070

Давно обновил SDRAM-контроллер, но, видно, публикация на сайте где-то затерялась.

Если интересно – смотрите вложение, там исходный код контроллера и небольшая заметка о том, что изменилось.

Если кратко: добавил функцию регенерации, учёл различные задержки микросхемы, что должно повысить стабильность. Однако полноценной верификацией не занимался, так что за найденные баги буду очень благодарен :)
Вложения:
Спасибо сказали: alman

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от mindango.

SDRAM MT48LC4M16A2-75 3 года 8 мес. назад #3072

  • alman
  • alman аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 263
  • Спасибо получено: 41

mindango пишет: Однако полноценной верификацией не занимался, так что за найденные баги буду очень благодарен :)


Пока тестирую. Но результат ещё не радует.
Если ставлю частоту 100Мгц, то зависает.
Если оставляю частоту 50Мгц, то читает какие-то случайные данные.
Предыдущая версия всё же лучшие результаты даёт.
Сравнивал изменения между версиями - пока буду эксперементировать, читать спеку на чип - может быть и удастся запустить.
А у Вас есть плата Марсоход2 или проверяли на другой плате или только в симуляторе тестировали?

Разумеется не исключаю возможность что я что-то недопонял и неправильно использую.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

SDRAM MT48LC4M16A2-75 3 года 8 мес. назад #3074

alman пишет: Пока тестирую. Но результат ещё не радует.


Первоначально контроллер инициализирует микросхему, загружая в неё определённые настройки, поэтому после запуска проекта нужно выждать некоторое время. Потом контроллер переходит в режим ожидания, а на выходе ready появляется "1". Запросы на чтение и запись, а также соответствующие данные (адреса и записываемые в память слова) будут восприниматься контроллером только когда ready=1, в обратном случае входы следует зафиксировать во избежание потерь информации. Успешный цикл чтения на выходе rd_valid даёт "1".

Если кратко: когда ready=1 можно подавать входные данные, когда rd_valid=1 можно брать выходные.

Закрытие активной строки занимает два периода синхросерии (для частот ниже 50 МГц можно обойтись одним периодом, но в данный момент в коде это не учтено). Если в момент закрытия строки в отдельном счётчике накоплено нужное значение, будет запущен цикл регенерации, длящийся 66 нс (7 тактов на 100 МГц). Но во время операций закрытия строки и регенерации ready=0, поэтому входные данные будут игнорироваться.

Вы эти особенности учли? Если да, хотелось бы получить больше информации о характере имеющихся проблем. Я проверял контроллер только в симуляторе, обкатать его в марсоходе2 пока руки не доходят.

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

SDRAM MT48LC4M16A2-75 3 года 3 мес. назад #4563

  • kox
  • kox аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 26
  • Спасибо получено: 3
Здравствуйте, mindango.
Спасибо за ваш контролер, он отлично работает на плате DE0-Nano.
Но на плате DE0-Nano 32мб SDRAM, а контролер поддерживает только 8мб.
Если вам не сложно- не могли бы вы переделать контролер для поддержки 32мб, а то
в VHDL я мало понимаю, только начал изучать ПЛИС, в основном методом схемного ввода.
Заранее спасибо!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

SDRAM MT48LC4M16A2-75 2 года 1 мес. назад #6472

А почему память регенерируется только когда было обращение к строке ?
А если я записал данные и больше их не трогаю. Тогда получиться что цикл регенерации выполняться не будет...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.149 секунд

facebook  GitHub  YouTube  Twitter