Перейти к содержанию
    

NIOS2 + DMA +UART

Помогите ..... понят что-ли...

 

Есть уарт в ниосе. Хочу попробовать по ДМА складывать приемные байты в ОЗУ. Возможно ли такое организовать в связке альтеровских корок NIOS2 + DMA +UART?

 

По идее уарт приняв байт должен сформировать запрос ДМА. Дма контроллер по запросу от уарта должен вычитать приемный буфер уарта и положить байт в ОЗУ с инкриментом адреса ОЗУ. При определённых условиях, например при получении 200 байт ДМА должен сформировать прерывание. Вроде всё просто, классическая схема. Но не могу найти в уарте сигнал запрос дма.

 

ps quartus 11.0, qsys

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимаю, запроса DMA нет.

Реализован механизм записи/чтения данных Avalon-MM мастером по готовности UART.

И, дополнительно, при создании UART можно включить генерацию End Of Packet по количеству байт.

EOP может, если разрешено, завершить трансфер в SG-DMA.

Изменено пользователем Копейкин

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

емнип юарт сам по себе запросов формировать и не будет. Вызывается dma rx chan с указанием коллбэка завершения. А дольше гуляете, коллбек вызовется когда будет принято заданное количество слов.

 

Там все очень просто, но нельзя забывать о разрядности, а также о накладных расходах на дма, у альтеровцев хорошо выходят только фпга, а с процами и дма они уже поняли, прще и лучше купить ядро у АРМ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите ..... понят что-ли...

 

Есть уарт в ниосе. Хочу попробовать по ДМА складывать приемные байты в ОЗУ. Возможно ли такое организовать в связке альтеровских корок NIOS2 + DMA +UART?

 

По идее уарт приняв байт должен сформировать запрос ДМА. Дма контроллер по запросу от уарта должен вычитать приемный буфер уарта и положить байт в ОЗУ с инкриментом адреса ОЗУ. При определённых условиях, например при получении 200 байт ДМА должен сформировать прерывание. Вроде всё просто, классическая схема. Но не могу найти в уарте сигнал запрос дма.

 

ps quartus 11.0, qsys

 

Решал подобную задачу следующим образом:

1. Написал протокол для UART

2. Из модуля протокола вывел сигнал о заполнении буфера для приема битов

3. По этому сигналу порисходит инкрементация адреса в блоке памяти, куда я складываю байты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...