• Как прошла наша первая FPGA конференция?

      Привет, FPGA хаб!


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


      Так вот, конференция состоялась 28 ноября 2020 года, и этим постом я бы хотел поведать вам об этом «немаловажном» для отечественного FPGA сегмента событии. Постараюсь рассказать обо всём «от идеи до реализации».




      Читать дальше →
    • Сверхдлинное преобразование Фурье на FPGA

        Всем привет!

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

        В этой статье показана невозможность реализации «классической» схемы очень длинного БПФ даже на самых современных кристаллах ПЛИС и предложен алгоритм, позволяющий это сделать. Также пошагово рассмотрена основная идея алгоритма: от математической составляющей до создания законченного решения на базе ПЛИС с использованием внешней DDR-памяти. Статья затронет тонкости проектирования многоканальных систем обработки для подобного класса задач и, в частности, опишет мой практический опыт.


        Читать дальше →
      • Новостной дайджест событий из мира FPGA/ПЛИС — №001 (2020_01)

          Здравствуйте, друзья.

          Пришла в голову мысль опубликовать последние события за месяц (январь 2020) из мира FPGA/ПЛИС. Ниже списком приведены несколько ссылок на новости, анонсы, вебинары, воркшопы, туториалы, видео и тд. Если данный формат будет интересен, будем собирать новости по крупицам из интернета. Подобные новостные дайджесты есть, например, на хабе про php, почему бы и не сделать что-то подобное и для ПЛИС?


          Читать дальше →
        • Курс лекций «Основы цифровой обработки сигналов»

            Всем привет!

            Часто ко мне обращаются люди с вопросами по задачам из области цифровой обработки сигналов (ЦОС). Я подробно рассказываю нюансы, подсказываю нужные источники информации. Но всем слушателям, как показало время, не хватает практических задач и примеров в процессе познания этой области. В связи с этим я решил написать краткий интерактивный курс по цифровой обработке сигналов и выложить его в открытый доступ.

            Большая часть обучающего материала для наглядного и интерактивного представления реализована с использованием Jupyter Notebook. Предполагается, что читатель имеет базовые знания из области высшей математики, а также немного владеет языком программирования Python.


            Читать дальше →
          • Как Python и Jinja могут облегчить жизнь FPGA разработчику

              Всем привет!

              Так бывает, что используемые языки программирования накладывают ограничение на то, что мы хотим сделать, доставляя неудобство при разработке. Что с этим делают разработчики? Либо смиряются, либо как-то пытаются выйти из положения.

              Один из вариантов — использование автогенерации кода.

              В этой статье я расскажу:
              • как можно обойти одно из ограничений языка Verilog, применяемого при разработке ASIC/FPGA, используя автогенерацию кода с помощью Python и библиотеки Jinja.
              • как можно ускорить разработку IP-ядер, сгенерировав модуль контрольно-статусных регистров из их описания.


              Если интересно, добро пожаловать под кат!
              Читать дальше →
            • Реализация целочисленного БПФ на ПЛИС

                Всем привет!

                Однажды меня спросили заказчики, нет ли у меня в проектах целочисленного БПФ, на что я всегда отвечал, что это уже сделано другими в виде готовых, хоть и кривых, но бесплатных IP-ядер (Altera / Xilinx) – берите и пользуйтесь. Однако, эти ядра не оптимальны, обладают набором «особенностей» и требуют дальнейшей доработки. В связи с чем, уйдя в очередной плановый отпуск, который не хотелось провести бездарно, я занялся реализацией конфигурируемого ядра целочисленного БПФ.


                КДПВ (процесс отдладки ошибки переполнения данных)

                В статье я хочу рассказать, какими способами и средствами реализуются математические операции при вычислении быстрого преобразования Фурье в целочисленном формате на современных кристаллах ПЛИС. Основу любого БПФ представляет узел, который носит название «бабочка». В бабочке реализуются математические действия – сложение, умножение и вычитание. Именно о реализации «бабочки» и её законченных узлов будет идти рассказ в первую очередь. За основу взяты современные семейства ПЛИС фирмы Xilinx – это серия Ultrascale и Ultrascale+, а также затрагиваются старшие серии 6- (Virtex) и 7- (Artix, Kintex, Virtex). Более старшие серии в современных проектах – не представляют интереса в 2018 году. Цель статьи – раскрыть особенности реализации кастомных ядер цифровой обработки сигналов на примере БПФ.
                Читать дальше →
              • VPN за пиво?

                  VPN становится сегодня не просто актуальным, но часто и жизненно необходимым сервисом для пользователей рунета. Заблокированный LinkedIn, беспорядочная стрельба Роскомнадзора, возможная блокировка Фейсбука, Вайбера и других ежедневных приложений, сотни и тысячи уже заблокированных сайтов в сети, невозможность оставаться анонимным при использовании ВК, ОК, Mail.ru и прочих "подконтрольных" ресурсов, и множество иных причин. Все это заставляет рунетовцев задуматься о своем будущем в этом сегменте мировой сети.


                  У всех нас есть бабушки, дедушки, родители, а также знакомые гуманитарии, музыканты, домохозяйки и прочие замечательные, но навсегда далекие от "сложных" Интернет технологий люди. Да, конечно, Интернет полон туториалами и видео роликами, объясняющих "простой" процесс установки VPN клиента. Однако все это не решает главной задачи — ЗАСТАВИТЬ этих людей проделать непривычные и пугающие их действия и обзавестись, наконец-то, VPN защитой.

                  Читать дальше →
                • ECO Flow в Vivado или работа в режиме редактирования нетлиста

                  Аннотация


                  В статье рассмотрен режим работы Vivado, позволяющий вносить изменения в проект на уровне редактирования списка соединений (в дальнейшем – нетлиста). Описаны как сам режим ECO, так и некоторые нюансы, которые появляются во время работы в нём. Приведён демонстрационный пример и описана полная последовательность действий для получения результата, в работоспособности которой может убедиться каждый желающий. Статья будет полезна для «общего развития» FPGA-разработчикам, а особенно — тем, кто часто отлаживает проекты в Logic Analyzer. Надеюсь, работа в этом режиме вызовет интерес у разработчиков, работающих с большими кристаллами, время компиляции в которых может достигать часов (а то и десятков часов), поскольку в этом режиме время, затрачиваемое на имплементацию, при внесении изменений в нетлист может сократиться до буквально пары минут.




                  Оглавление



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


                  Читать дальше →
                • Вращение изображения на FPGA



                    Пол года назад я наткнулся в сети вот на это видео.

                    Первой мыслью было то, что это очень круто и у меня такое никогда не получится повторить. Шло время, читались статьи, изучались методы и я искал примеры реализации подобного, но к моему огорчению, в сети ничего конкретного не находилось. Наткнувшись однажды на вычисления тригонометрических функций с использованием алгоритмов CORDIC, я решил попробовать создать свою собственную вращалку изображения на ПЛИС.
                    Читать дальше →
                  • Реализация генератора псевдослучайных чисел на ПЛИС с использованием Vivado HLS 2014.4

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

                    Скажу пару слов об этой научной задаче: необходимо было произвести расчет динамики биологических микротрубочек на временах порядка минуты. Расчеты представляли собой вычисления с использованием молекулярно-механической модели микротрубочки, разработанной в научной группе. Планировалось, что на основе полученных результатов вычислений можно будет сделать вывод о механизмах динамической нестабильности микротрубочек. Необходимость в использовании ускорителя была обусловлена тем фактом, что минута эквивалента достаточно большому количеству расчетных шагов (~ 10 ^ 12) и, как следствие, большому количеству времени, затрачиваемому на вычисления.

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

                    В качестве базовой архитектуры проекта был использована архитектура с поддержкой DMA передач. Как компонент этого вычислительной платформы необходимо было реализовать IP ядро, которое способно было бы генерировать новое псевдослучайное нормально распределенное число типа float каждый такт и занимало бы как можно меньше ресурсов на ПЛИС.
                    Читать дальше →
                  • Расчет корректирующего КИХ-фильтра на ПЛИС



                      Всем привет! Написать эту статью меня побудило выступление на семинарах по цифровой обработке сигналов, где слушатели всегда заостряли интерес к методике вычисления корректирующих FIR-фильтров, несмотря на то, что эту тему я затрагивал поверхностно и по большей части рассказывал об этом в ознакомительных чертах. Если публика желает получить тайные знания, то почему бы ими не поделиться. В этой статье я постараюсь в доступной форме изложить алгоритм расчета корректирующих КИХ фильтров, который необходим для выравнивания АЧХ в полосе пропускания после звеньев CIC фильтров в задачах децимации и интерполяции сигналов. В частности, рассмотрим проектирование фильтров на современных ПЛИС Xilinx. Как обычно, в конце статьи будет ссылка на полезные скрипты для расчета различных фильтров и получение файла коэффициентов фильтра-корректора.

                      Предполагается, что читатель знаком с основами цифровой обработки сигналов и имеет представление о CIC и FIR фильтрах. Приступим.
                      Читать дальше →
                    • Запуск проекта Нерепетитор

                        Некоторое время назад мы открыли пилот математической онлайн-школы Нерепетитор, основанной на идее «динамических» курсов. Их формат отличается от традиционных МООС тем, что для каждой выбранной темы предлагается «минимальная обучающая траектория», т.е. путь обучения, начинающийся с азов, и содержащий самое необходимое. Подробно об этой идее, с теоретической точки зрения, написано в предыдущей статье. Теперь практическая (немного упрощенная) реализация опубликована, и ей можно пользоваться (весь контент бесплатный).
                        Читать дальше →
                      • Революция в радиотехнике? RF-ARM-FPGA SoC


                          Компания Xilinx тихо и без лишней помпы анонсировала продукт, который может полностью изменить облик и процесс разработки современных радиоприемников и передатчиков. Это маленькая микросхема, которая объединяет 90% вопросов обработки и формирования радиосигналов:

                          • программируемая логика (FPGA),
                          • процессоры для обработки сигналов и пользовательских приложений (два ARM’а),
                          • до восьми 12-разрядных АЦП с частотой дискретизации до 4 ГГц (!),
                          • до восьми 14-разрядных ЦАП с верхней частотой до 6.4 ГГц (!).

                          Кажется мы входим в эпоху, когда архитектура трансивера становится такой же универсальной, как архитектура современного ПК. Make SW, not HW!
                          Читать дальше →
                        • Women's Day Gift by FPGA

                            Всем привет! В преддверии 8 марта решил сделать своей возлюбленной небольшой подарок с использованием тех инструментов, которыми чаще всего приходится пользоваться на работе. Имея немного свободного времени, я подумал, а почему бы не написать небольшую статью на хабре по этому поводу. Это отличная возможность поздравить всех дам и, в частности, немногочисленный женский состав сообщества хабрахабр. Статья написана "just for fun" и не имеет никакого научного вклада, не несёт большой смысловой нагрузки, но может быть полезна начинающим разработчикам в области ПЛИС. Я расскажу какие средства использованы для получения конечного результата и что из этого вообще получилось. В статье вы увидите мерцающие сердечки и бегущий текст на светодиодной матрице 8x8, которая управляется небольшой старенькой ПЛИС. В конце статьи вы найдете видео-демонстрацию совместной работы ПЛИС и матрицы светодиодов.


                            Читать дальше →
                            • +23
                            • 6.8k
                            • 9
                          • Детектирование движения в видеопотоке на FPGA


                            Предисловие


                            Меня давно интересовала тема обработки видео, вот только на отладочных платках 7-х и 9-х ARM-ов это получалось очень медленно и от этого становилось не интересно.

                            В настоящее время полным-полно мощного многоядерного железа и создано много библиотек для работы с видео, но мой выбор пал на ПЛИС.
                            Читать дальше →
                          • Реализация узла БПФ с плавающей точкой на ПЛИС

                              Всем привет! В этой статье речь пойдет о реализации быстрого преобразования Фурье в формате с плавающей точкой на ПЛИС. Будут показаны основные особенности разработки ядра от самой первой стадии до готового конфигурируемого IP-ядра. В частности, будет проведено сравнение с готовыми ядрами фирмы Xilinx, показаны преимущества и недостатки тех или иных вариантов реализации. В статье будет рассказано о главной особенности ядра БПФ и ОБПФ — об отсутствии необходимости переводить данные в натуральный порядок после БПФ и ОБПФ для их совместной связки. В этой статье я постараюсь отразить всё тонкости реализации проекта под названием FP23FFTK, приведу реальные примеры использования готового ядра. Проект написан на языке VHDL и заточен под FPGA фирмы Xilinx последних семейств.


                              Читать дальше →
                              • +41
                              • 24.5k
                              • 5
                            • О метастабильности в электронике

                                Многие начинающие разработчики часто недооценивают влияние асинхронности на работу цифровых схем. В проектах с одним тактовым генератором сложностей не возникает: схема полностью синхронна, и от разработчика требуется только соблюдать требования Setup и Hold. Но как только в системе появляется второй тактовый генератор, возникает проблема CDC – Clock Domains Crossing, связанная с асинхронностью работы участков схемы, работающих от независимых (асинхронных) генераторов. На практике эта проблема выливается в усложнение маршрута проектирования, связанное с особенностями статического временного анализа в САПР, а в железе проявляется в виде такого эффекта как метастабильность, и аномальное поведение триггеров. Собственно, о метастабильности здесь уже писали, но я предлагаю чуть глубже разобраться в проблеме.
                                Читать дальше →
                              • Применение FPGA для расчета деполимеризации микротрубочки методом броуновской динамики

                                  Все готово, чтобы рассказать Хабр аудитории о применении FPGA в сфере научных высокопроизводительных вычислений. И о том, как на данной задаче надо удалось значительно обскакать GPU (Nvidia K40) не только в метрике производительность на ватт, но и просто с точки зрения скорости вычисления. В качестве FPGA платформы использовался кристалл Xilinx Virtex-7 2000t, подключенный по PCIe к хост компьютеру. Для создания аппаратного вычислительного ядра использовался язык C++ (Vivado HLS).


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

                                  Читать дальше →
                                • Прямая передача данных между ПЛИС Virtex-7 по шине PCI Express

                                  Аннотация


                                  В данной статье рассматривается передача данных по шине PCI Express с одновременным участием нескольких ПЛИС. В компьютерной системе, к PCI Express шине которой подключено несколько (в нашем случае 8) оконечных устройств (PCIe endpoints) ПЛИС запускается одновременно несколько транзакций передачи данных двух типов: А) DMA передача между ОЗУ и ПЛИС (чтение/запись) и Б) прямая передача данных между двумя ПЛИС (запись). Используя соединение PCI Express x4 Gen 2.0 при обращении в память была получена скорость записи 1451 МБ/с (90% от максимальной). Скорость записи данных между ПЛИС была равна 1603 МБ/с (99 % от максимальной) при длине пакетов 128 байт и 1740 МБ/с (99% от максимальной) при длине пакета 256 байт. Латентность передачи данных между ПЛИС зависит от количества промежуточных коммутаторов, и была равна 0,7 мкс для одного коммутатора и 1 мкс для трех. Также показано, что при одновременных передачах через общий канал скорость отдельных передач не уменьшается до тех пор, пока суммарная скорость передачи не превышает пропускную способность общего канала; затем канал используется на 100%, а его пропускная способность делится поровну между устройствами.
                                  Читать дальше →
                                • Наконец-то приличный отечественный процессор ЦОС – 1967BH28

                                  image

                                  Несмотря на стремительное развитие процессоров общего назначения (ARM, x86 и более экзотических), не теряют своей актуальности специализированные процессоры цифровой обработки сигналов (ЦОС). Одним из самых популярных процессоров ЦОС с плавающей точкой в родном отечестве стал процессор ADSP-TS201S фирмы Analog Devices. В свое время (10-15 лет назад) этот процессор не знал себе равных в высокопроизводительных системах ЦОС, работающих в реальном времени. Его основные характеристики:

                                  • Частота процессора – 600 MГц
                                  • Объем внутренней памяти – 3 МБайта
                                  • 4 высокоскоростных порта – 600 Мбайт/сек
                                  • Внешняя шина – 100 МГц
                                  • Каналы DMA – 12 каналов

                                  Решения на процессоре ADSP-TS201S хорошо себя зарекомендовали в широком классе аппаратуры как гражданского, так и не очень гражданского назначения. Но всему хорошему приходит сами знаете что конец.
                                  Читать дальше →