реклама на сайте
подробности

 
 
> Cyclone 5 + микросхема SDRAM + Verilog, Как написать код для использования в проекте этой памяти ?
kovigor
сообщение Feb 9 2016, 14:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Т.е., есть DevKit с этим Циклоном и памятью. Задача для начала простейшая - заполнить память какими-нибудь числами и затем считать их обратно. Как подступиться к такой задаче ? Может, кто-то поделится примером ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Intekus
сообщение Mar 18 2016, 12:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Благодарю, альтеровский и Ваш контроллеры скачал. На Ваш прочитал документацию, сам код не смотрел.
Вопросы по HSSDRC (aka "Что не ясно детально изучившему один даташит новичку в теме SDRAM из мануала на Ваше ядро" cool.gif :
  1. Есть ли возможность работать с пакетами на всю страницу (continuous bursts)?
  2. Включён или выключен по умолчанию автопредзаряд после операции? Можно ли изменить это значение для конкретной операции (включить - чтоб увеличить пропускную способность, выключить - чтоб обрабатывать операции меньшей, чем обычно, длины данных)? (Pxtv)
  3. Поддерживаются ли режимы самостоятельного предзаряда, снижения потребления, глубокого отключения питания и приостановки тактового?
  4. Как именно выполняется автообновление? В коде видел что-то на тему слабого и сильного его вариантов.
  5. А ещё в проектах подобного вида - выкладываемых для всех - очень хотелось бы видеть хотя бы крупноблочную схему внутреннего устройства со всеми названиями портов. "Вместо тысячи слов". С одного сеанса разглядывания уже очень много что становится про модуль понятным.

И вопросы по SDRAM в целом и по приложенному даташиту:
  1. Каков обычный сценарий использования DRAM вместе с ПЛИС для обработки сигнала типа видеоданных - когда для каждого элемента необходимо сделать несколько чтений и записей (чаще всего, по заранее известным адресам - но могут они быть и вычислимыми)? Просто "вылизывание" схемы адресации и последовательности обращений / буферизация входных данных в пакеты / организация некого кэша на основе blockRAM в ПЛИС / что-то ещё?
  2. Возможна ли (предполагаю, что нет) такая схема работы, при которой чередуются чтение из строки одного банка и запись в строку другого банка при том, что обе строки открываются только в начале всего процесса и закрываются в конце? А чередование чтения и записи из разных ячеек одной и той же строки одного и того же банка?
  3. Если выполняется регулярный доступ ко всем строкам со включённым предзарядом - обязателен ли всё равно Auto Refresh с указанным периодом?
  4. Почему при прерывании чтения страницы или просто долгого пакета записью, после подачи в течение 2 тактов сигнала DQM на шине не возникает дочитываемых данных, "сталкивающихся" с данными для записи (такт T4, рис. 19, стр. 50)?
  5. Что пойдёт неправильно, если не подавать запрещающего сигнала на DQM в ситуации с рис. 30 (переход от записи к предзаряду, стр. 59)?

ЗЫ: Приложенный даташит я в общих чертах для себя перевёл-законспектировал (без картинок). Имеет смысл выкладывать?
Прикрепленные файлы
Прикрепленный файл  MT48H32M16LF_y67m_512mb_mobile_sdram_ait_aat.pdf ( 2.42 мегабайт ) Кол-во скачиваний: 30
 


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 19 2016, 08:21
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Intekus @ Mar 18 2016, 19:38) *
Есть ли возможность работать с пакетами на всю страницу (continuous bursts)?

Нет, размер бурста ограничен [1:16]. Но, т.к. страница памяти не закрывается, то можно лить пакет во всю страницу. Учтите, что автоматического определения перехода на другую страницу нет. Это нужно делать принудительно.

Цитата
Включён или выключен по умолчанию автопредзаряд после операции? Можно ли изменить это значение для конкретной операции (включить - чтоб увеличить пропускную способность, выключить - чтоб обрабатывать операции меньшей, чем обычно, длины данных)? (Pxtv)

Авто выключены все, т.к. это не дает держать открытыми банки. Вы потеряете пропускную способность. Банки закрываются принудительно либо по команде с интерфейса, либо автоматически по таймерам авторефреша (если они не были отключены).

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

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

Цитата
Как именно выполняется автообновление? В коде видел что-то на тему слабого и сильного его вариантов.

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

Цитата
А ещё в проектах подобного вида - выкладываемых для всех - очень хотелось бы видеть хотя бы крупноблочную схему внутреннего устройства со всеми названиями портов. "Вместо тысячи слов". С одного сеанса
разглядывания уже очень много что становится про модуль понятным.

Это опенсорс, да и топ левел там линейный. Вся схема восстанавливается за пару часов sm.gif

Цитата
Каков обычный сценарий использования DRAM вместе с ПЛИС для обработки сигнала типа видеоданных - когда для каждого элемента необходимо сделать несколько чтений и записей (чаще всего, по заранее известным адресам - но могут они быть и вычислимыми)? Просто "вылизывание" схемы адресации и последовательности обращений / буферизация входных данных в пакеты / организация некого кэша на основе blockRAM в ПЛИС / что-то ещё?

программируемый SGDMA

Цитата
Возможна ли (предполагаю, что нет) такая схема работы, при которой чередуются чтение из строки одного банка и запись в строку другого банка при том, что обе строки открываются только в начале всего процесса и закрываются в конце? А чередование чтения и записи из разных ячеек одной и той же строки одного и того же банка?

Да, возможно. Но помните, что строку нельзя держать открытой больше чем Tras (120мкс). Ее обязательно нужно будет закрыть.

Цитата
Если выполняется регулярный доступ ко всем строкам со включённым предзарядом - обязателен ли всё равно Auto Refresh с указанным периодом?

Авторефреш это: закрыть все банки. открыть банк с адресом из счетчика/инкрементировать счетчик, закрыть банк. Если вы пробегаете все свои ИСПОЛЬЗУЕМЫЕ ряды, за время рефреша (64мc), то можно жить без него.

Цитата
Почему при прерывании чтения страницы или просто долгого пакета записью, после подачи в течение 2 тактов сигнала DQM на шине не возникает дочитываемых данных, "сталкивающихся" с данными для записи (такт T4, рис. 19, стр. 50)?

Как бы для этого маска и ставиться. Что бы не было на шине данных коллизий (кстати обратите внимание на BTA - Bus Turn Around, там тоже есть потеря пропускной способности)

Цитата
Что пойдёт неправильно, если не подавать запрещающего сигнала на DQM в ситуации с рис. 30 (переход от записи к предзаряду, стр. 59)?

На этом рисунке вы принудительно рвете бурст. Например у вас бурст стоит 4ре, а вам нужно записать одно слово. Без маски, вы затрете "чужие" ячейки

ЗЫ. Причина, по которой я не делал continuous bursts, он есть только у SDRAM. У DDR памяти этого режима нет. В свое время планировал этот контроллер запилить под DDRы


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kovigor   Cyclone 5 + микросхема SDRAM + Verilog   Feb 9 2016, 14:36
- - Maverick   Цитата(kovigor @ Feb 9 2016, 16:36) Т.е.,...   Feb 9 2016, 14:42
|- - kovigor   Цитата(Maverick @ Feb 9 2016, 17:42) надо...   Feb 9 2016, 14:47
||- - Maverick   Цитата(kovigor @ Feb 9 2016, 16:47) Именн...   Feb 9 2016, 14:50
||- - kovigor   Спасибо. Вопрос. Я пробовал использовать этот конт...   Feb 9 2016, 14:56
||- - Maverick   Цитата(kovigor @ Feb 9 2016, 16:56) Спаси...   Feb 9 2016, 15:09
||- - kovigor   Цитата(Maverick @ Feb 9 2016, 18:09) да П...   Feb 9 2016, 15:11
||- - Maverick   Цитата(kovigor @ Feb 9 2016, 17:11) Понял...   Feb 9 2016, 16:53
||- - kovigor   Цитата(Maverick @ Feb 9 2016, 19:53) Да п...   Feb 9 2016, 16:59
|- - kovigor   Цитата(Maverick @ Feb 9 2016, 18:42) Если...   Feb 10 2016, 12:11
|- - des00   Цитата(kovigor @ Feb 10 2016, 19:11) Вопр...   Feb 10 2016, 12:22
|- - kovigor   Цитата(des00 @ Feb 10 2016, 15:22) контро...   Feb 10 2016, 12:29
|- - Lmx2315   Цитата(kovigor @ Feb 10 2016, 15:29) Как ...   Feb 10 2016, 12:34
- - des00   до кучи на опенкоресах, моя поделка http://opencor...   Feb 10 2016, 12:40
|- - kovigor   Цитата(des00 @ Feb 10 2016, 15:40) до куч...   Feb 10 2016, 13:01
|- - Lmx2315   ..дерзкий какой.   Feb 10 2016, 13:34
||- - kovigor   Цитата(Lmx2315 @ Feb 10 2016, 16:34) ..де...   Feb 10 2016, 13:47
|- - des00   Цитата(kovigor @ Feb 10 2016, 20:01) Наве...   Feb 10 2016, 14:53
|- - Intekus   Цитата(des00 @ Feb 10 2016, 17:53) в ману...   Mar 16 2016, 09:29
|- - des00   Цитата(Intekus @ Mar 16 2016, 16:29) Загр...   Mar 16 2016, 09:50
|- - Intekus   Цитата(des00 @ Mar 16 2016, 12:50) Случаи...   Mar 16 2016, 10:02
|- - des00   Цитата(Intekus @ Mar 16 2016, 18:02) И - ...   Mar 16 2016, 11:00
- - Intekus   Благодарю Вас за столь подробные ответы! Цитат...   Mar 21 2016, 15:47
- - des00   Цитата(Intekus @ Mar 21 2016, 23:47) По к...   Mar 21 2016, 16:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016