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

 
 
8 страниц V  « < 4 5 6 7 8 >  
Reply to this topicStart new topic
> NIOS II, программирование ниос2 на СИ
doom13
сообщение Jan 28 2015, 11:06
Сообщение #76


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 28 2015, 13:57) *
Можете посоветовать литературу по DMA, где толково расписано.

Описание на IP-ядра смотрите ну и пример можете какой качнуть.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 11:12
Сообщение #77


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
О каких 60 МГц говорили Вы - Вам виднее.

О сферических в вакууме, естественно wink.gif


Цитата
но лучше разобраться с DMA (SgDMA/mSgDMA).

ДМА имеет смысл если ядро чем то еще полезным нагружено, в данном же случае, я так понимаю вся нагрузка на ядро проца - это тосовка данных. Более того подозреваю что ядро проца появилось как раз из-за необходимости доступа к ДДР, через имеющийся в ядре интерфейс. В таком раскладе ДМА - лишнее усложнение и нестабильность


В атаче если будет интересно программное фифо, вам надо создать 2 буфера длинной в 1.2 мегобайта, и набивать один из входящего потока, как получите сигнал выдать данные, переходите на другой буффер, а первый отдаете пользователю.

какой смысл хранить данных больше чем у вас могут попросить?


использовать буферы так

Код
uint8_t DataBuf1[1.2*1024*1024+2]; //буфер для хранения его надо в ДДР пихануть
uint8_t DataBuf2[1.2*1024*1024+2]; //буфер для хранения его надо в ДДР пихануть
FIFOStr   Buffer1;
FIFOStr   Buffer2;

InitFIFOStr(Buffer1,DataBuf1, sizeof(DataBuf1));
InitFIFOStr(Buffer2,DataBuf2, sizeof(DataBuf2));



дальше пихаете туда данные через AddFIFOData
и забираете через GetFIFOData, буфер чиститься сам при забирании данных, но можно и вызвать функцию очистки

вам надо только поправить функцию добавления данных, потому что она не дает перезаписывать буфер, возвращая код ошибки при переполнении. А также надо понять что делать если данные запросили, но их в буфере меньше 1.2 МБ, может вам вообще надо сделать 1 буфер, и выдавать всегда его целиком, а писать его по кругу...
Прикрепленные файлы
Прикрепленный файл  Code.zip ( 2.04 килобайт ) Кол-во скачиваний: 9
 
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 11:34
Сообщение #78


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(Golikov A. @ Jan 28 2015, 14:12) *
В атаче если будет интересно программное фифо, вам надо создать 2 буфера длинной в 1.2 мегобайта, и набивать один из входящего потока, как получите сигнал выдать данные, переходите на другой буффер, а первый отдаете пользователю.

какой смысл хранить данных больше чем у вас могут попросить?


использовать буферы так

Код
uint8_t DataBuf1[1.2*1024*1024+2]; //буфер для хранения его надо в ДДР пихануть
uint8_t DataBuf2[1.2*1024*1024+2]; //буфер для хранения его надо в ДДР пихануть
FIFOStr   Buffer1;
FIFOStr   Buffer2;

InitFIFOStr(Buffer1,DataBuf1, sizeof(DataBuf1));
InitFIFOStr(Buffer2,DataBuf2, sizeof(DataBuf2));


Не совсем понял кое что: буффер создается в DDR2 или где? Если в самой плиске, то не совсем понятно, как такого объема создать.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 11:48
Сообщение #79


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Jan 28 2015, 14:12) *
О сферических в вакууме, естественно wink.gif


Цитата(Golikov A. @ Jan 28 2015, 11:59) *
Ну пипец эта ваша альтера - это так чтобы doom13'а позлитьsm.gif..
то хоть убейтесь ничего не выйдет, даже на ксалинксе, не то что на альтере - ну это тоже чтобы дума позлитьsm.gif


Цитата(Golikov A. @ Jan 26 2015, 12:26) *
В целом конечно я не прав. Все же вопрос частоты. Я как то не подумал что люди могут ставить DDR3 и работать с ним на 60 МГц... (условно все конечно)


Цитата(Golikov A. @ Jan 24 2015, 00:48) *
смело...


Цитата(Golikov A. @ Jan 23 2015, 20:44) *
Чего то мне говорит что начиная с ддр2, уже не может, но могу и ошибаться...


Цитата(Golikov A. @ Jan 20 2015, 15:28) *
ну пипец ваша альтераsm.gif....
этож надо было придумать отдельные инструкции записи мимо кеша. Так за этим еще следить надо чтобы кеш был всегда синхронен с памятью под ним...
а вот явно указано
что срали они на понятие изменяемый%) и просто оптимизацию отключают и рады)


Думаю, скоро можно будет менять Ваш статус на "БОЛТУН" biggrin.gif
Go to the top of the page
 
+Quote Post
Timmy
сообщение Jan 28 2015, 11:50
Сообщение #80


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Golikov A. @ Jan 28 2015, 14:12) *
В атаче если будет интересно программное фифо, вам надо создать 2 буфера длинной в 1.2 мегобайта, и набивать один из входящего потока, как получите сигнал выдать данные, переходите на другой буффер, а первый отдаете пользователю.

какой смысл хранить данных больше чем у вас могут попросить?

Осталось только разобраться, как бы ухитриться набивать из входящего потока 60М при частоте процессора 100М и ничего не потерятьsm.gif. Хотя, если со стороны АЦП поставить упаковщик и аппаратное ФИФО, то, наверное, успеет.
А так SgDMA воткнул и всё путём. Правда, надо ещё научиться правильно его сконфигурировать и запрограммировать.

Данные могут попросить не самые последние, а какие-нибудь старые, например, такая возможность есть в правильных цифровых осциллографах.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 12:02
Сообщение #81


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Timmy @ Jan 28 2015, 14:50) *
Осталось только разобраться, как бы ухитриться набивать из входящего потока 60М при частоте процессора 100М и ничего не потерятьsm.gif. Хотя, если со стороны АЦП поставить упаковщик и аппаратное ФИФО, то, наверное, успеет.
А так SgDMA воткнул и всё путём. Правда, надо ещё научиться правильно его сконфигурировать и запрограммировать.

Данные могут попросить не самые последние, а какие-нибудь старые, например, такая возможность есть в правильных цифровых осциллографах.

Там - 8bit*60M, а шина проца - 32bit*100M, получим - 32bit*15M.

Цитата(Timmy @ Jan 28 2015, 14:50) *
А так SgDMA воткнул и всё путём. Правда, надо ещё научиться правильно его сконфигурировать и запрограммировать.

Лучше тогда mSgDMA, оно новее будет, а в управлении им всё просто.

Цитата(x66 @ Jan 28 2015, 14:34) *
Не совсем понял кое что: буффер создается в DDR2 или где? Если в самой плиске, то не совсем понятно, как такого объема создать.

В DDR2, а она - память Ниоса (Qsys-системы).
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 12:23
Сообщение #82


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Кстати а какая частота DDR2?
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 12:30
Сообщение #83


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Jan 28 2015, 15:23) *
Кстати а какая частота DDR2?

Это видно из рисунка приведённого выше.
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 12:38
Сообщение #84


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(doom13 @ Jan 28 2015, 15:30) *
Это видно из рисунка приведённого выше.


Проект делается на основе отладочной платы DB4CGX15 Cyclone IV PCIexpress Development Board. Такие параметры взяты из примера для этой платы
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 12:39
Сообщение #85


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



200 МГц
Я ошибаюсь или пропускная способность такой памяти порядка 3.2 МБайта в секунду по одному каналу? И даже если там будет 4 чипа, то 15 МБайт не достичь?
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 13:02
Сообщение #86


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(Golikov A. @ Jan 28 2015, 15:39) *
200 МГц
Я ошибаюсь или пропускная способность такой памяти порядка 3.2 МБайта в секунду по одному каналу? И даже если там будет 4 чипа, то 15 МБайт не достичь?


Как вы получили это значение? Не 3200 МБ/с?

Сообщение отредактировал x66 - Jan 28 2015, 13:16
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 13:22
Сообщение #87


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 28 2015, 16:02) *
Цитата(Golikov A. @ Jan 28 2015, 15:39) *

200 МГц
Я ошибаюсь или пропускная способность такой памяти порядка 3.2 МБайта в секунду по одному каналу? И даже если там будет 4 чипа, то 15 МБайт не достичь?

Как вы получили это значение? Не 3200 МБ/с?

Вот и я думаю, что товарищ ткнул пальцем в небо.
Для Вашего случая максимальная скорость записи/чтения данных будет:
8 (ширина шины) * 200 MHz(частота тактирования памяти) * 2 (память DDR2 - работает по двум фронтам) = 3200 Mbit/s = 400 MB/s
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 13:39
Сообщение #88


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а... 3.2 Гигабита...
А с учетом необходимой задержки между выставлением адреса колонки и столбца при выборе адреса?
А когда ДМА и ниос будут по разным адресам щемится?
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 13:44
Сообщение #89


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(doom13 @ Jan 28 2015, 15:02) *
В DDR2, а она - память Ниоса (Qsys-системы).


Не совсем понятно как делается

Сообщение отредактировал x66 - Jan 28 2015, 13:54
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 13:54
Сообщение #90


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



нет.
Надо просто линкеру указать что у него есть такая память.
Go to the top of the page
 
+Quote Post

8 страниц V  « < 4 5 6 7 8 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:42
Рейтинг@Mail.ru


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