Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: А зачем xilinx сделал в MiG такие сложности ?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Shtirlits
Добрый день, all.

Удалось на днях познакомиться с Memory interface soulutions от xilinx. Не подозревая подвоха, с твердым желанием не изобретать велосипед, попытался применить готовое решение для DDR SDRAM и Spartan 3E.
Как всегда, узнал много нового и хочу еще.
Кто-нибудь понимает, почему им пришлось делать какие-то калибровочные цепочки из LUT-ов, обратную связь через pad с фиксацией размещения с помощью RLOC и LOC, генерацией UCF-файла и трудно выполнимым списком требований для разводки печатной платы?
Без плясок с бубном никак?
Что мешает взять сколько нужно DCM и засунуть регистры ввода-вывода в какие угодно ножки ?
Что, ну чтоже там не удается по человечески?

Я понимаю, когда без RLOC, LOC, AREA и т.п. констрейнов у P&R инструментов ума не хватает. Бывает. При этом мы либо имеем корректный дизайн, либо не имеем никакого. Это безопасно.
В случае же с калибровочными элементами не хватает выразительных средств языка описания схем (любого - опровергните? это какие-то констрейны?), чтобы неверное размещение обнаружилось до включения схемы или прогона в симуляторе с post p&r sdf. То есть, это опасно, можно получить без единого предупреждения схему, которая не работает.
Хотя... способов получения неработающих схем много...
Koluchiy
Немного оффтоп.

Я тут попытался организовать работу Microblaze с SDRAM через MPMC (многопортовый контроллер памяти).
Очень странно глючит, при этом при компиляции не дает повесить на SDRAM-ные ноги ЧипСкоп, страшно ругаясь.
При этом, старенький SDRAM Controller, подключаемый через OPB, прекрасно работает и вешать Чипскоп на ноги дает...

Spartan-3, если что.

Кто-нибудь пробовал работать с SDRAM через mpmc на Spartan-3?
Shtirlits
О каком стареньком SDRAM контроллере идет речь?
Gothard
Цитата(Shtirlits @ Aug 22 2010, 06:06) *
Что мешает взять сколько нужно DCM и засунуть регистры ввода-вывода в какие угодно ножки ?

Дело в том, что синхронизация приема данных осуществляется по специальному синхросигналу DQS. (При записи выдается из контроллера, при чтении - из м/с памяти.)
Первая проблема в том, что при приеме из памяти DQS передается "в фазе" с данными - т.е. фронт синхросигнала совпадает с фронтом (моментом переключения) данных, поэтому синхросигнал необходимо как минимум задержать. На сколько задерживать - в идеале зависит от требований setup/hold, но в реале к этому вносится еще и неопределенность, зависимая от разбросов на выходе м/с памяти, разброса дерева синхронизации и пр.неприятностей, которые могут возникнуть при передаче по плате (разбросы трасс, зависимость от последовательности символов). Если стремиться обеспечивать симметричные запасы для setup/hold, то задержка будет зависеть еще и от частоты.

Поскольку для задержки применили LUTы (в Spartan-3e не предусмотрено задержки входных сигналов), задержка которых +/- километр, требуется использовать схему калибровки, иначе требуемая задержка никогда не подберется точно. RLOC я так понимаю для того, чтобы оптимально разместить LUTы по отношению к IOB и друг к другу.

На низких частотах (в районе 100 МГц) еще возможно можно обойтись без приема по DQS, выполнив хороший расчет, но на нормальной частоте, под которую эта память спроектирована - никак.
На высоких частотах уже даже фиксированную задержку (которую можно достаточно точно откалибровать) не получается применять - требуется динамическая калибровка.

В конченом счете SPARTAN-3 это бюджетная серия с кууучей ограничений. Хотите от нее больше чем триггера с логикой - придется изучить нюансы и попотеть больше обычного, чтобы в результате было гладко.
Timmy
В MIG на лутах сделали DLL для калиброванной задержки DQS-ов. Эта конструкция требует очень высокой точности таймингов, поэтому все жестко законстрейнено. DCM эквивалентной функциональности не предоставляет, так как ему нужен периодический сигнал на входе. Сигнал обратной связи с выходного клока на SDRAM, который вводят на такие платы, не заменяет DQS, так как потенциальную ошибку добавляет чип SDRAM, в результате кривоватая система из MIGa вполне может работать лучше. Есть, правда, еще вариант включить DCM с динамическим фазовым сдвигом, и с его помощью читать DQSы, корректируя сдвиг таким образом, чтобы фронты DQSов попадали на фронты клока с DCM, а другим, сдвинутым на 90 градусов, клоком тактировать входы DQ. Проблема в том, что из MIGа вроде нельзя выдрать его DQS систему, и заменить на свою.
По-человечески можно сделать только при наличии dedicated DQS цепей, как в stratix2 или ecp2, например.
Shtirlits
Спасибо ответившим, картина стала яснее.

QUOTE (Gothard @ Aug 23 2010, 09:42) *
В конченом счете SPARTAN-3 это бюджетная серия с кууучей ограничений...

Занес в цитатник.

QUOTE (Timmy @ Aug 23 2010, 09:50) *
Есть, правда, еще вариант включить DCM с динамическим фазовым сдвигом.

Такой подход мне больше нравится. Да и шаг сдвига фазы у DCM не в пример меньше, чем на LUT-ах выходит.

Полистал исходники, которые генерит MiG и user guide в избранных местах.
Похоже, что дело не только в DQS, он еще и каждый бит данных индивидуально калибрует.
То есть, с одной стороны это хорошо, можно экономить время и площадь печатной платы.
Но с другой - тратится драгоценная в дешевых FPGA площадь.
Даже не знаю как правильно. Наверное два или три варианта ядра закрыли бы тему.
Gothard
Цитата(Shtirlits @ Aug 23 2010, 12:40) *
Такой подход мне больше нравится. Да и шаг сдвига фазы у DCM не в пример меньше, чем на LUT-ах выходит.

Есть нюанс - при работе с несколькими корпусами м/с памяти будет разброс сигналов DQS. Какой - неизвестно. Вероятно небольшой, но наверняка вы это сказать не можете. Если разброс все же окажется большим, то что тогда будет?
Перед выбором решения неплохо бы расчет произвести.
P.S. кстати - какая у вас частота работы с памятью?
Shtirlits
Ясное дело, при большом разбросе DCM-ов будет сколько корпусов, точнее сколько сигналов DQS. И каждый нужно калибровать.
Есть надежда, что в природе существует список мероприятний, выполнение которых обеспечивает достаточно низкий разброс.

PS: В конкретном проекте частоту я еще не знаю, но для примера взятая MT46V64M8 может 77-133MHz и я не представляю, как и что там будет на печатной плате.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.