|
задержки выходных сигналов, фронты #CLK в PCI |
|
|
|
Mar 10 2006, 18:16
|

Частый гость
 
Группа: Свой
Сообщений: 192
Регистрация: 23-11-05
Из: г. Москва
Пользователь №: 11 307

|
Делаю PCI 32 33 в Xilinx ISE, Для PCI определена валидность сигнала на восходящем фронте, я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), устройство заработало, но при тестировании на др. матерях стало зависать. Перечитав спецификацию обнаружил странную вещь: захватыать вх. сигналы, используя триггеры, тактируемые положительным фронтом небезопасно т.к Th(см. спецификацию) снизу ограничено 0 с., в то время, как любой триггер имеет некоторую задержку. Какими же тогда фронтами(или одним) тактировать свою схему? При всем при этом в моем проекте входные и выходные задержки (сигналов PCI относительно clk'а) составляют примерно 11 нс. Мне кажется, это слишком много, но если разработчики PCI изначально закладывали невозможность захвата сигнала по отриц. фронту, тоесть необходимость учитывать значительные задержки и с их учетом оперировать сигналами, тогда это вполне естественные величины. Возможно я чего-то не понимаю и мой проект необходимо круто оптимизировать, поэтому хотелось бы узнать: - величины задержек, которых добиватись другие (для сравнения) - по каким фронтам #clk'а надо работать.
Сообщение отредактировал qwqw - Mar 10 2006, 18:18
|
|
|
|
|
Mar 10 2006, 21:28
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
qwqw, не понял, что Вас смущает. Работать надо по фронту. На шине сначала появится фронт клока, затем через некоторое время (22 нс если не изменяет память) изменятся выходные сигналы - они будут зафиксированы приемником по следующему фронту клока. Или я не понял вопроса? makc, я думаю, что Вы ошибаетесь: клок разводится цепью 2.5", а остальные сигналы не более 1.5", т.е разница 1" - на нем задержка что-нибудь около 0.2нс.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
Mar 11 2006, 16:31
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Цитата(makc @ Mar 11 2006, 10:11)  [Чем же тогда объясняется необходимость в этой разнице длин проводников клока и сигналов? Имхо борьбой за минимальный skew clock - там ведь клок разводится звездой, а не по шине. А 2.5" взяли, посчитав, что этого хватит для всех типоразмеров плат. Кстати, замечу, что более длинный путь клока приводит к уменьшению Thold на эти самые 0.2нс, а не к увеличению.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
Mar 11 2006, 19:01
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата Для PCI определена валидность сигнала на восходящем фронте, я не долго думая сделал все по нисподающему(только входные сигналы захватывал по положительному), устройство заработало, но при тестировании на др. матерях стало зависать. Перечитав спецификацию обнаружил странную вещь: захватыать вх. сигналы, используя триггеры, тактируемые положительным фронтом небезопасно т.к Th(см. спецификацию) снизу ограничено 0 с., в то время, как любой триггер имеет некоторую задержку. Какими же тогда фронтами(или одним) тактировать свою схему? Только по положительному. Входные пины современных FPGA имеют специальные схемы аналоговой задержки, обеспечивающие нулевое время удержания th, потому никаких проблем быть не должно. Цитата При всем при этом в моем проекте входные и выходные задержки (сигналов PCI относительно clk'а) составляют примерно 11 нс. Вот здесь и есть ваша проблема. Задержка входного сигнала Tsetup не должна превышать 7ns. Могу с уверенностью сказать, что это возможно. Мы закончили наше PCI ядро около месяца назад. Именно с этим временем была связана основная головная боль и проблемы, однако при некоторых ухищрениях выдержать его все же возможно.
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Mar 11 2006, 19:16
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата в моем случае опаздывали именно мои выходные сигналы, тоесть сигнал, который я выставлял но отрицательному фронту clk'а реально устонавливался только через 11ns (по спецификации к маменту наступления положительного фронта сигнал должен быть стабилен >7ns, см. Tsu ) Забыли еще Propagation Delay  Вот он то все и портит. PCI revision 2.3, секция 7.6.2. Я тоже долгое время не мог понять почему Tsu и Tval ограничены такими незначительными величинами, пока не добрался до этой секции в седьмой главе.
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Mar 11 2006, 19:28
|

Их либе дих ...
     
Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609

|
Чего то я не пойму, у товарища qwqw, при тактировании от переднего фронта в запасе получается 22нс, все должно быть нормально. Может у вас фаза тактового в FPGA "накрутилась", я полагаю пользуетесь глобальным буфером, а сдвиг фазы тактового на буфере компенсируета через DLL или DCM, хотя сдется мне что то тут не то, все и так должно работать.
2 v_mirgorodsky Вот мне сдается что 11нс на выходе это не только на трассировке "падает" еще и комбинаторка стоит, как "лечили", кроме как добавить регистры и разместить их в IOB?
--------------------
Усы, борода и кеды - вот мои документы :)
|
|
|
|
|
Mar 11 2006, 20:09
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
2 3.14: максимум один уровень логики после триггеров и регистры не в IOB, но затянутые выходными констраинами по самое не-могу  А не получилось у qwqw потому, что есть Propagation Delay, равный 10нс, т.е. Tcyc ≥ Tval + Tprop + Tskew + Tsu, Tval = 11ns, Tprop = 10ns, Tskew = 2ns, Tsu=7ns. Под Tprop понимается время распространения сигнала от устройства до устройства и до самого чипсета.
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Mar 11 2006, 20:09
|

Частый гость
 
Группа: Свой
Сообщений: 192
Регистрация: 23-11-05
Из: г. Москва
Пользователь №: 11 307

|
2 v_mirgorodsky: Цитата Вот здесь и есть ваша проблема. Задержка входного сигнала Tsetup не должна превышать 7ns. Могу с уверенностью сказать, что это возможно. Мы закончили наше PCI ядро около месяца назад. Именно с этим временем была связана основная головная боль и проблемы, однако при некоторых ухищрениях выдержать его все же возможно. - думаю с этим справлюсь, в крайнем случае оргонизую свой clk, запаздывающий по фазе на (<период> - <вх. задержка>) секунд или что то же самое "опережающий" реальный на время моей вх. задержки. Цитата PCI revision 2.3, секция 7.6.2. Я тоже долгое время не мог понять почему Tsu и Tval ограничены такими незначительными величинами, пока не добрался до этой секции в седьмой главе обязательно ознакомлюсь, спасибо to 3.14: Цитата полагаю пользуетесь глобальным буфером, а сдвиг фазы тактового на буфере компенсируета через DLL или DCM, хотя сдется мне что то тут не то, все и так должно работать. все именно так, пользуюсь DLL, просто я использовал отрицательный фронт клока, теперь понял что нужно делать по положительному, в этом и была моя ошибка, сижу исправляю.
|
|
|
|
|
Mar 13 2006, 11:50
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата(3.14 @ Mar 11 2006, 22:20)  2 v_mirgorodsky Мда-а это ж чистый геморой будет на сильно заполненном критсталле ... Саму спецификацию я только мельком давно смотрел, но по моему там ведь можно добавить необходимое количество тактов ожидания при ответе?
И все-таки Tcyc получается 30нс а не 33. Угу  Но ничего сделать нельзя  Я просмотрел несколько PCI Master/Target блоков от разных производителей - все используют нерегистровые версии PCI сигналов, иначе дизайн получается слишком медленным. Пришлось считать fan-in'ы, прижимать регистры к входным пинам, затягивать констраины. В принципе мы сейчас компилим дизайн с приоритетной раскладкой именно PCI блока в выбранный прямоугольный регион. Этого констраина вкупе с затянутыми Tsetup, Thold и Tout хватает. Получился еще небольшой запас в 1.5ns на Tsetup и порядка 2-2.5ns на Tout.
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Mar 13 2006, 17:14
|

Частый гость
 
Группа: Свой
Сообщений: 192
Регистрация: 23-11-05
Из: г. Москва
Пользователь №: 11 307

|
что-то я совсем запутался: вот фрагмент отчета по синтезу: Цитата 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 , тоесть комп не отвечает на свой адрес, из чего получается, что выходы не поспевают. *** осциллограф у меня не тянет, поэтому нет возможности посмотреть что на самом деле происходит на шине, хотя я вообще не уверен, что это возможно: задержки накрутятся в щупах и все такое. Как же адекватно оценить задержки?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|