Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/126: Рейтинг темы: голосов - 126, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
1

Просьба растолковать про SDRAM

05.08.2013, 23:48. Показов 23455. Ответов 44
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем ДВС!
Вобщем как в кино: имею возможность прикрутить к ПЛИС память SROM, но не имею желания (мало), имею желание прикрутить SDROM, но не имею возможности:(
Любезно прошу цифроманяков разъяснить неразумному, если можно на конкретном примере, принцип работы с SDR SDROM. Читал я даташиты и на ISSI и на еще какую-то память, но утонул с головой в этих дебрях с рефрешами, пречарджами и прочей динамической мутью. Вот, например, что нужно сделать, чтобы записать байт? Как я понял выставить адрес и тупо подать строб там уже не получится ввиду мультиплицированной шины адреса (строка/колонка) + операции с подзарядками яйчеек. Правильно ли я понимаю, что чтобы записать 1 байт надо:
1. выставить адрес строки одновременно со стробом ROS
2. подождать 2-3 тика клока и выставить адрес колонки со стробом CAS
3. выставить данные на линию и подать строб WE.
4. WTF далее с этими deactivateами и прочими специфическими для динамики плясками?
Т.е. по моим подсчетам при 133 МГц-вой памяти цикл записи длится около 20нс? Или я чушь несу?
Да, еще абсолютно непонятен момент с обновлением каждые 64 мс. Т.е. если она просто стоит без дела, то каждые 64мс ее надо обновлять или по-любому даже при работе надо? А как быть если у меня идет непрерывный поток данных, надо получается поток прерывать?
Брать готовую корку на верилоге не хочу, потому как во-первых она такая не требуется в моем случае, во-вторых есть смысл самому сделать в учебно-образовательной цели.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2013, 23:48
Ответы с готовыми решениями:

stm32f429 SDRAM-SRAM stemwin / Выполнение кода из SDRAM
Доброго всем дня! Хочу поделиться двумя решениями которые надеюсь кому нибудь помогут. 1. Был проект на 103 контроллере там была ...

SDRAM и FreeRTOS - не дружат с FMC SDRAM
Всех с Наступающим! Решил сделать что-то в роде миникомпьютера на STM32F429. В основе лежит FriiRTOS. Далее в SDROM загружается внешняя...

Растолковать метод
Растолковать работу этого метода. Особенно nameContainsIgnoreCase. final Set<PhoneEntry> entries = new TreeSet<>(); kdb...

44
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.08.2013, 00:24 2
Цитата Сообщение от Tyquydotor
Т.е. по моим подсчетам при 133 МГц-вой памяти цикл записи длится около 20нс? Или я чушь несу?
Да, еще абсолютно непонятен момент с обновлением каждые 64 мс. Т.е. если она просто стоит без дела, то каждые 64мс ее надо обновлять или по-любому даже при работе надо? А как быть если у меня идет непрерывный поток данных, надо получается поток прерывать?
Брать готовую корку на верилоге не хочу, потому как во-первых она такая не требуется в моем случае, во-вторых есть смысл самому сделать в учебно-образовательной цели.
есть burst когда один раз выставив адрес в пределах строки можно данные гнать непрерывно на 133МГц.
рефрешить не обязательно всё сразу за раз, можно по страничке каждые десяток-другой мкс, но через 64мс после рефреша / чтения / записи заряд просто разбежится из ёмкости которая хранит бит и данные превратятся в тыкву.
иногда можно и вовсе без рефреша обойтись, если например память является видеобуфером кадра который каждые 20-30мс заведомо весь будет прочитан.
an499 от альтеры там всего несколько страниц на верилоге причём очень размашисто, можно не брать готовое, а просто разобраться что там происходит.
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
06.08.2013, 12:04 3
Емнип, рефреш сразу целыми строками производится, так что не так уж и накладно. Можно распределить равномерно по всему циклу.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
06.08.2013, 14:25 4
Кроме того, современные чипы SDROM имеют встроенные средства self-refresh. В свободное время хост-программа просто говорит SDROMу, что он может позаниматься self-refreshем :-) Реализация зависит от SDROM. Например, метод "CAS перед ROS" был распространён, помнится.
0
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 901
06.08.2013, 14:30 5
Цитата Сообщение от OtyxPM
Например, метод "CAS перед ROS" был распространён, помнится.
напомнил поговорку студенческих времен - "рас на кас не приходится" :-)
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
06.08.2013, 15:01 6
ок, перейду на конкретный пример:
Вот есть у меня поток данных с частотой 50МГц, всего 4 мегабайта (фрейм с камеры), байт за 1 клок (20 нс), + всякие переходы, итого ~100 мс на фрейм чтобы положить его в буфер. Т.е. получается 64 мс прошло, я должен сделать refresh, в то время как данные все будут поступать с камеры (камера выдает свой синхроклок на фрейм)?

