Перейти к содержанию
    

Как описать QDR прием ?

Надо принять (Kintex) сигнал на x4 от тактовой.

 

Казалось бы - IFDDR, PLL x2 и пара триггеров + финальный четырехбитный регистр от CLK.

 

Но почему-то ISE лепит регистр, который тактируется от CLK через несколько регионов от места, где разведен IFDDR и FF с CLKx2. Естественно, PAR долго думает и не сходится в итоге.

 

Как правильно задавать констрейнты в этом случае ?

 

P.S. Может и правильно все работает, но я не задал где-то TIG ? Появляются HOLD с какими-то дикими значениями -6.ххх нс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Констрейн для ддр это в любом случае такая штука где легко облажаться.

Так что если уж пошли таким путём (не уверен что правильным), то идите до конца:: ПЛЛ пусть умножает на 4, и никаких IFDDR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На 4 уже нельзя умножить.

 

Похоже, компилятору не нравится переход от двойной частоты к одинарной, он видит потери половины данных. Как должен выглядеть констрейн на этот переход, чтобы ISE его правильно понимал ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дык это.... x4 это нифига уже не IDDR, это должен быть ISERDES.

 

с другой стороны QDR-II/QDR-II+ SRAM от Cypress - это не х4, а х2 и с темпом запросов не 1, а 1/2.

 

итого: у вас таки-что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы попробовал сказать что констраинить только путь данных от двойного клока к одинарному, на длину в 1 такт одинарного. А правильнее бы их через FIFO пропустить, чтобы пересинхронизация с двойной на одинарную частоту правильно прошла.

 

То есть DDR по переднему и заднему фронту двойного принимаются, потом по двойному их в FIFO, а потом по одинарному из FIFO забрать, как то так должно сойтись вроде как...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дык это.... x4 это нифига уже не IDDR, это должен быть ISERDES.

 

с другой стороны QDR-II/QDR-II+ SRAM от Cypress - это не х4, а х2 и с темпом запросов не 1, а 1/2.

 

итого: у вас таки-что?

 

У меня асинхронный вход. Разобрался уже с модой OVERSAMPLING, пока работает (надо в другом банке еще то же сделать, с того же PLL).

 

Вопрос - есть какой-нибудь стандартный документированный способ синхронного перехода от домена 2х к 1х с удвоением данных ? Что-то всякие примеры констрейнов дают неустойчивые (в смысле результатов компиляции) результаты на частотах 600 и больше.

 

Когда есть сдвиг клоков PLL в сторону ухудшения, XST за 1 такт 2х не может построить переход между триггерами. И возникают 2 вопроса - 1. как в этих условиях правильно задать выбор периода 2х , в котором писать в регистр, и 2. как объяснить XST, что смотреть надо через 2 такта (это вроде понятно, что в UCF 2 цикла можно задать, но что-то невразумительное я получаю, может потому что п.1 не выполняется).

 

C HOLD ошибками я разобрался, это из-за сдвига клока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но почему-то ISE лепит регистр, который тактируется от CLK через несколько регионов от места, где разведен IFDDR и FF с CLKx2. Естественно, PAR долго думает и не сходится в итоге.

 

Как правильно задавать констрейнты в этом случае ?

 

P.S. Может и правильно все работает, но я не задал где-то TIG ? Появляются HOLD с какими-то дикими значениями -6.ххх нс.

Ограничить местоположение регистра областью около IFDDR и все дела. Я в подобных случаях (переход из одного кратного клока в другой через регистр) часто специально добавляю слой регистров дабы

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

 

З Ы Важное замечание. Ваши клоки CLK и CLKx2 должны из одной PLLки делаться и одинаковым способом, иначе потом замучаетесь тайминги сводить, либо сетап расползётся, либо холд.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Естественно, из одного PLL.

Проблем вытащить из ISERDES нет.

 

Нужно перейти уже внутри фабрики между двумя клоками, которые оказываются сдвинутыми между собой в "плохую" сторону, так что не хватает времени на то, чтобы уложиться в период x2 минус сдвиг.

 

P.S. Нашел правильный ответ у Xilinx - нужно сделать тестовую пару ISERDES-OSERDES и достаточно сложную логику привязки фаз с управлением MMCM. Решения средствами языка/констрейнсов нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...