|
SG-DMA в режиме Stream To Memoy |
|
|
|
Aug 25 2012, 07:49
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Есть необходимость перегружать кучу байт из пользовательской двухпортовой памяти в SDRAM+NIOS. Для этой цели в пользовательсой логике имеются импульсы периодом ~ 100 нс по фронтам которых предполагается организовать пересылку данных (16 бит) в SDRAM. Далее все компонуется и по Ethernet должно идти далее в комп. Для этого попытался сворганить в SOPC SG-DMA (Stream To Memory) + Avalon Straming Source. Получил непонятные ошибки. Разрядность нин в SG-DMA и Avalon Straming Source поставил 16 бит.
Подскажите пожалуйста как правильно. Пробовал по разному (менял оличество бит источника приемника и др.) Не получается. Помог бы простой пример реализации в SOPC подобной схемы. Нужен ли для этой цели еще и FIFO? Или можно будет обойтись только Avalon Straming Source+пользовательская логика полагаясь на внутреннюю FIFO SG-DMA?
|
|
|
|
|
 |
Ответов
|
Nov 26 2012, 12:37
|
Знающий
   
Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939

|
Вот созданные дескрипторы до вызова alt_avalon_sgdma_do_async_transfer(брейкпойнт ща на нем).
Жмем "Resume" и все работает. alt_avalon_sgdma_do_async_transfer вызывается 1 разТеперь перезапускаю систему(в том числе конфигурирую плис) убираю брэйк с async_transfer и ставлю на передаче пакета. После нее, собственно (256 байт), и должен заводится SGDMA_RX. Выполняю функцию:
Вроде все норм - 256 байт принял. После этого снова посылаю пакет 256 байт, но теперь он должен обработаться, по идее, другим дескриптором. Оправляю...
И ничего, SGDMA завис  больше он работать не будет. Сигнал READY не выставляется, еще к тому же левый адрес выставился 0х00011200 а должен быть 0х00011000, но похоже это от предыдущей транзакции. Может выравнивать чего нужно?
|
|
|
|
|
Nov 27 2012, 04:06
|
Знающий
   
Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939