Пока читаю доку от ELPIDA "How to use SDROM".
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.08.2013, 15:38 7
Цитата Сообщение от Tyquydotor
ок, перейду на конкретный пример:
Вот есть у меня поток данных с частотой 50МГц, всего 4 мегабайта (фрейм с камеры), байт за 1 клок (20 нс), + всякие переходы, итого ~100 мс на фрейм чтобы положить его в буфер. Т.е. получается 64 мс прошло, я должен сделать refresh, в то время как данные все будут поступать с камеры (камера выдает свой синхроклок на фрейм)?
за 64мс надо обновить все, пусть будет 8192, строки, ну или сколько там есть в зависимости от размера.
чтобы обновить одну строку нужно грубо говоря около десятка тактов (конкретные длительности команд в даташите). то есть около сотни нс, если 133МГц такт.
обновлять можно конечно всё сразу, но тогда память станет недоступна на всё это время, 8192 * 100нс = 800мкс, что с одной стороны довольно долго, но в среднем от 64мс не так уж и много всего 1-2%.
также никто не мешает размазать рефреши и делать их по одному каждые 64мс/8192 ~ 80мкс.
то есть если сделать в контроллере фифо на десяток байт, то можно каждые 80мкс отвлекаться на 100нс для рефреша очередной строки, а данные будут пока в фифо заполняться.
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
06.08.2013, 18:05 8
Цитата Сообщение от _pv
также никто не мешает размазать рефреши и делать их по одному каждые 64мс/8192 ~ 80мкс.
то есть если сделать в контроллере фифо на десяток байт, то можно каждые 80мкс отвлекаться на 100нс для рефреша очередной строки, а данные будут пока в фифо заполняться.
~8 мкс если мне не врет калькулятор. понятно, т.е. в ПЛИС надо будет фифо сделать на время рефреша. Или раз за 64 мс тратить ~820 мкс на рефреш. Я прально мыслю что в плисине заводить таймер-счетчик на это событие по его срабатыванию данные кидать в буфер пока рефреш идет? чей-та как-то это у меня пока плохо в голове укладывается...
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
06.08.2013, 18:27 9
да, 8 мкс.
данные на запись просто через фифо пропустить, они там сами автоматически накапливаться будут пока контроллер рефрешем занят.
ну и еще, раз данные с матрицы идут, рефреши можно к строчной синхронизации привязать и выдавать небольшими пачками по несколько штук пока у камеры horizontal blanking.
0
0 / 0 / 0
Регистрация: 16.07.2011
Сообщений: 26
07.08.2013, 07:28 10
Очень подробно с картинками интерфейс расписан в микроновском даташите: 256MSDROM.pdf. Можт чем поможет. =)
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
07.08.2013, 12:16 11
Спс! буду изучать!
Но уже сейчас понимаю что задачка не из легких, т.к. поток непрерывный и времени впритык. Думается мне что надо конвейер городить с буферизацией..
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8794 / 4073 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
07.08.2013, 12:18 12
посмотрите ещё:
Гук М.Ю. - Аппаратные средства IBM PC. Энциклопедия

