Pull to refresh
270
15.2
Николай @nckma

Программист

Send message

Опыт использования свободного ПО OSS-CAD-SUITE для программирования FPGA Gowin

Level of difficultyMedium
Reading time9 min
Views936

Для программирования FPGA нужна среда проектирования. Например, при использовании микросхем ПЛИС Altera/Intel мы используем САПР Intel Quartus Prime Software. Возможно, основная ценность технологии ПЛИС даже не сами микросхемы, а программное обеспечение, которое позволяет разместить Verilog HDL / VHDL проект по логическим блокам и развести связи между ними используя заданные временные ограничения.

Возможно ли использование open source инструментов для FPGA проектирования?

Я расскажу о своем опыте использования Yosys oss-cad-suite для платы Марсоход3GW-2 на базе ПЛИС китайской компании Gowin GW1NR-LV9QN88PC6/I5. Фото платы показано выше в начале статьи.

Читать далее
Total votes 11: ↑13.5 and ↓-2.5+16
Comments3

Эксперименты с цифровым КИХ фильтром в плате FPGA MCY316

Level of difficultyMedium
Reading time13 min
Views2.7K

В своей предыдущей статье я написал, как произвести оцифровку звукового сигнала FPGA платой MCY316. В том проекте данные полученные из АЦП просто передавались в компьютер через последовательный порт. Уже на компьютере данные принимались из последовательного порта программой на питоне и отрисовывались в окне.

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

Рисунок выше показывает схему моего эксперимента.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments16

Оцифровка звука FPGA платой MCY316

Level of difficultyMedium
Reading time6 min
Views2.7K
image

Вот уже почти закончился сентябрь. Студенты уже давно вернулись за парты и учатся.
Многие начали изучать цифровую обработку сигналов. А как известно, лучше предмет пощупать один раз своими руками, чем десять раз прочитать о нём в учебнике.

В этой статье я расскажу о захвате звукового сигнала платой FPGA MCY316. Захват сигнала это только первый этап перед обработкой. Получим сигнал и передадим эти данные в ПК. Если всё получится, то в следующих работах добавим в ПЛИС цифровой фильтр
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments6

Моя марбл машина, версия 3

Reading time3 min
Views5.7K

Это моя новая электро-механическая марбл машина. Она спроектирована мной в САПР FreeCAD и напечатана на 3D принтере FLSUN-QQ. Когда-то я уже писал на хабре про свою самую первую марбл, потом и про вторую. Ну вот время идет, но опять и опять я возвращаюсь к этой теме. Марбл машины притягивают меня видимо потому, что на них можно смотреть бесконечно, как на горный ручей. Движение шариков никогда не повторяется и в этом вся прелесть. Ну и опять же, такие марбл машины символизируют жизнь с её подъемами и спусками, а иногда и падениями... очень актуально в нынешние непростые времена..

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

Читать далее
Total votes 41: ↑41 and ↓0+41
Comments33

Обзор FPGA платы MCY112

Level of difficultyEasy
Reading time3 min
Views3K


Что-то давно на Хабре не было статей про FPGA и я решил немножко восполнить этот пробел. Расскажу про нашу новую плату на ПЛИС Cyclone I. Да-да, вы правильно прочитали. На плате стоит первый циклон компании Альтера. Микросхеме больше десяти лет, но еще поработает. Причины использования этого чипа думаю всем понятны: санкции и плюс недавно случившийся мировой кризис полупроводников, который еще не вполне закончился.

Цель разработки этой платы — создать по возможности недорогую FPGA плату для студентов из минимального числа доступных и имеющихся в наличии компонентов. Далее давайте рассмотрим плату подробнее.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments4

Кросс-компилятор для Raspberry Pi4

Reading time6 min
Views9.1K

Хочу рассказать, как я собрал себе кросс-компилятор для Raspberry Pi4 с помощью crosstool-ng. Возможно кому-то тема покажется слишком примитивной и скучной. Я и сам поначалу думал, что быстро смогу собрать кросс-компилятор, но пришлось повозиться и изучать вопрос, некоторые нюансы были для меня неожиданны. Дальше расскажу что и как я делал.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments12

Второй HDMI монитор к Raspberry Pi3 через DPI интерфейс и FPGA плату

Reading time8 min
Views8.4K

На этом видео показаны: плата Raspberry Pi3, к ней, через разъем GPIO, подключена FPGA плата Марсоход2rpi (Cyclone IV), к которой подключен HDMI монитор. Второй монитор подключен через штатный разъем HDMI Raspberry Pi3. Все вместе работает, как система с двумя мониторами.

Дальше расскажу, как это реализовано.
Total votes 20: ↑20 and ↓0+20
Comments4

Процессор Forth J1 в FPGA плате M02mini

Reading time5 min
Views10K


Впервые я познакомился с языком программирования Forth еще в студенческие годы. Было это правда ну очень давно. Уже тогда язык поразил меня тем, что он «не такой как все». При этом, код получался хоть и малопонятный, но компактный и быстрый.

Недавно я занимался запуском процессора Forth j1 в FPGA плате и пришлось вспоминать фортовские азы программирования. Да уж… чертовски трудно, но получил громадное эстетическое удовольствие. Как будто впервые взял кубик Рубика, и сам собрал его, и пазл сложился и программа работает…
Total votes 62: ↑62 and ↓0+62
Comments18

Как работает адресная светодиодная лента?

Reading time4 min
Views49K

Наверное этот вопрос «как работает» очень многим покажется глупым. Ответ почти очевиден: адресная светодиодная лента состоит из множества последовательно соединенных «умных светодиодов». Это можно увидеть просто рассматривая устройство ленты. Видны отдельные микросхемы, припаянные к гибкому шлейфу, видны соединения: микросхемы соединены последовательно всего тремя проводами, при этом два из них это питание и земля. Только один провод передает данные о цвете пикселей. Как же это? Что такое «умный светодиод»?

Дальше я расскажу о протоколе передачи данных, используемом в светодиодной ленте на базе WS2812B, и, более того, я почти создам свою «микросхему светодиодной ленты» в микросхеме ПЛИС.
Total votes 44: ↑44 and ↓0+44
Comments53

Программирование видео слоя в Raspberry Pi с использованием DispmanX API

Reading time7 min
Views4K

В этой статье я хочу продемонстрировать использование DispmanX API одноплатных компьютеров Raspberry. DispmanX API предоставляет возможность создавать на десктопе Raspberry новые отображаемые слои. Слои висят над слоями. Их можно динамически создавать, удалять, перемещать, их можно масштабировать. При этом, сам видеоконтроллер будет их объединять и отображать на экране монитора. Интересно, что слои могут иметь альфа канал, и тогда, изображения всех слоев будут сами собой смешиваться. Так же, кроме 32-ти двухбитных ARGB слоев можно создавать, например, YUV420 слои, или слои других типов. В Raspberry по умолчанию уже есть два слоя. Самый нижний содержит изображение десктопа. Весь вывод через иксы идет в этот слой. И есть второй, самый верхний слой, в котором живет изображение курсора мыши.

Я покажу, как создавать новый слой, писать в него изображение и как его перемещать по экрану. Собственно говоря, на демо видео выше и показана работа такой программы. Здесь созданы четыре новых 32-х битных слоя ARGB. В каждый из слоев я записываю пикселы из заранее подготовленных битмапов. Мои битмапы это изображения облаков, солнца и воздушных шаров. Слои перемещаются по экрану с разной скоростью, нависая над самым нижним иксовым слоем.
Total votes 21: ↑21 and ↓0+21
Comments6

Можно ли писать скрипты на C++?

Reading time3 min
Views28K

Недавно пришлось мне опять/снова погрузиться в чудесный мир программирования Linux скриптов. В принципе, дело не очень хитрое, но поскольку мне попадаются такие задачи не часто, то каждый раз изучаю заново. Знаю точно, что завтра многое забуду и через месяц опять буду гуглить, как сделать то или это. Проблема еще оказывается в том, что зачастую не пишешь скрипт заново, а модифицируешь существующий, уже написанный кем-то. А он может быть не bash, а sh или еще что-то… Различия в синтаксисе есть, что работает в sh по идее должно работать и в bash, но не всегда наоборот. А если там dash или ash? Я не знаю… Различия в этих скриптовых языках все же есть, и они сбивают с толка. Ну и конечно, лично для меня, вишенка на торте, когда скрипт вызывает какой нибудь sed или awk и там такие параметры в командной строке, что смотришь на них и диву даешься. Понятно, что это все зависит от квалификации программиста, но вот у меня не все в голове помещается. И вот сейчас мое терпение лопнуло и я подумал, что отныне хочу попробовать писать скрипты на c++…

