|
Nios + DMA + SDRAM |
|
|
|
May 2 2012, 12:32
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Задачка вроде не сложная но с наскоку не получается. Пытаюсь подключить к Nios контроллер DMA который должен снимать (читать) данные фильтра (16 бит) (VHDL модуль) и запихивать их в SDRAM. Данные (каждое слово) предполагается снимать по фронту сигнала который формируется в модуле фильтра (очевидно читать данные в DMA нужно по прерыванию) Почитал про Nios DMA и понял только как DMA подключить к SDRAM. Не пойму как состыковать с фильтром (или регистром где будут появляться данные фильтра) ту часть DMA которая должна читать данные.
Если у кого был подобный опыт, направьте пожалуйста на правильный путь
Сообщение отредактировал Acvarif - May 2 2012, 12:35
|
|
|
|
|
 |
Ответов
|
May 2 2012, 19:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(Acvarif @ May 2 2012, 16:32)  Задачка вроде не сложная но с наскоку не получается. Пытаюсь подключить к Nios контроллер DMA который должен снимать (читать) данные фильтра (16 бит) (VHDL модуль) и запихивать их в SDRAM. Данные (каждое слово) предполагается снимать по фронту сигнала который формируется в модуле фильтра (очевидно читать данные в DMA нужно по прерыванию) Почитал про Nios DMA и понял только как DMA подключить к SDRAM. Не пойму как состыковать с фильтром (или регистром где будут появляться данные фильтра) ту часть DMA которая должна читать данные.
Если у кого был подобный опыт, направьте пожалуйста на правильный путь То есть данные у вас идут потоком, каждый клок? Тогда надо ставить не DMA, а SGDMA в режиме stream to memory. Сделайте фиктивный компонент Avalon ST source, чтоб вход стрима вывести из сопца. А там уж цепляйте свой фильтр. Там будут сигналы что-то типа data[], datavalid, SOP, EOP. Скорее всего фифо нужно еще будет между фильтром и SGDMA.
|
|
|
|
|
May 3 2012, 07:20
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(alexPec @ May 2 2012, 22:15)  То есть данные у вас идут потоком, каждый клок? Тогда надо ставить не DMA, а SGDMA в режиме stream to memory. Сделайте фиктивный компонент Avalon ST source, чтоб вход стрима вывести из сопца. А там уж цепляйте свой фильтр. Там будут сигналы что-то типа data[], datavalid, SOP, EOP. Скорее всего фифо нужно еще будет между фильтром и SGDMA. Спасибо. Надо почитать про это дело. Как сделать фиктивный компонент (в общих чертах)? Цитата Все просто. И можно обойтись без монстра SCDMA простым модулем DMA. Вы делаете у своего модуля с фильтром обычный интерфейс avalon MM slave. Канал read DMA соединяете с Вашим модулем. Все готово. Т.к. у Вас фильтр содержит фактически только один регистр, или другими словами адресное пространство у Вашего модуля 1, то в регистр управления DMA (control) Вы должны выставить в еденицу флаг RCON (Reads from a constant address). Логика работы будет такой. DMA будет постоянно опрашивать модуль фильтра. А модуль сигнализировать (вернее управлять передачей) о готовности данных своим выходом waitrequest. В более старых спецификациях (в 9-ой еще было) на авалон были дополнительные сигналы управления передачами (dataavailable, readyfordata), но они упразднены и на них лучше не расчитывать. Спасибо. Где-то так себе и мыслил. Проблема в том, что совершенно не представляю как к своему VHDL фильтру добавить интерфейс avalon MM slave. Я так понимаю он после этого может быть присоединен как компонент в библиотеку SOPS? А иначе как соединить сигнал read (DMA) с фильтром?
|
|
|
|
|
May 3 2012, 10:24
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(Acvarif @ May 3 2012, 17:20)  Спасибо. Где-то так себе и мыслил. Проблема в том, что совершенно не представляю как к своему VHDL фильтру добавить интерфейс avalon MM slave. Я так понимаю он после этого может быть присоединен как компонент в библиотеку SOPS? А иначе как соединить сигнал read (DMA) с фильтром? Да, Вы правильно мыслите. После создания интерфейса добавляете модуль в библиотеку IP модулей. Иначе никак. План действий. Качаете спецификацию на авалон с сайта альтеры. Читаете первые 3 (ну можете и 4-й раздел про прерывания) раздела. Это 30 страниц. С учетом альтеровской воды это совсем не много. Далее читаете про создание своего компонента в ... К черту читать, открываете SOPC, открываете file->new component. Указываете свой файл. Во вкладке интерфейсов настраиваете интерфейс (-сы). Если сигналы назвали с умом, то на вкладке сигналы все станет ровно, нет - поправите. Что непонятно - ищите "SOPC Builder. User guide" и читаете раздел "Chapter 6. Component Editor", это еще 8 страничек. В общем все просто. UPD. Кстати, а какая скорость выдачи сигнала с Вашего модуля? Может действительно большие скорости и нужно воспользоваться советом alexPec. А может и нет.
|
|
|
|
Сообщений в этой теме
Acvarif Nios + DMA + SDRAM May 2 2012, 12:32  alexPec Цитата(Acvarif @ May 3 2012, 11:20) Спаси... May 3 2012, 10:08 barabek Цитата(Acvarif @ May 2 2012, 22:32) Почит... May 3 2012, 03:29 Orochi По сути есть та же задача: написать модуль, получа... May 4 2012, 01:05 alexPec Цитата(Orochi @ May 4 2012, 05:05) Остали... May 4 2012, 07:42 Orochi Удалил сигнал ready. То что получилось видно на ка... May 4 2012, 10:50 gosu-art Здравствуйте Acvarif!
Можно немного поинтересо... May 22 2012, 04:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|