Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция

Каким образом повысить количество российских инженеров, которые были бы знакомы и с разработкой хардвера, и с разработкой софтвера, и могли бы строить системы, в которых часть функциональности находится в специализированном железе, а часть — в программном обеспечении, с соблюдением баланса между ними?

Для этого вовсе не обязательно выбрасывать несуразные деньги а-ля сделка Сколкова и MIT.

Есть масса дешевых и эффективных мер по апгрейду российской образовательной системы. Одна из них — широко ввести практические классы ПЛИС / ППВМ / FPGA среди старших школьников и студентов. Это то, на чем учатся и инженеры, которые потом разрабатывают микросхемы внутри Apple iPhone в Купертино, Калифорния.

ПЛИС — Программируемая логическая интегральная схема
ППВМ — Программируемая пользователем вентильная матрица
FPGA — Field Programmable Gate Array

Так как ниже речь идет о платах, то у многих читателей тут же может возникнуть реакиция «а, это ардуино/raspberry pi/роботы — знаем!» Нет, это не ардуино, не имеет вообще никакого отношения к данному классу устройств. Еще раз повторяю: это не ардуино, потому что у ардуин стоит внутри основанный на микропроцессорном ядре микроконтроллер, а тут вообще никакого процессора нет — чистая матрица перепрограммируемых логических ячеек.

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

Одной из проблем использования FPGA для образования российских тинейджеров является нехватка литературы на русском языке. Довольно скоро должен выйти русский перевод книжки Digital Design and Computer Architecture, Second Edition, by David Harris and Sarah Harris, и эта проблема будет частично решена. Но помимо литературы, описывающей схемотехнику и разработку хардвера на уровне регистровых обменов (Register Transfer Level — RTL) используя языки описания аппаратуры (Hardware Description Languages — HDL), есть и другая проблема — для новичка работа со студенческими платами нетривиальна, а программная среда для разработки — недружелюбна.

Поэтому я решил показать по шагам, как начать работать с одной из FPGA плат, которая удобна тем, что втыкается в макетную плату и может быть использована преподавателями кружков школьников наподобие тех, которые еще с 1970-х годов начинали введение в схемотехнику через микросхемы малой степени интеграции типа К155ЛА3 (TTL 7400, CMOS 4000). Втыкаемая в макетку FPGA плата является естественным продолжением таких курсов.

Вот так учили основам цифровой логики с начала 1970-х годов:



И вот к чему он может переходить после ознакомления школьников с базовыми понятиями логического элемента, триггера и сигнала тактовой частоты. Это то же самое, но на технологии 2010-х:



Дело в том, что внутри FPGA по сути находится конструктор из тысяч логических элементов наподобие элементов в K155ЛА3, но в FPGA их можно соединять не руками с помощью проводов, а меняя содержимое специальной памяти, биты которое соединены с мультиплексорами, которые меняют логические функции ячеек FPGA и соединения между ними:



Где достать платы, софтвер для разработки и необходимые плагины, я расскажу в конце, а сейчас погрузимся непосредственно в создание простой схемы с помощью бесплатной среды разработки Xilinx ISE WebPACK:

Входим и создаем новый проект:



Важно выбрать отдельную директорию для проекта и не смешивать его с вашими исходными файлами, ибо синтезатор генерирует много всяких временных файлов и вы в них можете запутаться (все их можно удалить после использования):



Вводим имя проекта. Это имя совпадает с именем главного модуля на Verilog-е (языке описания железа):



Вводим параметры FPGA: Family, Device, Package, Speed. Их нужно взять из документации по плате.



Проект создан:



Добавляем исходные файлы на языке описания аппаратуры Verilog.

Файл top.v содержит описание схемы:

module top
(
    input  btn_0,
    input  btn_1,

    output led_0,
    output led_1,
    output led_2,
    output led_3
);

    assign led_0 = btn_0;
    assign led_1 = btn_1;
    assign led_2 = btn_0 & btn_1;
    assign led_3 = btn_0 | btn_1;

endmodule


Файл cmods6.ucf содержит информацию для среды разработки о том, как связаны логические вводы и выводы главного модуля (btn_0, led_2, ...) с местонахождением (location, LOC) физических ножек микросхемы FPGA, которые именуются P8, N4 и т.д. Этот файл — урезанная версия файла для данной платы, загруженная с сайта компании Digilent (производитель плат):

NET "btn_0" LOC = "P8" | IOSTANDARD = LVCMOS33;
NET "btn_1" LOC = "P9" | IOSTANDARD = LVCMOS33;

NET "led_0" LOC = "N3" | IOSTANDARD = LVCMOS33;
NET "led_1" LOC = "P3" | IOSTANDARD = LVCMOS33;
NET "led_2" LOC = "N4" | IOSTANDARD = LVCMOS33;
NET "led_3" LOC = "P4" | IOSTANDARD = LVCMOS33;
















Теперь нажмем на кнопку «сгенерировать файл для программирования ПЛИС». Тут есть важный момент — «программирование» — это не софтверное софтверным программированием, которое сводится к созданию последовательности команд некоего процессора. Programming File в данном случае — это содержимое памяти в ПЛИС, которое определяет логические функции и соединения ячеек ПЛИС. Процессор в данной схеме не присутствует (хотя вы можете сами создать процессор, программируя (в вышеприведенном смысле) ячейки ПЛИС).



