[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Для реализации Master PCI пример из Приложения B (2.1) может использоваться почти напрямую. На стр. 242 (бумажн. 2.1) под заголовком Definitions перечислены промежуточные сигналы, из которых нужны Request, Comp, To, Dev_to. Request – мастер готов принимать/передавать данные и должен выдать запрос шины. Comp (completion)– последние предназначенные для пересылки данные находятся на шине. To (timeout) – истек счетчик Latency Timer, запрограммированный в ConfigMemory (смещ. 0xD). Dev_to – ждем ответа target как Fast, Medium, Slow, Если Нет выставляем Dev_to (Devsel timeout)– т.е. счетчик 1-2-3 запускаемый по FRAME#. Я специально исключаю Ready исходя из предположения, что шина запрашивается, когда ВСЕ данные, предназначенные для пересылки, готовы (или готов приемный буфер) – см. ниже про IRDY# и target. Так что Ready=1, Step=0, [далее L-cycle=1, Sa=1, FB2B=0 и проч. - это я уточню]. LOCK# (и Lock machine), PERR#, SERR# исключаются. Особенность Master FSM в том, что она опять же подчиняется FRAME#, активизация которого в свою очередь происходит по GNT#, выставляемого арбитром шины после запроса REQ#.
-- ----------------------------
----------- REQ#
------- ------------------------
---------- GNT#
------------- ---------
--------------- FRAME#
Для организации обмена лучше выделить в FPGA специальный буфер (у меня – 1Кбайт, 256x32), причем не советую делать его а-ля FIFO – слишком сложно подстраиваться под всевозможные Target Disconnects не зная, сколько в буфере данных и есть ли они там. Вообще это самый сложный вопрос. Получить 'какой-то’ обмен в общем не сложно. Гораздо сложнее правильно состыковать данные в смежных транзакциях. С этой целью и нужно отказаться от неактивного IRDY#, оставляя только за target возможность вставлять состояния ожидания (по TRDY#)); отсюда же преимущества ‘непрозрачного’ буфера обмена, на время пересылки которого (по PCI) он недоступен пользовательской схеме.
Методика настройки и некоторые уточнения, а также ваши вопросы :)
to be continued
--IgorK
E-mail: info@telesys.ru