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

 
 
 
Reply to this topicStart new topic
> 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
EugeneS
сообщение Nov 23 2017, 08:15
Сообщение #2


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

Группа: Свой
Сообщений: 181
Регистрация: 28-08-04
Пользователь №: 557



QUOTE (djhall @ Nov 23 2017, 09:13) *
Я так понимаю, что в современной спецификации на шину Avalon нет сигналов Flow Control, я имею ввиду readyfordata и dataavailable.
Но у меня есть довольно старый компонент, который как раз и предназначается для чтения и записи данных с использованием DMA и который использует сигналы readyfordata и dataavailable.
Подскажите как обновить этот компонент для работы по современной спецификации. Какие есть замены для сигналов readyfordata и dataavailable?


Avalon Interface Specifications:
"Flow control is a deprecated feature. Altera recommends that you use the Avalon
Streaming (Avalon-ST) and the ready and valid signals for new designs."
Go to the top of the page
 
+Quote Post
djhall
сообщение Nov 23 2017, 08:19
Сообщение #3


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

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



Цитата(EugeneS @ Nov 23 2017, 12:15) *
Avalon Interface Specifications:
"Flow control is a deprecated feature. Altera recommends that you use the Avalon
Streaming (Avalon-ST) and the ready and valid signals for new designs."

Мой компонент работает с memory-mapped. Переделывать сейчас не вариант. Сейчас нужно адаптировать по быстрому.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Nov 23 2017, 08:58
Сообщение #4


Знающий
****

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



Цитата(djhall @ Nov 23 2017, 11:19) *
Мой компонент работает с memory-mapped. Переделывать сейчас не вариант. Сейчас нужно адаптировать по быстрому.


Из описания не вполне понятно, у вас Master или Slave? В Авалоне есть waitrequest. Slave может его выставлять (если не готов) и тогда транзакция будет задержана. Чисто теоретически, при этом будут остановлены только соответсвующие Master и Slave, все остальные устройства на шине должны продолжить между собой общаться.
Go to the top of the page
 
+Quote Post
djhall
сообщение Nov 25 2017, 15:18
Сообщение #5


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

Группа: Свой
Сообщений: 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
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 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
Сообщение #7


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

Группа: Свой
Сообщений: 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
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 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
djhall
сообщение Nov 27 2017, 12:09
Сообщение #9


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

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



Цитата(Raven @ Nov 27 2017, 15:48) *
Или, например, выделить регистры, с которыми работает DMA, в отдельный slave.

В принципе я так и сделал, но ощущение такое что проблемы ещё будут.
Например, Nios записывает настроечные параметры в регистры, затем настраивает DMA, затем запускает внешнее устройство и ждёт окончания работы DMA. Вроде всё нормально, но что будет если что-то пойдет не так и мне нужно будет прервать DMA? При работе с Flow control я мог это сделать. А вот при работе с waitrequest пока не ясно, ведь нельзя прервать транзакцию на половине.
Go to the top of the page
 
+Quote Post
Raven
сообщение Nov 27 2017, 12:35
Сообщение #10


Местный
***

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



Цитата(djhall @ Nov 27 2017, 15:09) *
Вроде всё нормально, но что будет если что-то пойдет не так и мне нужно будет прервать DMA?

А DMA функционал типа Abort или Stop не поддерживает?
Go to the top of the page
 
+Quote Post

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

 


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


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