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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> SDR SDRAM память, Регенерация данных
Flip-fl0p
сообщение Sep 20 2016, 10:34
Сообщение #16


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(XVR @ Sep 20 2016, 13:28) *
Я правильно понимаю, что ваш контролер будет постоянно сканировать SDRAM и выдывать ее содержимое в LVDS матрицу? Если это так, то регенерация вам возможно вообще не понадобится (если правильно расположить данные в SDRAM)

Согласен, что если читать фрейм буфер чаще чем частота регенерации, то регенерация в этом случае не нужна. Но тут есть "спортивный" интерес сделать полноценный контроллер. Мало ли в других проектах пригодиться. Моя задача не сделать готовое устройство, а научиться полноценно работать с памятью. Сейчас хочу просто записать в память какое нибудь значение, и прочитать его и зажечь светодиоды на макетной плате. Вот смогу это реализовать, начну делать обычную фоторамку. Благо выводить данные на матрицу я научился ( во всяком случае генератор цветных полос работает как положено)
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 20 2016, 10:43
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Flip-fl0p @ Sep 20 2016, 13:34) *
Но тут есть "спортивный" интерес сделать полноценный контроллер. Мало ли в других проектах пригодиться. Моя задача не сделать готовое устройство, а научиться полноценно работать с памятью.
Тогда возьмите откуда нибудь (с opencore например) готовый контролер, и посмотрите, как он сделан. Потом можете написать свой (если процесс важнее результата sm.gif )

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 20 2016, 10:57
Сообщение #18


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(XVR @ Sep 20 2016, 13:43) *
Тогда возьмите откуда нибудь (с opencore например) готовый контролер, и посмотрите, как он сделан. Потом можете написать свой (если процесс важнее результата sm.gif )

Собственно я сейчас этим и занимаюсь. Контроллер нашел. Разобрал его по полочкам. И сейчас пытаюсь написать модуль, который при помощи данного контроллера загружает\читает данные с памяти.

Алгоритм работы моего модуля такой (реализую на автомате Мили):

1. Ждем пока проинициализируется память и загрузятся настройки в регистр.
2. Затем по адресу "000000000000" в банк "00" пишем значение x"FF".
3. Затем по нажатию кнопки на макетной плате мой модуль должен загрузить записанное значение в регистр, и хранить его там, пока я не нажму кнопку сброса этого регистра.
4. Если в регистре храниться значение FF, то я зажигаю светодиод на макетной плате.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 20 2016, 12:04
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(iosifk @ Sep 20 2016, 11:27) *
Я думаю, что это просто треп ленивого...
Регенерацию динамической памяти можно найти в любом учебнике и студенты это должны учить... В конце концов можно взять описание любой отечественной микросхемы начиная с 30-ти летней давности...

В продолжение
http://www.ord.com.ru/files/book3/p234.html
http://www.155la3.ru/datafiles/kr1810vt3.pdf

и много много других...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 20 2016, 12:10
Сообщение #20


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(iosifk @ Sep 20 2016, 15:04) *
В продолжение
http://www.ord.com.ru/files/book3/p234.html
http://www.155la3.ru/datafiles/kr1810vt3.pdf

и много много других...

Спасибо большое. Буду изучать и разбирать.
Вы как-то говорили, что можете по Skype показать как правильно работать в Modelsim'e. Был бы очень признателен, если вы покажите. Как с Вами связаться ?

Сообщение отредактировал Flip-fl0p - Sep 20 2016, 12:11
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 20 2016, 12:23
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Flip-fl0p @ Sep 20 2016, 15:10) *
Спасибо большое. Буду изучать и разбирать.
Вы как-то говорили, что можете по Skype показать как правильно работать в Modelsim'e. Был бы очень признателен, если вы покажите. Как с Вами связаться ?

Так по скайпу и связаться... Хоть сейчас...



--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 20 2016, 13:31
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Интересно, что хоть и везде пишут про 64мс - необходимый минимальный период регенерации SDRAM, но вот у меня сейчас на столе плата с K4S561632N-LC75. Отключаю регенерацию её, но информация в ней держится без разрушения вплоть до 6 секунд. То есть - почти 100-кратный запас. Конечно условия тепличные, но всё же.....
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 29 2016, 11:06
Сообщение #23


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Моделирование памяти работает, но меня очень смущает тот факт, что модель памяти отрабатывает не так как должна: у памяти выставлен параметр CL= 2. Соответственно между командой чтения и появлением данных должно пройти как минимум 2 такта, вот картинка производителя памяти, всё просто и понятно:



Но вот моделирование показывает, что данные появляются сразу на следующем такте, что расходиться с картинкой производителя:



Посмотрел я немного код модели памяти, не нашел ничего, что говорит о том, что данные должны выдаваться через 2 такта. Но сильно не пинайте, Verilog я знаю плохо, мог и не увидеть.....
Вот я и думаю: то ли я лыжник плохой, то ли лыжи не едут.



