|
|
  |
делаю контроллер DDR, новичок, прошу помочь советом |
|
|
|
Nov 8 2010, 09:59
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 2-11-10
Из: СПб
Пользователь №: 60 600

|
в наличие имеется: плата с Cyclone III, двумя чипами DDR SAMSUNG EP3C16F484C7N, два кварца, на 27 и 66 МГц, для SDI и DDR соответственно. задача стоит - сделать так чтобы Альтера закидывала 10-разрядное видео в DDR и, накопив несколько кадров, начинала выдавать обратно в ПЛИС, а там уже преобразуется обратно в последовательный поток... сам я не являюсь опытным разработчиком, но мне помогли, дали код, где человек делал контроллер DDR в связке с общением устройства по PCI (использовалась эта же плата с разводкой). Буду крайне признателен, если кто-то знающий и добрый поможет определиться хотя бы с первыми вопросами издалека, для начала. - где можно в подробностях узнать алгоритм обращения к ддр-памяти со стороны контроллера? допустим, у меня есть блок инициализации моей ДДР. как мне организовать конвейер загрузки-выгрузки слов, чтобы от меня только требовалось следить за указателем памяти например?
- на что влияет величина BURST LENGTH? уважаемый разработчик, с чьим кодом я разбираюсь, пользовался B.Length=1, встречал в проектах и 2. какой смысл, если можно по 4 и даже 8? объясните, пожалуйста. ведь, как я понял, у каждого BURST приамбула и постамбула занимают полезное время
- есть ли какие-то открытые контролееры, которые можно было бы почитать или дерзко поюзать? к сожалению, с налёта читаю только AHDL
Заранее благодарю.
|
|
|
|
|
Nov 8 2010, 10:26
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 2-11-10
Из: СПб
Пользователь №: 60 600

|
у меня тут непонимание происходит - в объяснении про Mode Register Fields для DDR SDRAM указано, что биты А0-А2 в MRS отвечают за установку длины этого самого BURST. как это понимать? там доступны 2, 4 и 8. а предыдущий программист вообще использовал 1. как так?
|
|
|
|
|
Nov 8 2010, 10:54
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406

|
Цитата(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 слов - накладные расходы протокола интерфейса с памятью практически скроются.
Сообщение отредактировал Gothard - Nov 8 2010, 10:56
|
|
|
|
|
Nov 8 2010, 11:13
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 2-11-10
Из: СПб
Пользователь №: 60 600

|
так, это понял. уважаемые, подскажите - а кроме даташита есть источники где можно узнать непосредственно про цикл записи/чтения? из чего он состоит, как переключаться..
|
|
|
|
|
Nov 8 2010, 11:43
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406

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

Группа: Участник
Сообщений: 29
Регистрация: 2-11-10
Из: СПб
Пользователь №: 60 600

|
Gothard, благодарю за помощь!!!
Serhiy_UA, очень признателен за ссыль, люблю такие сайты)))
|
|
|
|
|
Nov 9 2010, 11:36
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 2-11-10
Из: СПб
Пользователь №: 60 600

|
Всё-таки непонимание относительно BURST LENGTH осталось. если у меня входной поток данных непрерывный и мне постоянно нужно повторять цикл закидывания нового пакета данных в память, то мне выгоднее будет использовать длинные пакеты, правильно я понимаю?
заранее благодарен
|
|
|
|
|
Nov 9 2010, 11:52
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406

|
Цитата(Farsch @ Nov 9 2010, 14:36)  Всё-таки непонимание относительно BURST LENGTH осталось. если у меня входной поток данных непрерывный и мне постоянно нужно повторять цикл закидывания нового пакета данных в память, то мне выгоднее будет использовать длинные пакеты, правильно я понимаю?
заранее благодарен Да - в таком случае выгодно длинные пакеты. (Я так понимаю, что короткие вообще используются в очень специфических случаях). Просто сначала копите данных на пакет и потом шлете их все залпом. За одну операцию чтения соответственно вычитывается вся пачка целиком.
|
|
|
|
|
Nov 12 2010, 11:16
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 2-11-10
Из: СПб
Пользователь №: 60 600

|
Уважаемые! а задержку tDQSS между WRITE и началом BURST я сам выбиравть волен из диапазона приведённого в спецификации ДДР? там от 0.7 клока до 1.2. так могу ли я выбрать номинальное значение 1 clk как в описании JEDEC?
и обязательно ли использовать DATA MASK (DM) signal?
Сообщение отредактировал Farsch - Nov 12 2010, 11:20
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|