[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено IgorK 02 ноября 2001 г. 01:43
В ответ на: Вопрос к IgorK. отправлено Elresearch 01 ноября 2001 г. 11:54

Для реализации 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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru