• Разбираем RF-backscatter на коленке

      Являясь крупнейшим русскоязычным агрегатором различных статей технического характера, Хабр как-то не добирает «массы» в области разработки цифровой электроники — ПЛИС/FPGA, ASIC, HDL в целом. Хотя пласт технологий в данном случае просто огромный, и я бы сказал, что требуемые знания здесь — это настоящая full-stack разработка: схемотехника, электроника, топология, цифровая логика, синтез и цифровая трассировка, прототипирование в ПЛИС, затем — схемотехника тестовых плат, а если это что-то сложнее простого регистрового управления аналоговым трактом, то еще и низкоуровневое программирование, да и без написания прикладных приложений для управления всем этим тоже по итогу не обходится.

      Говорят, критикуя — предлагай, поэтому вниманию читателей предоставляется небольшой экскурс в один из рабочих проектов, а именно — оцифровка и декодирование данных в сфере пассивных RFID-HF устройств.
      Читать дальше →
      • +26
      • 2.1k
      • 4
    • Быстрая регистрация особых точек изображений с помощью голосования биграфа

      Детектирование и регистрация особенностей изображений имеет много приложений в робототехнике, видео компрессии и т.д. Быстрая и аккуратная регистрация — пока недостижимая мечта многих программистов и пользователей. Она или быстрая, или аккуратная…
      Читать дальше →
      • +28
      • 6.7k
      • 8
    • Многоядерный DSP TMS320C6678. Операционные ядра: вычислительные ресурсы процессора

        Продолжаем рассматривать устройство многоядерного DSP TMS320C6678. Данная статья посвящена устройству операционных ядер процессора. Архитектура ядер описывается кратко с акцентом на сравнении платформы С66х с более ранними хорошо известными моделями С6000.

        Операционное ядро сигнального процессора – это основной элемент, непосредственно реализующий вычислительные действия, направленные на осуществление обработки сигнала в соответствии с алгоритмом, диктуемым заложенной в процессор программой. Многоядерные процессоры семейства TMS320C66xх содержат набор операционных ядер, что является предпосылкой соответствующего роста вычислительной производительности устройства по сравнению с одноядерными процессорами. Далее будет рассмотрено одно типовое ЦСП-ядро процессора TMS320C66хх.
        Читать дальше →
      • Многоядерный DSP TMS320C6678. Обзор архитектуры процессора

          Данная статья открывает серию публикаций, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В статье дается общее представление об архитектуре процессора. Статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых в Рязанском государственном радиотехническом университете.
          Читать дальше →
        • Многоядерный DSP TMS320C6678. Организация памяти ядра

            Продолжаем серию статей, посвященных многоядерным цифровым сигнальным процессорам TMS320C6678. В данной статье будет рассмотрена подсистема памяти ядра. Архитектура памяти процессора — один из ключевых моментов, напрямую влияющих на его эффективность. Знание особенностей организации архитектуры памяти позволяет разработчику более рационально использовать ресурсы DSP. Современные процессоры имеют достаточно сложную архитектуру памяти, включающую несколько уровней и контроллеры кэш. При этом в случае DSP работа с памятью усложняется наличием свободы выбора объемов кэш-памяти на разных уровнях, а для многоядерных процессоров характерна проблема синхронизации кэш разных ядер.
            Читать дальше →
          • Использование TCL в разработке на FPGA

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


              Интересно? Поехали…
              Читать дальше →
            • Детектирование и отслеживание множественных объектов в видеопотоке на FPGA


                В этой статье я хочу рассказать о реализации системы обнаружения и отслеживания множественных объектов в видеопотоке. Данная статья базируется на двух предыдущих: Детектирование движения в видеопотоке на FPGA и Фильтрация изображения методом математической морфологии на FPGA. Захват и первичная обработка изображения осуществляется при помощи методов, описанных в первой статье, а фильтрация изображения описана во второй.

                Следуя целям, поставленным в первой статье, я решил реализовать алгоритм отрисовки рамки вокруг обнаруженного объекта. В процессе выполнения этой задачи, я столкнулся с вопросом: а вокруг какого именно объекта надо рисовать рамку? Объектов, попавших в кадр после фильтрации, может оказаться множество: одни из них маленькие, а другие большие. Если рисовать одну рамку вокруг всех объектов, попавших в кадр, то это делается не сложно, но результат работы такой системы вряд ли кому будет интересен.
                Читать дальше →
                • +36
                • 10.9k
                • 4
              • Приведение типов

                  Будучи на конференции Qt Developer Days 2010 я узнал, что одним из самых популярных вопросов на собеседовании в разные зарубежные компании, работающие с Qt библиотекой, является вопрос о различиях в способах приведения типов в C++. Поэтому здесь я рассмотрю основные различия между static_cast, dynamic_cast, const_cast, reinterpret_cast, C-style cast, qobject_cast и qvariant_cast

                  Читать дальше →
                • Повышаем производительность кода: сначала думаем о данных

                  • Translation


                  Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

                  В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


                  Быстрый обратный квадратный корень в Quake

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

                  Эта статья — не исчерпывающее хардкорное руководство по железу. Это всего лишь введение, напоминание, свод базовых принципов написания эффективного кода для CPU. Я хочу «показать, что низкоуровневое мышление сегодня всё ещё полезно», даже если речь пойдёт о процессорах, которые я мог бы добавить.

                  В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
                  Читать дальше →
                • Программирование многоядерных DSP-процессоров TMS320C66x с использованием OpenMP

                  В статье описывается подход к программированию многоядерных сигнальных процессоров на основе OpenMP. Рассматриваются директивы OpenMP, разбирается их смысл и варианты использования. Делается акцент на цифровых сигнальных процессорах. Примеры применения директив OpenMP выбраны приближенными к задачам цифровой обработки сигналов. Реализация проводится на процессоре TMS320C6678 фирмы Texas Instruments, включающем 8 DSP-ядер. В части I статьи рассматриваются основные директивы OpenMP. Во II части статьи планируется дополнить список директив, а также рассмотреть вопросы внутренней организации работы OpenMP и вопросы оптимизации программного обеспечения.

                  Данная статья отражает лекционно-практический материал, предлагаемый слушателям в рамках курсов повышения квалификации по программе «Многоядерные процессоры цифровой обработки сигналов C66x фирмы Texas Instruments», проводимых ежегодно в Рязанском радиотехническом университете. Статья планировалась к публикации в одном из научно-технических журналов, но в силу специфики рассматриваемых вопросов было принято решение о накоплении материала для учебного пособия по многоядерным DSP-процессорам. А пока данный материал будет копиться, он вполне может полежать на страницах Интернета в свободном доступе. Отзывы и пожелания приветствуются.
                  Читать дальше →
                • Компенсация погрешностей при операциях с числами с плавающей запятой

                  Работа посвящена погрешностям округления, возникающим при вычислениях у чисел с плавающей запятой. Здесь будут кратко рассмотрены следующие темы: «Представление вещественных чисел», «Способы нахождения погрешностей округления у чисел с плавающей запятой» и будет приведен пример компенсации погрешностей округления.

                  В данной работе примеры приведены на языке програмиирования C.
                  Читать дальше →
                • Кто ты по професии: Разница между «Programmer», «Software Engineer» и «Computer Scientist»

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

                    Меняется ли от этого суть работы? Мы в 1cloud попробовали разобраться в том, какую работу подразумевают такие специализации как «Programmer», «Software Engineer» и «Computer Scientist».

                    Читать дальше →
                  • Как решать простые задачи оптимизации на питоне с помощью cvxpy

                    Всем доброго времени суток! Простым поиском я не сумел обнаружить упоминание модуля cvxpy и потому решил написать обучающий материал по нему – просто примеры кода, по которым в дальнейшем новичку будет проще использовать этот модуль для своих задач. cvxpy предназначен для решения задач оптимизации – нахождения минимумов/максимумов функций при определённых ограничениях. Если вам интересна эта тема – прошу под кат.
                    Читать дальше →
                    • +24
                    • 10.9k
                    • 5
                  • learnopengl. Урок 1.6 — Текстуры

                    • Translation
                    • Tutorial

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


                    Читать дальше →
                    • +26
                    • 89.9k
                    • 6
                  • Наконец-то приличный отечественный процессор ЦОС – 1967BH28

                    image

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

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

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

                    • Translation
                    • Tutorial

                    Если бы язык С был оружием

                    От автора: Наброски для этой статьи появились еще в начале 2015 года, правда, до публикации материалов дело так и не дошло. Наконец, решив, что в ящике моего письменного стола от вышеупомянутого «черновика» не будет никакой пользы, представляю его вашему вниманию в исходном виде. Единственное, что изменилось в тексте – год, с 2015 на 2016.

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

                    Итак, статья ...


                    Первое правило программирования на С – не используйте его, если можно обойтись другими инструментами.

                    Когда найти альтернативный метод не удается, самое время вспомнить о современных заповедях программиста.
                    Читать дальше →
                  • Android JNI + Intelij Idea + Gradle. Полная автоматизация процесса

                    Доброго времени суток!
                    Данный пост является небольшим руководством, по автоматизации компиляции нативного кода в среде Intellij Idea с использованием Gradle. Gradle предоставляет достаточно большой функционал для автоамтизации сборки проектов. Но даже подключение нативных библиотек к Android проекту требует дополнительных усилий со стороны разработчика.

                    Предыстория


                    Недавно я сменил место работы и устроился работать в компанию, занимающуюся разработкой собственного мобильного программного обеспечения. Мы с моими новыми коллегами по работе решили перейти с Eclipse (на котором до этого велась вся разработка) на Intellij Idea, и в добавок с Ant на Gradle. У нас достаточно большой проект, с приличным количеством кода, в том числе с использованием нативного C и C++ кода, как самописного так и уже готовых библиотек.

                    Тех, кто занимается разработкой Android проектов с использованием Android NDK в среде Intellij Idea + Gradle прошу под кат.
                    Читать дальше →
                    • +11
                    • 12.1k
                    • 6
                  • Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке


                      Господа! Я рад сообщить, что наконец-то все желающие могут загрузить бесплатный учебник на более чем 1600 страниц, над переводом которого работало более полусотни человек из ведущих университетов, институтов и компаний России, Украины, США и Великобритании. Это был реально народный проект и пример международной кооперации.

                      Учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера», второе издание, 2012, сводит вместе миры программного обеспечения и аппаратуры, являясь одновременно введением и в разработку микросхем, и в низкоуровневое программирование для студентов младших курсов. Этот учебник превосходит более ранний вводный учебник «Архитектура компьютера и проектирование компьютерных систем» от Дэвида Паттерсона и Джона Хеннесси, причем соавтор предыдущего учебника Дэвид Паттерсон сам рекомендовал учебник от Харрисов как более продвинутый. Следуя новому учебнику, студенты строят реализацию подмножества архитектуры MIPS, используя платы с ПЛИС / FPGA, после чего сравнивают эту реализацию с индустриальными микроконтроллерами Microchip PIC32. Таким образом вводится вместе схемотехника, языки описания аппаратуры Verilog и VHDL, архитектура компьютера, микроархитектура (организация процессорного конвейера) и программирование на ассемблере — в общем все, что находится между физикой и высокоуровневым программированием.

                      Как загрузить? К сожалению, не одним кликом. Сначало надо зарегистрироваться в пользовательском коммьюнити Imagination Technologies, потом зарегистрироваться в образовательных программах на том же сайте, после чего наконец скачать:
                      Читать дальше →
                    • Оруженосцы микроэлектроники. Видеорепортаж с конференции по проектированию электроники в Сан-Франциско

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

                        А если студент вырастет и захочет завалить спроектированными его компанией микросхемами все континенты, но не знает с чего начать? И на это у меня есть ответ — я записал также видео интервью с Mark Scrivener, директором eSilicon’s Semiconductor Manufacturing Services. Мы с Марком вместе рассчитали по пунктам расходы и себестоимость условного российского чипа, который будет производится в больших объемах в 2016-2020 годах.

                        Эти и другие видео я записал на конференции Design Automation Conference (DAC), которая прошла на прошлой неделе в Сан-Франциско. Конференция DAC фокусируется на индустрии Electronic Design Automation (EDA), которая обслуживает проектировщиков микросхем. Среди людей, которых я проинтервьировал на прошлой неделе — гуру языка описания аппаратуры Verilog Джон Сангвинетти, руководители компаний, которые разрабатывают софтверные инструменты для разработчиков микросхем, разработчики плат с ПЛИС, один из основателей зеленоградской компании по проектированию микросхем ЭЛВИС Александр Галицкий и другие специалисты и бизнесмены.

                        dac_20150608_191252.jpgdac_20150608_124050.jpgdac_20150608_124532.jpg

                        Итак:
                        Читать дальше →