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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Еще раз о применении DMA+SDRAM без Nios, Помогите разобраться
s.i.suprun
сообщение Jul 8 2008, 16:57
Сообщение #1


Участник
*

Группа: Validating
Сообщений: 71
Регистрация: 24-06-08
Из: Харьков
Пользователь №: 38 521



Доброго времени суток!!!
Товарищи специалисты помогите, пожалуйста.
Возникла задача по созданию системы которая будет получать изображение с КМОП-матрицы (матрица управляется через i2c), через связку DMA+SDRAM укладывать данные в динамическую память, а потом после небольшой обработки (блок который будет обеспечивать взаимодействие всех перечисленых блоков будет свой на VHDL), передавать через FTDI245 в PC.
Работаю я с QUARTUS 7.2, прочитав документацию на Avalon и существующие на этом сайте топики, разобрался,как экпортировать входы SDRAM на наружу(в целях эксперимента), но вот с DMA дело обстоит похуже. Если кто может подскажите как управлять DMA-каналом не програмно, а аппаратно, подавая на соответствующие вывоводы сигналы. Если это возможно, то какие выводы надо создать для всех троих портов (управления, чтения и записи)?
И попутно еще один вопрос, подскажите пожалуйста аналог упомянутой выше FTDI с паралельным входом,работа с которой на стороне компьютера похожа на FTDI( поскольку я не программист, а имеющиеся в наличии кадры в этих делах тоже не особо smile.gif ), которая поддерживает USB 2.0 HS много не надо, но чтобы было хотя бы 30 Мб/сек smile.gif .
Пожалуйста помогите, буду очень признателен!!!! help.gif
Go to the top of the page
 
+Quote Post
dinam
сообщение Jul 9 2008, 03:24
Сообщение #2


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Похоже вы что-то делаете на матрице Micron smile.gif . Мы уже прошли этот путь и он оказался не совсем простым. В качестве заготовки я брал контроллер SDRAM от Аltera. Но там он сделал не оптимально, да и с ошибками вроде бы. Пришлось написать свой. В качестве альтернативы FTDI можете взять CY7C68013A. Мы на нем получили чуть более 40 мбайт/с (зависит от материнки). Может проще купить готовую камеру на этой матрице? Их много кто-делает. Если нужно что-то особое, то пишите в личку.
Go to the top of the page
 
+Quote Post
torik
сообщение Jul 9 2008, 06:27
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Насчет USB2.0, присоединяюсь - CY7C68013A. Можно 1280*10240*30 гнать в реальном времени довольно легко. Но разбираться придется и в компьютерной программе и с контроллером и с USB, это самая сложная часть (на мой взгляд)...

Что же касается ПЛИС, все несколько проще:
в SOPC Builder (и не обязательно совсем, можно просто как модуль) ставите альтеровский контроллер SDRAM. Не соглашусь с вышесказанным, работает он нормально, для данной задачи подходит, не стоит городить свое...
DMA - вообще нафиг, просто делаете свой мастер в SOPC (фактически трансляция сигналов шины авалон), ставите FIFO, и пишете в память.
Про SOPC, мастер+SDRAM в этой ветке форума недавно все обсуждалось...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
dinam
сообщение Jul 9 2008, 06:48
Сообщение #4


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(torik @ Jul 9 2008, 13:27) *
Не соглашусь с вышесказанным, работает он нормально, для данной задачи подходит, не стоит городить свое...
Я упоминал примерно об этом
Go to the top of the page
 
+Quote Post
s.i.suprun
сообщение Jul 9 2008, 17:38
Сообщение #5


Участник
*

Группа: Validating
Сообщений: 71
Регистрация: 24-06-08
Из: Харьков
Пользователь №: 38 521



Спасибо Вам за ответы. Но возникли некоторые попутные вопросы и поправки ...
Во-первых,dinam прав камера действительно Micron smile.gif , но хотим сменить на что-нибудь другое, вследствие того, что ее характеристики уже не соответствуют предъявляемым требованиям sad.gif
Даная проектируемая система используется в флюрографической камере, последняя состоит из 4-х таких матриц через ЮСБ - хаб подключеных к ПК(он производит сшивку и обработку изображения). Даная система уже реально работающая , но работает она на связке Мега128+МАХ3000 (на последнем создано некое подобие ПДП и дополнительная логика). Память - статическая. Вот и возник вопрос перевести все это хозяйство на Cyclone и задействовать динамичезкую память.
Во-вторых, о передаче видео я пока не думал, хотя этот вопрос назревает (для рентгеноскопии) smile.gif , но сдесь я смотрю в сторону 1 Гб Эзернет, исходя из экономических показателей. Возникает дополнительная проблемма перенесения всех функций по считыванию и постообработке изображения с ПК на проектируемое устройство (товарищи из вражеской нам конторы smile.gif задействовали ресурсы ПК в результате - получилась машина работающая на 8-ми ядрах 07.gif ) . В этом случае предполагаю использовать АДСП БФ (товарищи админы извените, что чуток не в тот раздел), загрузив на него ядро Линукс, под ним и предполагается поднять Эзернет ( и использовать преимущества многопотоковой обработки даных ядром для обработки больших масивов даных), а дальше общение как между двумя машинами (Клиент-сервер), это будет более оптимально...
Сейчас хочу задействовать ЮСБ 2.0 HS, по той причине, что при теперешнем положении вещей, изображение с камер читается за 11 с.
В-третьих, на сколько я понимаю, фифо надо использовать как буфер между более низкоскоростной камерой и более быстрым ОЗУ? Если да, то я хочу использовать все составные блоки на одной частоте,частоте работы камеры 48 МГц, ну и задействовать корректировку с PLL для ОЗУ, если понадобиться (тем более CY7C68013A работает на этой частоте). Следовательно ФИФО мне не надо?
В-четвертых,пожалуйста подскажите хорошие источники по CY7C68013A, для роботы с нею как в железе так и со стороны ПК. Или какие нибудь самые элементарные примеры дайте посмотреть.
И еще, так на будущее, подскажите так все таки можно использовать ДМА в ручном режиме?
Буду очень признателен за ответы.

Сообщение отредактировал s.i.suprun - Jul 9 2008, 17:40
Go to the top of the page
 
+Quote Post
alexr22b
сообщение Jul 9 2008, 19:56
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 102
Регистрация: 11-10-04
Пользователь №: 849



Схему подключения к FPGA можно посмотреть здесь.
http://www.philcovington.com/QuickSilver/

Насчёт 1240x1024x30 = 38mb/s по USB 2.0 это получается только при достаточном болшом FIFO со стороны FPGA.


Цитата(s.i.suprun @ Jul 9 2008, 20:38) *
Сейчас хочу задействовать ЮСБ 2.0 HS, по той причине, что при теперешнем положении вещей, изображение с камер читается за 11 с.
В-третьих, на сколько я понимаю, фифо надо использовать как буфер между более низкоскоростной камерой и более быстрым ОЗУ? Если да, то я хочу использовать все составные блоки на одной частоте,частоте работы камеры 48 МГц, ну и задействовать корректировку с PLL для ОЗУ, если понадобиться (тем более CY7C68013A работает на этой частоте). Следовательно ФИФО мне не надо?
В-четвертых,пожалуйста подскажите хорошие источники по CY7C68013A, для роботы с нею как в железе так и со стороны ПК. Или какие нибудь самые элементарные примеры дайте посмотреть.
И еще, так на будущее, подскажите так все таки можно использовать ДМА в ручном режиме?
Буду очень признателен за ответы.
Go to the top of the page
 
+Quote Post
dinam
сообщение Jul 10 2008, 01:39
Сообщение #7


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



У нас тоже предполагается работа 4х камер в параллель smile.gif Одна работает мастером, остальные 3 ведомые - снимаем одновременно объект с 4х сторон. Изображение без всякой обработки гоним на компьютер (благо скорости USB 2.0 HS пока хватает), сшиваем и обрабатываем.
Насколько я сейчас в теме Blackfin имеет только 100мбит MAC.
По поводу FIFO. Количество используемых FIFO в моей камере зависит от типа матрицы, точнее на какой скорости она работает. У меня выходит 3-4 включенных последовательно. Первое FIFO нужно для согласования скоростей между матрицей и FIFO, сделанной на SDRAM. Также оно ещё необходимо, т.к. в некоторые моменты в SDRAM писать нельзя, точнее можно, но это надо серъёзно усложнять контроллер SDRAM, поэтому проще ещё одно FIFO поставить. Второе FIFO сделано на SDRAM, оно основное в котором хранится изображение. Третье для согласования скоростей между SDRAM и CY7C68013A, которая тоже работает в режиме slave FIFO. Т.е. уже можно сказать 4 FIFO получилось smile.gif . Также последнее FIFO необходимо для увеличения пропускной способности SDRAM. Я использую режим записи-чтения пакетами по 512 байт для 8 Мбайт SDRAM.
По поводу CY7C68013A - на сайте производителя есть примеры, да и в конфе про неё много написано.
Go to the top of the page
 
+Quote Post
torik
сообщение Jul 10 2008, 04:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Ну, если без предобработки гнать видео с матрицы в комп по USB HS, то на самом деле ПЛИС вообще не нужна, в CY7C68013A быть фифо... У меня USB-камера так и сделана...

Цитата
И еще, так на будущее, подскажите так все таки можно использовать ДМА в ручном режиме?


Дык также, как обращаться к любому другому устройству (в том числе к памяти) на шине авалон. Просто по своим адресам. Но, по-моему, это неудобно...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
dinam
сообщение Jul 10 2008, 05:04
Сообщение #9


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(torik @ Jul 10 2008, 11:54) *
Ну, если без предобработки гнать видео с матрицы в комп по USB HS, то на самом деле ПЛИС вообще не нужна, в CY7C68013A быть фифо... У меня USB-камера так и сделана...

Можно чуть поподробнее, как вы умудряетесь такой поток завести в компьютер без потерь и без FIFO 07.gif ? Какой режим используете? Ведь при bulk, который я применяю это невозможно.
Go to the top of the page
 
+Quote Post
torik
сообщение Jul 10 2008, 07:38
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Ну как так невозможно. Настраиваем одну точку bulk, 4-ех кратная буферизация через встроенное ФИФО. Матрица в режиме мастера, данные на PORTB (ну и еще пара сигналов, в т.ч. тактовая). Все, в режиме bulk раскачивается до ~40 МБайт/с (ну если честно, у меня матрица болье ~30 не дает). На компьютере используем драйвер от сайпрас без изменений. Немного подправили программу из примеров и вперед...
Все про это можно прочитать в соответсвующей ветке форума:
http://electronix.ru/forum/index.php?showforum=48

Еще точку для управления режимами матрицы. Изохронный режим слишком запарно...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
dinam
сообщение Jul 10 2008, 07:56
Сообщение #11


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Ну у меня камера расчитана на использование четырех разных типов сенсоров, поэтому без SDRAM ну никак smile.gif
Но по существу для варианта, если матрица работает на 48МГЦ и нам нужны только 8 бит. Драйверы у нас не кипарисовкие. И что я вижу (пишу по памяти). Сначала примерно 2кБайт в комп уходят сразу, потом следует пауза 200-800 микросекунд, потом в комп начинает лится поток примерно 39Мбайт/сек без всяких пауз. Это если комп больше ничем не занимается. У вас нет этой первоначальной паузы? Потом если происходит сбой в передаче по USB, то передача этого пакета повторяется. А матрица, то выдёт данные и куда их писать?
А если, например, подключаться через контроллер USB портов (плата PCI), то у меня вообще выходило не больше 25Мбайт/сек. Тогда как?
Go to the top of the page
 
+Quote Post
torik
сообщение Jul 10 2008, 09:35
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



USB при сбое повторяет сравнительно небольшой пакет, т.е. не вызовет сбоя (уложится в кадр). Если все же сбой - пусть кадр теряется тогда... Если все же быть предобработка, в т.ч. просто 4 матрицы, то да - ставьте SDRAM, это будет как большой FIFO.
Опишите подробнее - разрешение, частота кадров...
Например при 4-ёх камерах по 640*480*30 будет ~37МБайт/с, вполне можно в реальном времени передать по USB. На ПЛИСе тогда делать временное уплотнение, может попробовать обойтись внутренней памятью (запомнили по паре кБайт от камер, пока передаем поочереди в сайпрас, запоминаем следующие пару кБайт).


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
dinam
сообщение Jul 10 2008, 09:58
Сообщение #13


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(torik @ Jul 10 2008, 16:35) *
USB при сбое повторяет сравнительно небольшой пакет, т.е. не вызовет сбоя (уложится в кадр). Если все же сбой - пусть кадр теряется тогда... Опишите подробнее - разрешение, частота кадров...
Для примера - разрешение 1280x1024 30 кадов/сек. Я не совсем понял, про какие кадры вы говорите? Как пусть кадр теряется? Т.е. у вас нет гарантированной доставки кадра, выданного сенсором? Если так, то тогда всё понятно. У нас разные задачи. И у нас каждая камера подключена к своему USB, поэтому общий поток может быть для 4х камер до 39*4 = 156 мбайт/сек. Правда реальный конечно поменьше, т.к. мы используем не весь кадр да и матрицу притормаживаем smile.gif
Go to the top of the page
 
+Quote Post
torik
сообщение Jul 10 2008, 10:30
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Ну если 4 USB камеры, тогда вообще все нормально должно работать без ПЛИС...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
s.i.suprun
сообщение Jul 13 2008, 08:32
Сообщение #15


Участник
*

Группа: Validating
Сообщений: 71
Регистрация: 24-06-08
Из: Харьков
Пользователь №: 38 521



Цитата(torik @ Jul 10 2008, 07:54) *
Дык также, как обращаться к любому другому устройству (в том числе к памяти) на шине авалон. Просто по своим адресам. Но, по-моему, это неудобно...


По адресам, которые я в СОПСе указываю? А какие выводы шины использовать? write_n, writedata, read_n, readdata? или еще какие-то дополнительные сигнальные выводы? help.gif

Цитата(dinam @ Jul 10 2008, 04:39) *
У нас тоже предполагается работа 4х камер в параллель smile.gif Одна работает мастером, остальные 3 ведомые - снимаем одновременно объект с 4х сторон. Изображение без всякой обработки гоним на компьютер (благо скорости USB 2.0 HS пока хватает), сшиваем и обрабатываем.
Насколько я сейчас в теме Blackfin имеет только 100мбит MAC.
По поводу FIFO. Количество используемых FIFO в моей камере зависит от типа матрицы, точнее на какой скорости она работает. У меня выходит 3-4 включенных последовательно. Первое FIFO нужно для согласования скоростей между матрицей и FIFO, сделанной на SDRAM. Также оно ещё необходимо, т.к. в некоторые моменты в SDRAM писать нельзя, точнее можно, но это надо серъёзно усложнять контроллер SDRAM, поэтому проще ещё одно FIFO поставить. Второе FIFO сделано на SDRAM, оно основное в котором хранится изображение. Третье для согласования скоростей между SDRAM и CY7C68013A, которая тоже работает в режиме slave FIFO. Т.е. уже можно сказать 4 FIFO получилось smile.gif . Также последнее FIFO необходимо для увеличения пропускной способности SDRAM. Я использую режим записи-чтения пакетами по 512 байт для 8 Мбайт SDRAM.
По поводу CY7C68013A - на сайте производителя есть примеры, да и в конфе про неё много написано.


Вопрос того-же плана smile.gif А у фифо в СОПСе тоже стандартный набор выводов мастера на Авалоне, или есть что-то специфическое?
а на счет Blackfin я дома поищу, где-то ссылка была там что-то по поводу 1 Гб МАС на Blackfin и применения с ним uClinux было...

Сообщение отредактировал s.i.suprun - Jul 13 2008, 08:37
Go to the top of the page
 
+Quote Post

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

 


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


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