Я понимаю, что для true системного администратора моя мысль может показаться крамольной. Но почему бы и нет?
Читать дальше →
Total votes 62: ↑55 and ↓7+48
Comments73

Изготовление трубы телескопа в домашних условиях

Reading time2 min
Views17K


В своей предыдущей статье я рассказывал, как я проектирую и изготавливаю телескоп.

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

Я буду делать трубу телескопа длиной 900 миллиметров и внутренним диаметром 225 миллиметров специально для зеркала 200 миллиметров, купленного на Али…
Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments40

Проектирование и изготовление телескопа

Reading time6 min
Views33K

Говорят, что если человек приобрел телескоп и использует его для наблюдений, то через некоторое время он обязательно захочет другой, получше. Так случилось и со мной. У меня есть телескоп PowerSeeker 127мм, но захотелось лучшего. По этой причине я даже было дело собрался точить свое зеркало, но позже обнаружил, что на AliExpress можно за недорого приобрести 200мм зеркало. Главное зеркало вместе с диагональным выходили где-то 6000 рублей с доставкой. Это очень дешево. На снимке выше, как раз такое зеркало, только что прибывшее по почте из Китая.

Купить-то купил, но это же не готовый телескоп. Нужна труба, держатель главного зеркала, диагонального, юстировки, фокусер. Как их изготовить самостоятельно? Решил, что по возможности буду печатать необходимые детали на 3D принтере. Но для этого их нужно еще спроектировать. Или найти дизайн в интернете.

Если поискать в интернете, то, конечно, «телескопы уже печатали». Вот примеры проектов:

  1. Gaze Across the Solar System with a 3D-Printed, Raspberry Pi Telescope
  2. Open Source DIY Telescope Prime Features Raspberry Pi and 3D Printed Parts

По разным причинам мне эти проекты не очень понравились. Я решил, что буду проектировать части телескопа сам. Чтобы жизнь медом не казалась я отчего-то решил, что буду делать проект во FreeCAD. До этого момента я уже делал кое-что в Компас 3D (я делал Marble-Machine). И теперь я подумал, что FreeCAD должен быть не сложнее…
Читать дальше →
Total votes 59: ↑59 and ↓0+59
Comments31

Перезагрузка текстур OpenGLESv2 через DMABUF

Reading time9 min
Views3.5K

В этой статье я хочу рассказать, как просто можно обновлять текстуры OpenGLES через DMABUF. Поискал по Хабру и к своему удивлению не обнаружил ни одной статьи на эту тему. В Хабр Q&A тоже ничего такого не нашел. И это для меня немного странно. Технология появилась довольно давно, хотя информации о ней действительно в сети не много, вся она расплывчатая и противоречивая.

Я всю эту информацию собирал по крупицам из разных источников, прежде чем смог написать вот такой видео плеер, как на демке выше. Здесь, на демке, мой самописный видео плеер, основанный на библиотеке gstreamer, загружает видео кадры в текстуру OpenGLESv2 каждый раз перед рендерингом. Работает на Raspberry Pi4. Кадры просто копируются в специальным образом выделенную память — а уж DMA переносит их в память GPU, в текстуру. Далее расскажу, как я это делал.
Total votes 12: ↑12 and ↓0+12
Comments13

Посох для Деда Мороза

Reading time4 min
Views8.4K


Каждый год 31-го декабря я в костюме Деда Мороза и жена в роли Снегурочки разъезжаем по городу по своим друзьям с поздравлениями. Поскольку уже скоро наступит Новый Год, я решил проверить, все ли у меня к нему готово и достал из подвала свой давно видавший виды посох. К моему удивлению, пролежав в подвале целый год он исправно работал даже сейчас! Его аккумулятор все еще как-то заряжен! Посох не очень ярко, но светится. Конечно придется подзарядить, да и смотрю один светодиод перестал работать, но это дело поправимое — починим.

Этот посох я изготовил еще в 2012-м году и с тех пор он служил мне верой и правдой. Штука достаточно простая, но очень эффектная, особенно ему радуются дети. Он почти как меч джедая — только посох, а для настоящего Деда Мороза — это вещь просто необходимая. Решил написать про него здесь на Хабре — вдруг кто-то проникнется идеей и сделает такой и себе к Новому Году, время еще есть.
Total votes 34: ↑33 and ↓1+32
Comments23

Проектирование Электро-Механической Marble Machine v2.0

Reading time6 min
Views5.6K

Я хочу рассказать о второй версии моей электро-механической Marble Machine и о процессе ее проектирования. Про первую спиральную машину я уже писал здесь на хабре. Времени с тех пор прошло не мало, и вот, в принципе, задуманное осуществлено: два подъемника и два спуска работают совместно, как одна система, передают друг другу шары перемешивая их в случайном порядке. Честно говоря мне не все здесь нравится, кое-что требует переделки или более тонкой настройки, но я рад, что в целом у меня получилось. Результат на видео!
Total votes 19: ↑19 and ↓0+19
Comments15

Моя Marble Machine, напечатанная на 3D принтере

Reading time4 min
Views9.6K

Я пытаюсь освоить 3D печать — у меня появился принтер FLSUN-QQ, я установил себе 3D редакторы: Fusion 360, Blender, пробую Компас 3D. Что-то получается, что-то не получается. Эта Marble Machine на видео — один из моих первых успешных проектов. Проект, хоть визуально и не большой, но его реализация потребовала от меня значительных усилий. Пришлось и 3D редакторы осваивать и механику придумывать и вести настройку-отладку этого устройства.

Далее расскажу из каких частей состоит эта машина.
Total votes 35: ↑35 and ↓0+35
Comments22

Исследование статистической вероятности значения бита в нонсе bitcoin

Reading time44 min
Views6.4K


Считается, что функция sha256( sha256( BlockHeader ) ), которая используется в алгоритме хэширования bitcoin весьма надежна. Надежна настолько, что существует только один единственный способ подобрать голден нонсе для очередного блока в блокчейне — путем перебора в процессе майнинга.

В настоящее время в блокчейне биткоина уже более 530 тысяч блоков. Этого вполне достаточно, чтобы провести статистический анализ и ответить на вопрос: «действительно ли значения битов в ранее найденных нонсе равновероятно?».
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments15

Вероятностный метод майнинга Bitcoin

Reading time19 min
Views20K


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

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

  1. язык C++ и его темплейты
  2. немного цифровой схемотехники
  3. немного теории вероятности и вероятностной арифметики
  4. детально алгоритм хэширования bitcoin
Читать дальше →
Total votes 51: ↑41 and ↓10+31
Comments30

О портировании проекта MIPSfpga

Reading time10 min
Views3.2K


Перенос программного обеспечения с одной компьютерной архитектуры на другую в принципе, с некоторыми оговорками, дело относительно простое. Здесь на помощь приходят такие общеизвестные инструменты, как autoconf / automake/ libtool / gnulib. Собрать программу из исходников на каком нибудь Raspberry/ARM бывает так же просто, как и на ПК с Ubuntu/x86-64.

А вот как заставить проект ПЛИС разработанный для одной платы работать на другой плате? Там и сама ПЛИС может быть другой и на плате совершенно другие компоненты могут стоять. Простой перекомпиляцией проекта не обойтись.

Расскажу о своем опыте портирования проекта MIPSfpga для платы Марсоход3 с ПЛИС MAX10 Intel. Статьи о проекте MIPSfpga неоднократно появлялись на хабре. Они были так интересны, что мне захотелось и самому попробовать этот проект в имеющейся у меня плате. В своей работе я опирался на хабровские статьи


И многие другие…

Итак, что нужно сделать, чтобы портировать проект ПЛИС на другую плату?
Total votes 16: ↑16 and ↓0+16
Comments5

Information

Rating
380-th
Date of birth
Registered
Activity