Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с DDR
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
juvf
Собрал проект NIOS II + DDRII. На опытных экземплярах ни каких нариканий на работу DDR не было. Запустили серию. В 10 из 20 плат не работает DDR. Непропаи отмели, смотрели ренгеном.
Стоит два чипа mocron MT47H32M16HR-3 I, у каждого шина данных 16 бит. две микросхемы образуют 32-х битную шину данных. Собрал проект хеловорд в котором заюзал только одну микросхему ддр - работает. Собрал другой хеловорд в котором заюзал др мк/с - работает. .......... собрал рабочий проект, в котором использовал только одну микросхему - неработает.
Думаю, что проблемы с настройками тайменгов в QSys-t в настройках параметров контроллера DDR. там сотня всяких тайменгов. с даташита акуратно указал все времена - неработает. На половине плат всё работает, на половине плат нет. Причем на некоторых нерабочих платах иногда запускается ддр. Т.е. включаю плату - и вижу, все работает, ддр живет, программа работает. выключаю, включаю - и всё(((( неработает, конфигурация в плис грузится, но программа, которая распологается в ддр не работает. Получается что иногда контроллер ддр запускается и исправно работает, а иногда какая нибудь синхронизация у него сдвигается и в фазу не попадает чтоли, и не работает.

Скорее всего нужно какое-нибудь нужное время проставить в контроллере ДДР. но какое? как можно проанализировать контроллер ддр и что у него не работает?

ps Можно конечно социлом встать на ножки ддр и тачего глянуть. Но что смотреть?
aabmail
На какой частоте работает DDR2 на вашей плате?
Проходит ли тест памяти в bootloader? Если нет, то есть ли какие-нибудь закономерности в искажении данных?
Смотрели ли вы осциллографом signal integrity?
juvf
DDRII работает на 150 МГц. Пробовал на 125 - не помогло. Нет, в бутлоадаре тест не проходит. В бытлоадаре вообще нету обращения к ддр. как будьто микросхемы сняты.

Цитата
Смотрели ли вы осциллографом signal integrity?
А это как? Смотрел склоки - нормальные. написал тестовый проект в котором по всем линиям ддр пустил бегущую "1" - все проводники нормальные.
Koluchiy
Цитата
Стоит два чипа mocron MT47H32M16HR-3 I, у каждого шина данных 16 бит. две микросхемы образуют 32-х битную шину данных.

Это как с точки зрения схемы - шины данных раздельные, всё остальное общее? Или как-то по-другому.
juvf
Цитата(Koluchiy @ Dec 10 2012, 11:11) *
Это как с точки зрения схемы - шины данных раздельные, всё остальное общее? Или как-то по-другому.

общее адрес и управление. раздельные данные.
vars
Когда при включении то работает, то не работает, то стоит обратить внимание на сигнал reset, который подаётся на контроллер. Может быть, нужно держать контроллер в сбросе подольше при вкл. питания, пока питание на м/с памяти не придёт в норму.
Koluchiy
Я бы предположил, что какие-то баги с калибровкой.
Wic
Цитата(vars @ Dec 10 2012, 14:53) *
Когда при включении то работает, то не работает, то стоит обратить внимание на сигнал reset, который подаётся на контроллер. Может быть, нужно держать контроллер в сбросе подольше при вкл. питания, пока питание на м/с памяти не придёт в норму.

Или просто перезалить проект при уже включенном питании. Если помогло значит слишком рано начинает контроллер с памятью общаться.
Я бы урезал рабочий проект до контроллера ддр + проц и пытался стартовать его. Возможно тайминги немного плывут, тут как вариант ужесточить требования по времени.
juvf
Цитата(Wic @ Dec 10 2012, 14:46) *
Или просто перезалить проект при уже включенном питании. Если помогло значит слишком рано начинает контроллер с памятью общаться.
Я бы урезал рабочий проект до контроллера ддр + проц и пытался стартовать его. Возможно тайминги немного плывут, тут как вариант ужесточить требования по времени.

Ресет после включения держу достаточно долго. потому как перестраиваюися внешний клокдестебъютер. После перестройки нужно ждать пока устаканится частота. Ресет держу порядра 2-х сек. Частота устаканивается после включения ...... ну на глаз по осцылу - мгновенно. запас ресета по временни огромный.

Цитата
проект до контроллера ддр
урезал с одной ддр. Работает. С одной ддр полный проект не работает.


вот ещё мысль: ресет общий. и для контроллера ддр и для ядра ниоса. т.е. после включения через 2 сек ресет снимается. Может нужно сначало снять ресет с ддр, потом с ядра?
juvf
РЕШИЛ ПРОБЛЕМУ 08.gif

На микросхеме ддр есть вход ODT (управление терминирующими резисторами). Этот вход я подключил к выходу контроллера ДДР - ODT (как в китах). При таком подключении на половине плат память не запускалась. В проекте квартуса отключил ODT от контроллера и подключил в Vcc - все платы запустились.
Wic
Чисто ради интереса, не пробовали смотреть разницу в поведение сигнала на этом входе когда платы запускаются и когда не запускаются?
juvf
Цитата(Wic @ Dec 12 2012, 12:18) *
Чисто ради интереса, не пробовали смотреть разницу в поведение сигнала на этом входе когда платы запускаются и когда не запускаются?

Смотрел. Одинаковое повидение.

На циклоне3 нету терменирующих резисторов. Я так понял что при передачи данных контроллер ДДР сигналом ОДТ включает терминирующие резисторы в мкс.памяти. При получении данных одт снимается и резисторы внутри памяти отключаются. Тут какбы источник сигнала память, поэтому терминатор должен стоять в плис. Но в плис нету терминирующих резисторов. Подключив ОДТ к Vcc я включил терминирующие резисторы в памяти постоянно. Когда шину QD захватывает плис - то всё нормально, в конце линии терминаторы. А когда шину QD захватывает память, то терминаторы должны стоять в плис (конец линии теперь плис), но они у меня остаются в памяти. Т.е. шина QD всегда затерминирована со стороны памяти. Это конечно не гуд, но для коротких линий прокатывает.

А почему то работало то неработало, да ещё на половине плат всегда работало? ну наверно в этих платах фортануло. И без терминаторов шина QD как то умудрялась работать, но наверно работала на грани фола.
gosu-art
А разве резисторы PUP, PDN - 50 Ом не для терминации подключаются на специальные ноги ПЛИС?
Koluchiy
Думаю, что надо почитать про то, какие настройки контроллера рекомендуются для Вашей памяти.
juvf
Цитата(gosu-art @ Dec 13 2012, 01:21) *
А разве резисторы PUP, PDN - 50 Ом не для терминации подключаются на специальные ноги ПЛИС?

Какие резисторы? я внешними резисторами терминировал шину адреса и шину управления. а на шине данных должна быть динамическая терминация. то со стороны плис, то со стороны памяти. в плисе в цыклоне нету таких резиторов (в стратиксе вроде есть). может в цыклоне внешние куда подключать? но куда? и это как, 32 внешних резистора на 32 дополнительных пина?

Цитата
Думаю, что надо почитать про то, какие настройки контроллера рекомендуются для Вашей памяти.
Я тоже так думал. перекурил кучу док по ддр и по плис, по контроллеру..... В Qsys пожно установить конкретный чип памяти и все настройки высталяются автоматом для этого чипа. Конкретно мой чип в списке в Qsys есть. Я его выбирал. Потом сверял полученные настройки с даташитом на память: ноздря в наздрю - Неработает. Это что касается настроек времянок. Но там в контроллере есть настройки тиипа Разрешить автоРефреш и т.п. Там галок не много - перепробовал все варианты - Неработает. Если есть опыт и вы знаете как запустить динамическую терминацию на цыклоне - поделитесь.
gosu-art
Цитата
The Cyclone III device family provides output driver on-chip impedance matching
and on-chip series termination for single-ended outputs and bidirectional pins. For
bidirectional pins, OCT is active only for output.

А резисторы цепляются на ноги RUP, RDN - два всего, но это для калибровки ОСТ.
Все подробности тут
DmitryR
Цитата(juvf @ Dec 13 2012, 08:41) *
и это как, 32 внешних резистора на 32 дополнительных пина?

Это легко, резисторными сборками sm.gif Ну и конечно надо моделировать плату, такие вещи сразу бы вылезли.
juvf
Цитата(DmitryR @ Dec 13 2012, 13:50) *
Это легко, резисторными сборками sm.gif Ну и конечно надо моделировать плату, такие вещи сразу бы вылезли.

Это не просто. Где взять дополнительно 32 пина? Есть кит с цыклоном3 с ддр. сделал всё как в ките. не терминируется там внешними резисторами шина данных.

Плату моделировали. моделировали в хиперлинксе. всё пучком. И при чем тут моделирование платы, если не работает схема, не работает динамическа терминация.

2gosu-art А что такое OCT? Не нашол в хэндбуке.
Цитата
OCT is active only for output.
Мне же нужно, чтобы терминаторы внутри ПЛИС подключались только на время, когда шина данных становится входом по отношению к ПЛИС.
gosu-art
Цитата
2gosu-art А что такое OCT? Не нашол в хэндбуке.

On Chip Terminations.
Sergey_Bekrenyov
В начале своих мучений с DDR2 и CycloneiV выясни, что ODT не работает. Повесил его на то ли на 0 то ли на 1 и работаю спокойно.
DmitryR
Цитата(juvf @ Dec 13 2012, 14:56) *
Где взять дополнительно 32 пина?

Не надо нигде брать, терминация делается на существующих линиях. Чаще всего проходные резисторы помогают, особенно на таких низких частотах.

Цитата(juvf @ Dec 13 2012, 14:56) *
не работает динамическа терминация.

Как так она не работает? Она работает, просто в Cyclone её нет. Поэтому надо делать две модели: передача от ПЛИС к памяти, с включённой ODT (это отдельная модель в IBIS памяти), передача от памяти к ПЛИС (с выключенной ODT, это другая модель).
VladimirB
Цитата(DmitryR @ Dec 14 2012, 17:39) *
Как так она не работает? Она работает, просто в Cyclone её нет. Поэтому надо делать две модели: передача от ПЛИС к памяти, с включённой ODT (это отдельная модель в IBIS памяти), передача от памяти к ПЛИС (с выключенной ODT, это другая модель).

+100500
Вопрос про терминацию должен был всплыть на этапах разработки принципиальной схемы и печатной платы.
Разработчики должны были заметить что в Циклопах3 нету ODT - и порешать эту проблему: либо моделированием и доп. терминацией, либо сменой ПЛИС на Спартан6, где уже есть всё встроенное (нет только Ниоса и Кактуса sm.gif ).

Тем более, что, по словам ТС, разработчики вроде как продвинутые и моделируют плату в Гиперлинксе.
Я вот, например, плату целиком ещё ни разу не моделировал, однако для критических цепей и их терминации ещё на этапе схемотехники смотрю IBIS модели и осциллограммы сигналов и возможности ПЛИС в плане терминации.
juvf
Цитата(VladimirB @ Dec 15 2012, 03:08) *
+100500
Вопрос про терминацию должен был всплыть на этапах разработки принципиальной схемы и печатной платы.
Разработчики должны были заметить что в Циклопах3 нету ODT - и порешать эту проблему

Ну вот не заметили. laughing.gif Вообще в нашей канторе это был первый опыт с DDR. И ни кого рядом, кто уже её щюпал. Моделировали так, что на конце линии есть терминация 50 Ом. Т.е. в моделировании не было динамической терминации. просто линиия и на конце терминатор. За основу был взят кит на томже циклоне3, на котором ддр с данными аш в 72 бита (5 микросхем). Мы же упростили сделав 32 бита на 2-х микросхемах. На ките на шине данных не было внешней терминации. Ну не стали изобретать велосипед, доверились киту.

Цитата
Тем более, что, по словам ТС, разработчики вроде как продвинутые и моделируют плату в Гиперлинксе.
Я вот, например, плату целиком ещё ни разу не моделировал
Ну целиком плату, да ещё плату с реальной полученной трасировкой, мы не моделировали. Моделировали отдельный цепи до трасировки.

А как можно было на этапе моделирования понять, что в циклоне3 нет ODT? Немного доки недокурили по работе ддр и про ODT в циклоне3. laughing.gif

DmitryR
Цитата(juvf @ Dec 15 2012, 10:39) *
Моделировали так, что на конце линии есть терминация 50 Ом. Т.е. в моделировании не было динамической терминации. просто линиия и на конце терминатор.
<...>
На ките на шине данных не было внешней терминации. Ну не стали изобретать велосипед, доверились киту.

Полностью лишённая смысла работа: вы смоделировали одно, а сделали по-другому.

Цитата(juvf @ Dec 15 2012, 10:39) *
А как можно было на этапе моделирования понять, что в циклоне3 нет ODT?

Звон бы увидели в линии, сталии бы искать причины и поняли бы.
VslavX
Цитата(juvf @ Dec 15 2012, 08:39) *
Ну вот не заметили. laughing.gif Вообще в нашей канторе это был первый опыт с DDR. И ни кого рядом, кто уже её щюпал. Моделировали так, что на конце линии есть терминация 50 Ом.

Это как? Дорисовали на схеме в HL резистор? Так схему моделировали или реально оттрасированную плату?

Цитата(juvf @ Dec 15 2012, 08:39) *
А как можно было на этапе моделирования понять, что в циклоне3 нет ODT? Немного доки недокурили по работе ддр и про ODT в циклоне3. laughing.gif

Так модель пинов в HL подключается. И там выбирается режим работы пина - один из описанных в файле модели. Если нужный режим (с включенным ODT) в списке не найден (поскольку не поддерживается), то это уже был повод задуматься - а шо ж не так.
И еще мне странно немного - на коротких линиях (1 дюйм) шина данных в топологии точка-точка должна бы заработать и без терминации. Ну вероятно были бы overshoot/undershoot, но времянка должна быть OK. Есть же примеры успешных проектов, работающих без терминации. Так что весьма вероятно что у Вас на плате еще какие-то косяки есть.
Sergey_Bekrenyov
Цитата(VslavX @ Dec 18 2012, 16:59) *
Это как? Дорисовали на схеме в HL резистор? Так схему моделировали или реально оттрасированную плату?


Так модель пинов в HL подключается. И там выбирается режим работы пина - один из описанных в файле модели. Если нужный режим (с включенным ODT) в списке не найден (поскольку не поддерживается), то это уже был повод задуматься - а шо ж не так.
И еще мне странно немного - на коротких линиях (1 дюйм) шина данных в топологии точка-точка должна бы заработать и без терминации. Ну вероятно были бы overshoot/undershoot, но времянка должна быть OK. Есть же примеры успешных проектов, работающих без терминации. Так что весьма вероятно что у Вас на плате еще какие-то косяки есть.


Этот "косяк" называется 2 чипа подключенных на один контроллер. Меня в свое время заставили поставить на схему с одним чипом DDR2 терминацию, хотя я упирался. Так вот на схему с двумя чипами я поставил сам - при производстве ошиблись и не поставили терминацию. Получилось хочу работаю - хочу нет. Хотя все линии короткие
DmitryR
Цитата(Sergey_Bekrenyov @ Dec 18 2012, 17:03) *
Этот "косяк" называется 2 чипа подключенных на один контроллер.

Отнюдь. Или вы предлагаете DIMM, например, тоже оторвать и бросить? Там по 8 чипов на одном контроллере.
VslavX
Цитата(Sergey_Bekrenyov @ Dec 18 2012, 15:03) *
Этот "косяк" называется 2 чипа подключенных на один контроллер.

Два чипа можно подключить же по-разному. Например два 16-битных чипа в двух разных банках (chip-select имею ввиду разные) на 16-битной шине - это уже не соединение типа "точка-точка", потому что на каждой линии данных уже будет три пина. А если из двух 16-разрядных чипов набрать 32-разрядную шину, то на каждой линии данных будет два пина - контроллера и одного из чипов памяти. Это уже точка-точка. К скоростям и выравниваниям чувствительны именно клоки и шины данных, остальные сигналы значительно менее проблемные, к тому же можно обычно применить режим 2T, если все совсем уж плохо.
Ну и чисто проблемы Альтеры бывают.
Sergey_Bekrenyov
Цитата(VslavX @ Dec 18 2012, 18:04) *
Два чипа можно подключить же по-разному. Например два 16-битных чипа в двух разных банках (chip-select имею ввиду разные) на 16-битной шине - это уже не соединение типа "точка-точка", потому что на каждой линии данных уже будет три пина. А если из двух 16-разрядных чипов набрать 32-разрядную шину, то на каждой линии данных будет два пина - контроллера и одного из чипов памяти. Это уже точка-точка. К скоростям и выравниваниям чувствительны именно клоки и шины данных, остальные сигналы значительно менее проблемные, к тому же можно обычно применить режим 2T, если все совсем уж плохо.
Ну и чисто проблемы Альтеры бывают.


у автора, как и у меня именно 32-разрядная шина. И не работает без терминации. С терминацией работает.

DmitryR а по поводу DIMM - если на FPGA нет терминации, то ее делают на плате с FPGA. У альтеры не помню, у кзайлинкса видел такое. Я кстати с альтерского кита на Циклон 4 и срисовывал терминацию на 2 чипа в шине 32 разряда
juvf
Цитата(VslavX @ Dec 18 2012, 18:59) *
Это как? Дорисовали на схеме в HL резистор? Так схему моделировали или реально оттрасированную плату?


Так модель пинов в HL подключается. И там выбирается режим работы пина - один из описанных в файле модели. Если нужный режим (с включенным ODT) в списке не найден (поскольку не поддерживается), то это уже был повод задуматься - а шо ж не так.

Неее.... Ну говорю же первый опыт, первое знакомство с хиперлинксом. Хиперлинкс - вообще отдельная планета. Реальную плату не моделировали. Моделировали даже не схему а отдельную цепь. Нарисовали цепь: Источник-резисторДорожка-виа-резисторДорожка-виа-терминатор+приемник. Ну какбы подрозумевал что на время передачи терминатор подключится. laughing.gif
Цитата
И еще мне странно немного - на коротких линиях (1 дюйм) шина данных в топологии точка-точка должна бы заработать и без терминации.
Видать она у нас на опытных образцах и заработала, причем вроде из 7-ми плат на одной так и не пошла ддр - списали на непропай бга. А в серии на каждой 2-ой не пошла. В серию платы заказывали в др канторе, стек изменили, чуть тоньше платы получились.

Ну допустим нету в CycloneIII ODT и нужно ножку на микросхеме ODT затянуть в "1" (или в "0"). В прикреплении Э3 демокита . В схеме ODT идет на порт Cyclon-a, но если там нет одт - достаточно же ногу памяти подтянуть на "1" и не мучится с трассировкой этой цепи, тем более она идет на две мк.сх., да ещё с терминацией, да ещё с выравниванием. в SOPSбилдере указывается для какой ПЛИС будет собираться НИОС. Билдер собрал контроллер с ногой ODT. Даже не было тени сомнения, что ОДТ нету.

ps Всетаки, а почему в ките ODT от памяти завели на циклон?
VladimirB
Цитата(Sergey_Bekrenyov @ Dec 18 2012, 17:03) *
Этот "косяк" называется 2 чипа подключенных на один контроллер. Меня в свое время заставили поставить на схему с одним чипом DDR2 терминацию, хотя я упирался. Так вот на схему с двумя чипами я поставил сам - при производстве ошиблись и не поставили терминацию. Получилось хочу работаю - хочу нет. Хотя все линии короткие

Два чипа параллелятся по шине управления и адреса. Шины данных независимые - 2x16=32. И проблема у ТС именно в отсутствии терминации входов на шине данных в Циклопе3 при чтении из DDR2.

А то что линии короткие - в некоторых случаях это может быть ещё и хуже, особенно при разветвлениях древовидной структуры.
В техасовских DSP помнится встречал требования не только максимальной, но и к минимальной длине линий до памяти.
ИМХО надо моделировать и смотреть, какая длина и терминация будет оптимальной.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.