Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа GPIF с FIFO без участия CPU
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
mikeT
Загрузился таким вопросом: как я понял, транзакции GPIF (например, FIFO-read, FIFO-write) должны запускаться "ручками", например, через GPIFTRIG или EPxGPIFTRIG.
Таким образом, участие CPU (8051, что внутри FX2LP) необходимо.

А можно ли каким-нибудь образом полностью "отвязаться" от участия CPU в этом процессе? То есть, например, дернул внешний (по отношению к FX2LP) девайс каким-то пином FX2LP и после этого стартует процесс FIFO-read для определенного FIFO?

Я не нашел в FX2LP Reference как это можно сделать.
Вопрос связан с тем, что скорость передачи данных требуется близкая к предельной (High-Speed) и не очень хочется задействовать процессор FX2LP для периодического запуска транзакций. Даже если это будет короткий обработчик прерывания - хоть по внешнему событию, хоть по внутреннем флагам состояния FIFO.
tAmega
На самом деле так и задумана работа FX2LP в режиме полного автомата. Читайте внимательно. Триггер дергается всего один раз в самом начале, дальше процесс в автомате пока не закончится передача всего массива данных.
mikeT
Цитата(tAmega @ May 2 2009, 20:57) *
На самом деле так и задумана работа FX2LP в режиме полного автомата. Читайте внимательно. Триггер дергается всего один раз в самом начале, дальше процесс в автомате пока не закончится передача всего массива данных.


Я имел в виду вот что: допустим я хочу лить данные непрерывно в два разных FIFO. "Непрерывно" - не значит, что оба потока параллельно (так невозможно), а скорее "по мере готовности", но сами потоки не прекращаются. Да даже пусть будет хотя бы одно FIFO. Я понимаю, что можно запрограммировать GPIF и он будет постоянно ожидать готовности внешних данных и по мере готовности вычитывать их, но диаграмма то при этом "крутится", то есть находится в одном из состояний S0-S6! А если диаграмма заканчивается, то запустить ее можно снова только вручную с CPU. Если не так, то подскажите пожалуйста где про это написано.
tAmega
Там есть условные переходы, и благодаря им проц может крутиться непрерывно до бесконечности, с другой стороны, длина одной транзакции четыре байта, там счет на мегабайты. Неужели если проц дернет
GPIF один раз за несколько мегабайт, это сильно затормозит процесс.
mikeT
Спасибо за ответы

Цитата(tAmega @ May 6 2009, 23:03) *
Там есть условные переходы, и благодаря им проц может крутиться непрерывно до бесконечности,

Я про это и спрашивал. То есть все так и есть, как я писал в предыдущих постах: диаграмма может крутиться бесконечно без участия проца, но для ее запуска проц нужен обязательно.

Цитата(tAmega @ May 6 2009, 23:03) *
с другой стороны, длина одной транзакции четыре байта,

Не совсем понял, что вы имеете в виду - не могли бы пояснить ("длина транзакции четыре байта")

Цитата(tAmega @ May 6 2009, 23:03) *
Неужели если проц дернет
GPIF один раз за несколько мегабайт, это сильно затормозит процесс.

Я не обсуждал - хорошо это или плохо. Если лить в одно FIFO, то, наверное вполне подойдет - "запустил и забыл". Если в два попеременно и на высокой скорости, то, наверное, не очень хорошо - по крайней мере Cypress во многих местах пишет, что "проц. отвязат от высокоскоростной передачи, т.к. он для этого медленный".
Мой начальный вопрос был не "заторомозит это процесс или нет", а "можно сделать запуск без участия проца?"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.