|
|
  |
А зачем xilinx сделал в MiG такие сложности ?, кто разбирался? |
|
|
|
Aug 22 2010, 02:06
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Добрый день, all.
Удалось на днях познакомиться с Memory interface soulutions от xilinx. Не подозревая подвоха, с твердым желанием не изобретать велосипед, попытался применить готовое решение для DDR SDRAM и Spartan 3E. Как всегда, узнал много нового и хочу еще. Кто-нибудь понимает, почему им пришлось делать какие-то калибровочные цепочки из LUT-ов, обратную связь через pad с фиксацией размещения с помощью RLOC и LOC, генерацией UCF-файла и трудно выполнимым списком требований для разводки печатной платы? Без плясок с бубном никак? Что мешает взять сколько нужно DCM и засунуть регистры ввода-вывода в какие угодно ножки ? Что, ну чтоже там не удается по человечески?
Я понимаю, когда без RLOC, LOC, AREA и т.п. констрейнов у P&R инструментов ума не хватает. Бывает. При этом мы либо имеем корректный дизайн, либо не имеем никакого. Это безопасно. В случае же с калибровочными элементами не хватает выразительных средств языка описания схем (любого - опровергните? это какие-то констрейны?), чтобы неверное размещение обнаружилось до включения схемы или прогона в симуляторе с post p&r sdf. То есть, это опасно, можно получить без единого предупреждения схему, которая не работает. Хотя... способов получения неработающих схем много...
|
|
|
|
|
Aug 23 2010, 05:42
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406

|
Цитата(Shtirlits @ Aug 22 2010, 06:06)  Что мешает взять сколько нужно DCM и засунуть регистры ввода-вывода в какие угодно ножки ? Дело в том, что синхронизация приема данных осуществляется по специальному синхросигналу DQS. (При записи выдается из контроллера, при чтении - из м/с памяти.) Первая проблема в том, что при приеме из памяти DQS передается "в фазе" с данными - т.е. фронт синхросигнала совпадает с фронтом (моментом переключения) данных, поэтому синхросигнал необходимо как минимум задержать. На сколько задерживать - в идеале зависит от требований setup/hold, но в реале к этому вносится еще и неопределенность, зависимая от разбросов на выходе м/с памяти, разброса дерева синхронизации и пр.неприятностей, которые могут возникнуть при передаче по плате (разбросы трасс, зависимость от последовательности символов). Если стремиться обеспечивать симметричные запасы для setup/hold, то задержка будет зависеть еще и от частоты. Поскольку для задержки применили LUTы (в Spartan-3e не предусмотрено задержки входных сигналов), задержка которых +/- километр, требуется использовать схему калибровки, иначе требуемая задержка никогда не подберется точно. RLOC я так понимаю для того, чтобы оптимально разместить LUTы по отношению к IOB и друг к другу. На низких частотах (в районе 100 МГц) еще возможно можно обойтись без приема по DQS, выполнив хороший расчет, но на нормальной частоте, под которую эта память спроектирована - никак. На высоких частотах уже даже фиксированную задержку (которую можно достаточно точно откалибровать) не получается применять - требуется динамическая калибровка. В конченом счете SPARTAN-3 это бюджетная серия с кууучей ограничений. Хотите от нее больше чем триггера с логикой - придется изучить нюансы и попотеть больше обычного, чтобы в результате было гладко.
|
|
|
|
|
Aug 23 2010, 05:50
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
В MIG на лутах сделали DLL для калиброванной задержки DQS-ов. Эта конструкция требует очень высокой точности таймингов, поэтому все жестко законстрейнено. DCM эквивалентной функциональности не предоставляет, так как ему нужен периодический сигнал на входе. Сигнал обратной связи с выходного клока на SDRAM, который вводят на такие платы, не заменяет DQS, так как потенциальную ошибку добавляет чип SDRAM, в результате кривоватая система из MIGa вполне может работать лучше. Есть, правда, еще вариант включить DCM с динамическим фазовым сдвигом, и с его помощью читать DQSы, корректируя сдвиг таким образом, чтобы фронты DQSов попадали на фронты клока с DCM, а другим, сдвинутым на 90 градусов, клоком тактировать входы DQ. Проблема в том, что из MIGа вроде нельзя выдрать его DQS систему, и заменить на свою. По-человечески можно сделать только при наличии dedicated DQS цепей, как в stratix2 или ecp2, например.
|
|
|
|
|
Aug 23 2010, 08:40
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Спасибо ответившим, картина стала яснее. QUOTE (Gothard @ Aug 23 2010, 09:42)  В конченом счете SPARTAN-3 это бюджетная серия с кууучей ограничений... Занес в цитатник. QUOTE (Timmy @ Aug 23 2010, 09:50)  Есть, правда, еще вариант включить DCM с динамическим фазовым сдвигом. Такой подход мне больше нравится. Да и шаг сдвига фазы у DCM не в пример меньше, чем на LUT-ах выходит. Полистал исходники, которые генерит MiG и user guide в избранных местах. Похоже, что дело не только в DQS, он еще и каждый бит данных индивидуально калибрует. То есть, с одной стороны это хорошо, можно экономить время и площадь печатной платы. Но с другой - тратится драгоценная в дешевых FPGA площадь. Даже не знаю как правильно. Наверное два или три варианта ядра закрыли бы тему.
|
|
|
|
|
Aug 23 2010, 10:15
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406

|
Цитата(Shtirlits @ Aug 23 2010, 12:40)  Такой подход мне больше нравится. Да и шаг сдвига фазы у DCM не в пример меньше, чем на LUT-ах выходит. Есть нюанс - при работе с несколькими корпусами м/с памяти будет разброс сигналов DQS. Какой - неизвестно. Вероятно небольшой, но наверняка вы это сказать не можете. Если разброс все же окажется большим, то что тогда будет? Перед выбором решения неплохо бы расчет произвести. P.S. кстати - какая у вас частота работы с памятью?
Сообщение отредактировал Gothard - Aug 23 2010, 10:16
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|