DS 0 1 июня, 2017 Опубликовано 1 июня, 2017 · Жалоба Надо принять (Kintex) сигнал на x4 от тактовой. Казалось бы - IFDDR, PLL x2 и пара триггеров + финальный четырехбитный регистр от CLK. Но почему-то ISE лепит регистр, который тактируется от CLK через несколько регионов от места, где разведен IFDDR и FF с CLKx2. Естественно, PAR долго думает и не сходится в итоге. Как правильно задавать констрейнты в этом случае ? P.S. Может и правильно все работает, но я не задал где-то TIG ? Появляются HOLD с какими-то дикими значениями -6.ххх нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 1 июня, 2017 Опубликовано 1 июня, 2017 · Жалоба Констрейн для ддр это в любом случае такая штука где легко облажаться. Так что если уж пошли таким путём (не уверен что правильным), то идите до конца:: ПЛЛ пусть умножает на 4, и никаких IFDDR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DS 0 1 июня, 2017 Опубликовано 1 июня, 2017 · Жалоба На 4 уже нельзя умножить. Похоже, компилятору не нравится переход от двойной частоты к одинарной, он видит потери половины данных. Как должен выглядеть констрейн на этот переход, чтобы ISE его правильно понимал ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 1 июня, 2017 Опубликовано 1 июня, 2017 · Жалоба дык это.... x4 это нифига уже не IDDR, это должен быть ISERDES. с другой стороны QDR-II/QDR-II+ SRAM от Cypress - это не х4, а х2 и с темпом запросов не 1, а 1/2. итого: у вас таки-что? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 1 июня, 2017 Опубликовано 1 июня, 2017 · Жалоба Я бы попробовал сказать что констраинить только путь данных от двойного клока к одинарному, на длину в 1 такт одинарного. А правильнее бы их через FIFO пропустить, чтобы пересинхронизация с двойной на одинарную частоту правильно прошла. То есть DDR по переднему и заднему фронту двойного принимаются, потом по двойному их в FIFO, а потом по одинарному из FIFO забрать, как то так должно сойтись вроде как... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DS 0 5 июня, 2017 Опубликовано 5 июня, 2017 · Жалоба дык это.... 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 ошибками я разобрался, это из-за сдвига клока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба Но почему-то ISE лепит регистр, который тактируется от CLK через несколько регионов от места, где разведен IFDDR и FF с CLKx2. Естественно, PAR долго думает и не сходится в итоге. Как правильно задавать констрейнты в этом случае ? P.S. Может и правильно все работает, но я не задал где-то TIG ? Появляются HOLD с какими-то дикими значениями -6.ххх нс. Ограничить местоположение регистра областью около IFDDR и все дела. Я в подобных случаях (переход из одного кратного клока в другой через регистр) часто специально добавляю слой регистров дабы быть уверенным, что по выходу блока все тайминги в порядке и все выходы регистровые, чтобы потом не вылезло траблов в таймингах при стыковке с последующими блоками. З Ы Важное замечание. Ваши клоки CLK и CLKx2 должны из одной PLLки делаться и одинаковым способом, иначе потом замучаетесь тайминги сводить, либо сетап расползётся, либо холд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DS 0 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба Естественно, из одного PLL. Проблем вытащить из ISERDES нет. Нужно перейти уже внутри фабрики между двумя клоками, которые оказываются сдвинутыми между собой в "плохую" сторону, так что не хватает времени на то, чтобы уложиться в период x2 минус сдвиг. P.S. Нашел правильный ответ у Xilinx - нужно сделать тестовую пару ISERDES-OSERDES и достаточно сложную логику привязки фаз с управлением MMCM. Решения средствами языка/констрейнсов нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться