serg_Fry 0 10 марта, 2006 Опубликовано 10 марта, 2006 (изменено) · Жалоба Делаю PCI 32 33 в Xilinx ISE, Для PCI определена валидность сигнала на восходящем фронте, я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), устройство заработало, но при тестировании на др. матерях стало зависать. Перечитав спецификацию обнаружил странную вещь: захватыать вх. сигналы, используя триггеры, тактируемые положительным фронтом небезопасно т.к Th(см. спецификацию) снизу ограничено 0 с., в то время, как любой триггер имеет некоторую задержку. Какими же тогда фронтами(или одним) тактировать свою схему? При всем при этом в моем проекте входные и выходные задержки (сигналов PCI относительно clk'а) составляют примерно 11 нс. Мне кажется, это слишком много, но если разработчики PCI изначально закладывали невозможность захвата сигнала по отриц. фронту, тоесть необходимость учитывать значительные задержки и с их учетом оперировать сигналами, тогда это вполне естественные величины. Возможно я чего-то не понимаю и мой проект необходимо круто оптимизировать, поэтому хотелось бы узнать: - величины задержек, которых добиватись другие (для сравнения) - по каким фронтам #clk'а надо работать. Изменено 10 марта, 2006 пользователем qwqw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 10 марта, 2006 Опубликовано 10 марта, 2006 · Жалоба В моем ядре все работает по нарастающему (положительному) фронту. Идея заключается в том, что несмотря на Th=0 все будет работать в том случае, если на плате сигнал CLK будет задержен. Т.е. дорожка этого сигнала преднамеренно делается удлиненной. Диапазон изменения длины этой трассы и прочее описано в спецификации. PS: Обратите внимание, как разведена дорожка CLK на большинстве плат с интерфейсом PCI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 10 марта, 2006 Опубликовано 10 марта, 2006 · Жалоба qwqw, не понял, что Вас смущает. Работать надо по фронту. На шине сначала появится фронт клока, затем через некоторое время (22 нс если не изменяет память) изменятся выходные сигналы - они будут зафиксированы приемником по следующему фронту клока. Или я не понял вопроса? makc, я думаю, что Вы ошибаетесь: клок разводится цепью 2.5", а остальные сигналы не более 1.5", т.е разница 1" - на нем задержка что-нибудь около 0.2нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба makc, я думаю, что Вы ошибаетесь: клок разводится цепью 2.5", а остальные сигналы не более 1.5", т.е разница 1" - на нем задержка что-нибудь около 0.2нс. Чем же тогда объясняется необходимость в этой разнице длин проводников клока и сигналов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3.14 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба 2 qwqw Меня вот что смущает, Вы говорите я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), Вы не уточнили но думаю что задержка FFT -> PAD у Вас то же порядка 10-15нс. Та вот, когда матери тактируются по переднему фронту они просто обречены попадать на метастабильность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба [Чем же тогда объясняется необходимость в этой разнице длин проводников клока и сигналов? Имхо борьбой за минимальный skew clock - там ведь клок разводится звездой, а не по шине. А 2.5" взяли, посчитав, что этого хватит для всех типоразмеров плат. Кстати, замечу, что более длинный путь клока приводит к уменьшению Thold на эти самые 0.2нс, а не к увеличению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_Fry 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба 2 makc: величина Th указана на диаграмме "Input Timing Measurement Conditions", тоесть она учитывает эту узадержку. Поразмыслив, я решил сделать по положительному фронту, но вопрос остался открытым. ---- to 3.14: в моем случае опаздывали именно мои выходные сигналы, тоесть сигнал, который я выставлял но отрицательному фронту clk'а реально устонавливался только через 11ns (по спецификации к маменту наступления положительного фронта сигнал должен быть стабилен >7ns, см. Tsu ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_mirgorodsky 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба Для PCI определена валидность сигнала на восходящем фронте, я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), устройство заработало, но при тестировании на др. матерях стало зависать. Перечитав спецификацию обнаружил странную вещь: захватыать вх. сигналы, используя триггеры, тактируемые положительным фронтом небезопасно т.к Th(см. спецификацию) снизу ограничено 0 с., в то время, как любой триггер имеет некоторую задержку. Какими же тогда фронтами(или одним) тактировать свою схему? Только по положительному. Входные пины современных FPGA имеют специальные схемы аналоговой задержки, обеспечивающие нулевое время удержания th, потому никаких проблем быть не должно. При всем при этом в моем проекте входные и выходные задержки (сигналов PCI относительно clk'а) составляют примерно 11 нс. Вот здесь и есть ваша проблема. Задержка входного сигнала Tsetup не должна превышать 7ns. Могу с уверенностью сказать, что это возможно. Мы закончили наше PCI ядро около месяца назад. Именно с этим временем была связана основная головная боль и проблемы, однако при некоторых ухищрениях выдержать его все же возможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_mirgorodsky 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба в моем случае опаздывали именно мои выходные сигналы, тоесть сигнал, который я выставлял но отрицательному фронту clk'а реально устонавливался только через 11ns (по спецификации к маменту наступления положительного фронта сигнал должен быть стабилен >7ns, см. Tsu ) Забыли еще Propagation Delay :) Вот он то все и портит. PCI revision 2.3, секция 7.6.2. Я тоже долгое время не мог понять почему Tsu и Tval ограничены такими незначительными величинами, пока не добрался до этой секции в седьмой главе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3.14 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба Чего то я не пойму, у товарища qwqw, при тактировании от переднего фронта в запасе получается 22нс, все должно быть нормально. Может у вас фаза тактового в FPGA "накрутилась", я полагаю пользуетесь глобальным буфером, а сдвиг фазы тактового на буфере компенсируета через DLL или DCM, хотя сдется мне что то тут не то, все и так должно работать. 2 v_mirgorodsky Вот мне сдается что 11нс на выходе это не только на трассировке "падает" еще и комбинаторка стоит, как "лечили", кроме как добавить регистры и разместить их в IOB? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_mirgorodsky 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба 2 3.14: максимум один уровень логики после триггеров и регистры не в IOB, но затянутые выходными констраинами по самое не-могу :) А не получилось у qwqw потому, что есть Propagation Delay, равный 10нс, т.е. Tcyc ≥ Tval + Tprop + Tskew + Tsu, Tval = 11ns, Tprop = 10ns, Tskew = 2ns, Tsu=7ns. Под Tprop понимается время распространения сигнала от устройства до устройства и до самого чипсета. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_Fry 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба 2 v_mirgorodsky: Вот здесь и есть ваша проблема. Задержка входного сигнала Tsetup не должна превышать 7ns. Могу с уверенностью сказать, что это возможно. Мы закончили наше PCI ядро около месяца назад. Именно с этим временем была связана основная головная боль и проблемы, однако при некоторых ухищрениях выдержать его все же возможно. - думаю с этим справлюсь, в крайнем случае оргонизую свой clk, запаздывающий по фазе на (<период> - <вх. задержка>) секунд или что то же самое "опережающий" реальный на время моей вх. задержки. PCI revision 2.3, секция 7.6.2. Я тоже долгое время не мог понять почему Tsu и Tval ограничены такими незначительными величинами, пока не добрался до этой секции в седьмой главе обязательно ознакомлюсь, спасибо to 3.14: полагаю пользуетесь глобальным буфером, а сдвиг фазы тактового на буфере компенсируета через DLL или DCM, хотя сдется мне что то тут не то, все и так должно работать. все именно так, пользуюсь DLL, просто я использовал отрицательный фронт клока, теперь понял что нужно делать по положительному, в этом и была моя ошибка, сижу исправляю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3.14 0 11 марта, 2006 Опубликовано 11 марта, 2006 · Жалоба 2 v_mirgorodsky Мда-а это ж чистый геморой будет на сильно заполненном критсталле ... Саму спецификацию я только мельком давно смотрел, но по моему там ведь можно добавить необходимое количество тактов ожидания при ответе? И все-таки Tcyc получается 30нс а не 33. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_mirgorodsky 0 13 марта, 2006 Опубликовано 13 марта, 2006 · Жалоба 2 v_mirgorodsky Мда-а это ж чистый геморой будет на сильно заполненном критсталле ... Саму спецификацию я только мельком давно смотрел, но по моему там ведь можно добавить необходимое количество тактов ожидания при ответе? И все-таки Tcyc получается 30нс а не 33. Угу :( Но ничего сделать нельзя :cranky: Я просмотрел несколько PCI Master/Target блоков от разных производителей - все используют нерегистровые версии PCI сигналов, иначе дизайн получается слишком медленным. Пришлось считать fan-in'ы, прижимать регистры к входным пинам, затягивать констраины. В принципе мы сейчас компилим дизайн с приоритетной раскладкой именно PCI блока в выбранный прямоугольный регион. Этого констраина вкупе с затянутыми Tsetup, Thold и Tout хватает. Получился еще небольшой запас в 1.5ns на Tsetup и порядка 2-2.5ns на Tout. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_Fry 0 13 марта, 2006 Опубликовано 13 марта, 2006 · Жалоба что-то я совсем запутался: вот фрагмент отчета по синтезу: Speed Grade: -7 Minimum period: 25.590ns (Maximum Frequency: 39.078MHz) Minimum input arrival time before clock: 13.094ns Maximum output required time after clock: 12.528ns Maximum combinational path delay: 4.457ns а вот из отчета P&R: The NUMBER OF SIGNALS NOT COMPLETELY ROUTED for this design is: 0 The AVERAGE CONNECTION DELAY for this design is: 1.584 The MAXIMUM PIN DELAY IS: 6.432 The AVERAGE CONNECTION DELAY on the 10 WORST NETS is: 5.455 что следует понимать под входной задержкой, и что под выходной? промоделировал все(все что смог) в ModelSIM'e(P&R-Simulation), там все как надо, запас есть, насчет входных задержек понять труднее, но судя по тому, что на все вх. сигналы схема реагирует вовремя, делаю вывод, что с ними тоже все в порядке. В жизни: Target-часть работает нормально, Master (мое устройство только пишет в комп, burst'ом) часто выдает Master-Abort , тоесть комп не отвечает на свой адрес, из чего получается, что выходы не поспевают. *** осциллограф у меня не тянет, поэтому нет возможности посмотреть что на самом деле происходит на шине, хотя я вообще не уверен, что это возможно: задержки накрутятся в щупах и все такое. Как же адекватно оценить задержки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться