Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: делаю контроллер DDR
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Farsch
в наличие имеется: плата с Cyclone III, двумя чипами DDR SAMSUNG EP3C16F484C7N, два кварца, на 27 и 66 МГц, для SDI и DDR соответственно. задача стоит - сделать так чтобы Альтера закидывала 10-разрядное видео в DDR и, накопив несколько кадров, начинала выдавать обратно в ПЛИС, а там уже преобразуется обратно в последовательный поток...

сам я не являюсь опытным разработчиком, но мне помогли, дали код, где человек делал контроллер DDR в связке с общением устройства по PCI (использовалась эта же плата с разводкой).

Буду крайне признателен, если кто-то знающий и добрый поможет определиться хотя бы с первыми вопросами издалека, для начала.

  • где можно в подробностях узнать алгоритм обращения к ддр-памяти со стороны контроллера? допустим, у меня есть блок инициализации моей ДДР. как мне организовать конвейер загрузки-выгрузки слов, чтобы от меня только требовалось следить за указателем памяти например?
  • на что влияет величина BURST LENGTH? уважаемый разработчик, с чьим кодом я разбираюсь, пользовался B.Length=1, встречал в проектах и 2. какой смысл, если можно по 4 и даже 8? объясните, пожалуйста. ведь, как я понял, у каждого BURST приамбула и постамбула занимают полезное время
  • есть ли какие-то открытые контролееры, которые можно было бы почитать или дерзко поюзать? к сожалению, с налёта читаю только AHDL


Заранее благодарю.
Kuzmi4
2 Farsch
1) в ДШ на мелкосхему памяти
2) BURST LENGTH - грубо говоря длинна загружаеммых данных, цифры (1/2...) варьируются в зависимости от DDR1/2/3
3) У альтры есть контроллеры, но нужна лицензия, а так советую пошариться на http://opencores.org там вроде есть безплатные
Farsch
у меня тут непонимание происходит - в объяснении про Mode Register Fields для DDR SDRAM указано, что биты А0-А2 в MRS отвечают за установку длины этого самого BURST. как это понимать? там доступны 2, 4 и 8. а предыдущий программист вообще использовал 1. как так?
Gothard
Цитата(Farsch @ Nov 8 2010, 13:26) *
у меня тут непонимание происходит - в объяснении про Mode Register Fields для DDR SDRAM указано, что биты А0-А2 в MRS отвечают за установку длины этого самого BURST. как это понимать? там доступны 2, 4 и 8. а предыдущий программист вообще использовал 1. как так?

что значит 1? если грузил в [2:0] значение "001" то это соответствует длине 2. Учите матчасть

а насчет влияния величины BURST_LENGTH - то в общем зависит от характера обмена с памятью. Если требуется гонять большие объемы, а не произвольно раскидывать по байту внутри ОДНОЙ СТРОКИ (ROW т.е.), то оптимальнее выбрать длину 8 слов - накладные расходы протокола интерфейса с памятью практически скроются.
Farsch
так, это понял. уважаемые, подскажите - а кроме даташита есть источники где можно узнать непосредственно про цикл записи/чтения? из чего он состоит, как переключаться..
Gothard
Цитата(Farsch @ Nov 8 2010, 14:13) *
так, это понял. уважаемые, подскажите - а кроме даташита есть источники где можно узнать непосредственно про цикл записи/чтения? из чего он состоит, как переключаться..

А чего вам непонятно? Есть два документа которых мне хватило с головой - спецификация JEDEC (тут http://www.jedec.org/sites/default/files/docs/JESD79F.pdf) и даташит на любую микроновскую микросхему памяти (там картинки по-красивее smile.gif).
Serhiy_UA
Цитата(Farsch @ Nov 8 2010, 14:13) *
...где можно узнать непосредственно про цикл записи/чтения? из чего он состоит, как переключаться..

Посмотрите страницу Дмитрия Иоффе "Описание работы SDRAM от фирмы Micron ":
http://www.dsioffe.narod.ru/mysdram/MyMicronSDRAM.htm

еще полезности
http://www.dsioffe.narod.ru/stuff/stuff.htm#datasheets
Farsch
Gothard, благодарю за помощь!!!

Serhiy_UA, очень признателен за ссыль, люблю такие сайты)))
Farsch
Всё-таки непонимание относительно BURST LENGTH осталось. если у меня входной поток данных непрерывный и мне постоянно нужно повторять цикл закидывания нового пакета данных в память, то мне выгоднее будет использовать длинные пакеты, правильно я понимаю?

заранее благодарен
Gothard
Цитата(Farsch @ Nov 9 2010, 14:36) *
Всё-таки непонимание относительно BURST LENGTH осталось. если у меня входной поток данных непрерывный и мне постоянно нужно повторять цикл закидывания нового пакета данных в память, то мне выгоднее будет использовать длинные пакеты, правильно я понимаю?

заранее благодарен

Да - в таком случае выгодно длинные пакеты. (Я так понимаю, что короткие вообще используются в очень специфических случаях).
Просто сначала копите данных на пакет и потом шлете их все залпом.
За одну операцию чтения соответственно вычитывается вся пачка целиком.
Farsch
Уважаемые! а задержку tDQSS между WRITE и началом BURST я сам выбиравть волен из диапазона приведённого в спецификации ДДР? там от 0.7 клока до 1.2. так могу ли я выбрать номинальное значение 1 clk как в описании JEDEC?

и обязательно ли использовать DATA MASK (DM) signal?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.