Jump to content
    

Основы работы с SoC

Добрый день уважаемые форумчане. Недавно дали поиграться такой вот платой: DE1-SOC-MTL2, TERASIC TECHNOLOGIES. Данная плата содержит богатый набор периферии на стороне FPGA и на стороне HPS. Если с доступом к периферии на стороне FPGA у меня вопросов не возникает, то как получить доступ к периферии на стороне HPS я на данный момент не имею ни малейшего понятия. Поскольку раньше я никогда не работал с SoC (системами на кристалле) появились затруднения в изучении этого вопроса. В частности не знаю с какой стороны подойти к изучению основ работы с SoC. Многие примеры, которые есть в сети, показывают как делать достаточно сложные и непонятные вещи для новичка, например запуск Linux и пр. А начать хочется с каких-нибудь простых вещей. К примеру на стороне HPS есть приёмник UART. Я хочу получить доступ со стороны FPGA к данным принимаемым этим приемником. Иными словами я хочу научиться общаться со стороны FPGA с периферий на стороне HPS.

К чему я хочу придти в итоге: в итоге я хочу создать собственный контроллер ЖК дисплея, принимающий данные по DVI, и выводящий этот видеопоток на LCD дисплей. Для этого я хочу использовать память DDR3 на стороне HPS в качестве кадрового буфера. На данный момент я на более простой плате МАРСОХОД2 смог реализовать: прием данных изображения по UART, запись этого изображения в SDRAM память, и вывод изображения из памяти на LVDS матрицу. Для принятия видеопотока по DVI на плате МАРСОХОД2 не хватает LVDS входов.

Очень прошу помощи в подсказке, с чего начать изучение базовых вещей для работы с SoC.

 

Share this post


Link to post
Share on other sites

Добрый день уважаемые форумчане. Недавно дали поиграться такой вот платой: DE1-SOC-MTL2, TERASIC TECHNOLOGIES. Данная плата содержит богатый набор периферии на стороне FPGA и на стороне HPS. Если с доступом к периферии на стороне FPGA у меня вопросов не возникает, то как получить доступ к периферии на стороне HPS я на данный момент не имею ни малейшего понятия. Поскольку раньше я никогда не работал с SoC (системами на кристалле) появились затруднения в изучении этого вопроса. В частности не знаю с какой стороны подойти к изучению основ работы с SoC. Многие примеры, которые есть в сети, показывают как делать достаточно сложные и непонятные вещи для новичка, например запуск Linux и пр. А начать хочется с каких-нибудь простых вещей. К примеру на стороне HPS есть приёмник UART. Я хочу получить доступ со стороны FPGA к данным принимаемым этим приемником. Иными словами я хочу научиться общаться со стороны FPGA с периферий на стороне HPS.

К чему я хочу придти в итоге: в итоге я хочу создать собственный контроллер ЖК дисплея, принимающий данные по DVI, и выводящий этот видеопоток на LCD дисплей. Для этого я хочу использовать память DDR3 на стороне HPS в качестве кадрового буфера. На данный момент я на более простой плате МАРСОХОД2 смог реализовать: прием данных изображения по UART, запись этого изображения в SDRAM память, и вывод изображения из памяти на LVDS матрицу. Для принятия видеопотока по DVI на плате МАРСОХОД2 не хватает LVDS входов.

Очень прошу помощи в подсказке, с чего начать изучение базовых вещей для работы с SoC.

В SoC главное, как в танке - не дрейфить. С Альтеровскими не работал. Только с ксалинксовыми Зинками. Процес обучения получился ступеньчатым.

FPGA в SoC есть обычный FPGA, а CPU есть обычный CPU. Нужно изучить как их связать, т.е. axi интерконнект и разобрать настройки АРМа. Написать самый простой модуль для FPGA который будет писать даные в память. Написать простую програму для АРМа, советую до линукса - bare-metal, легче разбирать собственные ошибки.

Cначала могут испугать толстые мануалы, которые в один присест не скурить. От простого к сложному, ничего сложного там нет.

Share this post


Link to post
Share on other sites

В SoC главное, как в танке - не дрейфить. С Альтеровскими не работал. Только с ксалинксовыми Зинками. Процес обучения получился ступеньчатым.

FPGA в SoC есть обычный FPGA, а CPU есть обычный CPU. Нужно изучить как их связать, т.е. axi интерконнект и разобрать настройки АРМа. Написать самый простой модуль для FPGA который будет писать даные в память. Написать простую програму для АРМа, советую до линукса - bare-metal, легче разбирать собственные ошибки.

Cначала могут испугать толстые мануалы, которые в один присест не скурить. От простого к сложному, ничего сложного там нет.

Вот сейчас и тыкаюсь. Пытаюсь понять с чего начать. Пытаюсь понять как работает инструмент Qusys . Поскольку, как я понял, это основной инструмент для разработки FPGA <==> HPS

Share this post


Link to post
Share on other sites

Альтера выкладывает тонны документации, полно вебинаров и аппликух. www.altera.com

На ютубе видео выложили как писать приложения под Soc https://www.youtube.com/watch?v=iyEZOx1YwmM

Обучалка на Вашу плату https://www.youtube.com/watch?v=52cMPKlrn28

Видео на несколько уроков как программировать Вашу плату от Altera

Конкретно по UART https://www.youtube.com/watch?v=fMmcSpgOtJ4

Полагаю в комплекте с платой документация и куча примеров.

 

Edited by hsoft

Share this post


Link to post
Share on other sites

Как то не верится в то, что Вы тыкаетесь...

Альтера выкладывает тонны документации, полно вебинаров и аппликух. www.altera.com

На ютубе видео выложили как писать приложения под Soc https://www.youtube.com/watch?v=iyEZOx1YwmM

Обучалка на Вашу плату https://www.youtube.com/watch?v=52cMPKlrn28

Видео на несколько уроков как программировать Вашу плату от Altera

Конкретно по UART https://www.youtube.com/watch?v=fMmcSpgOtJ4

Полагаю в комплекте с платой документация и куча примеров.

Может пора проинсталлировать кит и заглянуть в папку getting started.

Вы серьезно думаете, что человек, который ни разу не работал с SoC будет сходу писать приложения под SoC ?

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

Видео, которые мне Вы выложили я посмотрел. Чему я должен был с них научиться ? Более того DE1 и DE1-SOC это разные платы.... Приемопередатчик UART на стороне ПЛИС я уже давно реализовал. И он давно успешно работает.

А вот как UART сигнал приходящий на ножку HPS словить словить при помощи FPGA - для меня загадка. Та-же самая мигалка светодиодом потребует создания моста между FPGA <==> HPS поскольку светодиод расположен на стороне FPGA.

Вот я и задал вопрос, с чего начать, чтобы познать совсем базовые вещи.

 

 

 

Share this post


Link to post
Share on other sites

Вы серьезно думаете, что человек, который ни разу не работал с SoC будет сходу писать приложения под SoC ?

Не переживайте так, это извечная проблема обвинений в недостаточности изучения вопроса перед созданием темы, я бы на такое не реагировал в принципе.

 

Чтобы понять эти современные SoC, выше уже правильно написано что "FPGA в SoC есть обычный FPGA, а CPU есть обычный CPU". Иными словами, можно смотреть на то что у Вас на столе как просто ПЛИСину и как просто отдельный ARM проц, просто они в одном корпусе очутились, а так бы их соединяли линиями на плате по какой-то шине. Соответственно, дрыгать ножкой HPS части из массива FPGA нет возможности, как и наборот. Там есть, если я всё верно понимаю, относительно узкая шина между FPGA и ARM - вот через нее можно связывать две части.

 

Так что HPS это тупо обычный ARM с Linux. Мне приходилось работать с SoC Altera, точнее тестировать FPGA-часть имитируя HPS в тестах, и если я не ошибаюсь, я увидел там примитивную 32-битную шину. Был написан специальный драйвер для ОС Linux для возможности такого взаимодействия.

 

Если мои представления неверны, допускаю, то прошу знающих нежно поправить мои слова :)

Share this post


Link to post
Share on other sites

Соответственно, дрыгать ножкой HPS части из массива FPGA нет возможности, как и наборот. Там есть, если я всё верно понимаю, относительно узкая шина между FPGA и ARM - вот через нее можно связывать две части.

 

Если мои представления неверны, допускаю, то прошу знающих нежно поправить мои слова :)

 

Поправляю - из HPS можно дрыгать FPGA'шными пинами, и из FPGA можно дрыгать ногами HPS. Но это не является основной ценностью SoC и на практике мало кому нужно.

Типичный сценарий - в FPGA размещают специфическую периферию или акселераторы (ЦОС всякий). Для ARM'а эти блоки выглядят как обычная процессорная периферия и программисты могут со всем этим делом работать, писать драйвера и пр.

 

Вот пример референсный для Atlas-SoC:https://rocketboards.org/foswiki/pub/Documentation/AtlasSoCDevelopmentPlatform/System-Block-Diagram.jpg?t=1449696813

Он наглядно показывает, что "железный" FFT на FPGA быстрее программного.

 

В общем, youtube и rocketboards вам в помощь

Edited by goodsoul

Share this post


Link to post
Share on other sites

Вот сейчас и тыкаюсь. Пытаюсь понять с чего начать. Пытаюсь понять как работает инструмент Qusys . Поскольку, как я понял, это основной инструмент для разработки FPGA <==> HPS

Почитайте статьи des333 на Хабре про SoC Altera (в частности конфигурирование шин между fpga и HPS).

По шине fpga2hps можно залезть по Avalon в любой IP блок HPS (UART, EMAC, ...) и управлять им напрямую.

Единственное, что может понадобится "разблокировать внешний доступ к IP-блоку HPS", тк он может после ресета быть залочен "только для HPS" или отключен.

 

Share this post


Link to post
Share on other sites

Поправляю - из HPS можно дрыгать FPGA'шными пинами, и из FPGA можно дрыгать ногами HPS

Вот прям напрямую и непосредственно??? Не вешая вплисную периферию на общую шину с процом? Если CPU->FPGA я еще представляю, то обратное не очень. В любом случае, спасибо за пояснение :)

Share this post


Link to post
Share on other sites

Мне rocketboards.org сильно помог в своё время. Там есть альтеровские семинары с примерами.

Share this post


Link to post
Share on other sites

В SoC главное, как в танке - не дрейфить. С Альтеровскими не работал. Только с ксалинксовыми Зинками. Процес обучения получился ступеньчатым.

FPGA в SoC есть обычный FPGA, а CPU есть обычный CPU. Нужно изучить как их связать, т.е. axi интерконнект и разобрать настройки АРМа. Написать самый простой модуль для FPGA который будет писать даные в память. Написать простую програму для АРМа, советую до линукса - bare-metal, легче разбирать собственные ошибки.

Cначала могут испугать толстые мануалы, которые в один присест не скурить. От простого к сложному, ничего сложного там нет.

Как я понял bare-metal - это ПО, которое работает без операционной системы. Т.е программа где-то храниться, и процессор её исполняет. А вот можно поподробнее про это узнать ?

Примеров для DE1-SOC вообще не нашёл.

Edited by Flip-fl0p

Share this post


Link to post
Share on other sites

Как я понял bare-metal - это ПО, которое работает без операционной системы. Т.е программа где-то храниться, и процессор её исполняет.

Да, к примеру - программа для ARM и прошивка для FPGA хранятся на SD карте, загрузчик их загружает по очереди и передаёт управление ARMу.

 

Примеры для DE1-SoC есть на сайте Terasic в виде образа CD-ROM на этой страничке.

 

Попробуйте всё же ознакомиться с документацией на SoC - здесь.

Подраздел Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual, и конкретно Booting and Configuration.

Share this post


Link to post
Share on other sites

Да, к примеру - программа для ARM и прошивка для FPGA хранятся на SD карте, загрузчик их загружает по очереди и передаёт управление ARMу.

 

Примеры для DE1-SoC есть на сайте Terasic в виде образа CD-ROM на этой страничке.

 

Попробуйте всё же ознакомиться с документацией на SoC - здесь.

Подраздел Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual, и конкретно Booting and Configuration.

Спасибо ! Оказалось, что содержимое образов дисков для платы DE1-SoC-MTL2, которая у меня, и для платы DE1-SoC, сильно отличается. В частности для платы DE1-SoC UserManual содержит гораздо больше примеров. А я всё думал, почему для платы DE1-SoC-MTL2 нет никаких примеров даже на диске...

Edited by Flip-fl0p

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...