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

ТЕМА: Контроллер памяти. Не могу доделать.

Контроллер памяти. Не могу доделать. 12 года 9 мес. назад #645

Всем здравия !
Тут делаю простенький видеоадаптер. Сделал контроллер монитора. Проверил его, сделав модули, организующие текстовый и графический режим. Хочу сделать 640х480х16 бит, но уперся в нехватку памяти. На моей плате Terasic DE0-Nano стоит чип Циклон 4, а именно EP4CE22F17C6N. Его памяти хватит только для 640х480х1 бит. Также у меня стоит 32MB SDRAM(не могу сейчас точную модель сказать, но нечто похожее используется в вашем проекте с фреймбуфером. У меня 4096 рядов по 512 16бит слов).
Написал инициализацию для памяти на Верилоге. Сделал в виде конечного автомата, отсимулировал - всё как в даташите.
А дальше уперся в массу проблем.
1) Как можно синхронизировать работу контроллера монитора и памяти ? Допустим, у меня будет контроллер монитора работать на частоте 25 МГц (моники допускают такое отклонение от эталонных 25.175 МГц и работают нормально), а контроллер памяти - 100 МГц. Тогда CAS Latency = 2... То есть мы посылаем команду на чтение, а имеем данные на шине только через 2 такта...
2) Мы имеем ряды по 512 16-битных слов. То есть, если мы имеем 640 пикселей в строке, то это уже 2 ряда надо тратить на строку... Промеж пикселей не будет успевать переключать ряды, даже несмотря на то, что память в четыре раза быстрее дисплея тактуется.
3) Еще не разобрался с регенерацией ячеек... Вот мы имеем ряд, да ? Сделали ACT, прочитали/записали данные - регенерировать этот ряд не надо... Если в цикле читать/писать данные, например, в 10 рядов - то их рефрешить не надо, да ?
Тогда, если прикинуть, то выходит из п.2, что ряды, соответствующие первым строкам, будут успевать портиться... Может, я что-то не так прикинул, так как у меня нет точного представления о процессе регенерации.
4) Чтение/запись... Как тут разрулить всё ? Пока "бежит луч" - читать, а в blank-ах писать ?
Может, наведете на мысли, как это все разрешить ?
Может, там буфера какие-нибудь использовать(FIFO ?)...
Или подкинете ссылку на готовый контроллер SDR SDRAM с адекватным интерфейсом ? Всё, что не находил в интернете, всё или замороченное, или заточенное под что-то другое. Хотелось бы просто иметь шину адреса(без всяких там рядов и столбцов), шину данных, и сигнал чтение/запись. А автомат пускай решает, делать ли ему PRE/ACT/REFRESH, писать, читать, обновлять...
Спасибо за любую помощь !

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

Re: Контроллер памяти. Не могу доделать. 12 года 9 мес. назад #646

В проекте "фреймбуфера", для синхронизации контроллера монитора и памяти используется маленькое FIFO (на 9 слов).
В вашем случае, поскольку в циклоне есть внутренняя память, свободы действий гораздо больше. Можно, например,
использовать DP-RAM. По строчному , быстренько, считывать в нее строку (два ряда), и медленно выдавать ее в контроллер.
Я , для чтения, использовал режим "full page". В этом режиме строка у вас будет считываться за 640+ еще немножко (на команды)
тактов 100 МГц.
В оставшееся время, по усмотрению - читать/писать.
Если память будет использоваться только для видеоадаптера, то регенерировать ее не нужно.

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

Re: Контроллер памяти. Не могу доделать. 12 года 9 мес. назад #647

Спасибо !
Ну у меня была такая идея - использовать FIFO на строку экрана.
Буду пробовать.
Вопрос ещё по регенерации... Вот в даташите на чип сказано - 4096 циклов на 64 мс. А еще, если произошло чтение/запись, то регенерация не нужна. Вопрос: чтение/запись в любую область памяти подойдет ? То есть, если у нас 100 рядов с данными, то если я буду перечитывать один и тот ряд не реже, чем раз в 15.625 мкс(64/4096), то остальные ряды не попортятся ? А если я никаких операция с памятью не делал в этот период, то данные могут повредиться, да ?
Просто хочется с этим вопросом разобраться раз и навсегда ! :dry:

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

Re: Контроллер памяти. Не могу доделать. 12 года 9 мес. назад #648

Каждый ряд нужно активировать не реже чем через 64мс, иначе данные могут разрушится.
В случае с фреймбуферром, с частотой кадров 60гц ( т.е. период 17мс) все ряды ,читаемые
видеоадаптером, активируются. Ко всем остальным, если используются, нужно или
обращаться (читать/писать), или регенерировать. Команда регенерации отличается от
команды активирования только тем, что имеет "автоинкремент" адреса.

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

Re: Контроллер памяти. Не могу доделать. 12 года 9 мес. назад #649

Ааа, ну пока вопросов больше нет.
Спасибо за ответы !
Видимо, даташиты рассчитаны на подготовленного читателя. По отдельности там много чего есть, но цельная картина не складывается...
Автоинкремент ряда при рефреше - ну да, там на схеме есть счетчик рядов. Команда регенерации, кстати, длится 7 тактов(по даташиту) Из всего вышесказанного, я так понял, при этой команде за один раз обновляется 1 ряд
Ладно, буду пробовать.

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

Re: Контроллер памяти. Не могу доделать. 12 года 8 мес. назад #657

Не в тему, :huh: но может пригодится. Если считывать видеоданные с такого устройства как SD Card - можно обойтись вообще без фреймбуфера. А код можно умудриться в марсоход впихнуть. ;)

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

Re: Контроллер памяти. Не могу доделать. 11 года 9 мес. назад #1328

Тоже пытаюсь спроектировать видеоконтроллер.
Видеоконтроллер 800х600 (Пикселклок 40 или 50 МГц , этот кусок уже работает) должен быть поключен к МК-АРМ.
Возникали точно ие же вопросы что и у Вас.
Интересно , как обстоят с вашим видеоконтроллером дела ?

Чем больше ответов нашол на свои вопросы , тем больше пока склоняюсь к использованию не к SDR-SDRAM, а к FPM или EDO DRAM, например MT4C1M16E5DJ-6 - 5v (TM4LC1M16E5 - 3v3). Пятивольтовка есть в продаже на Имраде , порядка 2$ - дешевле SDRAM-ок , да и SDRAM-ки все в продаже в основном для DVD-шек и спутниковых тюнеров 16-битки и с малым кол-вом колонок.

У SDR-SDRAM тоже есть много микросхем (из тех что 128К и больше) с архитектурой не по 256 или 512 колонок а по 1024 или 2048 (те что меньше бит , те и больше колонок - количество Sense Amp одинаковое), и хотя меня и 8 бит устраивают, но всеравно для меня проектировать такой сложный автомат пока рановато. Переходники под SDRAM-ки почти сделал и всеравно по тихоньку буду их бомбить :-)

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

  • Страница:
  • 1
Время создания страницы: 0.134 секунд
Работает на Kunena форум