там вроде тоже что-то было
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
08.08.2013, 16:42 13
Ну вот, за 3 дня я стал спецом в SDROM, теперь знаю что такое precharge, refresh и прочие нигические заклинания =) Вобщем с её 40нс циклом никак не подходит под мою задачу, а паять DDR3 я наверное вряд ли смогу... Придется разориться на статику.
Всем спасибо за помощь!:)
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
08.08.2013, 19:20 14
имхо херовато как-то разобрались. что за 40нс? burstами пропускная способность при последовательном доступе приближается к тактовой частоте.
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
09.08.2013, 01:34 15
Спору нет, я не претендуют на про-уровень, но писать для ПЛИС ещё application specific контроллер памяти нет желания (пока). Хотя можно взять и готовые корки, но там все у всех по-разному. А со статикой все куда проще, хоть и дороже. Я думаю что параллельно пока буду потихоньку свой скил в SDROM развивать:)
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
09.08.2013, 03:07 16
если нужно просто переложить картинку в память, без особо суровой обработки вроде сжатия видео на лету в какой-нибудь h264, то может проще взять арм/дсп с параллельным интерфейсом для камеры и встроенным контроллером памяти, правда в человеческих корпусах на ум только adsp-bf532 приходят, ну и наверное у тексаса еще что-нибудь есть из с5000 серии. возможно из недавно появившихся cortex-m4 что-нибудь да есть.
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
11.08.2013, 16:29 17
_pv, да, вы правы. хероватенько разобрался. я не учел такую весчь как burst write, она-то и спасает все. В принципе теперь проблем особых не вижу: fifo длинной в n-слов и вперед писать в sdram. осталось только разобраться как делать рефреш и можно скоро начать воплощать в железо. Со статикой несколько попроще, там рефреш не нужен, но цена мегабайта памяти... По поводу DSP: пока не вижу смысла, т.к. займет лишнее время (осовение архитектуры и т.д.). Делаю для себя, под рукой масса доступных железяк имеется:)
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
11.08.2013, 16:56 18
Цитата Сообщение от Tyquydotor
По поводу DSP : пока не вижу смысла, т.к.займет лишнее время (осовение архитектуры и т.д.).Делаю для себя, под рукой масса доступных железяк имеется :)
ну DSP был упомянут не из-за архитектурных ухищрений для более быстрого перемалывания данных, никто не мешает его использовать как МК общего назначения, просто из - за более подходящей под задачу периферии.
а исключительно потому что с тем же blackfymом при наличии нормального параллельного интерфейса и контроллера динамической памяти, если надо просто быстро прочитать десяток - другой мегабайт на скорости под сотню МБ/сек и сложить в память, чтобы потом медленно и печально передать куда-то дальше, будет проще/быстрее написания нормального контроллера динамической памяти для ПЛИС.
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
11.08.2013, 18:00 19
Да кто спорит, что Blackfym подойдет. К слову у меня есть Pomdaboard на TI OMAP 3530, но опять же для меня imbiddid linux пока на уровне черной нигии + дело упирается в драйвер камеры на уровне ядра. Пока ждет своего часа для детального изучения.
назрел еще такой вопрос из области теории: а если заявленную в 133 МГц частоту увеличить до ,скажем, 150 МГц - будет работать или уже нет?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
11.08.2013, 18:08 20
Цитата Сообщение от Tyquydotor
назрел еще такой вопрос из области теории: а если заявленную в 133 МГц частоту увеличить до ,скажем, 150 МГц - будет работать или уже нет?
Это как раз не теория, а практика overclockingа. Может заработать, а может и нет. От SDROM чипа зависит. Ну, и питание, возможно, придётся поддать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.08.2013, 18:08
Помогаю со студенческими работами здесь

Растолковать задание
Записать выражение, зависящее от координат точки X и Y и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области...

Растолковать лог роутера
Доброго времени суток. Прошу помощи с толкованием лога. Возможно ли по этому куску определить кто рвал соединение и по какой причине? ...

Как растолковать код
Как растолковать код $('#filters').on( 'change', function() { // get filter value from option value var filterValue =...

Растолковать код работы с датами
uses crt; type str=string; var f1:file of str; f2,f3:file of integer; s:str; n,i,j,d,m,c:integer; begin clrscr; ...

Числа Фибоначчи - растолковать код
Я тут хочу попрактиковаться в С++, а именно на числах Фебиначи. Я нашел хороший код и хочу его модифицировать, но мне нужно чтоб ктото...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru