|
Еще раз о применении DMA+SDRAM без Nios, Помогите разобраться |
|
|
|
Jul 8 2008, 16:57
|
Участник

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

|
Доброго времени суток!!! Товарищи специалисты помогите, пожалуйста. Возникла задача по созданию системы которая будет получать изображение с КМОП-матрицы (матрица управляется через i2c), через связку DMA+SDRAM укладывать данные в динамическую память, а потом после небольшой обработки (блок который будет обеспечивать взаимодействие всех перечисленых блоков будет свой на VHDL), передавать через FTDI245 в PC. Работаю я с QUARTUS 7.2, прочитав документацию на Avalon и существующие на этом сайте топики, разобрался,как экпортировать входы SDRAM на наружу(в целях эксперимента), но вот с DMA дело обстоит похуже. Если кто может подскажите как управлять DMA-каналом не програмно, а аппаратно, подавая на соответствующие вывоводы сигналы. Если это возможно, то какие выводы надо создать для всех троих портов (управления, чтения и записи)? И попутно еще один вопрос, подскажите пожалуйста аналог упомянутой выше FTDI с паралельным входом,работа с которой на стороне компьютера похожа на FTDI( поскольку я не программист, а имеющиеся в наличии кадры в этих делах тоже не особо  ), которая поддерживает USB 2.0 HS много не надо, но чтобы было хотя бы 30 Мб/сек  . Пожалуйста помогите, буду очень признателен!!!!
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 21)
|
Jul 9 2008, 06:27
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jul 9 2008, 17:38
|
Участник

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

|
Спасибо Вам за ответы. Но возникли некоторые попутные вопросы и поправки ... Во-первых, dinam прав камера действительно Micron  , но хотим сменить на что-нибудь другое, вследствие того, что ее характеристики уже не соответствуют предъявляемым требованиям  Даная проектируемая система используется в флюрографической камере, последняя состоит из 4-х таких матриц через ЮСБ - хаб подключеных к ПК(он производит сшивку и обработку изображения). Даная система уже реально работающая , но работает она на связке Мега128+МАХ3000 (на последнем создано некое подобие ПДП и дополнительная логика). Память - статическая. Вот и возник вопрос перевести все это хозяйство на Cyclone и задействовать динамичезкую память. Во-вторых, о передаче видео я пока не думал, хотя этот вопрос назревает (для рентгеноскопии)  , но сдесь я смотрю в сторону 1 Гб Эзернет, исходя из экономических показателей. Возникает дополнительная проблемма перенесения всех функций по считыванию и постообработке изображения с ПК на проектируемое устройство (товарищи из вражеской нам конторы  задействовали ресурсы ПК в результате - получилась машина работающая на 8-ми ядрах  ) . В этом случае предполагаю использовать АДСП БФ (товарищи админы извените, что чуток не в тот раздел), загрузив на него ядро Линукс, под ним и предполагается поднять Эзернет ( и использовать преимущества многопотоковой обработки даных ядром для обработки больших масивов даных), а дальше общение как между двумя машинами (Клиент-сервер), это будет более оптимально... Сейчас хочу задействовать ЮСБ 2.0 HS, по той причине, что при теперешнем положении вещей, изображение с камер читается за 11 с. В-третьих, на сколько я понимаю, фифо надо использовать как буфер между более низкоскоростной камерой и более быстрым ОЗУ? Если да, то я хочу использовать все составные блоки на одной частоте,частоте работы камеры 48 МГц, ну и задействовать корректировку с PLL для ОЗУ, если понадобиться (тем более CY7C68013A работает на этой частоте). Следовательно ФИФО мне не надо? В-четвертых,пожалуйста подскажите хорошие источники по CY7C68013A, для роботы с нею как в железе так и со стороны ПК. Или какие нибудь самые элементарные примеры дайте посмотреть. И еще, так на будущее, подскажите так все таки можно использовать ДМА в ручном режиме? Буду очень признателен за ответы.
Сообщение отредактировал s.i.suprun - Jul 9 2008, 17:40
|
|
|
|
|
Jul 9 2008, 19:56
|
Частый гость
 
Группа: Свой
Сообщений: 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, для роботы с нею как в железе так и со стороны ПК. Или какие нибудь самые элементарные примеры дайте посмотреть. И еще, так на будущее, подскажите так все таки можно использовать ДМА в ручном режиме? Буду очень признателен за ответы.
|
|
|
|
|
Jul 10 2008, 01:39
|
Профессионал
    
Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898

|
У нас тоже предполагается работа 4х камер в параллель  Одна работает мастером, остальные 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 получилось  . Также последнее FIFO необходимо для увеличения пропускной способности SDRAM. Я использую режим записи-чтения пакетами по 512 байт для 8 Мбайт SDRAM. По поводу CY7C68013A - на сайте производителя есть примеры, да и в конфе про неё много написано.
|
|
|
|
|
Jul 10 2008, 07:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898

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

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

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

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

|
Цитата(torik @ Jul 10 2008, 07:54)  Дык также, как обращаться к любому другому устройству (в том числе к памяти) на шине авалон. Просто по своим адресам. Но, по-моему, это неудобно... По адресам, которые я в СОПСе указываю? А какие выводы шины использовать? write_n, writedata, read_n, readdata? или еще какие-то дополнительные сигнальные выводы?  Цитата(dinam @ Jul 10 2008, 04:39)  У нас тоже предполагается работа 4х камер в параллель  Одна работает мастером, остальные 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 получилось  . Также последнее FIFO необходимо для увеличения пропускной способности SDRAM. Я использую режим записи-чтения пакетами по 512 байт для 8 Мбайт SDRAM. По поводу CY7C68013A - на сайте производителя есть примеры, да и в конфе про неё много написано. Вопрос того-же плана  А у фифо в СОПСе тоже стандартный набор выводов мастера на Авалоне, или есть что-то специфическое? а на счет Blackfin я дома поищу, где-то ссылка была там что-то по поводу 1 Гб МАС на Blackfin и применения с ним uClinux было...
Сообщение отредактировал s.i.suprun - Jul 13 2008, 08:37
|
|
|
|
|
Jul 13 2008, 09:38
|
Участник

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

|
И еще один вопрос: хотел вчера промоделировать в Квартусе СДРМ - контроллер, все служебные сигналы (рас, кас) генерит, но проблема в следующем: запись: выставляю на мастере: write_n в 0 на шине даных - то чего хочу записать ну и адрес понятно, а на выходе контроллера получаю непонятно что: адреса на выыходе отстают от мастера на 3 такта (ну тут понятно - настройки контроллера в СОПС  ), адреса на выходе контроллера в 2 раза меньше чем на входе но тут вроде тоже понятно(пишу по 16 бит), но вот адреса контроллер коректно понимает лишь когда входные адреса не выходят за пределы 512, если больше,то на выходе какой-то бред(Выставлял на мастере FFF, в результате на выходе СДРАМ - FF  )? Может я не правильно адресацию делаю или ысчо что-то подскажите, плз!!!! Второй прикол - на вывод мастера readdata, пролазят сигналы с выводов DQ и при чтении (понятно  ) , но и при записи в память  , причем при чтении данные начинают поступать сразу же, не внимая обращение на задержку при включении и значение сигнала read_n.... Пожалуйста подскажите правильный порядок при чтении и записи СДРАМ, плз
|
|
|
|
|
Jul 28 2008, 15:56
|
Участник

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

|
Спасибо Всем за ответы. Проблема была с СДРАМ когтроллером в Квартусе. Некоторое время назад скачал 8-ю версию, запустил там, все работает как Швейцарские часы  . На счет ФИФО поступил следующим образом: взял в СОПСЕ "Крос клок мост" и согласовал в нем по частотам входной поток сосбно камера и СДРАМ. В том мосте поняное дело своя ФИФА есть. Все замечательно, но хочется пойти дальше  , и возникает следующий вопрос, уж сколь раньше обговаривалась тема передачи через ЮСБ типа CY7C68013A. На сколько я понял она со входным UTMI интерфейсом, дак вот в 8-м Квартусе есть ядро высокоскоросного ЮСБ с выходным интерфейсом такого типа, а вход - Avalon. Ядро это представлено конторой SLS, но требует лицензии от последней, вроде как можно получить и фришную лицензию, я уже сколько не делал реквест - нифига (авторизировался на ихнем сайте), пишут через 24 часа будет, а уже 4 дня ничего не видно  , я в ихнюю службу поддержки уже и телегу накатал - молчат буржуи проклятые  , может кто-то пробовал это ядро (ну и понятное дело лицензию получил) , поделитесь опытом как, энто дело провернуть  , ну и как оно (ядро) в обчем катает. Я так понимаю что в случае использования последнего ПЛИС мона напрямую с CY7C68013A использовать без дополнительных наворотов ... И есче одно хотел на том же родимом сайте скачать контроллер i2c c шиной Авалон, но там обратная беда лицензию прислали, а ядро контроллера слить не дают.  . Товарищи, большая просьба если у кого нибудь есть поделитесь плз.  Просто очень быстро надо, я уже начал сам писать протокол, но это просто время. На опенкоре нашел, все замечательно, компилится, но вот промоделировать его не могу, вылетают ошибки моделирования, а бросать на кристал "кота в мешке" особо не хочется...
|
|
|
|
|
Jul 28 2008, 16:02
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(s.i.suprun @ Jul 29 2008, 00:56)  Спасибо Всем за ответы. Проблема была с СДРАМ когтроллером в Квартусе. Некоторое время назад скачал 8-ю версию, запустил там, все работает как Швейцарские часы  . На счет ФИФО поступил следующим образом: взял в СОПСЕ "Крос клок мост" и согласовал в нем по частотам входной поток сосбно камера и СДРАМ. В том мосте поняное дело своя ФИФА есть. Все замечательно, но хочется пойти дальше  , и возникает следующий вопрос, уж сколь раньше обговаривалась тема передачи через ЮСБ типа CY7C68013A. На сколько я понял она со входным UTMI интерфейсом, дак вот в 8-м Квартусе есть ядро высокоскоросного ЮСБ с выходным интерфейсом такого типа, а вход - Avalon. Ядро это представлено конторой SLS, но требует лицензии от последней, вроде как можно получить и фришную лицензию, я уже сколько не делал реквест - нифига (авторизировался на ихнем сайте), пишут через 24 часа будет, а уже 4 дня ничего не видно  , я в ихнюю службу поддержки уже и телегу накатал - молчат буржуи проклятые  , может кто-то пробовал это ядро (ну и понятное дело лицензию получил) , поделитесь опытом как, энто дело провернуть  , ну и как оно (ядро) в обчем катает. Я так понимаю что в случае использования последнего ПЛИС мона напрямую с CY7C68013A использовать без дополнительных наворотов ... И есче одно хотел на том же родимом сайте скачать контроллер i2c c шиной Авалон, но там обратная беда лицензию прислали, а ядро контроллера слить не дают.  . Товарищи, большая просьба если у кого нибудь есть поделитесь плз.  Просто очень быстро надо, я уже начал сам писать протокол, но это просто время. На опенкоре нашел, все замечательно, компилится, но вот промоделировать его не могу, вылетают ошибки моделирования, а бросать на кристал "кота в мешке" особо не хочется... по поводу и2ц с опенкор - работает, конечно же с небольшой модификацией  , так что это не кот в мешке по поводу юсб кипарис68013, сделайте ему фифо интерфейс и у себя к авалану подключите, это тоже работает отлично. читайте про фифо режим у 68013
--------------------
Cogito ergo sum
|
|
|
|
|
Jul 29 2008, 09:01
|
Участник

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

|
Цитата(Postoroniy_V @ Jul 28 2008, 19:02)  по поводу и2ц с опенкор - работает, конечно же с небольшой модификацией  , так что это не кот в мешке по поводу юсб кипарис68013, сделайте ему фифо интерфейс и у себя к авалану подключите, это тоже работает отлично. читайте про фифо режим у 68013 А что Вы скажете по поводу USB3300, не пробовали ее в работе? Я все-таки у товарищей с SLS выпросил лицензию на ядро ЮСБ 2.0 с UTMI интерфейсом, так вот это вроде не сложная (на первый взгляд, тем более имея готовую корку) штуковина тем более,что она есть на складе да и стоит в 4 раза дешевле CY7c68013A, что и понятно поскольку последний - контроллер.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|