
Возникла необходимость разработки собственного PCI контроллера на FPGA. Есть несколько причин, по которым не подходят существующие решения и, надеемся, достаточно опыта для разработки собственного ядра.
В процессе проектирования ядра выяснилась необходимость работы с нерегистровыми сигналами шины PCI. При этом необходимость диктуется не столько эффективностью работы контроллера, как самой логикой формирования выходных сигналов по реакции на входные воздействия. Весь опыт предыдущей разработки говорит о ошибочности такого подхода, но похоже, для решения синхронизации передачи данных по шине другой альтернативы нет. Камнем преткновения стали сигналы FRAME и IRDY. Реально входная Target машина просто не успевает управлять логикой пользуясь регистровыми версиями этих сигналов

Существующий контроллер от PLDA, который мы исследовали для ознакомления не имел входных регистров на эти сигналы, однако имел множество примитивов типа LCELL на различных стадиях работы с этими сигналами. Как мы думаем, они использовались для устранения гонок на сигналах

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

Есть ли у кого опыт написания собственных PCI ядер и кто как решал выше описанные проблемы? Какие есть мысли по данному поводу?
Хелп ас, плииииз, а то
