Введение в ПЛИС

Базовый курс

Андрей Жадан______________________Ростов-на-Дону______________________2024


Предисловие к циклу статей

Цикл статей посвящен изучению базовых принципов работы с ПЛИС. Данная статья включает в себя оглавление с ссылками на последующие публикации и введение курса. Последующие статьи будут раскрывать отдельные темы курса, возможно, также появятся вспомогательные статьи по разбору проектных заданий и сборник материалов профессионального уровня.

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


Оглавление

  1. Что такое ПЛИС.

    • Определение.

    • История развития ПЛИС.

    • Типы ПЛИС.

    • Сравнение ПЛИС с другими интегральными схемами.

    • Работа с ПЛИС.

    • Производители ПЛИС.

    • Задание 1.

  2. Языки описания аппаратуры.

    • HDL.

    • История развития.

    • Модульный принцип организации проектов.

    • Комментарии.

    • Примеры описания модуля.

    • Типы данных.

    • Состояния линий и форматы чисел.

    • parameter и localparam.

    • Операции в SystemVerilog.

    • always-блок.

    • Задание 2.

  3. Процесс сборки и системы симуляции.

    • Quartus и Vivado.

    • Процесс сборки проекта.

    • Препроцессор.

    • Анализ исходного кода.

    • Синтез проекта.

    • Implementation.

    • Знакомство с процессом симуляции.

    • Виды Симуляции.

    • Testbench.

    • Системные функции.

    • Задание 3.

  4. Подготовка проекта к портированию на плату.

    • Тип ПЛИС.

    • Серии и поколения.

    • Внутреннее устройство.

    • Примитивы.

    • Атрибуты.

    • Сопоставление пинов.

    • Дифференциальные сигналы.

    • Задание 4.

  5. Конфигурация ПЛИС. Временные параметры.

    • Файл конфигурации ПЛИС.

    • JTAG.

    • Подключение к ПЛИС.

    • Логические анализаторы.

    • Анализ временных параметров.

    • Констрейнты.

    • Задание 5.

  6. Система распределения тактовых сигналов. IP-блоки.

    • Дерево тактирования. Глобальные и локальные клоки.

    • Сигналы сброса.

    • Клоковые буферы.

    • IP-блоки.

    • PLL и MMCM.

    • Задание 6.

  7. Внутрисистемные интерфейсы (Avalon/AXI). Потоковые интерфейсы (Streaming).

    • AXI Stream.

    • AvalonST.

    • Пакетная передача данных.

    • Модули FIFO. Одноклоковые и двухклоковые.

    • Переход между тактовыми доменами. Код Грея.

    • Метастабильность.

    • Задание 7.

  8. Внутрисистемные интерфейсы (Avalon/AXI). Адресные интерфейсы (Memory mapped).

    • Взаимодействие Master-Slave.

    • Контрольно-статусный регистр (CSR).

    • Типы управляющих воздействий.

    • Avalon-MM.

    • AXI-Lite.

    • AXI3 и AXI4.

    • Режим Burst.

    • Задание 8.

  9. Периферийные последовательные интерфейсы. UART, SPI, I2C, CAN.

    • UART.

    • RS485, RS422, RS232.

    • SPI.

    • I2C.

    • CAN.

    • Типовые задачи управления периферией.

    • Задание 9.

  10. Начала цифровой обработки на ПЛИС.

    • Съем данных с АЦП.

    • Теорема Котельникова. Зоны Найквиста. Частота дискретизации.

    • Квадратурное понижающее преобразование.

    • Числа с плавающей точкой. IEEE754.

    • Цифровая фильтрация. КИХ-фильтр.

    • Блоки generate.

    • Функции и таски.

    • Задание 10.

  11. Знакомство с системами интеграции. Platform Designer / Qsys - IP Integrator.

    • Platform Designer / Qsys.

    • IP Integrator.

    • Обзор встроенных IP-ядер.

    • Источник тактового сигнала.

    • Ввод/вывод данных. GPIO.

    • Интерконнект.

    • Добавление собственных IP-ядер.

    • Задание 11.

  12. Знакомство с софт-процессорными системами. Microblaze и Nios.

    • Microblaze.

    • Nios II.

    • Nios V.

    • Адресация.

    • Память инструкций и пользовательская память.

    • Прерывания. Контроллер прерываний.

    • Задание 12.

  13. Продолжение работы с процессорными системами. Знакомство с SDK и процессом написания встроенного ПО.

    • Nios II Software build tools for eclipse.

    • Xilinx SDK.

    • Vitis.

    • BSP.

    • .elf и конфигурирование системы.

    • Базовые принципы написания встроенного ПО.

    • Задание 13.

  14. Элементы памяти DDR.

    • Типы элементов памяти DDR.

    • Разбор временных характеристик микросхем.

    • Задание 14.

  15. Прямой доступ к памяти. Знакомство с ядрами DMA.

    • MSGDMA.

    • Дескрипторы.

    • Диспетчер.

    • Префетчер.

    • Задание 15.

  16. Высокоскоростные трансиверы. SFP-модули. Интерфейсы SerialLite и Aurora.

    • Высокоскоростные приемо-передатчики. Принципы ввода-вывода и тактирования.

    • Аппаратное блоки.

    • Aurora.

    • SerialLiteII.

    • SerialLiteIII.

    • SFP-модули.

    • Задание 16.

  17. PCI-e. Драйверы устройств.

    • PCI-e.

    • Драйверы устройств.

    • Linux.

    • Задание 17.

  18. Сетевое взаимодействие. Ethernet. Уровни модели OSI.

    • Сетевое взаимодействие.

    • Уровни модели OSI.

    • RJ45.

    • Ethernet.

    • UDP.

    • TCP.

    • IP.

    • Задание 18.

  19. Цифровая обработка сигналов. Цифровые фильтры, БПФ.

    • БПФ.

    • Различные виды фильтров.

    • Модуляторы и демодуляторы.

    • Задание 19.

  20. Системы на кристалле.

    • Сборка процессорной системы.

    • Bootloader. UBoot.

    • Device Tree.

    • Модули ядра.

    • Задание 20.

  21. Верификация. UVM.

    • UVM.

    • Agent. Sequencer. Driver. Monitor.

    • Формальная верификация.

    • Задание 21.

Методические рекомендации.

При подготовке данного пособия я опирался на средний уровень студентов старших курсов бакалавриата и магистратуры физического факультета ЮФУ (начиная с 3 – 4го курса). Предполагается, что студенты уже знакомы с основами дискретной математики (булева алгебра) и схемотехники. Однако, данные условия не являются категоричными, неизвестные понятия и конструкции могут быть разобраны самостоятельно параллельно с прохождением курса. Поэтому пособие может быть полезно для всех, кто хочет разобраться в теме разработки проектов на ПЛИС.

Курс носит ознакомительный характер, призван дать общее понимание специфики работы с ПЛИС. Он составлен в основном на базе личного опыта автора с использованием различных материалов, но редким прямым цитированием, а также с использованием языковых моделей, в частности ChatGPT. Пособие не является истиной в последней инстанции и может содержать ошибки и неточности. При нахождении таких прошу уведомить меня по адресу z.a.013@rambler.ru. По задумке курс должен состоять из двух частей: «Введение в ПЛИС» и «Разработка на ПЛИС», где первая часть будет знакомить с актуальной тематикой профессии, а вторая будет представлять из себя сборник статей и материалов, которые подробным образом описывают конкретную тему.

Наилучшим, на мой взгляд, способом организации занятий будет организация курса по выбору, который смогут посещать, как студенты разных направлений факультета, так и студенты других факультетов по желанию. Занятия могут, например, осуществляться в виде двух пар (4х академических часов) один раз в две недели с совмещением теоретической подготовки и практических занятий. По ходу курса фокус должен постепенно смещаться с теории на практику. Завершаться курс может выполнением проектного задания. Проектное задание может быть как отдельной задачей, так и являться курсовой работой, выпускной квалификационной работой бакалавра или магистерской диссертацией.

В качестве материальной базы для выполнения проектных заданий буду рассматривать плату AX7A035B от Alinx и набор плат расширения: AN9767(2-канальный ЦАП (14 бит, 125MSPS)), AN9238(2-канальный АЦП (12 бит, 65MSPS)), AN706(8-канальный АЦП (16 бит, 200kSPS)), AN5642(бинокулярная камера), AN430(дисплей). Будем считать, что на группу из 12 человек мы имеем 3 базовых платы AX7A035B и по одной плате расширения. Для дальнейшего изучения систем на кристалле будем использовать плату управления Antminer S9 на базе ZYNQ7010. Также нам потребуется программатор, источник питания и, само собой, ЭВМ с релевантным софтом. Подробнее материальное обеспечение рассмотрим в статье: "Введение в ПЛИС: Материальное обеспечение курса / Хабр".

Введение.

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

На сегодняшний день сфера высоких технологий (условно объединим здесь IT, радио- и микроэлектронику, поскольку в дальнейшем будем говорить о сфере на стыке) развивается с невероятной скоростью. Каждый год появляются новые технологии и области, в которых нужны профессионалы. За время моего обучения в университете я приобрел некоторые знания в области математики и физики, однако, когда вышел на работу, дал знать о себе недостаток практического опыта, поэтому пришлось долго и упорно учиться, прежде чем заниматься чем-то по-настоящему серьезным. Конечно же, это типичная ситуация, и что бы вы не делали при поступлении на первую работу вас ждет процесс обучения и набора опыта. Однако, вполне возможно упростить и ускорить его с помощью введения в процесс обучения студентов практических курсов. В частности, очень востребованными являются курсы программирования, которые открывают дорогу к огромному множеству профессий. Здесь же мы предлагаем вам познакомиться с еще одной областью ИТ-индустрии - разработкой устройств на базе ПЛИС.

Благодаря своей гибкости, ПЛИС очень популярны в мелкосерийном производстве сложных радиоэлектронных систем, при создании универсальных ускорителей, прототипировании различных интегральных схем и во множестве других случаев. Они широко используются во многих областях, начиная от телекоммуникаций и заканчивая авиационной и автомобильной промышленностью. Однако, несмотря на большой спрос на специалистов в области hardware development, наблюдается дефицит кадров. Это открывает уникальные возможности для тех, кто хочет развиваться в сфере разработки на базе ПЛИС.

Рассматривая сферу разработки «железа», нельзя игнорировать аспект материальной выгоды, который для многих является значительным стимулом. Работа в высокотехнологичной индустрии часто ассоциируется с конкурентными и привлекательными уровнями дохода, чаще всего при этом вспоминают такие направления, как веб-разработка, мобильные приложения или искусственный интеллект. Если говорить более конкретно, специалисты в области hardware development, включая разработчиков на ПЛИС, выделяются своей редкостью и уникальностью навыков, что делает их особенно ценными на рынке труда. Как правило, карьера в области разработки на ПЛИС предлагает конкурентный уровень дохода, учитывая сложность и специфику работы. Даже будучи наемным работником можно зарабатывать значительно больше среднего уровня зарплаты по региону. Это не только отражает повышенный спрос на такие навыки, но и подчеркивает важность постоянного обучения и развития в этой быстро меняющейся сфере. Более того, растущий интерес к инновационным технологиям и развитие новых направлений, таких как искусственный интеллект и машинное обучение, продолжают открывать новые горизонты для специалистов в нашей сфере. Важно отметить, что спрос на квалифицированных специалистов в области разработки на ПЛИС остается высоким во многих странах, что делает эту профессию особенно привлекательной для тех, кто стремится к стабильности и профессиональному росту. Кроме того, навыки в этой области открывают широкие возможности для работы в международных компаниях и проектах, что дополнительно увеличивает их ценность на рынке.

Работа с ПЛИС - это не только высокооплачиваемое и востребованное направление, но и увлекательный творческий процесс. Разработка электронных схем на ПЛИС позволяет создавать уникальные, инновационные устройства, которые могут использоваться в различных отраслях. Одним из главных преимуществ работы с ПЛИС является возможность создания устройств, которые могут выполнять разные задачи, в зависимости от потребностей заказчика. Это позволяет разработчику быть гибким и творческим, поскольку он может использовать разные элементы, модули и компоненты для достижения желаемых результатов.

Кроме того, ПЛИС позволяют создавать высокопроизводительные устройства, которые могут обрабатывать большие объемы данных и работать с высокими скоростями их передачи. Это особенно важно в области телекоммуникаций, где каждая миллисекунда имеет значение. Наконец, работа с ПЛИС - это работа с инновациями, поскольку в этой области постоянно появляются новые технологии и возможности. Это требует от разработчика постоянного обучения и развития, что делает эту работу еще более интересной и увлекательной.

Следует отметить, что, говоря о ПЛИС, мы имеем в виду также разработку программно-аппаратных комплексов в целом. Hardware development - это действительно очень широкая область, которая охватывает множество процессов и задач. Например, это может включать в себя непосредственно разработку проектов на ПЛИС (RTL-design for FPGA), которая позволяет создавать современные устройства с высокой производительностью и энергоэффективностью. Однако, это лишь одна из множества возможностей в этой области. Hardware development также включает в себя процессы верификации, где необходимо проверить правильность работы устройства на всех этапах разработки, чтобы избежать возможных ошибок и дефектов. Также это может включать разработку для ASIC, что позволяет создавать устройства с еще более высокой интеграцией и оптимизацией. При работе с ПЛИС вы обязательно столкнетесь с отладкой на конкретных устройствах, что потребует от вас навыков в схемотехнике. Также наша область неразрывно связана с программированием, так на ПЛИС могут быть реализованы софт-процессоры, ПЛИС могут быть интегрированными с физическими процессорными ядрами, на которых можно запускать операционные системы и пользовательские приложения, так же, в основном управление верхнего уровня устройствами с ПЛИС осуществляется при помощи ЭВМ. Впрочем, подробнее об этом мы поговорим ниже.

Что же требуется, чтобы стать успешным разработчиком?

  • Знание языков описания аппаратуры: Необходимо иметь опыт работы с языками описания аппаратуры, такими как Verilog, VHDL и SystemVerilog, которые используются для создания цифровых схем.

  • Понимание архитектуры FPGA: Разработчики ПЛИС должны понимать, как устроены FPGA и как работают внутренние блоки, такие как блоки памяти, умножители, сумматоры, и т.д.

  • Навыки проектирования: Разработчики ПЛИС должны иметь опыт проектирования различных цифровых схем, начиная от счетчиков, сдвиговых регистров и заканчивая сложными процессорными системами.

  • Умение оптимизировать: Важно знать, как оптимизировать цифровые схемы для достижения наилучшей производительности, эффективности и минимального потребления энергии.

  • Навыки отладки: Необходимо уметь использовать отладочное оборудование, такое как логический анализатор, осциллограф и другие инструменты, для отслеживания и исправления ошибок.

  • Знание принципов верификации: Важно знать принципы верификации, такие как тестирование функциональности, проверка временных характеристик и т.д.

  • Навыки командной работы: Работа в области hardware development часто включает в себя работу в команде, поэтому важно иметь навыки командной работы и уметь эффективно коммуницировать со своими коллегами. Не лишними будут умения работать с системами контроля версий и управления проектами.

  • Знание английского языка. По крайней мере, на уровне свободного чтения технической документации. Это может сильно облегчить вашу работу.

Все это – навыки, которые можно приобрести и отточить в ходе обучения и работы по данной специальности, в этом мы и хотим вам помочь. Пока что, мы рассчитываем, что вам знакомы основы математики и физики, в частности булева алгебра и основы схемотехники. Впрочем, изучить можно все, поехали!

Комментарии (34)


  1. LenKon
    09.11.2024 16:50

    Пыталась понять, что же такое ПЛИС, но после прочтения статьи всё же пришлось гуглить.
    Ниже, чтобы другим не приходилось искать, привожу фрагмент из вики.
    Так же нашла в продаже для юридических лиц "Микросхемы ПЛИС (PLD, CPLD, FPGA)"...

    У меня такой вопрос к автору статьи. Скажите, пожалуйста, возможно ли изготовить АЛУ (арифметико-логическое устройство) с другой математикой в своей основе или только собирать из того, что есть?

    Спасибо за статью и за вашу работу! С удовольствием добавляю статью в закладки и буду ждать новых!

    Определение ПЛИС из вики: "Программи́руемая логи́ческая интегра́льная схе́ма (ПЛИС, англ. programmable logic device, PLD) — электронный компонент (интегральная микросхема), используемый для создания конфигурируемых цифровых электронных схем. В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задаётся посредством программирования (проектирования). Для программирования используются программатор и IDE (отладочная среда), позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры (Verilog, VHDL, AHDL и других). Альтернативой ПЛИС являются:

    БМК — базовые матричные кристаллы, требующие заводского производственного процесса для программирования;
    ASIC — специализированные заказные большие интегральные схемы (БИС), которые при малосерийном и единичном производстве существенно дороже;
    специализированные компьютеры, процессоры (например, цифровой сигнальный процессор) или микроконтроллеры, которые из‑за программного способа реализации алгоритмов в работе медленнее ПЛИС;
    непрограммируемые цифровые устройства и системы, настроенные на решение заранее известных задач, построенные на принципах так называемой «жёсткой логики».
    Некоторые производители для своих ПЛИС предлагают программные процессоры, которые можно модифицировать под конкретную задачу, а затем встроить в ПЛИС. Тем самым:

    обеспечивается увеличение свободного места на печатной плате (возможность уменьшения размеров платы);
    упрощается проектирование ПЛИС;
    увеличивается быстродействие ПЛИС."


    1. az013 Автор
      09.11.2024 16:50

      Большое спасибо за комментарий! По поводу АЛУ - да, возможно. При помощи ПЛИС вы можете организовать собственную схему на уровне регистров, комбинационных схем, некоторых аппаратных блоков и связей между ними. Но, как правильно заметили, есть ряд ограничений, таких как количество логических ячеек, предельная частота работы и т.д.


      1. LenKon
        09.11.2024 16:50

        Большое спасибо за ответ! И наконец, мне стало понятно, почему название именно ПЛИС!
        Это аналог БИС и МИС (больших и малых интегральных микросхем)
        Теперь можно программировать под задачи саму логику интегральных микросхем...
        Очень круто! И очень интересно!


    1. VBKesha
      09.11.2024 16:50

      Пыталась понять, что же такое ПЛИС, но после прочтения статьи всё же пришлось гуглить.

      Это можно сравнить с набором однотипных деталей. Которые можно соеденять между собой, для получения сложных схем(да в результате компиляции тескта на языке VHDL/Verillog проще считать что получается именно схема а не программа, но это тоже не всегда верно). Тут вроде более менее наглядно раскисано что это за детали. Но это в общем в частности там бывют всяки хитрые дополнения.

      Скажите, пожалуйста, возможно ли изготовить АЛУ (арифметико-логическое устройство) с другой математикой в своей основе или только собирать из того, что есть?

      Можно реализовать всё то можно описать опиать базовыми блоками. Тоесть аналоговое АЛУ написать не получится, а вот цифровое без проблем.


      1. LenKon
        09.11.2024 16:50

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


        1. VBKesha
          09.11.2024 16:50

          Я глубоко не изучал попрос но кажется были(или есть) и нечто вроде аналоговых FPGA. А по поводу пишут/собирают ну вот цифровое можно собрать на какой нибудь 74 серии, а можно наспиать и загнать в FPGA.


        1. Yuri0128
          09.11.2024 16:50

          Тут такое, - по факту на FPGA тоже "собирают" схему (описанную на Verilog или на другом языке) из ячеек FPGA. И да, есть программируемые аналоговые матрицы (FPAA), которые позволяют "собирать" аналоговые схемы. Например от Lattice.


    1. KeisN13
      09.11.2024 16:50

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


  1. nixtonixto
    09.11.2024 16:50

    Скажите, пожалуйста, возможно ли изготовить АЛУ (арифметико-логическое устройство) с другой математикой в своей основе или только собирать из того, что есть?

    На ПЛИС возможно всё. Лишь бы хватило ячеек.


    1. LenKon
      09.11.2024 16:50

      "Всё" это очень абстрактно! Я уже довольно давно ищу тех, кто способен реализовать математику в железе, но пока тщетно.
      В статье речь идет о понимании архитектуры и того, как работают внутренние блоки, такие как блоки памяти, умножители, сумматоры, и т.д. Мой вопрос о возможности реализации новых принципов построения самих внутренних блоков. В первую очередь сумматора и как следствие остальных.


      1. iliasam
        09.11.2024 16:50

        Почитайте вот это: http://www.labfor.ru/articles/fpga_arch_le


      1. az013 Автор
        09.11.2024 16:50

        Ну в составные устройства вы можете заложить ту логику, которую захотите, а вот изменить физическую структуру триггеров, лутов или аппаратных блоков памяти уже, конечно, не получится, это то, что зашито в кристалле на заводе. Здесь уже нужно обращаться к asic, но это не уровень отдельного человека или маленькой группы, этим занимаются корпорации, уж больно дорого.


        1. LenKon
          09.11.2024 16:50

          Спасибо за ответ! Хотя бы узнать, какие корпорации этим занимаются...
          Или они штампуют готовое с сумасшедшей скоростью и никаких разработчиков по этой теме уже нет. Но, по логике вещей, они всё равно должны экспериментировать с материалами кристаллов


          1. az013 Автор
            09.11.2024 16:50

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


      1. Yak52
        09.11.2024 16:50

         Мой вопрос о возможности реализации новых принципов построения самих внутренних блоков. 

        А говоря о новых принципах, вы что подразумеваете? Если вы остаетесь в базисе двоичной логики И-ИЛИ-НЕ, то пользуйтесь ПЛИС и реализуйте все, что вам угодно. Но, видимо, вы имеете ввиду какие то другие принципы?


      1. Yuri0128
        09.11.2024 16:50

        Вам нужно подготовить ТЗ и связаться с проектировщиками, - вам они порасказывают много чего. Но, ожидайте что разработа обойдется в приличную сумму (50-150 k$) и прогон на прототипе еще +25 k$. Все это весьма примерно. Потом, если зайдет, - еще и по стоимости пластин (зависит от техпроцесса) + разварка и корпусирование. Недешево выйдет.

        Если вы не знаете как подготовить ТЗ - то дальше просто не имеет смысла двигаться.


      1. mozg37
        09.11.2024 16:50

        Что именно вы ищете? Приведите пример.


      1. nckma
        09.11.2024 16:50

        А какую математику в железе Вы хотите реализовать?

        wire [7:0]result;

        wire [7:0]a;

        wire [7:0]b;

        assign result = a+b;

        Ну вот на Verilog уже сумматор. Это математика? Откомпилируете, загрузите в ПЛИС и будет суммировать.


      1. Affdey
        09.11.2024 16:50

        Что именно вы хотите? "Другая математика в своей основе" это смело. Троичная логика? Комплексные числа? Это всё возможно на стандартной ПЛИС. У меня на руках ПЛИС GW5A.


  1. Madfisht3
    09.11.2024 16:50

    Хоть xilinx, хоть altera, не поставляют официально чипы в Россию и вообще везде пытаются перекрыть кислород разработчикам.

    Даже квартус лет 5 назад не мог официально скачать из России на офсайте.

    Объясните какой смысл вкладывать столько усилий ради того чтобы потом не иметь возможности работать с fpga этих производителей по причине присоединения к санкциям сша?


    1. az013 Автор
      09.11.2024 16:50

      Да, действительно, сейчас есть определенные проблемы с доставаимостью чипов, особенно это касается altera, с xilinx наши заграничные товарищи подружились лучше. Здесь я рассматриваю xilinx и altera потому что, во-первых, они пока еще держат большую часть мирового рынка, во-вторых, с чисто китайской архитектурой пока не работал, сложно учить тому, в чем сам не разбираешься.