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

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

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

А почему такие большие задержки? Что за плис?

Вот тут внизу страници приведены задержки нармальный для pci.

Откуда Minimum period: 25.590ns?

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


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

я делаю на Spartan2E

А вот здесь и есть самая большая проблема. У вас вуыходная шина подключена к PCI через tri-state буффера. Как показывает опыт - они достаточно медленные. Для того, чтобы мастер работал надежно в такой ситуации необходимо в первый такт после получения PCI_Gnt включить tri-state буффера, оставив все сигналы в неактивном состоянии и только следующим тактом начинать активную работу. Эта техника называется address/data stepping. Вследствие негарантированных уровней на шине чипсет и ошибается, не декодирует адрес, выставленный вами на шине.

 

Minimum input arrival time before clock: 13.094ns

Maximum output required time after clock: 12.528ns

Maximum combinational path delay: 4.457ns

Minimum input arrival time before clock должно быть меньше или равно 7 ns, maximum output required time after clock должно быть меньше 11 ns. Maximum combinational path delay в этом контексте не интересен. Как показывает практика, maximum output required time after clock проблем не вызывает. Minimum input arrival time before clock - выдержать более сложно, однако возможно. Необходимо очень аккуратно считать количество входных триггеров, управляемых с пинов микросхемы. По опыту, fan-in до 100 еще позволяет выдержать времянки, дальше уже проблемы с разными раскладками. Еще неплохо вырезать прямоугольную область в микросхеме для приоритетной раскладки PCI ядра в нее. Это несколько ограничивает полет фантазии PAR'а и приводит к более предсказуемым результатам.

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


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

А вот здесь и есть самая большая проблема. У вас вуыходная шина подключена к PCI через tri-state буффера. Как показывает опыт - они достаточно медленные. Для того, чтобы мастер работал надежно в такой ситуации необходимо в первый такт после получения PCI_Gnt включить tri-state буффера, оставив все сигналы в неактивном состоянии и только следующим тактом начинать активную работу. Эта техника называется address/data stepping. Вследствие негарантированных уровней на шине чипсет и ошибается, не декодирует адрес, выставленный вами на шине

Разве есть альтернатива tri-state буфферу?

Мне кажется медлительность tri-state буффера должна быть включена в <Maximum output required time after clock>, поэтому это не должно играть роли.

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


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

Да, время задержки tri-state буфферов включается в <Maximum output required time after clock>, однако выдержать его невозможно, поскольку скорость работы tri-state буфферов составляет "всего" 11-12ns, что явно недостаточно, чтобы выполнить спецификацию PCI. Однако специфика PCI позволяет выполнять address/data stepping, что спасает.

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


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

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

 

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

У меня такой ворос встал: в спартане в блоке ВВ есть программируемая задержка... А можно ли её использовать и не париться с разницей длин вообще?

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


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

Все вышеописаные советы пошли в дело, выходные задержки уложились, входные удалось свести к

минимуму(макс. 8 с копейками нс.)

Еще неплохо вырезать прямоугольную область в микросхеме для приоритетной раскладки PCI ядра в нее. Это несколько ограничивает полет фантазии PAR'а и приводит к более предсказуемым результатам.

каким образом это можно сделать в ISE?

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


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

2 xy_

Вы имеете в виду опции FAST/SLOW и DRIVE, которые приводят изменеиям в задержке падающей на выходном буфере? Крутя эти настройки вы получаете гарантированную наибольшую задержку на буфере (из группы) которая сильно зависит от температуры и напряжений питания. Не буду кривить душой, я почти всегда так и делаю (особенно для клока) :)

 

2 qwqw

В PLACE редакторе рисуете область и присваиваете ее к нужному иодулю.

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


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

2 xy_

Вы имеете в виду опции FAST/SLOW и DRIVE, которые приводят изменеиям в задержке падающей на выходном буфере? Крутя эти настройки вы получаете гарантированную наибольшую задержку на буфере (из группы) которая сильно зависит от температуры и напряжений питания. Не буду кривить душой, я почти всегда так и делаю (особенно для клока) :)

Ой, я напутал, в спартане 3 этого нет, но вот в 3е есть (помню где то воидел=)

http://direct.xilinx.com/bvdocs/publications/ds312.pdf

стр 10

я не разбирался отличается ли это от спартана3, но выглядит так, как будто это настоящая программируемая задержка

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


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

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

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

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

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

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

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

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

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

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