Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Xilinx MIG 3.1 и dual-rank DDR2 SODIMM, работает на 200 МГц!?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
zomg
Сгенерил MIG 3.1 DDR2 SDRAM контроллер для Virtex 5 (xc5vsx50t-ff1136 Speed Grade -2). Планка памяти двухранковая Samsung M470T6554EZ3-CE6 на 512 МБ. MIG позволяет генерить контроллер на двухранковую планку с максимальной частотой 150 МГц. Попробовал вручную в исходниках поставить частоту 200 МГц, калибровка прошла успешно, а тест записи/чтения не показывает ошибки.
Большую частоту пока не пробовал. Все подозрительно правильно работает, есть ли тут подводные камни?
zomg
Еще один вопрос.
Оказалось контроллер MIG 3.1 DDR2 SDRAM сильно греет ПЛИС, возможно из-за Digitally Controlled Impedance (DCI). Кто с этим сталкивался, подскажите пожалуйста почему контроллер сильно греет ПЛИС и как от этого избавиться.
SFx

Попробуйте посмотреть какие параметры ног установлены, возможно стоить уменьшить ток ножек.
Частоту в ручную ставить нельзя, нужно перегенировать коре, вроде. по крайней мере я так делал и работало. кроме того есть некоторые особенности размещения DQ\DQS выводов в IOB'ах.
zomg
SFx:
Посмотрел в констрейнтах как уменьшить ток ножек. К сожалению DRIVE для стандарта SSTL не применяется.

Генерировать заново коре не нужно, т.к. я уже исходники правил. Нужно только временные ограничения переписать.
Непонятно почему одноранковая планка памяти может работать на 200 МГц, а двухранковая не может - максимум 150 МГц.
cerg19
Здравствуйте. Н данный момент проектирую интерфейс в Core Generator для памяти DDR2 SDRAM SODIMM MT16HTF25664HZ – 2GB на virtex 5. Core Generator ограничивает частоту работы с памятью в 150 МГц, а мне необходимо 200 МГц. Я изменил исходники vhdl файлов сгенерированных Core Generator, а именно изменил настройки PLL, встраеваемой в ядро. В итоге частота работы с памятью стала 200 МГц. Всё компилируестя и тест в modelsim проходит. Но есть некоторая боязнь за то, как это будет работать в железе, которого пока нет. Скажите пожалуйста, может это уже кто нибудь применял и тестировал в железе, есть ли какие нибудь подводные камни? Заранее спасибо за ответ.
zomg
Тест памяти на железе проводили следующими способами:
1. Записывается одна очередь данных (длиной BURST_LENGTH), затем она же считывается из памяти и проверяется. В качестве тестовых данных используется очередь: 0х00 - FxFF - 5x55 - AxAA. Эта процедура длится бесконечно, но адрес инкрементируется. Этот тест гоняли весь день.
2. Весь массив памяти записывается, затем проверяется. В качестве тестовых данных используется 64-разрядный счетчик (в зависимости от размера шины данных).

Если произойдет хоть одна ошибка, то выставится error, который у нас был выведен на светодиод. Проверяли две двухранковые планки 512 МБ и 2 ГБ фирмы Самсунг, частота 200 МГц, светодиод не загорелся.

Плохо то, что это лабораторные испытания, но еще не известно как все будет на деле. Еще выяснилось, что DCI, используемый для согласования ножек стандарта SSTL, сильно греет ПЛИС. Бороться с нагреванием можно только большим кулером или радиатором.

Контроллер MIG DDR2 SDRAM работает следующим образом: сначала происходит инициализация микросхем памяти по очереди для обоих ранков планки. После инициализации происходит процесс калибровки, выравнивающий (как я понял) временные задержки между микросхемами памяти. Причем калибровка идет по одному (второму) ранку, точно также как для одноранковой планки.

Чтобы работать с ранком, нужно только выставить соответствующий chip select. Другой ранк планки не учавствует в калибровке, поэтому гарантии на правильность его работы нет. Может поэтому в MIG ограничили максимальную частоту 150 МГц. Но память рассчитана на работу 200 МГц! Почему бы не попробовать? rolleyes.gif
Kuzmi4
Кстати, немного не в тему но всё же учитывая
Цитата
...Бороться с нагреванием можно только большим кулером или радиатором...

Никто не знает какие радиаторы и системы крепежа можно реально достать для плис ?? И где ??
cerg19
Цитата
Но память рассчитана на работу 200 МГц! Почему бы не попробовать?

Очень руки чешутся попробовать, но боязно. если будут сбои, придётся на 150 МГЦ переходить, а это для меня не приемлимо.

Цитата
Попробовал вручную в исходниках поставить частоту 200 МГц

Я в своём проекте правил только vhdl файл, описывающий PLL. Может быть вы ещё что нибудь правили? ucf файл например?
Victor®
Цитата(Kuzmi4 @ Oct 28 2010, 19:55) *
Кстати, немного не в тему но всё же учитывая

Никто не знает какие радиаторы и системы крепежа можно реально достать для плис ?? И где ??


на Digi-Key удобный параметрический поиск.
задайте heatsink и многое найдете.
Купить с Digi-Key можно через посредников.
По стоимости - умножайте цену на 1.6 - будет стоимость с растаможкой,
НДС и доставкой (по крайней мере мы так покупаем). Работаем с "Эвоком".
Проблем пока не было.
zomg
Цитата
Я в своём проекте правил только vhdl файл, описывающий PLL

Я использовал отдельный PLL, так удобней.

Цитата
Может быть вы ещё что нибудь правили? ucf файл например?

ucf правил, цифры берутся из отдельно созданного проекта на 200 МГц.
Начиная с MIG 3.1 констрейнты для Virtex-5 упростили: расположение fabric flip-flops в read capture path основано на атрибутах XIL_PAR_SKEW и XIL_PAR_DELAY, встроенных в vhdl-код. Я их нашел в ddr2_phy_dq_iob.vhd и сравнил с теми же у проекта на 200 МГц, они совпадали.
Еще не забудьте поставить соответствующее значение параметра CLK_PERIOD.
cerg19
Цитата
Я использовал отдельный PLL, так удобней

А обязательную частоту в 200 МГц для IODELAY вы тоже генерировали PLL, или лучше внешний клок для этих целей брать?

Цитата
ucf правил, цифры берутся из отдельно созданного проекта на 200 МГц.
Начиная с MIG 3.1 констрейнты для Virtex-5 упростили: расположение fabric flip-flops в read capture path основано на атрибутах XIL_PAR_SKEW и XIL_PAR_DELAY, встроенных в vhdl-код. Я их нашел в ddr2_phy_dq_iob.vhd и сравнил с теми же у проекта на 200 МГц, они совпадали.
Еще не забудьте поставить соответствующее значение параметра CLK_PERIOD.

Как я понял, исправлять в ucf файле нужно только CLK_PERIOD, так?
zomg
Цитата
А обязательную частоту в 200 МГц для IODELAY вы тоже генерировали PLL, или лучше внешний клок для этих целей брать?

Построено так: для IDELAY_CTRL внешний клок 200 МГц. Остальное с выхода PLL или DCM, которые естественно должны работать от того же самого внешнего клока. Фронты должны быть выровнены!

Цитата
Как я понял, исправлять в ucf файле нужно только CLK_PERIOD, так?

В ucf и в топе исходников поправить параметры generic.
cerg19
zomg, спасибо большое за ответы. Есть мысля на virtex 6 перейти, он с памятью DDR3 MT8JSF25664HZ – 2GB работает на частоте начиная с 333 МГц. Конечно получается как из базуки по воробьям, избыточно очень, но зато 100% уверенность).
Ещё раз спасибо что откликнулся, будем думать.
cerg19
Может быть и не в тему, но раз уж речь завели о ядре DDR2 хотелось бы вот ещё что уточнить.
1. В настройках ядра есть такой параметр Data Width. Для шины данных мамяти равной 64 бит, этот параметр может принимать значение 64 или 128. Правильно ли я понимаю, что выбрав значение 128 я могу подключить к плис две планки памяти используя одну общую шину адреса, но разные шины данных?
2. Также прошу посоветовать за что отвечает параметр Memory Depth
3. Хотелось бы ещё узнать что такое Data Mask. Данный параметр можно включить или отключить для моего типа памяти. За что он отвечает? и можно ли обойтись без него, сэкономив тем самым ножки плис, если планка памяти данный режим поддерживает
Заранее спасибо за ответы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.