0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 90
|
|
1 | |
Просьба растолковать про SDRAM05.08.2013, 23:48. Показов 23455. Ответов 44
Метки нет Все метки)
(
Всем ДВС!
Вобщем как в кино: имею возможность прикрутить к ПЛИС память SROM, но не имею желания (мало), имею желание прикрутить SDROM, но не имею возможности:( Любезно прошу цифроманяков разъяснить неразумному, если можно на конкретном примере, принцип работы с SDR SDROM. Читал я даташиты и на ISSI и на еще какую-то память, но утонул с головой в этих дебрях с рефрешами, пречарджами и прочей динамической мутью. Вот, например, что нужно сделать, чтобы записать байт? Как я понял выставить адрес и тупо подать строб там уже не получится ввиду мультиплицированной шины адреса (строка/колонка) + операции с подзарядками яйчеек. Правильно ли я понимаю, что чтобы записать 1 байт надо: 1. выставить адрес строки одновременно со стробом ROS 2. подождать 2-3 тика клока и выставить адрес колонки со стробом CAS 3. выставить данные на линию и подать строб WE. 4. WTF далее с этими deactivateами и прочими специфическими для динамики плясками? Т.е. по моим подсчетам при 133 МГц-вой памяти цикл записи длится около 20нс? Или я чушь несу? Да, еще абсолютно непонятен момент с обновлением каждые 64 мс. Т.е. если она просто стоит без дела, то каждые 64мс ее надо обновлять или по-любому даже при работе надо? А как быть если у меня идет непрерывный поток данных, надо получается поток прерывать? Брать готовую корку на верилоге не хочу, потому как во-первых она такая не требуется в моем случае, во-вторых есть смысл самому сделать в учебно-образовательной цели.
0
|
05.08.2013, 23:48 | |
Ответы с готовыми решениями:
44
stm32f429 SDRAM-SRAM stemwin / Выполнение кода из SDRAM SDRAM и FreeRTOS - не дружат с FMC SDRAM Растолковать метод |
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
06.08.2013, 00:24 | 2 |
![]() рефрешить не обязательно всё сразу за раз, можно по страничке каждые десяток-другой мкс, но через 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 |
![]()
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 |
![]() чтобы обновить одну строку нужно грубо говоря около десятка тактов (конкретные длительности команд в даташите). то есть около сотни нс, если 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 |
![]()
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
![]() 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 |
![]() а исключительно потому что с тем же 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 |
![]()
0
|
11.08.2013, 18:08 | |
Помогаю со студенческими работами здесь
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, но была исключена на встрече комитета. . .
|