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

 
 
 
Reply to this topicStart new topic
> ряд вопросов от ламера, Я новичок. Подскажите, пожалуйста!
RHnd
сообщение Apr 13 2007, 18:03
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Здравствуйте.
Сначала написал этот пост в другой ветке форума, для новичков. Там посоветовали обратиться сюда. smile.gif

Я только начинаю осваивать FPGA, причем FPGA фирмы Altera. Осваивать их начинаю приминительно к проекту, который нужно сделать. Суть проекта - на пины поступает картинка попиксельно в rgb, эту картинку нужно считать, записать в память, определенным образом обработать, закодировать в jpeg и записать либо на CF, либо на SD.
Из всего этого я пока могу только ее обработать (там специальный алгоритм, поиск образов и всякое прочее, к сути дела отношения не имеет). Причем алгоритм обработки делать буду под ниосом. Мой начальный уровень в FPGA можно считать нулевым, но я стараюсь быстро учиться. smile.gif В распоряжении имеются Nios II Development Board Cyclon edition и Cyclon II starting board.

Теперь, вопросы:
1) Можно рассчитывать на консультации по ниосу в рамках этого форума?
2) Если мне с пинов нужно прочитать в память, то как это лучше сделать? Память общая с ниосом, соединять пины с памятью вне ниоса кажется не совсем удобным. Как лучше - програмно читать пины по синхроимпульсу и скидывать в память в самом ниосе или сделать элемент для SOPC, решающий эту задачу? Если второе, то как это вообще делается?
3) Что-то мне подсказывает, что ни сжатие в jpeg, ни чтение/запись в CF/SD самому с нуля делать не надо - наверняка есть готовые библиотеки. Так? Эти библиотеки идут как элементы для SOPC/Nios или как схемные устройства, которые нужно будет подключать через custom instructions?
4) Где можно найти эти библиотеки и где/как вообще вести поиск готовых решений для подобных задач?
5) Можно ли где-то/как-то раскриптовать IP Megafunctions Altera, есть ли универсальный дешифратор?
6) Вообще-то, я програмирую на C. Была наивная надежда, что хватит этих знаний плюс рисование схем в Quartus. Сейчас чувствую, что без знания/владения HDL не обойтись. Прав ли я? smile.gif

Заранее спасибо за любые ответы/советы/комментарии/пожелания. Буду очень признателен за помощь.
Go to the top of the page
 
+Quote Post
Andr2I
сообщение Apr 13 2007, 18:54
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 368
Регистрация: 16-11-06
Из: Тверь
Пользователь №: 22 379



Уверенно могу ответить только на последний вопрос - "без знания/владения HDL не обойтись".

Вообще Ваша задача мне представляется весьма нетривиальной особенно при реализации на FPGA и для новичка (как Вы себя позиционируете).
Возможно будет проще использовать DSP (Blackfin).
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 13 2007, 18:59
Сообщение #3


МедвеД Инженер I
****

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



Цитата(RHnd @ Apr 13 2007, 19:03) *
Теперь, вопросы:
1) Можно рассчитывать на консультации по ниосу в рамках этого форума?
2) Если мне с пинов нужно прочитать в память, то как это лучше сделать? Память общая с ниосом, соединять пины с памятью вне ниоса кажется не совсем удобным. Как лучше - програмно читать пины по синхроимпульсу и скидывать в память в самом ниосе или сделать элемент для SOPC, решающий эту задачу? Если второе, то как это вообще делается?
3) Что-то мне подсказывает, что ни сжатие в jpeg, ни чтение/запись в CF/SD самому с нуля делать не надо - наверняка есть готовые библиотеки. Так? Эти библиотеки идут как элементы для SOPC/Nios или как схемные устройства, которые нужно будет подключать через custom instructions?
4) Где можно найти эти библиотеки и где/как вообще вести поиск готовых решений для подобных задач?
5) Можно ли где-то/как-то раскриптовать IP Megafunctions Altera, есть ли универсальный дешифратор?
6) Вообще-то, я програмирую на C. Была наивная надежда, что хватит этих знаний плюс рисование схем в Quartus. Сейчас чувствую, что без знания/владения HDL не обойтись. Прав ли я? smile.gif

Заранее спасибо за любые ответы/советы/комментарии/пожелания. Буду очень признателен за помощь.

1)да
2)ниос не успеет потому элемент для SOPC придётся делать, читайте мануал как
3)не видел ничего 1)готового 2)бесплатного 3)безглюков.. ниос оставте в сторонке...не успеет он сжать в Jpeg и одновремеено читать и скаладывать в/из ram..
4) гуглить пробовали? есть http://www.opencores.com и http://www3.elphel.com/ru
5)ищите по форуму
6) О да!
и Andr2I вам хороший совет дал касательно BlackFin smile.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
CodeWarrior1241
сообщение Apr 13 2007, 19:32
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 496
Регистрация: 14-03-07
Из: In The District
Пользователь №: 26 165



Хочу добавить к предидущему постингу. Работа с ПЛИС часто может доставлять массу интелектуального удовольствия когда Вы сами создаете "integrated system on chip" своими "руками" biggrin.gif , но это не обязательно единственное решение, особенно когда Вашей схеме требуется "стандартные" блоки. JPEG encoding, CF/SD интерфайс, итд. все реализовано или в специализированых ИС, или легко кодируется на Си в стандартном МК и дастается с инета удостоверенным и готовиньким. Напремер, AD ADV212 совместно с видео декодером и 32-битовым МК легко справется с JPEG2000 compression, a это не тривиальная задача если делать самому на ПЛИС, и ядра для этого дорогие. Плюс, к готовым ИС есть документация и поддержка которые неоценимы для начинающего. Для более простых задач, типа digitizing JPEG/MPEG2 легко подойдет вышеупамятый DSP типа Blackfin или TMS320CXXXX от TI.


--------------------
In Mozilla, you keep tabs on your browser. In the USSR, your browser keeps tabs on you.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Apr 13 2007, 19:58
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Спасбо за ответы.

К сожалению (или не к сожалению), но так получилось, что делать надо именно на плис, прием именно на Cyclon. Вообще-то, мне казалось, что задача как сжатия в jpeg, так и записи на карту памяти - достаточно тривиальные. Жаль, что не так. sad.gif
Что ниос не сможет сам читать и складывать в память - я уже понял. sad.gif Но обработка изображения в ниосе так же быть должна. Так как же мне быть? Мое видение таково:
Поступают 10-ти битные коды пикселей с пинов. Частота примерно 2-3 мегапикселя в секунду. Кто-то должен эти пиксели скинуть в память (хочется использовать SDRAM). Кто это может быть? Либо какой-то контроллер памяти внешний относительно ниоса, либо ниос с SOPC модулем*. Если внешний контроллер памяти, то он должен как-то корректно эту память делить с самим ниосом.** Если ниос с SOPC, то, как я понял, это должен быть ниос, запараллеленый с тем ниосом, который будет обрабатывать и жать. Правильно ли я понимаю, и получится ли так сделать?
После того, как текущий кадр записан в память, мы можем приостоновить поступление следующих кадров на несколько секунд - пока не разрешим, поступать они не начнут. Значит, после записи кадра в память, ниос должен его считать, обработать, сжать и скинуть на карту памяти, после чего разрешить поступление следующего кадра. Тут очень хочется разрешить параллельное считывание следующего кадра во время обработки текущего, но это потом, пока надо хоть как-то сделать.
Если не затруднит, то не могли бы Вы прокоменнтировать мое видение вопроса и указать на возможные ошибки и заблуждения? Заранее спасибо!

* А где найти инструкцию по созданию SOPC модулей? Она в той главе HandBooka по квартусу, в которой SOPC Builder описывается?

**Получил на руки плату CyclonII Starting Development Kit. Начинаю с ней разибраться. На плате есть SDRAM. как подступиться к ней из ниоса я заню. Но вот возникает задача - записать в память извне ниоса, а прочитать потом эти данные ниосом. И вот тут я в ступоре - как подступиться к SDRAM извне и как согласовать потом это с ноиосом, чтоб они не кофликтовали? Пытался найти какую-нибудь мегафункцию контроллера SDRAM - не нашел.
Подскажите, плиз!

PS: А на какие вообще задачи ориентирован ниос?
Go to the top of the page
 
+Quote Post
Пушкин
сообщение Apr 13 2007, 20:40
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 66
Регистрация: 3-03-07
Пользователь №: 25 835



Сделать нужно свой модуль для SOPC, а чтоб согласовать с ниосом, так он должен сообжить вашему модля по какому адресу данные писать.Можно с альтеры скачать какие-нибудь примеры, работающие с памятью.

Модуль пишет в фифо, а потом из фифо дма контроллер в память.

Сообщение отредактировал Пушкин - Apr 13 2007, 20:45
Go to the top of the page
 
+Quote Post
RHnd
сообщение Apr 13 2007, 21:54
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(Пушкин @ Apr 13 2007, 21:40) *
Сделать нужно свой модуль для SOPC, а чтоб согласовать с ниосом, так он должен сообжить вашему модля по какому адресу данные писать.Можно с альтеры скачать какие-нибудь примеры, работающие с памятью.

Модуль пишет в фифо, а потом из фифо дма контроллер в память.


А модуль сам в память скидывать не может? Т.е. вся информация копится в фифо, а потом дма вызывается ниосом? К сожалению, у меня опыта в таких вопросах нет, как оно по времени будет? Какого размера должно быть фифо (оно, я так понимаю, на M4K делаться будет?). Будет ли успевать загонять в память 2-3 мегапикселя? Лучше бы 5.
Go to the top of the page
 
+Quote Post
Пушкин
сообщение Apr 13 2007, 22:29
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 66
Регистрация: 3-03-07
Пользователь №: 25 835



Модуль не может...Во-первых имеет смысл писать сразу по много байт, во-вторых память может быть занята в момент прихода пикселя.Дма вызывается наполненным фифо, а ниос сообщеает куда писать.Если нужно, чтоб пока ниос или еще что-то будет обсчитывать прошлую картинку, новая загружалась, то нужно чтоб ниос сообщал новый адрес для записи новой картинки.
Размер хз, это сразу не определишь, но в любом случае не много.
Да, М4К.
Будет, хоть все 50.
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Apr 13 2007, 22:54
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Цитата(Postoroniy_V @ Apr 13 2007, 09:59) *



Может не подойти лицензия. Наш код - только под GNU/GPL
Go to the top of the page
 
+Quote Post
RHnd
сообщение Apr 13 2007, 23:04
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(Пушкин @ Apr 13 2007, 23:29) *
Модуль не может...Во-первых имеет смысл писать сразу по много байт, во-вторых память может быть занята в момент прихода пикселя.
Если нужно, чтоб пока ниос или еще что-то будет обсчитывать прошлую картинку, новая загружалась, то нужно чтоб ниос сообщал новый адрес для записи новой картинки.

Да не, память занята быть не должна. Новый кадр поступать не будет пока плата не даст отмашку наружу. Один кадр поступает с высокой скоростью, а время между соседними кадрами варьируется произвольно самой системой и может достигать нескольких секунд. Но это все детали, с этим можно будет и потом разобраться.

Цитата(Пушкин @ Apr 13 2007, 23:29) *
Дма вызывается наполненным фифо, а ниос сообщеает куда писать.
Размер хз, это сразу не определишь, но в любом случае не много.
Будет, хоть все 50.

А какие вообще данные о скорости дма, пересылающего между фифо и SDRAM? Кстати, а с какой частотой вообще SDRAM работает? ДМА должен вызываться полным фифо? Или, может, лучше будет вызывать при каком-то проценте заполнения, сажем, 2/3?
И еще один вопрос: элементы для SOPC пишутся на xHDL? Или как они вообще разрабатываются? Можно где-нибудь посмотреть пример, чтоб порты были подключены к фифо, а фифо через SOPC к nios?
Большое спасибо за помощь и советы!
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 13 2007, 23:18
Сообщение #11


МедвеД Инженер I
****

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



Цитата(RHnd @ Apr 14 2007, 00:04) *
Да не, память занята быть не должна. Новый кадр поступать не будет пока плата не даст отмашку наружу. Один кадр поступает с высокой скоростью, а время между соседними кадрами варьируется произвольно самой системой и может достигать нескольких секунд. Но это все детали, с этим можно будет и потом разобраться.
А какие вообще данные о скорости дма, пересылающего между фифо и SDRAM? Кстати, а с какой частотой вообще SDRAM работает? ДМА должен вызываться полным фифо? Или, может, лучше будет вызывать при каком-то проценте заполнения, сажем, 2/3?
И еще один вопрос: элементы для SOPC пишутся на xHDL? Или как они вообще разрабатываются? Можно где-нибудь посмотреть пример, чтоб порты были подключены к фифо, а фифо через SOPC к nios?
Большое спасибо за помощь и советы!

вся инфа что вам нужна как ни страно здесь glare.gif
http://www.altera.com/literature/quartus2/lit-qts-sopc.jsp

данные по скорости по работе DMA зависят от частоты на которой вся ваша система будет работать
скажем 50 мгц. сдрам скажем у вас будет 32 бита значит можно будет "лить" не выше чем скорость 200 мб/с.
елементы sopc пишутся на vhdl, verilog или ещё можно "скармливать" sopc builder-у edif.
есть форум на англ там можно взять бесплатно кучу примеров для ниоса
http://www.niosforum.com

Имхо заморочки у вас только начались...а по большому счёту ничего не сделано smile.gif
я бы взял как вам советовали либо blackfin или что гораздно лучше ADV202 (212)
да и подкючил его к процу который вам хорошо известен и вы с ним работали...ну или к ниосу подключить adv -ку smile.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Пушкин
сообщение Apr 13 2007, 23:26
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 66
Регистрация: 3-03-07
Пользователь №: 25 835



Теоретический предел ширина авалона(32 бит) на частоту или тоже самое с памятью, что медленнее.
Разная бывает память с разными частотами. А так до 166мгц по-моему.
Ясное дело что не полным, а достаточным для записи некоторого пакета байтов(чтоб не терять на всяких служебных пересылках лишнее).
На xHDL, я на верилоге пишу. Ну скачайте с альтеры auto graphics reference design например, там это есть.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Apr 14 2007, 11:33
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(Postoroniy_V @ Apr 14 2007, 00:18) *
Имхо заморочки у вас только начались...а по большому счёту ничего не сделано smile.gif

Угу. Что есть, то есть. А как подумаю сколько еще впереди - страшно становится.

Цитата(Postoroniy_V @ Apr 14 2007, 00:18) *
я бы взял как вам советовали либо blackfin или что гораздно лучше ADV202 (212)
да и подкючил его к процу который вам хорошо известен и вы с ним работали...ну или к ниосу подключить adv -ку smile.gif

Я бы тоже. smile.gif Но есть команда - делать на fpga. Как я понимаю, там в нее хотят еще что-то запихать. sad.gif Вообщем, в выборе чипа я ограничен до выбора между Cyclon I - Cyclon II. smile.gif




На самом деле, ответы опытных людей на мои вопросы меня порядком растраивают. Мне как-то казалось, что это все более простая задача. sad.gif Даже возникают мысли о том, справлюсь ли я. Если не трудно, то не могли бы Вы прикинуть время, которое потребуется, чтоб изучить все сопутствующее, а потом решить задачу? Хотя бы примерно - месяц, полгода, год, пожизненно?

Набросал тут себе порядок изучения:
1) Сначала хочу закончить разбираться с платой Cyclon II Starter, - там есть в комплекте туториалы по разным темам + что-то вроде "лабораторных" к этой плате, завязаных, к тому же, на верилог. Хоть ознакомлюсь с ним.
2) Изучить главу, посвященную SOPC. Где-то здесь же спецификация Авалоновской шины.
3) Ближе ознакомиться с верилогом, потыкаться с ним, научиться писать модули к SOPC.
4) Сделать тот самый модуль, что будет входные данные гнать порт->фифо->дма->память. Потом ругнуться и переделать в рабочий вид. smile.gif
5) Далее уже ближе к самому ниосу. Подключить в виде custom instruction JPEG-кодер. Если такого не найду, то хотя бы подключить быстрое ДКП и гнать кадр из памяти в jpeg програмно.
6) Сделать запись на карточку. Как именно - пока не знаю.
7) Засунуть в ниос обработку кадра, все это скомпоновать, собрать, отладить и пойти отмечать.

Примерно так мне это все видется. Вы уж не серчайте, что глупые вопросы задаю и занудствую, все ведь когда-то с нуля начинали. smile.gif
Плохо, что на работе единственный человек, который занимался подобными вещами, уволился. Я там теперь в гордом одиночестве с поставленной задачей. help.gif
Go to the top of the page
 
+Quote Post
Пушкин
сообщение Apr 14 2007, 11:47
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 66
Регистрация: 3-03-07
Пользователь №: 25 835



Цитата(RHnd @ Apr 14 2007, 12:33) *
На самом деле, ответы опытных людей на мои вопросы меня порядком растраивают. Мне как-то казалось, что это все более простая задача. sad.gif Даже возникают мысли о том, справлюсь ли я. Если не трудно, то не могли бы Вы прикинуть время, которое потребуется, чтоб изучить все сопутствующее, а потом решить задачу? Хотя бы примерно - месяц, полгода, год, пожизненно?


Ну месяц на изучения всего этого хозяйства надо.Пару месяцев на написание проекта надо.
Но это так, мое мнение, а на самом деле все от вас зависит, может кто-то быстрее управится, а кому и всей жизни не хватит smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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