Search
Write a publication
Pull to refresh
3
0
Максим @MaxxONE

Инженер

Send message

Особенности оконной фильтрации на ПЛИС

Reading time11 min
Views20K
Всем привет! В этой статье речь пойдет об одной важной части цифровой обработки сигналов — оконной фильтрации сигналов, в частности на ПЛИС. В статье будут показаны способы проектирования классических окон стандартной длины и «длинных» окон от 64K до 16M+ отсчетов. Основной язык разработки — VHDL, элементная база — современные кристаллы FPGA Xilinx последних семейств: это Ultrascale, Ultrascale+, 7-series. В статье будет показана реализация CORDIC — базового ядра для конфигурации оконных функций любой длительности, а также основных оконных функций. В статье рассмотрен метод проектирования с помощью языков высокого уровня С/C++ в Vivado HLS. Как обычно, в конце статьи вы найдете ссылку на исходные коды проекта.

КДПВ: типичная схема прохождения сигнала через узлы ЦОС для задач анализа спектра.


Читать дальше →

Разработка интерфейсных классов на С++

Reading time24 min
Views95K

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



Читать дальше →

Обзор бесплатных 2D САПР

Reading time8 min
Views153K
В сфере автоматизации проектирования с каждым годом всё сильнее укрепляют свои позиции параметрические трёхмерные САПР. Полезность такого подхода в инженерном деле сейчас не вызывает сомнений, и сфера применения такого подхода обширна.

Тем не менее, в инженерном деле остаётся место и для традиционного двумерного проектирования, и для этого есть соответствующие инструменты.

image
Читать дальше →

Курс MIT «Безопасность компьютерных систем». Лекция 1: «Вступление: модели угроз», часть 1

Reading time15 min
Views144K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


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

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3

Как я диплом в LaTeX писал с GitHub, Docker и TravisCI

Reading time5 min
Views46K

Еще со времен обучения в университете я использовал LaTeX для оформления лабораторных и курсовых работ. Познакомился впервые с LaTeX на Coursera, на курсе "Документы и презентации в LaTeX".


В этой заметке я расскажу, как я писал диплом с помощью LaTeX и почему я использовал GitHub, Docker и TravisCI.


Но зачем?

Читать дальше →

Изучаем процессы в Linux

Reading time7 min
Views178K

В этой статье я хотел бы рассказать о том, какой жизненный путь проходят процессы в семействе ОС Linux. В теории и на примерах я рассмотрю как процессы рождаются и умирают, немного расскажу о механике системных вызовов и сигналов.

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

Руководство по ассемблеру x86 для начинающих

Reading time16 min
Views166K
В наше время редко возникает необходимость писать на чистом ассемблере, но я определённо рекомендую это всем, кто интересуется программированием. Вы увидите вещи под иным углом, а навыки пригодятся при отладке кода на других языках.

В этой статье мы напишем с нуля калькулятор обратной польской записи (RPN) на чистом ассемблере x86. Когда закончим, то сможем использовать его так:

$ ./calc "32+6*" # "(3+2)*6" в инфиксной нотации
30

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

Начнём с написания базовой программы Hello world! для проверки настроек среды. Затем перейдём к системным вызовам, стеку вызовов, стековым кадрам и соглашению о вызовах x86. Потом для практики напишем некоторые базовые функции на ассемблере x86 — и начнём писать калькулятор RPN.
Читать дальше →

Раритетный домофон

Reading time2 min
Views24K
image

Здравствуйте!

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

Подарили мне как-то древний телефон. Выпущен он был если не при Иосифе Виссарионовиче, то при Никите Сергеевиче то уж точно! Примерно тогда Гагарин полетел в космос. В общем, штука классная! Можно конечно положить на полочку «в музей», но как-то не интересно. А времена проводных телефонов давно прошли. Надо наделить девайс каким-то функционалом, чтоб можно было пользоваться. Я решил сделать из него домофон. Итак:
Поехали

Быстрый старт с ARM Mbed: разработка на современных микроконтроллерах для начинающих

Reading time17 min
Views76K
Привет, Хабр.

Традиционным уникальным преимуществом платформы Arduino называлось (да и сейчас иногда называется, хотя это уже неверно — и мы поговорим, почему) опускание порога входа в микроконтроллерную разработку до уровня базовых знаний C/C++ и электроники в маштабе «подключить светодиод в нужной полярности».

Спросите примерно у любого активного сторонника Arduino — и вам быстро объяснят, что можно, конечно, писать под STM32 или nRF52, но выгоды в том реальной никакой, зато вас ждут бессонные ночи над сотнями страниц даташитов и бесконечные простыни функций с длинными непонятными названиями.

Заслуги Arduino в снижении порога вхождения действительно трудно переоценить — эта платформа появилась на свет в середине нулевых годов, а после 2010 завоевала серьёзную популярность среди любителей. Особых альтернатив на тот момент ей не было — процессоры на ядрах Cortex-M только появились, по сравнению с AVR они были довольно сложны даже для профессиональных разработчиков, а отладочные платы у большинства вендоров стоили от сотни долларов и выше (и в общем в индустрии ценник за отладку на 5-долларовом контроллере в $500 никого сильно не удивлял).

Однако большая проблема Arduino в том, что её развитие за минувшие 10+ лет более всего напоминает некоторые модели АвтоВАЗа:


Так как дальше я планирую длинное вступление, то сейчас, чтобы вы представляли, в чём будет заключаться практическая часть, я приведу полный текст программы, включающий инициализацию процессора STM32 и мигание светодиодом. Программа написана для ОС ARM Mbed:

#include "mbed.h"
DigitalOut myled(LED1);

int main() {
    while(1) {
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is OFF
        wait(1.0); // 1 sec
    }
}

Похоже ли это на высокий входной порог? На функции с непонятными названиями? Бессонные ночи над даташитами? Нет? Ладно, давайте не будем забегать вперёд.
Читать дальше →

Пифагорейское математическое обоснование музыкальной гаммы

Reading time16 min
Views37K
Глава из книги Александра Волошинова «Математика и искусство» (Москва: Просвещение, 1992)

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

Плутарх

Строго говоря, речь здесь пойдет о пифагоровом строе. Что же такое гамма и строй в музыке?
Читать дальше →

Обзор градиентных методов в задачах математической оптимизации

Reading time11 min
Views110K

Предисловие


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



Читать дальше →

BricsCAD Shape — бесплатная 3D САПР от Bricsys

Reading time1 min
Views15K
На днях под Linux тихо и почти незаметно вышел новый CAD продукт от компании Bricsys, таким образом Linux пополнился еще одним must-have инструментом для виртуального прототипирования.


Читать дальше →

SamsPcbGuide, часть 5: Трассировка сигнальных линий. Искажения в линии и согласование импедансов

Reading time6 min
Views13K
Продолжаем рассмотрение трассировки печатных плат. Эту статью публикую из своего родного города Северодвинска, с благодарностью своим школьным учителям. Тема, которой она посвящена, базовая, и оттого важно с ней разобраться. Здесь будут рассмотрены отражения в сигнальных линиях и, как всегда, будут даны рекомендации по снижению искажений сигнала, в том числе с помощью различных методик согласования линий.
Читать дальше →

Патологическая наука

Reading time13 min
Views17K
В темной-темной комнате сидят двое ученых. Один крутит черный-черный потенциометр, второй внимательно смотрит в темную-темную катодную трубку. Страшно? На самом деле – да. Потому что происходящее – это самая настоящая



В наше время непрерывных потоков информации, развития науки и ее популяризации, с увлечением социальными сетями и различными медиаплатформами как никогда стоит вопрос о качестве этой самой информации. Помимо вирусности распространения настоящим бичом соцсетей становится моментальное нахождение и сплочение единомышленников вокруг практически любой идеи – как радикально политически окрашенной, так и совершенно абсурдной. Если даже сторонников идей вроде плоской Земли набирается критическая масса, чтобы их количество и уверенность в себе позволяли им самоподдерживаться и психологически сопротивляться даже простейшим и железным логическим доводам, что же говорить о более сложных темах, требующих специальных знаний? Конечно, это касается массового сознания. Специалистов подобные вещи практически не затрагивают, потому что образование позволяет им отличить факты от лженауки и медиа-мифов.

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

SamsPcbGuide, часть 4: Трассировка сигнальных линий. Минимизация индуктивности

Reading time8 min
Views21K
Мир, трассировка печатной платы, май. Потому что трассировка печатной платы — это труд. И эта статья открывает целый блок, цель которого дать правильные инструменты для этой задачи. В ней обосновывается важность контроля траектории возвратного тока и минимизации индуктивности контура тока критических сигнальных линий, а также даются рекомендации по их оптимальной трассировке.
Читать дальше →

Установка OpenVPN в несколько кликов

Reading time6 min
Views58K

imageПривет, Geektimes!


Не так давно мне пришла в голову мысль, что подключение к Linux-серверу по SSH, установка пакетов, запуск скриптов — все это однотипная рутина, для которой не нужно участие человека, ее может сделать робот. Конечно, я пользуюсь Ansible, но он ведь тоже "не для всех".