|
Цитата(alexPec @ Nov 26 2012, 17:45)  Первое что в голову приходит - а почему размер-то передаваемых данных выставлен в ноль (bytes to transfer)? Может из-за нулевого размера не тормозится трансфер и заезжает на область памяти, где переменные какие-нибудь лежат? Косвенно это подтверждается тем что адрес после трансфера меняется - не должно быть. Попробуйте размер корректный выставить. По вашей картинке значение должно лежать по моему в адресе 0x13818-0x1381B (для первого дескриптора). Дальше думать будем если не пойдет... Красным я выделил невыполнившийся дескриптор. а ниже со значением 0х100808(запуск начинается с него) это как раз предыдущий, тут все нормально. Что касается с заежанием на область памяти, то я специально сделал отдельную двухпортовую память. Одна сторона SGDMA вторая проц. Даже если превыситься размер буфера, то будет крутится внутри этого порта, только данные испортятся. Но похоже он next дескиптор не прогружает т.к. сигнал READY не выставляется. вот как должно быть, это когда с брэйкпойнтом:
Запись начинается с 0x11100. +256 в конце получаем 0х11200. ready находится в неактивном состоянии (прогружается дескриптор, я так понял) и потом поднимается обратно уже с необходимым следующим адресом 0х11000. Вот так все работает. Сейчас же если не ставить брэйк то выполнятся 1 дескриптор который вызываю через do_async и на этом все и заканчивается. READY больше не активен после передачи. Попробую еще в QSYSe собраться 12,1  Ща пока в SOPC работаю 11,1
|
|
|
|
Сообщений в этой теме
Acvarif SG-DMA в режиме Stream To Memoy Aug 25 2012, 07:49 barabek Прошу прощенья, немного не в тему. А Вам точно нуж... Aug 26 2012, 22:48 Acvarif Цитата(barabek @ Aug 27 2012, 01:48) Прош... Aug 27 2012, 09:23  ISK Цитата(Acvarif @ Aug 27 2012, 12:23) У ме... Aug 28 2012, 06:11   Acvarif Цитата(ISK @ Aug 28 2012, 09:11) У вас зд... Aug 28 2012, 10:59    alexPec Цитата(Acvarif @ Aug 28 2012, 14:59) Сраз... Aug 28 2012, 12:09     Acvarif Цитата(alexPec @ Aug 28 2012, 15:09) Ну н... Aug 28 2012, 12:31      alexPec Цитата(Acvarif @ Aug 28 2012, 16:31) Да, ... Aug 28 2012, 19:11       Acvarif Спасибо.
Попробую разобраться. Aug 29 2012, 07:45        Acvarif Собрал систему с SGDMA, но без FIFO в надежде на в... Sep 2 2012, 15:46         alexPec В мануале же все написано. Реди - это сигнал готов... Sep 3 2012, 05:56          Acvarif Цитата(alexPec @ Sep 3 2012, 08:56) В ман... Sep 3 2012, 07:46           ISK ЦитатаПо приходу ready пользовательская логика выс... Sep 3 2012, 11:00            alexPec Если есть фифо - то 100нс конечно не проблема ( пр... Sep 3 2012, 17:12             Acvarif ЦитатаДанные должны подаваться на шину вместе с си... Sep 4 2012, 06:14              Acvarif Виноват. Ошибка вышла. Попутал sgdma и dma.
Пытаюс... Sep 5 2012, 07:39               alexPec Штатными функциями все делается. (с небольшим допи... Sep 5 2012, 08:20                Acvarif Спасибо.
У Вас в коде несколько дисрипторов, тое... Sep 5 2012, 12:09                 alexPec Цитата(Acvarif @ Sep 5 2012, 16:09) Спаси... Sep 6 2012, 05:03                  Acvarif Цитата(alexPec @ Sep 6 2012, 08:03) Буфер... Sep 7 2012, 13:21                   alexPec Код не смотрел, но первое что в голову приходит:
... Sep 7 2012, 14:15                    Acvarif Цитата(alexPec @ Sep 7 2012, 17:15) Код н... Sep 7 2012, 15:47                     alexPec ЦитатаСудя по диаграмме от SOPC в моем случае 16 б... Sep 7 2012, 19:46                      Acvarif Спасибо за клок.
Сделал все по правилам. Поставил... Sep 11 2012, 07:26                       alexPec ЦитатаНо всеравно есть непонятности. Не пойму как ... Sep 11 2012, 20:49                        Acvarif Цитата(alexPec @ Sep 11 2012, 23:49) Возм... Sep 12 2012, 05:53                         alexPec Цитата(Acvarif @ Sep 12 2012, 09:53) Спас... Sep 12 2012, 06:16                          Acvarif Цитата(alexPec @ Sep 12 2012, 09:16) Став... Sep 12 2012, 11:25                           Acvarif Большое Спасибо alexPec за поддержку.
Заработало ... Sep 12 2012, 17:20                           alexPec Цитата(Acvarif @ Sep 12 2012, 15:25) В об... Sep 12 2012, 19:29                            Acvarif Выкладываю то, что получилось и вроде работает. Мо... Sep 18 2012, 19:57                             alexPec Цитата1. Не всегда последовательно сменяются буфер... Sep 19 2012, 16:15                              Acvarif Цитата(alexPec @ Sep 19 2012, 19:15) А у ... Sep 19 2012, 17:29                               alexPec Цитата(Acvarif @ Sep 19 2012, 21:29) Но E... Sep 19 2012, 19:27                                Acvarif Цитата(alexPec @ Sep 19 2012, 22:27) Ну т... Sep 20 2012, 06:40                                 alexPec Цитата(Acvarif @ Sep 20 2012, 10:40) Тепе... Sep 21 2012, 11:39                                  Acvarif Цитата(alexPec @ Sep 21 2012, 14:39) Я бы... Sep 21 2012, 13:48                                   alexPec Цитата(Acvarif @ Sep 21 2012, 17:48) Да, ... Sep 21 2012, 14:24                                    Acvarif При наращивании количества данных поступающих на s... Sep 28 2012, 07:44                                     alexPec Регистр статуса и контрола в каком состоянии после... Sep 28 2012, 09:37                                      Acvarif Цитата(alexPec @ Sep 28 2012, 12:37) Реги... Sep 28 2012, 10:33                                       alexPec А покажите дамп сформированных дескрипторов Sep 28 2012, 12:43                                        Acvarif Цитата(alexPec @ Sep 28 2012, 15:43) А по... Sep 28 2012, 13:17                                         Acvarif С дампом (как вывести на консоль) так и не разобра... Sep 28 2012, 19:42                                          alexPec Цитата(Acvarif @ Sep 28 2012, 23:42) С да... Sep 29 2012, 09:23                                           Acvarif Цитата(alexPec @ Sep 29 2012, 12:23) Дамп... Oct 1 2012, 18:50                                            alexPec Написано же :
slide the pointer until 32 byte bo... Oct 1 2012, 20:09                                             Acvarif ЦитатаТут выравнивается начало дескриптора по 32-Б... Oct 2 2012, 07:17                                              Acvarif Все работает. С одним буфером.
С двумя буферами н... Oct 3 2012, 14:06                                               alexPec Честно говоря, не помню из-за чего, 2 года назад б... Oct 3 2012, 17:14                                                Acvarif Спасибо. Примерно так и сделал. Вроде работает. Но... Oct 4 2012, 17:11                                                 alexPec Max_desc_proccessed - это если вам надо прерывание... Oct 4 2012, 20:15                                                  Acvarif Цитата(alexPec @ Oct 4 2012, 23:15) Max_d... Oct 5 2012, 06:47                                                   alexPec Цитата(Acvarif @ Oct 5 2012, 10:47) Спаси... Oct 5 2012, 07:57                                                    Acvarif Цитата(alexPec @ Oct 5 2012, 10:57) Похож... Oct 9 2012, 16:00                                                     alexPec ЦитатаС дескрипторами так толком и не понял почему... Oct 9 2012, 18:30 gosu-art У меня тоже есть вопросики
Имею 2 буфера по 8к.... Nov 19 2012, 09:32 alexPec Цитата(gosu-art @ Nov 19 2012, 13:32... Nov 20 2012, 05:29 gosu-art Т.е. последовательность такая?:
1. Создаю дескрипт... Nov 20 2012, 06:09 alexPec Цитата(gosu-art @ Nov 20 2012, 10:09... Nov 21 2012, 10:04  gosu-art Цитата(alexPec @ Nov 21 2012, 14:04) Поче... Nov 23 2012, 06:48   alexPec В коде долго разбираться, можете чего-то не замети... Nov 23 2012, 16:25    gosu-art Цитата(alexPec @ Nov 23 2012, 19:25) Поче... Nov 26 2012, 08:25     alexPec Чего-то не совсем все ясно, вы, когда дескрипторы ... Nov 26 2012, 10:10   alexPec И все же, почему количество передаваемых байт в де... Nov 27 2012, 16:00 gosu-art В общем я тут поковырял alt_avalon_sgdma_construct... Nov 28 2012, 06:50 alexPec Цитата(gosu-art @ Nov 28 2012, 10:50... Nov 28 2012, 09:39 gosu-art Теперь работает прием и передача (256 байт) без уч... Nov 29 2012, 10:42 Копейкин Прошу подсказать, где ошибся...
Использую аналогич... Jan 30 2013, 10:22 alexPec Цитата(Копейкин @ Jan 30 2013, 14:22) Где... Jan 30 2013, 14:17 Acvarif Цитата(Копейкин @ Jan 30 2013, 14:22) Дес... Jan 30 2013, 15:05 Копейкин Acvarif, там всё сложнее.
DMA заполняет только час... Jan 30 2013, 15:16 alexPec Цитата(Копейкин @ Jan 30 2013, 19:16) Пре... Jan 30 2013, 18:30 Копейкин Мне хотелось по минимуму задействовать процессор, ... Jan 31 2013, 07:43 Копейкин Посмотрел внимательно на Альтере:
ссылка
там анг... Jan 31 2013, 12:51 alexPec Цитата(Копейкин @ Jan 31 2013, 16:51) Пол... Jan 31 2013, 16:30 Копейкин Я сейчас, как и описывал, сделал бесконечный цикл ... Jan 31 2013, 16:45 prussta Добрый день! Хочу запустить SGDMA в режиме mem... Feb 1 2014, 17:38
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|