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

 
 
> Avalon Interface and Flow Control
djhall
сообщение Nov 23 2017, 06:13
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Я так понимаю, что в современной спецификации на шину Avalon нет сигналов Flow Control, я имею ввиду readyfordata и dataavailable.
Но у меня есть довольно старый компонент, который как раз и предназначается для чтения и записи данных с использованием DMA и который использует сигналы readyfordata и dataavailable.
Подскажите как обновить этот компонент для работы по современной спецификации. Какие есть замены для сигналов readyfordata и dataavailable?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
djhall
сообщение Nov 25 2017, 15:18
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Чего-то я не допонимаю.

Кратко опишу принцип работы моего компонента:
Работает в режиме Slave. Имеет один memory-mapped интерфейс к которому подключены два мастера - один от Nios, второй чтение от DMA. Сам компонент имеет множество регистров по разным адресам в которые Nios записывает настроечные параметры, есть адрес с которого DMA считывает данные передавая их в память.

Как было раньше:
Nios записывает настроечные параметры в регистры, затем настраивает DMA, затем запускает внешнее устройство и ждёт окончания работы DMA.

Как сейчас:
Nios записывает настроечные параметры в регистры, затем настраивает DMA и далее зависает. И не удивительно, ведь сейчас выставлен сигнал ожидания waitrequest и доступ к компоненту блокируется следовательно внешнее устройство не запускается, данные не поступают и ожидание длится вечно.

С Flow control такой ерунды не было. Какие варианты решения могут быть?
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Nov 27 2017, 10:34
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(djhall @ Nov 25 2017, 18:18) *
Как сейчас:
Nios записывает настроечные параметры в регистры, затем настраивает DMA и далее зависает. И не удивительно, ведь сейчас выставлен сигнал ожидания waitrequest и доступ к компоненту блокируется следовательно внешнее устройство не запускается, данные не поступают и ожидание длится вечно.

С Flow control такой ерунды не было. Какие варианты решения могут быть?


Вроде не должно зависать. Waitrequest устанавливается только при обращении к dma-регистру устройства? Если со стороны процессора все транзакции закончены, то не очень понятно с чего бы ему реагировать на waitrequest...
Go to the top of the page
 
+Quote Post
djhall
сообщение Nov 27 2017, 11:35
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608



Цитата(alexadmin @ Nov 27 2017, 14:34) *
Вроде не должно зависать. Waitrequest устанавливается только при обращении к dma-регистру устройства? Если со стороны процессора все транзакции закончены, то не очень понятно с чего бы ему реагировать на waitrequest...

Как только процессор записал последние данные для настройки DMA, DMA тут же пытается считать данные из моего компонента, а так как компонент требует дальнейшей настройки, то связка master-dma и slave-мой_компонент зависает. Почему зависает Nios не ясно может из-за того, что следующая команда в программе идёт именно продолжение настройки моего компонента, т.е. обращение к занятому компоненту.

Как я понял разницу между Flow control и waitrequest:
Flow control - не производит чтение или запись если устройство не готово
waitrequest - производится, чтение или запись даже если устройство не готово и зависает в режиме ожидания пока устройство не будет готово. При этом занятый Slave нельзя нельзя ни записать ни прочитать другому мастеру, т.к. нельзя прервать транзакцию.
Go to the top of the page
 
+Quote Post
Raven
сообщение Nov 27 2017, 11:48
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Цитата(djhall @ Nov 27 2017, 14:35) *
Как я понял разницу между Flow control и waitrequest:
Flow control - не производит чтение или запись если устройство не готово
waitrequest - производится, чтение или запись даже если устройство не готово и зависает в режиме ожидания пока устройство не будет готово. При этом занятый Slave нельзя нельзя ни записать ни прочитать другому мастеру, т.к. нельзя прервать транзакцию.

Понимание правильное.

И поэтому вам нужно изменить драйвер вашего устройства, чтобы не было вот этого:
Цитата(djhall @ Nov 27 2017, 14:35) *
Как только процессор записал последние данные для настройки DMA, DMA тут же пытается считать данные из моего компонента ...


Или, например, выделить регистры, с которыми работает DMA, в отдельный slave.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 17:32
Рейтинг@Mail.ru


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