Вот код модели любезно скачанный на сайте производителя памяти:

UPD

Данные должны быть на 1/4 периода дальше, чем я накорябал.

Сообщение отредактировал Flip-fl0p - Sep 29 2016, 11:31
Прикрепленные файлы
Прикрепленный файл  sdr.v ( 48.78 килобайт ) Кол-во скачиваний: 26
 
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Oct 4 2016, 07:52
Сообщение #24


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



С проблемой моделирования разобрался. Судя по работе железа ошибка действительно в модели памяти.

Хотелось бы услышать совет по организации чтения и записи в память, с последующим выводом этих данных на LVDS матрицу.

Ситуация какая:
Контроллер запустился на частоте 50 Мгц.
LVDS матрица разрешением 800х480 по Datasheet работает на частоте 33 Мгц (но по факту запускается спокойно и на 2 МГц, но видно как обновляется экран). Для упрощения работы с памятью я планирую применять только по 5 разрядов каждого цвета(15 битный цвет), т.к ячейка памяти имеет размер 16 бит.

На данный момент контроллер может как одиночно обращаться к произвольным ячейкам, так и последовательно считывать/записывать всю строку (256 слов по 16 бит подряд максимум). Затем я обязан закрыть строку, чтобы открыть новую.

Цикл одиночного чтения\записи занимает не менее 7 тактов:
1 такт - запрос чтения\записи.
2 такт - активация строки банка по выбранному адресу
3 такт - ожидание один такт
4 такт - команда чтения\записи по выбранному адресу
5 такт - ожидание один такт
6 такт - команда закрытия банка (precharge) 1041664
7 такт - ожидания один такт.
На восьмом такте я могу снова произвести чтение\запись в любую ячейку.

Такой режим меня не устраивает т.к. читать данные я могу со скоростью примерно 50/7 Мгц, что очень медленно. Хотя фактически я могу так читать данные, но изображение на матрице будет сильно мерцать.
Так-же есть маленькая проблема: в качестве синхросигнала для матрицы я хотел бы применять внутренний сигнал ready_valid, формируемый контроллером, когда данные прочитаны с памяти. Но для полноценной работы матрицы мне необходима частота в 7 раз больше частоты данных для работы серилайзеров, чтобы выдавать данные в LVDS. Как её получить я не знаю. Встроенных умножителей на ПЛИС EP3C10E144C8 нет. Как будет работать матрица если в качестве опорной частоты PLL задать частоту 50Мгц/7 я не представляю. Если подумаю немного может, что и смогу придумать. Но этот вариант применять не хочется, поскольку он заведомо неправильный.

Более интересен режим последовательного считывания всей строки. Ширина матрицы 800 пикселей(или 800 слов, где каждое слово - это отдельный пиксель), каждый из которых должен читаться со скоростью 34 МГц, а ширина банка 256 слов, каждое из которых может читаться со скоростью почти 50 Мгц ( почти потому, что часть времени уйдет на активацию банка, ожидания, и деактивацию банка) то, полноценно вывести данные на матрицу я опять же не смогу, из-за того что если я и запущу память и матрицу на одной частоте, то в этом случае будут паузы между переключением строк.
Так как данные я могу читать быстрее матрицы, есть мысль сначала данные из памяти читать в асинхронный FIFO буфер а уже из буфера выводить на матрицу.

Есть ещё мысль запустить память на частоте матрицы и применять BURST режим чтения всей страницы с командой BURST TERMINATE. Команды подавать во время "обртного хода луча", т.е когда данные на матрицу не выводятся. Но тут немного не хватает знаний в области работы памяти: не нашел информации про режим полностраничного чтения. Есть ли паузы между переходом строк ? Есть подозрение что пауз нет, т.к. встроенный в память контроллер сам все делает.

UPD
Забыл уточнить, что в памяти будет записано изображение, которое соответствует разрешению матрицы. Задача вывести изображение на матрицу.

Хотелось бы услышать мнение специалистов.

Сообщение отредактировал Flip-fl0p - Oct 4 2016, 09:09
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Nov 23 2016, 05:56
Сообщение #25


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Поскольку задача вывода изображения на матрицу решена, и простенький контроллер работает, хотелось бы расширить функционал контроллера. Поскольку я планирую память использовать в качестве видеобуфера.
Прошу помощи в поиске литературы по работе с SDRAM памятью. Например какой-либо толковой информации по SDRAM Bank Interleave я не нашел. Про теневую регенерацию так-же почти нет информации. Да и тема правильной организации обращений к памяти для максимизации её пропускной способности очень актуальна (во всяком случае для меня). Прошу не закидывать тапками, а подсказать литературу.

Сообщение отредактировал Flip-fl0p - Nov 23 2016, 06:49
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 00:42
Рейтинг@Mail.ru


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