В результате была написана программа "для всех" в которой просто есть одна кнопка "сделать хорошо". Программа с открытым исходным кодом и доступна для изучения и скачивания на GitHub.


Но одной программы для того, чтобы нести личный OpenVPN в массы, не достаточно. Поэтому была написана эта статья, в которой просто и по шагам расписано все, от создания аккаунта в облачном сервисе, до подключения с мобильного телефона.


Всего нужно выполнить 4 простых шага:


  1. Создать сервер (обычно достаточно просто нажать кнопку "Создать")
  2. Установить и запустить приложение SSHeller
  3. Нажать кнопку Install и дождаться завершения установки
  4. Скачать ovpn файл и подключиться к VPN с его помощью
Читать дальше →

C++ велосипедостроение для профессионалов

Reading time36 min
Views50K
Классы, которые люди самостоятельно пишут, а потом копируют из одного проекта в другой, хотя они уже есть в стандартных библиотеках, в простонародье называются велосипедами. Первый вопрос, который возникает при встрече с таким «велосипедом» — зачем люди переписывают что-то заново? Вариантов может быть несколько.

  • Некоторые делают это для самообучения: берут класс стандартной библиотеки, пишут его сами с нуля, сравнивают то, что получилось, с тем, что есть в стандартной библиотеке — в процессе узнают для себя что-то новое.
  • Некоторые проекты имеют особое требования к коду. В embedded-разработке принято работать без RTTI и без exception, поэтому части стандартной библиотеки, которые используют RTTI и exception, необходимо переписать без них.
  • Редко, но бывает, когда велосипед пишут, потому что могут написать лучше, чем в стандартной библиотеке. Как правило, такие нововведения рано или поздно попадают в стандартную библиотеку.
  • Другим только кажется, что они могут написать лучше, и таких людей больше. Но в процессе они обучаются, выясняют для себя что-то новое и что-то интересное открывают.
  • Могут быть другие причины.

Сегодня мы не будем говорить о том, что велосипеды — это плохо, это не обязательно так. Мы поговорим о том, что действительно плохо:

  • бездумно переносить устаревшие технологии 20-30-летней давности в современные проекты;
  • пользоваться «вредными» бенчмарками и оптимизациями.

А также затронем «вредные» советы, обсудим новейшие практики программирования (C++ 11 и позднее), подумаем, что делать с «идеальным» велосипедом.

Cжатие и улучшение рукописных конспектов

Reading time9 min
Views38K
Я написал программу для очистки отсканированных конспектов с одновременным уменьшением размера файла.

Исходное изображение и результат:


Слева: исходный скан на 300 DPI, 7,2 МБ PNG / 790 КБ JPG. Справа: результат с тем же разрешением, 121 КБ PNG [1]

Примечание: описанный здесь процесс более-менее совпадает с работой приложения Office Lens. Есть другие аналогичные программы. Я не утверждаю, что придумал нечто радикальное новое — это просто моя реализация полезного инструмента.

Если торопитесь, просто посмотрите репозиторий GitHub или перейдите в раздел результатов, где можно поиграться с интерактивными 3D-диаграммами цветовых кластеров.
Читать дальше →

Доверяй и проверяй: подход к проверке схем и печатных плат

Reading time6 min
Views29K

image 1


Создание электрических схем и трассировка печатных плат становятся всё более простыми делами. Производители компонентов интегрируют в изделия всё больше функционала, выкладывают готовые модели, условные графические обозначения (УГО) и целые схемы, сайты автоматически генерируют источники питания, фильтры и многое другое. Тем не менее, даже при проектировании простых печатных узлов обнаруживаются ошибки, часто — глупые и очевидные.

Как их избежать?

Операционные системы с нуля; Уровень 0

Reading time11 min
Views136K

Добрый день/вечер/ночь/утро! Есть один экспериментальный курс по операционным системам. Есть он в Стэнфордском университете. Но часть материалов доступно всем желающим. Помимо слайдов доступны полные описания практических занятий.


Чем этот курс отличается от прочих других? Большая часть кода пишется самостоятельно и выполняется на вполне реальном современном железе. В качестве целевой платформы выбран Raspberry Pi 3 model B. Т.е. достаточно актуальная архитектура AArch64. ARMv8 Cortex-A53, четыре ядра, 64-бита и вот это всё. В качестве основного языка программирования выбран Rust. Который безопасный, быстрый, без GC и так далее. Его, Rust, предполагается изучать во время курса.


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

Читать дальше →

Information

Rating
10,331-st
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity