|
|
  |
Avalon Interface and Flow Control |
|
|
|
Nov 23 2017, 08:15
|
Частый гость
 
Группа: Свой
Сообщений: 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."
|
|
|
|
|
Nov 23 2017, 08:19
|
Частый гость
 
Группа: Свой
Сообщений: 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. Переделывать сейчас не вариант. Сейчас нужно адаптировать по быстрому.
|
|
|
|
|
Nov 27 2017, 11:35
|
Частый гость
 
Группа: Свой
Сообщений: 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 нельзя нельзя ни записать ни прочитать другому мастеру, т.к. нельзя прервать транзакцию.
|
|
|
|
|
Nov 27 2017, 11:48
|
Местный
  
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Nov 27 2017, 12:09
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 29-04-06
Пользователь №: 16 608

|
Цитата(Raven @ Nov 27 2017, 15:48)  Или, например, выделить регистры, с которыми работает DMA, в отдельный slave. В принципе я так и сделал, но ощущение такое что проблемы ещё будут. Например, Nios записывает настроечные параметры в регистры, затем настраивает DMA, затем запускает внешнее устройство и ждёт окончания работы DMA. Вроде всё нормально, но что будет если что-то пойдет не так и мне нужно будет прервать DMA? При работе с Flow control я мог это сделать. А вот при работе с waitrequest пока не ясно, ведь нельзя прервать транзакцию на половине.
|
|
|
|
|
Nov 27 2017, 12:35
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Цитата(djhall @ Nov 27 2017, 15:09)  Вроде всё нормально, но что будет если что-то пойдет не так и мне нужно будет прервать DMA? А DMA функционал типа Abort или Stop не поддерживает?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|