Добрый день.

Проконсультируйте пожалуйста по вопросу миграции с Cypress SX2 на FX2LP в режиме Slave FIFO.

Что есть:
FPGA <-> SX2 SSOP56. Всё радостно работает и вполне устраивает, кроме температурного диапазона (хотя все использованные чипы SX2 работают на -40 °C, что удивительно) и потребления (что косвенно объясняет почему оно работает на -40 °C -- видимо быстро разогревается, ибо лопает как не в себя). И устарел чип лет десять назад.

Хотелось бы:
FPGA <-> FX2LP SSOP56.

После перелопачивания интернетов и этого форума так и не удалось найти информации по взаимодействию мастера (FPGA) и FX2LP (в режиме Slave FIFO). С обменом bulk пакетами по USB endpoints всё понятно (ничем не отличается от SX2). Но совершенно непонятно, как, к примеру, проинформировать мастера о возникновении события SET_CONFIGURATION/USB_CONNECT/USB_DISCONNECT или как мастер может установить/сбросить STALL на какой-нибудь endpoint. Это необходимо для реализации протокола обмена по USB и общего функционирования устройства.

В SX2 для этого есть командный интерфейс (дополнительная нога ADDRESS[2] для адресации и INT#, RDY для квитирования событий) -- события приходят и состояние endpoint'ов управляется. В FX2LP такого интерфейса нет. Есть 3 (или 4) свободные ноги GPIO, но после беглого прочтения datasheet и TRM сложилось впечатление, что один-в-один как SX2 интерфейс не реализовать (или есть варианты?)

В голову приходит только идея применить неиспользуемые FIFO (поскольку для передачи данных по USB задействовано всего два endpoint'а) для реализации двустороннего обмена между 8051 <-> FPGA: мастер пишет в одно FIFO команду (некую определённую последовательность байт) и ожидает в другом FIFO подтверждение и статус выполнения этой команды, в это же FIFO вываливаются коды необходимых событий, а мастер мониторит состояние этого FIFO.

Собственно вопрос: как правильно (и с минимальными затратами) организовать обмен между мастером и FX2LP? И реализуема ли идея предложенная выше?