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

задержки выходных сигналов

Делаю PCI 32 33 в Xilinx ISE,

Для PCI определена валидность сигнала на восходящем фронте, я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), устройство заработало, но при тестировании на др. матерях стало зависать. Перечитав спецификацию обнаружил странную вещь:

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

Какими же тогда фронтами(или одним) тактировать свою схему?

При всем при этом в моем проекте входные и выходные задержки (сигналов PCI относительно clk'а) составляют примерно 11 нс. Мне кажется, это слишком много, но если разработчики PCI изначально закладывали невозможность захвата сигнала по отриц. фронту, тоесть необходимость учитывать значительные задержки и с их учетом оперировать сигналами, тогда это вполне естественные величины.

Возможно я чего-то не понимаю и мой проект необходимо круто оптимизировать, поэтому хотелось бы узнать:

- величины задержек, которых добиватись другие (для сравнения)

- по каким фронтам #clk'а надо работать.

Изменено пользователем qwqw

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


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

В моем ядре все работает по нарастающему (положительному) фронту. Идея заключается в том, что несмотря на Th=0 все будет работать в том случае, если на плате сигнал CLK будет задержен. Т.е. дорожка этого сигнала преднамеренно делается удлиненной. Диапазон изменения длины этой трассы и прочее описано в спецификации.

 

PS: Обратите внимание, как разведена дорожка CLK на большинстве плат с интерфейсом PCI.

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


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

qwqw, не понял, что Вас смущает. Работать надо по фронту. На шине сначала появится фронт клока, затем через некоторое время (22 нс если не изменяет память) изменятся выходные сигналы - они будут зафиксированы приемником по следующему фронту клока. Или я не понял вопроса?

makc, я думаю, что Вы ошибаетесь: клок разводится цепью 2.5", а остальные сигналы не более 1.5", т.е разница 1" - на нем задержка что-нибудь около 0.2нс.

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


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

makc, я думаю, что Вы ошибаетесь: клок разводится цепью 2.5", а остальные сигналы не более 1.5", т.е разница 1" - на нем задержка что-нибудь около 0.2нс.

 

Чем же тогда объясняется необходимость в этой разнице длин проводников клока и сигналов?

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


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

2 qwqw

Меня вот что смущает, Вы говорите я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), Вы не уточнили но думаю что задержка FFT -> PAD у Вас то же порядка 10-15нс. Та вот, когда матери тактируются по переднему фронту они просто обречены попадать на метастабильность.

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


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

[Чем же тогда объясняется необходимость в этой разнице длин проводников клока и сигналов?

Имхо борьбой за минимальный skew clock - там ведь клок разводится звездой, а не по шине. А 2.5" взяли, посчитав, что этого хватит для всех типоразмеров плат.

Кстати, замечу, что более длинный путь клока приводит к уменьшению Thold на эти самые 0.2нс, а не к увеличению.

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


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

2 makc: величина Th указана на диаграмме "Input Timing Measurement Conditions", тоесть она учитывает эту узадержку.

Поразмыслив, я решил сделать по положительному фронту, но вопрос остался открытым.

----

to 3.14: в моем случае опаздывали именно мои выходные сигналы, тоесть сигнал, который я выставлял но отрицательному фронту clk'а реально устонавливался только через 11ns (по спецификации к маменту наступления положительного фронта сигнал должен быть стабилен >7ns, см. Tsu )

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


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

Для PCI определена валидность сигнала на восходящем фронте, я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), устройство заработало, но при тестировании на др. матерях стало зависать. Перечитав спецификацию обнаружил странную вещь:

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

Какими же тогда фронтами(или одним) тактировать свою схему?

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

 

При всем при этом в моем проекте входные и выходные задержки (сигналов PCI относительно clk'а) составляют примерно 11 нс.

Вот здесь и есть ваша проблема. Задержка входного сигнала Tsetup не должна превышать 7ns. Могу с уверенностью сказать, что это возможно. Мы закончили наше PCI ядро около месяца назад. Именно с этим временем была связана основная головная боль и проблемы, однако при некоторых ухищрениях выдержать его все же возможно.

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


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

в моем случае опаздывали именно мои выходные сигналы, тоесть сигнал, который я выставлял но отрицательному фронту clk'а реально устонавливался только через 11ns (по спецификации к маменту наступления положительного фронта сигнал должен быть стабилен >7ns, см. Tsu )

Забыли еще Propagation Delay :) Вот он то все и портит. PCI revision 2.3, секция 7.6.2. Я тоже долгое время не мог понять почему Tsu и Tval ограничены такими незначительными величинами, пока не добрался до этой секции в седьмой главе.

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


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

Чего то я не пойму, у товарища qwqw, при тактировании от переднего фронта в запасе получается 22нс, все должно быть нормально. Может у вас фаза тактового в FPGA "накрутилась", я полагаю пользуетесь глобальным буфером, а сдвиг фазы тактового на буфере компенсируета через DLL или DCM, хотя сдется мне что то тут не то, все и так должно работать.

 

2 v_mirgorodsky

Вот мне сдается что 11нс на выходе это не только на трассировке "падает" еще и комбинаторка стоит, как "лечили", кроме как добавить регистры и разместить их в IOB?

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


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

2 3.14:

максимум один уровень логики после триггеров и регистры не в IOB, но затянутые выходными констраинами по самое не-могу :)

 

А не получилось у qwqw потому, что есть Propagation Delay, равный 10нс, т.е. Tcyc ≥ Tval + Tprop + Tskew + Tsu, Tval = 11ns, Tprop = 10ns, Tskew = 2ns, Tsu=7ns. Под Tprop понимается время распространения сигнала от устройства до устройства и до самого чипсета.

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


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

2 v_mirgorodsky:

Вот здесь и есть ваша проблема. Задержка входного сигнала Tsetup не должна превышать 7ns. Могу с уверенностью сказать, что это возможно. Мы закончили наше PCI ядро около месяца назад. Именно с этим временем была связана основная головная боль и проблемы, однако при некоторых ухищрениях выдержать его все же возможно.

- думаю с этим справлюсь, в крайнем случае оргонизую свой clk, запаздывающий по фазе на (<период> - <вх. задержка>) секунд или что то же самое "опережающий" реальный на время моей вх. задержки.

PCI revision 2.3, секция 7.6.2. Я тоже долгое время не мог понять почему Tsu и Tval ограничены такими незначительными величинами, пока не добрался до этой секции в седьмой главе

обязательно ознакомлюсь, спасибо

to 3.14:

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

все именно так, пользуюсь DLL, просто я использовал отрицательный фронт клока, теперь понял что нужно делать по положительному, в этом и была моя ошибка, сижу исправляю.

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


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

2 v_mirgorodsky

Мда-а это ж чистый геморой будет на сильно заполненном критсталле ...

Саму спецификацию я только мельком давно смотрел, но по моему там ведь можно добавить необходимое количество тактов ожидания при ответе?

 

И все-таки Tcyc получается 30нс а не 33.

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


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

2 v_mirgorodsky

Мда-а это ж чистый геморой будет на сильно заполненном критсталле ...

Саму спецификацию я только мельком давно смотрел, но по моему там ведь можно добавить необходимое количество тактов ожидания при ответе?

 

И все-таки Tcyc получается 30нс а не 33.

 

Угу :( Но ничего сделать нельзя :cranky: Я просмотрел несколько PCI Master/Target блоков от разных производителей - все используют нерегистровые версии PCI сигналов, иначе дизайн получается слишком медленным. Пришлось считать fan-in'ы, прижимать регистры к входным пинам, затягивать констраины. В принципе мы сейчас компилим дизайн с приоритетной раскладкой именно PCI блока в выбранный прямоугольный регион. Этого констраина вкупе с затянутыми Tsetup, Thold и Tout хватает. Получился еще небольшой запас в 1.5ns на Tsetup и порядка 2-2.5ns на Tout.

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


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

что-то я совсем запутался:

 

вот фрагмент отчета по синтезу:

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 , тоесть комп не отвечает на свой адрес, из чего получается, что выходы не поспевают.

***

осциллограф у меня не тянет, поэтому нет возможности посмотреть что на самом деле происходит на шине, хотя я вообще не уверен, что это возможно: задержки накрутятся в щупах и все такое.

Как же адекватно оценить задержки?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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