Теперь нажмем кнопку «посмотреть на абстрактную (не привязанную к конкретному FPGA) схему, описанную на верилоге и синтезированную софтвером):





Верхний модуль:



Нажмем на мышкой чтобы посмотреть внутрь:



Нажмем на кнопку „Zoom to Full View“ чтобы увидеть всю схему:



А теперь посмотрим на переработанную схему, сгенерированную софтвером для конкретного FPGA (View Technology-Specific):





Мы видим слово LUT — это Look-Up Table — его нужно запомнить на будущее:



Теперь нажмем на кнопку „View/Edit Routed Design (FPGA Editor)“, чтобы посмотреть, как схема ляжет на ячейки FPGA:







Укрупним:







Жмем кнопку чтобы сконфигурировать FPGA. Плата прицеплена микро-USB кабелем к компьютеру.

С этого момента важно, что установлен плагин от Digilent-а для этой платы — digilentinc.com/Products/Detail.cfm?NavPath=2,66,768&Prod=DIGILENT-PLUGIN

У Digilent-а есть еще софтвер под названием Digilent Adept, но он на моем компьютере с этой платой почему-то не работает, так что лучше использовать плагин и iMPACT. Последовательность действий ниже понимать не обязательно, это просто „магические заклинания“, чтобы перенести *.bit файл в конфигурационную память внутри FPGA:

























Все, теперь плата должна работать — откликаться на нажатия кнопок и соответственно им мигать лампочками.

Теперь не будем закрывать iMPACT, вернемся к главному окну ISE и построим не комбинационную, а последовательностную схему — сдвиговый регистр. Используем генератор тактового сигнала низкой частоты 1 Hz, т.е. один раз в секунду. На плате еще есть генератор тактового сигнала на 8 MHz — это частоту с помощью PLL можно поднять до 200 MHz. Но высокая частота — это других дизайнов, а для наглядности 1 Hz — то что надо:



Засинтезируем ее, сгенерим bit-файл, вернемся в iMPACT и нажмем на кнопку Program. Оно скажет:



Нужно нажать Yes и в FPGA будет загружен новый дизайн. Кстати, теоретически повторная (после создания iMPACT project) загрузка должна происходить просто нажатием Configure Target Device в главном окне ISE, но реально у меня это не происходит — софтвер норовит создать новый iMPACT project. Поэтому и лучше использовать кнопку Program внутри окна iMPACT. Все претензии по этому поводу — в Digilent и Xilinx.

Приложение A. Два видео — как реализовать сдвиговый регистр и счетчик





Приложение B. Полный заголовок верхнего модуля на верилоге для данной платы

Со всеми соединениями и комментариями:

module cmods6
(
    input        CLK,         // FPGA_GCLK, 8MHz  - можно поднять до 200 MHz
    input        CLK_LFC,     // FPGA_LFC, 1 Hz

    output       LED_0,    // Четыре лампочки
    output       LED_1,
    output       LED_2,
    output       LED_3,

    input        BTN_0,   // Две кнопочки
    input        BTN_1,

    // DEPP interface - интерфейс для связи с PC через USB

    input        DEPP_ASTB,   // Address strobe
    input        DEPP_DSTB,   // Data strobe
    input        DEPP_WRITE,  // Write enable (write operation = 0, read operation = 1)
    output       DEPP_WAIT,   // Ready 
    inout  [7:0] DBUS,

    // General purpose I/O  - куча пинов для брэдборды

    input  [7:0] PORTA,
    input  [7:0] PORTB,
    output [6:0] PORTC,
    input  [7:0] PORTD,
    input  [7:0] PORTE,
    output [6:0] PORTF
);


Приложение C. Где взять платы

Платы с Xilinx FPGA можно брать на сайте Digilent, сейчас это отделение National Instruments. Вот плата Digilent Cmod S6, которую я использовал в посте, с самым небольшим Xilinx Spartan-6 FPGA:



Для последующего обучения есть например платы Nexys 4 с более мощными FPGA Xilinx Artix-7. На них не нужно скручивать провода на макетной плате, так как эта стадия обучения уже пройдена:



Про платы с Altera FPGA я напишу другой пост.

Приложение D. Где взять софтвер Xilinx ISE

Его можно загрузить прямо с сайта Xilinx. Использовать можно бесплатную версию. Но для Spartan-6 нужно использовать не самую новую версию среды разработки Xilinx Vivado 2014.4, а Xilinx ISE 14.7 2013 года. Почему не Vivado? Маркетологи в Xilinx решили пересадить всех пользователей чипов Spartan на более новые FPGA Artix, и выключили поддержку для Spartan из нового софтвера. Вот только плат, которые можно вставлять в макетную плату, на Artix еще нет. Поэтому нужно использовать версию софтвера 2013 года:



А вот софтвер Xilinx Vivado который подерживает в частности плату Nexys 4 с Xilinx Artix-7 (для платы со Spartan-6 он не нужен):



Теперь важный момент. Для того, чтобы загружать .bit-файл в конфигурационную память FPGA на плате, необходимо скачать специальный плагин с сайта Digilent:





На сайте еще есть софтвер Digilent Adept, но я его не рекомендую для Spartan-6, у меня были с ним проблемы.

Приложение E. Немного табличек с параметрами FPGA







И в заключение еще одна фотка FPGA платы на макетной плате с кнопками, резисторами и семисегментным индикатором:

Метки:
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 89
  • +6
    Делал дипломный проект на FPGA — модернизировал блок считывания линейных датчиков для советского станка. По итогу получалось заменить почти 40 корпусов микросхем на 5
    До cs11047.vk.me/u88317703/-14/z_76fa2485.jpg, после cs10760.vk.me/u88317703/-14/z_d5e30b8d.jpg
    FPGA это круто, но для специфичных задач.
    • +1
      Наверное, гадость скажу, но мне кажется, что для обучения азам логики ничего лучше 155 серии человечество еще не изобрело.
      Поковырять ПЛИС было всегда интересно, но задачи так и не придумал.
      С другой стороны. сымитировать простейший эрзац-процессор — это реально круто для обучения, но уже такой advanced уровень.
      • +2
        Я с вами совершенно согласен. Сначала 155 серия, чтобы человек почувствовал, что такое логический элемент, триггер и сигнал тактовой частоты. А потом перелезть на ПЛИС.

        Построить простейший процессор — это на самом деле не advanced уровень, для этого есть пошаговая инструкция в книжке, которая через месяц должна появиться на русском языке — Digital Design and Computer Architecture, Second Edition, 2012 by David Harris & Sarah Harris.
        • +2
          И чтоб, гад, главное понял: электроника — наука о контактах
          • +1
            Про книжку — отличная новость. Она выйдет в каком-то издательстве или в pdf в рамках спонсорской помощи российским разработчикам? (Нашел в интернетах упоминание о проекте перевода под эгидой вашей компании)
            • +7
              Книжка будет бесплатным PDF-м доступным с регистрацией на сайте imgtec.com Перевод готов, сейчас проходит окончательное вылизывание верстки в компанейском отделе Creative Services.
              • +3
                Пожалуйста опубликуйте новость на хабре со ссылкой на pdf когда выйдет книжка
                • +1
                  Обязательно! Напишу большой пост с кусками из глав и комментарием зачем это нужно.
      • +1
        Вы уж меня извините, но:
        Странный подход, давайте еще художники сразу Adobe Photoshop будут изучать.
        Что Arduino, что это, не могут чему-то обучить, помочь, да могут, но обучить нет. Только кнопки жать и работать по шаблону, а самому системно думать, сомневаюсь. Соглашусь с eta4ever. Да и дорого.
        Вы в Xilinx работаете?
        • 0
          Не, ну не настолько все плохо. Зависит от построения процесса. Если лабораторная работа «подключить — нажать — сравнить результат с методичкой», то это не обучение. А если «реализовать АЛУ с заданными характеристиками», и проверка на стенде с неизвестными обучаемому входными данными — будет куда круче.
          • +3
            *** Странный подход, давайте еще художники сразу Adobe Photoshop будут изучать. ***

            Я согласен с eta4ever, что изучать азы стоит начинать с серии 155, чтобы человек почувствовал, что такое логический элемент, триггер и сигнал тактовой частоты. А потом перелезть на ПЛИС.

            Простейший студенческий процессор чисто на серии 155 строить муторно, а вот на ПЛИС-е совершенно реально даже на непродвинутом уровне.

            Я работаю в компании Imagination Technologies, инженером в группе разработки процессора MIPS I6400.
            • 0
              а самому системно думать, сомневаюсь
              Системно думать учат в университетах на теоретических курсах. А то что автор описал — практическое к тому приложение.
            • 0
              Xilinx, это хорошо, но для обучения Altera — лучше. Там попроще обучение будет, да и цены вроде бы пониже, чем на Xilinx. А вообще обучать школьников целой страны программированию на иностранной элементной базе как-то обидно (прямо-таки для иностранных держав будем специалистов готовить). Помнится же что ПЛИС и отечественные были.

              И мне кажется, что при грамотном подходе, школьник в конце концов должен что на ПЛИС, что на микроконтроллере, что на DSP одинаково хорошо работать. А ещё и разбираться когда какой из указанных типов смех применить лучше.
              • +4
                Научить грамотно выбирать инструмент под задачу — это вообще основа основ. Чтобы не лепить микроконтроллер вместо трех транзисторов.
                • +3
                  Отечественные ПЛИС и сейчас есть — криво содранные Altera, которые предлагается программировать альтеровским же софтом.
                  Не уверен, что это лучше, чем честное программирование зарубежных Xilinx.
                  • 0
                    А какие у них характеристики по сравнению с теми с кого содрали? Где используются?
                    • +2
                      Это копии Альтер 93 года. Используется, вероятно, в военке.
                      • 0
                        Ну не совсем 93. Вроде как выпустили даже аналог Cyclone II, а это как-никак 2004 год.
                        • 0
                          Я пока встречал только ВЗПП 5576XC. Посмотрел, она все же аналог FLEX10K 1995 года.
                          • 0
                            Как раз недавно был анонс, вроде как доки под NDA дают. Можно на форуме электроникса посмотреть, недавно обсуждалось.
                  • +3
                    да, лучше сидеть, ничего не делать и ждать, пока появится отечественная элементная база…
                    • +1
                      Лучше делать эту самую элементную базу, чем вкладывать огромные суммы в зарубежную электронику. Вы вдумайтесь! В России примерно 53000 школ. Если каждую оснастить обучающим набором стоимостью около 5000 р. то поставщик получит 265 млн. руб. прибыли. И это ОДНИМ набором. Давайте отдадим эти деньги Xilinx + потом школьники будут разрабатывать устройства с Xilinx потому что привычно и соответственно закупать именно эти ПЛИС. Вот зачем оно нужно? Да, лучше сидеть и ждать отечественную элементную базу + пошевелиться что бы она появилась.
                      • +3
                        Зачем ПЛИС в школе, да еще и всем подряд?
                        ПЛИС нужны части студентов технических специальностей, не более того.

                        А что касается отечественной элементной базы, то вот именно ПЛИС — это один из самых сложных продуктов, который, как мне кажется, в России разрабатывать и производить просто бессмысленно. Делать надо что-то такое, на чем реально заработать денег. ПЛИС к таким продуктам явно не относится.
                        • 0
                          Уж поверьте мне, на ПЛИС хорошо зарабатывают. Хотя это конечно сложнее, чем продавать ресурсы. К тому же есть и у нас наработки в этой области, да ещё какие…
                          • +1
                            Сравните на хх.ру зарплаты по ключевым словам java и fpga. Результат будет далеко не в пользу вторых…
                            • +1
                              Вы путаете разработку «под ПЛИС» и «разработку ПЛИС». Изготавливать микросхемы — одно, а программы под них — другое.
                              • +1
                                Я вас просто не понял. Для того, чтобы «зарабатывать на ПЛИС» нужен широкий рынок продаж. Который сейчас фактически поделен между двумя компаниями. Российские же микросхемы в данном случае получат лишь отечественный рынок изделий для военного применения.
                            • +1
                              На ПЛИС хорошо зарабатывают те, кто их уже разрабатывает и производит.
                              С нуля влезть в этот рынок сейчас невозможно, хуже только x86-совместимый процессор делать.
                              В России просто ни у кого нет достаточных программистских ресурсов, чтобы софт для ПЛИС написать.
                          • +1
                            Вы что думаете, если эти 265 млн вложить в разработку отечественной элементной базы, то ситуация улучшиться? Типа сделать свою CPLD — государственную, стоить она будет гораздо дороже чем Xilinx, но все равно поставим ее во всем школы. А еще свой open source САПР… Уверяю вас, что тогда у нас инженеров в этой теме вообще не останется…

                            И кто говорит, что надо во все школы? Достаточно в каждый технический ВУЗ. А если сидеть и ждать, и не осваивать современную элементную базу, а то а) нашей вообще никогда не возниктет и б) мы безнадежно отстанем в отрасли в общем.
                            • 0
                              Про школы говорилось в статье.

                              Да, если эти 265 млн вложить в разработку отечественной элементной базы, то ситуация улучшиться. Если не вкладывать, то точно не улучшится.

                              САПР свой делать не обязательно, если open source нормальный есть.
                              • +1
                                Почитайте хотя бы тут на хабре
                                habrahabr.ru/post/156843/
                                habrahabr.ru/post/218171/
                                habrahabr.ru/post/217427/

                                и поймете, почему эти 265 млн р. НИЧЕГО не сделают для российской микроэлетроники. И лучше эти деньги вложить в воспитание кадров в этой области.

                                Для российских реалий тех процесс 90 нм — это потолок. При том, что современные ПЛИС делают уже по технологии 14-22 нм на фабриках (TSMC, Intel) стоимостью в миллиарды долларов. Причем доступ российских дизайнеров микросхем к этим технологиям на этих фабриках закрыт.

                                И нормального open source для FPGA нет.
                                • 0
                                  Понимаете, надо перестать жить с имперскими амбициями по принципу осажденной крепости с представлениями, что у любого мирового продукта обязан быть отечественный аналог (причем лучшего качества!). Такого уже никого не будет.

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

                                  Вот цитата из BarsMonster (http://habrahabr.ru/post/218171/)
                                  Кроме того, Intel уже более 40 лет доходы от продажи процессоров реинвестирует в усложнение технологии, владеют кучей патентов — и чтобы сейчас достичь их уровня в равных условиях (налоги, бюрократия, доступность капитала) понадобилось бы по моей грубой оценке порядка 352 млрд$ и 30 лет работы — на что конечно никто пойти не может. Всем нужен свой Intel за 0.1, а лучше 0.01млрд$ :-)

                                  Однако по тем же причинам и для США затруднительно создать свою технологию разделения урана центрифугами и строить ядерные энергетические реакторы на быстрых нейтронах. Так что где-то они побеждают, где-то мы, где-то Китай — нужно развивать то, где есть преимущество и не перенапрягаться там, где для достижения паритета пришлось бы потратить все ресурсы страны на 1 компанию.
                                  • +1
                                    надо перестать жить с имперскими амбициями по принципу осажденной крепости

                                    С чего вы взяли? Я вот совершенно не против, если Россия станет планетарной державой (ну не будет других стран на планете). А про осажденную крепость — почему-то все дома свои забором огораживают / дверь в квартиру запирают, вот и государство стенку иметь должно, а то мало ли кто «в гости» заскочит. При этом дружить с соседями очень даже полезно.

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

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

                                    Автоваз

                                    Который год езжу — приличная машинка. Проходимость — суперская (пусть и не полный привод), в обслуживании дешевая, и бензина много не кушает. Да, есть недостатки — сыпется по мелочам, зато вы на цену (в том числе и ремонта) посмотрите. То что автоваз государство поддерживает — ничего страшного, кого государство считает нужным, того и поддерживает. Во многих странах кого-нибудь, да поддерживают.
                                    • 0
                                      нужно развивать то, где есть преимущество и не перенапрягаться там, где для достижения паритета пришлось бы потратить все ресурсы страны на 1 компанию


                                      Гармонично надо развиваться, а не развивая дальше только то, что получилось. Когда развиты несколько областей, это даёт развитие смежным. В результате вся экономика развивается.
                                    • +1
                                      Доступ к 28 нм у российских дизайнеров есть. Есть и работы на таких проектных нормах. Будут задачи под что-то меньшее — и туда доступ найдётся, я думаю.
                                      • 0
                                        Интересно очень. Можете примеры тут привести?
                                        • +1
                                          Согласно открытым источникам, с 28 нм работают «Элвис» и НИИСИ РАН.
                                    • +1
                                      265 млн. рублей в современных российских реалиях — стоимость ОКР на разработку одного микропроцессора, не очень большого и не очень сложного. Или двух микросхем поменьше.
                                      Эти деньги не изменят вообще ничего.
                                  • 0
                                    Не путайте прибыль с выручкой. )))
                                • +3
                                  Мне тоже больше нравится Altera и Quartus II для целей образования, но у меня нет альтеровской платки, которая втыкается прямо в макетную плату. Поэтому я взял плату на Xilinx.

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

                                  Но ведь потом школьники будут делать российские разработки на Verilog, так что игра стоит свеч.

                                  *** И мне кажется, что при грамотном подходе, школьник в конце концов должен что на ПЛИС, что на микроконтроллере, что на DSP одинаково хорошо работать. А ещё и разбираться когда какой из указанных типов смех применить лучше. ***

                                  Да, вот это именно то, что нужно.
                                  • 0
                                    *** Но ведь потом школьники будут делать российские разработки на Verilog, так что игра стоит свеч.

                                    Но ведь они куда-то должны прошивки заливать? Будут опять импортное закупать.
                                    • 0
                                      Не только. Например школьники могу вырасти и пойти работать на одну из российских компаний типа elvees.ru и разрабатывать не для FPGA, а для ASIC (фиксированных, специализированных микросхем) с производством на TSMC на Тайване. Или на российском Микроне и Ангстреме в Зеленограде — у тех хоть нанометр не такой передовой как на TSMC, но микросхемы для определенных приложений делать можно.
                                      • +2
                                        Я все ещё не понимаю, почему вы ориентируетесь на всех школьников подряд. ПЛИС — это для увлечённых студентов подходящих специальностей и для школьников из кружков радиолюбителей (которых нет почти, и которые надо бы создавать).
                                        Also обратите внимание на CanSat, в том числе российский.
                                • 0
                                  На мой взгляд, большая проблема для отечественных разработчиков в настоящее время — мир заказных микросхем. Порог вхождения в FPGA относительно невысок — софт бесплатный, есть открытая документация плюс отладочная плата с ибэя за 30-200$ и все.
                                  А вот мир ASIC чрезвычайно замкнут. Открытого софта нет и потренироваться реальной возможности нету. Покупать софт при его стоимости занятие неоправданное, пока нет заказа на разработку. С ломаным софтом тоже проблемы. А кто ж возьмется за заказ не имея навыков работы. В общем замкнутый круг…
                                  • +2
                                    Дизайн-центров разработки заказных схем сейчас в России существенно больше, чем реальной потребности в них.
                                    Проблем со стоимостью софта, например, нет у университетских дизайн-центров. У них, правда, софт есть, а вот с заказами проблемы.
                                    А также открытый софт, пригодный для того, чтобы потренироваться, вполне себе существует.
                                    • 0
                                      А вы не могли бы рекомендовать софт, куда смотреть? Для полного цикла, от rtl-кода и до упора?
                                      • +5
                                        Вот какой есть открытый софт. Из него собирается не весь полный цикл, но бОльшая его часть.
                                        vl2mv и VIS — компилятор Verilog, симулятор и синтезатор (http://vlsi.colorado.edu/~vis/)
                                        SIS — оптимизирующий синтезатор с отображением в технологическую библиотеку (http://embedded.eecs.berkeley.edu/Alumni/pchong/sis/)
                                        TimberWolf — размещение (http://opencircuitdesign.com/magic/archive/timberwolf-6.3.1.tgz)
                                        qrouter — трассировщик (http://opencircuitdesign.com/qrouter)
                                        Magic — просмотр топологии (http://opencircuitdesign.com/magic/)
                                        IRSIM — симулятор для верификации конечной топологии (http://opencircuitdesign.com/irsim/)

                                        Самая большая проблема — это верификация топологии, особенно если речь идет о суб-100 нм проектных нормах.
                                        Плюс есть еще Tanner EDA, которые делают софт полного цикла за деньги, на порядки меньшие, чем у «большой тройки».
                                        www.tannereda.com/
                                        Там, конечно, больше упор на Mixed-signal (потому что с большими массивами цифровой логики их софт пока не справляется), но тем не менее.

                                        Ну и, если есть какой-то конкретный интерес к заказным микросхемам — в личку черкните, может чего полезного расскажу.
                                    • 0
                                      Самое интересное, что мне по работе приходится общаться с большим числом ASIC-дизайнеров (зарубежных, разумеется) и большинство из них испытывают непонятный ужас перед FPGA и если надо что-то сделать, то просят кого-нибудь другого (иногда меня).
                                    • +6
                                      Добрый день!
                                      Несколько лет преподавал относительно новый для нашей кафедры курс «Основы цифровой обработки сигналов на ПЛИС». К сожалению, ЦОС там и не пахло, все лабораторные были исключительно на помигать светодиодами, переключать кнопочки, сделать ту или иную логическую функцию. Самая сложная работа (она же и зачетная) — сделать простое FIFO или КИХ-фильтр определенного порядка по ТЗ.
                                      Мы со студентами делали проекты на отладочной плате «Spartan3E starter kit».

                                      Вот результаты опыта:
                                      1. За отведенное время на это курс студенты не успевают разобраться ни в языке программирования, ни в приложениях от Xilinx. Плюс предмет читается на 5 курсе, когда все уже работают.
                                      2. В связи с этим интерес у большинства падает уже на первых занятиях, поскольку нужно проделать много самостоятельной работы.
                                      3. Работы делались по принципу — «самый умный сделал, у него скопировали проект и отчитались». Сдал — забыл.
                                      4. Реально заинтересованных в ПЛИС было 1-2 человека на 4 группы. К счастью, они смогли сделать зачетные задания (FIFO, синтез КИХ в матлабе и реализация в CoreGenerator).
                                      5. Творческие задачки на ПЛИС студентам нравились больше, по крайней мере интереса к реализации фильтра почему-то интерес проявили больше, чем к помигать светодиодами.

                                      Вот и в этом семестре придет очередная порция студентов, и даже не знаю, сколько человек проявят интерес.

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

                                      • +2
                                        Мне думается, что ПЛИС надо давать не всем желающим, а тем, кто заинтересуется работой с ними. Соответственно, надо курсе на третьем всем показать, что это такое, а потом уже отдельно в рамках чего-то вроде «студенческой научной работы» работать с теми, кто заинтересуется, делать дипломы и т.д. и т.п.
                                        • +1
                                          Вы правы! У нас на радиофаке в магистратуре так и было задумано, что студенты сами выбирали себе предмет из предложенного набора. Почти все выбирают ПЛИС, т.к. на других курсах преподаватели злее.
                                          Но одного семестра для изучения такого курса реально мало, а показать за один семестр все не удается (а очень хочется!). Надеюсь, что в будущем этот курс у нас расширят.
                                        • +2
                                          Да, я тоже веду подобный курс на физфаке МГУ для второкурсников. У нас два семестра, в первом — основы (схемотехника, триггеры), язык VHDL. Начинаем как обычно с мигания светодиодами, но к концу первого семестра под руководством преподавателя собираем схему передачи данных аппаратная схема ПЛИС — Си программа на компьютере через com port. Внутри ПЛИС реализуем очень простой КИХ фильтр. Во втором семестре изучаем транслятор Vivado HLS, и у каждого студента уже своя курсовая работа по реализации того или иного алгоритма из науки.

                                          Из опыта тоже могу сказать, что в первом семестре нельзя допускать никакой самодеятельности — все должны делать одно и тоже с серьезным контролем (т.е. время очень мало, материла много, и если туда-сюда смотреть и тыкаться, то ничего не успеют).

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

                                            А по поводу Vivado HLS — отдельный респект. У меня на основной работе еще очень скептически относятся к высокоуровневому программированию под ПЛИС, хотя я периодически проталкиваю идею начать те же FIR-фильтры или DDC делать на Си. А в институте вообще мало кто это поймет.

                                            Вам выделили девкиты на Zynq или 7 серии?
                                            • 0
                                              Мы работаем на платах Atlys (Spartan 6).

                                              По поводу Vivado HLS — тут надо взвешивать все за и против. Если вы нацелены на использование ПЛИС для схем управления приборами или в качестве каких-то интерфейсных схем, то может его и не надо использовать.

                                              Этот транслятор хорош, когда надо на одном кристалле решать разные задачи, например в области HPC, где ПЛИС — это ускорители вычислений, или в DSP области. Тогда появляется реальный выигрыш от того, что существенно уменьшается время на разработку.

                                              Наш курс все-таки нацелен на использование ПЛИС в качестве ускорителей вычислений, поэтому Vivado HLS и изучаем.
                                              • 0
                                                Понял, спасибо.

                                                Мы периодически решаем задачи ЦОС с реализацией перестраиваемых DDC/DUC, фильтров сжатия, быстрой свертки и т.д. на ПЛИС. Поэтому время разработки критично. Если его минимизировать использованием HLS без потери в производительности и при тех же затратах ресурса кристалла — будет просто здорово!
                                                • +1
                                                  Да тут вы вполне сможете использовать HLS. На Си вы напишете ядро той же самой быстрой свертки и вставите его в свой тракт передачи данных, разработанный уже традиционным способом. При этом Си ядро будет например иметь FIFO интерфейсы на вход и выход.
                                                  • 0
                                                    Отлично! В свободное время начну усиленно изучать HLS, а потом продвигать идею его использования в наших проектах. Если что — ждите каверзных вопросов по теме, обязательно обращусь к вам. :)
                                                    • 0
                                                      Поясните, пожалуйста. Си-шный код при этом выполняется на ARM'е Zynq'а или транслируется в Verilog и уходит в ПЛИС?
                                                      • +1
                                                        Транслируется в Verilog/VHDL,
                                                        • +1
                                                          Тогда, я думаю, эта фича тянет на статью на Хабре! Только примеров побольше! Интересно, как Вивада справится с распараллеливанием логики.
                                                          • +1
                                                            Там все очень нетривиально, плюс куча настроек. Если интересно — как раз недавно был русскоязычный вебинар Макрогруппы, посвященный Vivado HLS, можно запись посмотреть www.macrogroup.ru/video
                                                            Честно говоря, у меня большие сомнения в эффективности результата для более-менее сложных алгоритмов, но сам не щупал.
                                              • 0
                                                Жаль, что в вузах все еще предпочитают VHDL, а SystemVerilog игнорируют (((
                                                • 0
                                                  Освоить SystemVerilog сначала самому, а потом уже студентов учить — у меня в планах, только руки как обычно не доходят. Я в курсе про определенные преимущества SystemVerilog, но они не дают качественного скачка по сравнению с VHDL (в отличие например от трансляторов C-to-RTL), поэтому переход этот отложен в ящик.
                                                  • 0
                                                    А какими C-to-RTL трансляторами пользуетесь?
                                                    Можете что-то посоветовать?
                                                    • 0
                                                      Для Xilinx — однозначно их же транслятор Vivado HLS. Качество получаемых схем на высоком уровне. Отличная интерфейсная интеграция с шиной AXI, своя IDE для отладки и проектирования. Приемлемая цена.
                                                      Знаю, что у Altera такой же транслятор на подходе. Другие трансляторы имеют существенный недостатки.

                                                      Коммерческие Catapult C, Impulse C — дороги

                                                      Открытые LegUp, ROCCC, C-to-Verilog — синтезируют откровенно плохие схемы.
                                                  • 0
                                                    Все хочу начать углубляться в SV, но из-за отсутствия времени и нормальных трансляторов для Xilinx приходится постоянно откладывать этот процесс.
                                                    Периодически смотрю вебинары по SV, но дальше проекта обычного ШИМ руки не дошли.

                                                    VHDL тоже имеет ряд плюсов, но разводить холивар на эту тему не хочется. Язык программирования(будь то VHDL, verilogv SV, или C++) — это инструмент. И самое главное, это уметь им грамотно пользоваться. :)
                                              • +2
                                                Статья понравилась, несмотря на то, что идея обучения школьников FPGA-дизайну представляется достаточно спорной. К сожалению, очень уж узок рынок для таких специалистов. Поэтому, с одной стороны, если нужен такой специалист, его трудно найти, а с другой, такому специалисту не всегда удается найти работу по специальности, особенно, когда опыта маловато.
                                                • 0
                                                  Такие упражнение — это вход во весь мир электронной индустрии и связанные с ним специализации — разработка IP-блоков на Verilog и VHDL (register transfer level — RTL), и разработка тулов для САПР-а (Electronic Design Automation — EDA), и мостик от программирования к цифровой логике к физическим аспектам электроники, и искусство верификации — в сбалансированной индустриальной экосистеме должны быть инженеры всех этих специализаций. Сейчас развитие российской экосистемы имхо ограничивается не деньгами, а интеграцией с мировым рынком и недостаточным количеством инженеров для микроэлектронных проектов.
                                                • +1
                                                  Поставил в избранное время ее придет, а пока заманиваю сына вот такими поделками :)
                                                  cs621317.vk.me/v621317996/8033/HRWEv3jF7Us.jpg
                                                  • +2
                                                    Прочитал все комментарии. Почему все считают что ПЛИС это для студентов старших(!) курсов?
                                                    Я часы на 155/561 серии собирал еще в 8-9 классе, они до сих пор идут на даче. Со светодиодным индикатором. Кварц, счетчики, всё как положено. И в то время компьютеров не было, идешь в библиотеку, берешь справочник.
                                                    Логические вентили это даже проще чем программирование. Есть же визуальные редакторы схем для плис. Нарисовал, нажал «прошить» и оно работает.
                                                    • +1
                                                      Потому что между «поиграться» и «выполнить профессионально работу» огромная разница. Школьникам, из которых подавляющее большинство даже закон Ома с трудом применяет, это просто не нужно. Хотя само наличие такой возможности в школе, пожалуй, во благо. Но исключительно факультативно.
                                                      • +3
                                                        Потому что в институте таких, как вы — один на поток.
                                                      • +1
                                                        Чтоб человек мог вырасти в грамотного HDL-кодера ему нужен базис в виде полноценного образования по специальности микроэлектроника. А то получаются потом программисты, которые в электронике ни бум-бум, и схемы в плисах у них получаются тоже не очень… А все потому, что люди не понимают, что происходит на этапе синтеза, и лишь тыкают в моделирование со словами «ну тут то все работает!». Соответственно давать работать с плис в школе — пустая трата времени.
                                                        • 0
                                                          Естественно, по сравнением с программированием есть дополнительные измерения — параллелизм, конвейеризация, static timing analysis. Хотя static timing analysis строится на понимании задержек, которые изначально имеют физическую природу, но на простом уровне (включая концепцию false paths) его можно понять и без углубления в физику.
                                                        • 0
                                                          Статься понравилась.
                                                          Напишите еще цикл статей по использованию всех приложений от Xilinx. Буду их показывать в качестве дополнительного обучающего материала :)

                                                          Например,
                                                          — создание примитивных IP-ядер в Coregerator, их интеграция в проект.
                                                          — задание временных ограничений, правильное описание UCF (XDC) для ног ПЛИС, для компонентов внутри кристалла при включенной иерархии, (тут можно всю мощь PlanAhead и FPGA Editor подключить), и т.д и т.п.

                                                          Сам вот думаю написать про интеграцию блоков из System Generator и Matlab на примере динамических систем.
                                                          • 0
                                                            Если честно, я вот все жду статьи на Хабре про использование FPGA для конкретных проектов в индустрии. В частности интересуют NIC FPGA интерфейсы, например feed handler'ы.
                                                            • +2
                                                              Рано или поздно я разрожусь серией статей по использованию FPGA. Будут вам и примеры из финансов, high frequency trading (было тут на хабре) — как раз FPGA была на спец сетевой карте, обеспечивающей предобработку данных и уменьшение latency попадания данных в базу данных. И примеры из научной сферы — молекулярное моделирование, биоинформатика, нейросети…
                                                              • 0
                                                                Да вот HFT примеры это как раз то, чего не хватает, так что буду очень благодарен за подобные посты.
                                                              • +1
                                                                Как думаете, статьи какой детализации будут интересны? На уровне блок-схем и просто идей (научно-популярно), или с разбором кода внутри (для hdl-гиков)?)

                                                                Если на уровне блок-схем, то у меня как-то руки не поднимаются писать [про те проекты, в которых я участвую], кажется что, материала на хорошую статью не особо хватит. Если разбирать код, то руководство может сделать атата, если буду сливать исходники в интернетах)

                                                                Не так давно вместе с коллегой были в гостях у Марата eucariot ( habrahabr.ru/post/246753/ ), где я рассказывал о применении FPGA в конкретном проекте: 100G Ethernet балансировщик ( с функцией фильтрации ). Позволю себе привести слайд из презентации «блок-схемы»:
                                                                Скрытый текст
                                                                image

                                                                Если будет интересен рассказ о проектах в формате похожих блок-схем (ну или чуть подробных ), то почему нет? :)
                                                                • 0
                                                                  Блок-схемы это определенно хорошо, но и код интересен — конечно не полные выкладки продуктов, а скорее пояснения почему вот именно тут использован вот именно этот элемент и не другой, и что это дает. За ссылку на подкаст — спасибо, не знал!
                                                                  • 0
                                                                    Под элементами что Вы подразумеваете?
                                                                    Мультиплексоры, демультиплексоры, фифошки?
                                                            • 0
                                                              Какое ваше мнение о pyhdl и cx с точки зрения обучения?
                                                              • 0
                                                                Не пробовал. Если дадите ссылки, посмотрю.
                                                                • 0
                                                                  Не pyhdl, а myhdl, приношу извинения :) Ну и Cx
                                                                  • +1
                                                                    Извинясь, забыл вам ответить.

                                                                    По поводу Cx — я знаком с двумя десятками подобных тулов, так как сам был автором подобного тула еще в середине 1990-х годов — см. мой патент на эту тему — www.patents.com/us-6226776.html

                                                                    С точки зрения обучения ценность данного класса тулов имхо сомнительная. Дело в том, что с моей точки зрения студента нужна научить двум ключевым концепциям — конечным автоматам и конвейерности, а тулы типа Cx скрывают конечный автомат (они извлекают его их софтверноподобной последовательности действий), а также делают конвейер не-наглядным (если конвейерность вообще поддерживается в Cx).

                                                                    Что касается pyhdl, я посмотрел его и он показался мне очень многословным — слишком много текста, больше, чем в Verilog. Кроме этого, я подозреваю, что у него могут быть пролемы с временем симулирования на нетривиальных дизайнах. Вообще я видел несколько попыток сделать HDL средствами других языков (включая даже Lisp), но ни один из них не получил распостранение кроме SystemC, который тоже RTL-дизайнерам не нравится, но был навязан индустрии массированным маркетингом от Synopsys в течение многих лет.

                                                                    • 0
                                                                      Спасибо за развернутый ответ!

                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.