реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Работа GPIF с FIFO без участия CPU, FX2LP
mikeT
сообщение May 2 2009, 12:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789



Загрузился таким вопросом: как я понял, транзакции GPIF (например, FIFO-read, FIFO-write) должны запускаться "ручками", например, через GPIFTRIG или EPxGPIFTRIG.
Таким образом, участие CPU (8051, что внутри FX2LP) необходимо.

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

Я не нашел в FX2LP Reference как это можно сделать.
Вопрос связан с тем, что скорость передачи данных требуется близкая к предельной (High-Speed) и не очень хочется задействовать процессор FX2LP для периодического запуска транзакций. Даже если это будет короткий обработчик прерывания - хоть по внешнему событию, хоть по внутреннем флагам состояния FIFO.
Go to the top of the page
 
+Quote Post
tAmega
сообщение May 2 2009, 13:57
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639



На самом деле так и задумана работа FX2LP в режиме полного автомата. Читайте внимательно. Триггер дергается всего один раз в самом начале, дальше процесс в автомате пока не закончится передача всего массива данных.


--------------------
пользователь отключен
Go to the top of the page
 
+Quote Post
mikeT
сообщение May 6 2009, 15:55
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789



Цитата(tAmega @ May 2 2009, 20:57) *
На самом деле так и задумана работа FX2LP в режиме полного автомата. Читайте внимательно. Триггер дергается всего один раз в самом начале, дальше процесс в автомате пока не закончится передача всего массива данных.


Я имел в виду вот что: допустим я хочу лить данные непрерывно в два разных FIFO. "Непрерывно" - не значит, что оба потока параллельно (так невозможно), а скорее "по мере готовности", но сами потоки не прекращаются. Да даже пусть будет хотя бы одно FIFO. Я понимаю, что можно запрограммировать GPIF и он будет постоянно ожидать готовности внешних данных и по мере готовности вычитывать их, но диаграмма то при этом "крутится", то есть находится в одном из состояний S0-S6! А если диаграмма заканчивается, то запустить ее можно снова только вручную с CPU. Если не так, то подскажите пожалуйста где про это написано.
Go to the top of the page
 
+Quote Post
tAmega
сообщение May 6 2009, 16:03
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639



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


--------------------
пользователь отключен
Go to the top of the page
 
+Quote Post
mikeT
сообщение May 7 2009, 02:53
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789



Спасибо за ответы

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

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

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

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

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

Я не обсуждал - хорошо это или плохо. Если лить в одно FIFO, то, наверное вполне подойдет - "запустил и забыл". Если в два попеременно и на высокой скорости, то, наверное, не очень хорошо - по крайней мере Cypress во многих местах пишет, что "проц. отвязат от высокоскоростной передачи, т.к. он для этого медленный".
Мой начальный вопрос был не "заторомозит это процесс или нет", а "можно сделать запуск без участия проца?"
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 09:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016