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

Sancho

Участник
  • Постов

    11
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Я сначала делаю так. Беру лист бумаги и карандаш. Рисую времянку, которую надо получить (входные и выходные сигналы, а также вспомогательные, которые наружу не идут). Можно стрелочками указать переходы (изменения выходных сигналов, т.е. при каких состояниях на входах & выходах будет изменяться состояние на выходе). Мне это очень помогает.
  2. Если в схеме есть гонки, то при временном моделировании они, так сказать вылезут наружу, т.е. проявятся на 99%. Выводи промежуточные сигналы в симуляторе и отлаживай пошагово. Если схема асинхронная, то может есть смысл перевести на синхронный вариант, т.к. при правильно спроектированной схеме гонок вообще быть не должно.
  3. Спасибо всем за участие, имхо вопрос исчерпан.
  4. Мнения разошлись! Может еще какие варианты будут? И все таки, насколько я понимаю ихний, стандарт гласит (п.6.2.2 PCI Spec 2.2): For instance, device that do not implement an I/O Space will not implement a writable element at bit location 0 of the Command register. Devices typically power up with all 0's in this register... Т.е. если устройства обычно стартуют с нулями в этом регистре и при этом требуют адр. пространство, то все таки система должна в них писать единичку?
  5. Тогда как правильно определить, что моему устройству был выделен диапазон адресов: сравнить BAR после записи - если не равен всем единицам или нулям - значит базовый адрес записан?
  6. PCI Control Register

    Просветите пожалуйста, кто производит запись в регистр CONTROL биты 0 и 1. Я так понимаю, что запись производится при конфигурации, если было обнаружено, что устройство на шине требует н-ое кол-во адресного простр-ва ввода/вывода и ему назначен диапазон адресов (т.е. записан базовый адрес в в соответствующий BAR), то в бит 0 записывается 1. И соответственно для пространства памяти в бит 1 тоже. Поправьте, если я не так понял. Спасибо.
  7. Могу посоветовать взять ChipScope Pro и посмотреть, на какой транзакции (при каких сигналах) просиходит зависание. Хотя Вы и предполагаете правильность управления, но материнская плата может думать иначе. Поэтому самый реальный путь к избавлению от зависаний - точное установление их причины в форме временной диаграммы. Вот нашел в форуме и хочу уточнить: упоминается какая-то программа:"модель от синопсиса для моделирования pci-шины, для генерации тестовых последовательностей и т.д." Вы пишете:"Переложил в /pub/Modeling/Synopsys PCI-X SmartModel v2 ". Можно поподробнее - где это взять?
  8. В том то и дело что нет заведомо правильного testbench. А от ксилинксовской корки можно как нибудь tb прикрутить? На выходных еще раз проверю... Я тут с ответами запутался - не обращайте внимания...
  9. Ядро - самопал. Должно поддерживать пространство ИО и МЕМОРИ. Прием данных от pci, кое-какая обработка и обратно в pci
  10. Может кто поковыряется в коде да посоветует че нибудь. Вроде все требования стандарта выполнил. Как только отключаю сигналы DEVSEL# и TRDY# - начинает грузиться. Хотя управляю ими имхо правильно. Код могу намылить, а могу и пристегнуть на форум - по желанию трудящихся.
×
×
  • Создать...