Search
Write a publication
Pull to refresh
287
0.2
Владимир @32bit_me

Программист

Send message

Временные ограничения и статический временной анализ FPGA на примере Microsemi SmartTime

Reading time14 min
Views49K
Ещё во время обучения в ВУЗе, проектируя различные тестовые безделушки и выполняя лабораторные работы по цифровой схемотехнике, я попадал в ситуации, когда вроде бы корректный несколько раз перепроверенный проект отказывается работать «в железе». В то время, на заре изучения программируемой логики, мне как-то очень редко доводилось добираться до последних пунктов Design Flow, в чем, вероятно, и крылась беда. Если я нечаянным щелчком мыши открывал Timing Analyzer, то после нескольких секунд беглого просмотра становилось скучно, и я возвращался к издевательствам над отладочной платой и сочинял новые безумства на VHDL.

Когда подошло время более-менее адекватных и серьёзных проектов, проблем стало больше, соответственно, я начал интенсивнее использовать гугл и искать ответы на свои вопросы. Тут мне всё чаще стали попадаться такие страшные словосочетания, как “timing analysis” и “design constraints”, когда я почитал и немного вникнул, пришло осознание того, что я упустил что-то очень важное. Сначала я панически боялся этих неведомых констрейнов, и ведь без них успешно работали первые проекты, благо частота там была не больше пары десятков МГц. Но когда речь зашла о более высоких частотах и более сложных проектах, здесь уже не обойтись без тщательного временного анализа и оптимизации.
Читать дальше →

Добавление Wi-Fi к различным устройствам

Reading time4 min
Views49K

Предисловие


Один мой хороший товарищ занимается автоматизацией зданий. И вот как-то за кружкой пива пожаловался он мне на один из объектов, который находится у него в эксплуатации. «Головой» всей тамошней автоматики является ПЛК 100 известного отечественного производителя ОВЕН. Работает он автономно, без постороннего вмешательства, но раз в месяц необходимо с него снимать логи и контролировать общую исправность всей автоматики в здании. Проблема в том, что в шкафу, в котором расположен ПЛК, по каким-то причинам не провели Ethernet от местной сетки. Дотянуть провод, по неким организационным причинам не представляется возможным. И вешать GSM модем нельзя, т.к. шкаф находится в подвале, где нету сети. При этом до шкафа с ПЛК добивает местная Wi-Fi сеть, однако у ПЛК 100 нет Wi-Fi.
И вот приходится каждый месяц ездить на объект с ноутбуком, включаться переходником USB-RS232 в прибор и снимать логи. В результате, я пообещал «допилить» ПЛК, добавив в него Wi-Fi.
Читать дальше →

Китайский HID программатор USBISP (USBASP) в Linux. Препрошивка

Reading time5 min
Views73K
Программирование микроконтроллеров и робототехника — очень перспективные направления деятельности. Об этом говорят уже на уровне государства. А начинается все с того, что новички собирают свой первый программатор или заказывают его в интернет-магазине. Самыми доступными по цене являются китайские поделки. Они не всегда готовы сразу порадовать своих новых хозяев. Тем не менее, обычно, они вполне работоспособны после доработки и/или перепрошивки.



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

Надеюсь, кому-то эта статья окажется полезной, поскольку конкретно по этой версии программаторов информации в интернете, видимо, нет.

Для тех, кто хочет быстрого решения, в конце статьи есть ссылка на архив с доработанной мною прошивкой USBASP от Thomas Fischl и список изменений в формате git diff.
Читать дальше →

Сделай сам: MSc Computer Science на уровне топ американских университетов из дома

Reading time12 min
Views164K

Вступление


Давно хотел написать статью про образование в Computer Science, но руки не доходили. Решил все-таки это наконец сделать. Итак, о чем пойдет речь? Речь о том, что из себя представляет диплом MSc Computer Science топовых университетов США (во всех подробностях, включая основные курсы, книги и проекты) и как ему соответствовать.

Почему именно MSc? Это — некая развилка: с одной стороны после MSc — вы уже готовый к жизни инженер (да, речь идет о инженерной подготовке, как мне кажется это самое больное место в нашей системе образования), с другой — можно спокойно идти по пути PhD. Как известно, в PhD программу можно попасть и не особо умея программировать — особенно это касается теоретического Computer Science. С другой стороны найти работу программиста тоже дело не очень сложное, и часто не требует мощного образования. Но достигнув уровня MSc — вы получаете возможность разбираться как во всех новый идеях в Computer Science, так и возможность их воплотить в практику. То есть с одной стороны круто разобраться в каком-нибудь deep learning и сделать в нем что-то новое, а также взять и написать свою операционную систему (кто так сделал?). Причем вы не зажаты в рамки узкой специализации (если конечно продолжаете учиться). То есть вы теперь — универсальный солдат, готовый на все.

Надеюсь что эта статья будет полезна:
1. Студентам, которые хотят соответствовать высоким стандартам топ вузов США, или собирающиеся туда в аспирантуру по Computer Science
2. Профессионалам, которые хотят закрыть «дыры» и пробелы
3. Может кто-то из преподавателей возьмет на заметку для своих курсов.
4. Студентам, аспирантам американских вузов — хотелось бы тоже получить фидбэк, особенно касается последних трендов в образовании

Что же здесь будет написано? Минимум философии и общих мыслей: конкретная программа undergraduate и graduate курсов, конечно из дисциплин наиболее мне близких. Все курсы были лично прочувствованы на собственной шкуре, по этому и пишу. (Я пытался записаться на все интересные курсы, которые были, но мой основной упор — системное программирование, базы данных и искусственный интеллект. Отсюда конечно некий bias, но пытаюсь предложить более-менее универсальную программу).
Читать дальше →

Разбираемся с LCD экраном LPH9157-2 от Siemens C75/ME75

Reading time8 min
Views86K

Внятной документации на этот экран я не нашел поэтому пришлось разбираться с тем что есть и экспериментировать. В качестве управляющего устройства я использовал Raspberry PI. Так-же была написана программа позволяющая превратить этот экран в мини-монитор.

Описание


Данный дисплей имеет разрешение 132 x 176 пикселей и даёт возможность работать с тремя цветовыми палитрами 16(5-6-5), 12(4-4-4) и 8(3-3-2) бит.
Читать дальше →

Реализация универсального аквариумного контроллера

Reading time9 min
Views97K
image

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

От простого к сложному: подборка плат для разработчиков и любителей электроники

Reading time5 min
Views24K


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

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

Удаленная отладка в Linux при помощи связки GDB-gdbserver

Reading time9 min
Views61K
Как всем нам известно, процесс отладки это такая вещь, важность которой трудно переоценить. Причем, понимая важность таких методов как дебажное моргание светодиодами и вывод дебажных сообщений в порт, я остаюсь при мнении, что эффективнее пошаговой отладки пока ничего не придумано. Однако, задача пошаговой отладки становится не такой тривиальной в случае программирования под Linux на встраиваемых системах (таких как rasbery pi, virt2real или промышленные процессорные модули).

Данную задачу в Linux призвана решать стандартная связка программ GDB и gdbserver. Идея в том, что пишешь на компе программу (host в терминологии GDB), компилируешь её и заливаешь на целевое устройство (target). Далее запускаешь на целевом устройстве (target) отлаживаемый файл и gdbserver, а на хосте GDB и вперед.
Читать дальше →

JIT-компилятор как учебный проект в Академическом Университете

Reading time10 min
Views29K
Около шестнадцати лет назад вышла первая версия Hotspot – реализация JVM, впоследствии ставшая стандартной виртуальной машиной, поставляемой в комплекте JRE от Sun.

Основным отличием этой реализации стал JIT-компилятор, благодаря которому заявления про медленную Джаву во-многих случаях стали совсем несостоятельными.
Сейчас почти все интерпретируемые платформы, такие как CLR, Python, Ruby, Perl, и даже замечательный язык программирования R, обзавелись своими реализациями JIT-трансляторов.

В рамках этой статьи я не планирую проливать свет на малоизвестные детали реализации промышленных JIT-компиляторов, скорее это будет совсем поверхностное ознакомление с азами и рассказ про учебный проект по соответствующей тематике.

Таким образом вам может быть интересно под катом, если:
  • Вы принципиально не понимаете, что такое JIT-компилятор, или у вас есть легкое непонимание, чем такой подход существенно лучше интерпретации.
  • Вы хотели бы написать простой JIT для своего интерпретируемого языка.
  • Вы преподаете курс «Языки программирования и компиляторы», и не против сделать практическое задание для студентов еще интересней.
  • Вам интересно, как нарисована эта картинка.


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

ЧПУ фрезерный станок с автономным контроллером на STM32

Reading time5 min
Views115K
Поскольку я давно собрал для себя ЧПУ станок и давно и регулярно эксплуатирую его для хоббийных целей, то мой опыт, надеюсь, будет полезен, как и исходные коды контроллера.

Постарался написать только те моменты, которые лично мне показались важными.

Ссылка на исходники контроллера и настроенную оболочку Eclipse+gcc и пр. лежат там же, где ролик:


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

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

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

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

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

Создание станка с ЧПУ из доступных деталей с минимум слесарной работы

Reading time11 min
Views117K
Продолжаем обзор деятельности нашего Хакспейс-клуба.

Мы давно мечтали купить в наш клуб ЧПУ станок. Но решили его сделать сами. С нуля, начиная от железа и кончая программного обеспечение (прошивка контроллера и управляющая программа). И у нас это получилось.

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


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

Ethernet поверх USB на STM32F4

Reading time9 min
Views59K


Недавно возникла идея заставить плату на базе МК STM32F4 работать по сети. Поскольку на борту отсутствовал Ethernet PHY контроллер, то единственным вариантом было использовать USB FullSpeed интерфейс для эмуляции Ethernet устройства. Распространённый стандарт USB-класса, реализующий данную функцию, называется RNDIS.
К своему огорчению, поиск RNDIS драйвера для STM32 не увенчался успехом. Впрочем, это не удивило, т.к. открытые примеры использования USB порта у STM32 ограничиваются только теми, что предоставил нам производитель.
Захотелось исправить сию несправедливость. А заодно и поиметь нужные исходники, благо в будущем они пригодятся.
Сейчас, когда демонстрационная версия библиотеки готова, выкладываю её в свет на правах MIT-лицензии. Поэтому, все кому библиотека интересна — пользуйтесь «на здоровье». Библиотека имеет название LRNDIS, первая буква которого означает использование сетевого стека для встраиваемых систем «LwIP».
Для демонстрации возможностей библиотеки был создан пример на плате stm32f4discovery. Его работа заключается в поддержке основных сервисов (DHCP и DNS сервера) и передаче usb-хосту запрашиваемых WEB-страниц. Таким образом, наш discovery превратился в почти полноценный WEB-сервер, работающий по порту USB!
Пару слов о том, где это применимо.
В быту RNDIS устройства обычно являются USB-модемами для доступа в Интернет. Возможно, такое применение, действительно, окажется полезным, если разработчик выберет STM32 в роли связующей цепочки между ПК и радиочастотным (или другим) трансивером. Или, может быть, захочет расширить собственную сеть на Ethernet-сегмент?
Другое применение, в котором нахожу основную пользу для себя, — это интерфейс управления сложными устройствами. Типовое решение в этой области — создание терминального ПО. При этом приходится заниматься его поддержкой вместе с поддержкой устройства, что бывает неудобным. Собственно, в отказе от такой схемы в пользу управляющего Web-интерфейса и заключается смысл возможного применения библиотеки. Вспомните Web-интерфейсы настройки роутеров. Удобно. Красиво. Без лишнего ПО.

Итак, если Вы заинтересовались, читайте далее…
Читать дальше →

How-to: Что нужно учитывать при разработке первого торгового робота

Reading time7 min
Views43K
image

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

STM32 и FreeRTOS. 5. Приносим пользу и добро!

Reading time5 min
Views63K
На всякий случай, а то вдруг санкции применят (смаил). Описываемый случай не имеет никакого отношения к реальности и является целиком и полностью выдумкой автора

Раньше было про потоки, семафоры, очереди и HAL

Как-то раз попросили меня посмотреть на одно очень дорогостоящее устройство. Проблема была одна: среди использующих это устройство возникло стойкое убеждение, что 99,99% его цены происходит от того факта, что производитель этого устройства монополист в своей сфере и деваться пользователям этого устройства некуда.



Вооружившись осциллографом, я полез внутрь.
Читать дальше →

Minesweeper на FPGA

Reading time9 min
Views17K
Привет всем!

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

А почему бы не сделать нечто подобное самому?

Откопав исходники, возобновил утерянные знания и решил на базе старого проекта на скорую руку написать простую версию игры «Сапёр» на старенькой ПЛИС Spartan3E. Собственно, о реализации игры «Сапёр» на уровне логических вентилей и основных особенностях разработки на FPGA фирмы Xilinx и пойдет речь в данной статье.
Присоединяйтесь...

Поверхностный монтаж: трафарет и печь оплавления в домашних условиях

Reading time5 min
Views116K
Печатная плата с поверхностными компонентами

Когда начинаешь искать возможности произвести на продажу малую партию собственных электронных устройств, то обнаруживаешь, что эту задачу можно решить, не вставая с кресла. Например, так работает сервис Seeed, организующий не только производство, но и продажу ваших устройств. Если же вы не уверены, будет ли спрос, или просто желаете сэкономить, то оптимальным вариантом, на мой взгляд, будет заказать печатные платы где-нибудь в Китае, а себе оставить монтаж поверхностных (SMD) компонентов в домашних условиях. Я хочу рассказать, как можно существенно ускорить поверхностный монтаж с помощью самодельных трафаретов и импровизированной печи оплавления.
Читать дальше →

Windows 10 приходит на Raspberry Pi 2

Reading time2 min
Views82K
Статья – перевод статьи одного из наших любимых авторов, настоящего гика, Скотта Хансельмана.

Я – искренний фанат Raspberry Pi. Я использую три штуки дома, одну для мультимедиа-центра, одну для 3D-печати и одну просто на поиграть. Теперь же у меня еще больше хорошего, после новости о том, что была анонсирована Raspberry Pi 2. За $35 я получаю компьютер, который можно засунуть в карман, и у которой есть несколько отличных моментов:
  • Она все еще небольшая! Размера Raspberry Pi B+. То, что у меня работало, будет работать и дальше. ;)
  • HDMI! Ethernet! Порт под камеру!
  • Micro USB для питания!

ПРИ ЭТОМ
  • Четырехядерный 900 MHz ARM Broadcom Cortex A7 с BCM2836 на чипе – от 3 до 6 раз увеличения производительности. Вау.
  • 1 гиг RAM (поделено с GPU)



Вообще, мне нравится использовать Raspberry Pi как отдельный девайс (“Dedicated Device”).
Она, конечно, компьютер общего назначения, но при этом такой дешевый и мощный, что его можно использовать под одну конкретную задачу, и работать он будет прекрасно.
Читать дальше →

Реверс-инжениринг КР580ВМ80А / i8080 завершен

Reading time2 min
Views168K
Рад сообщить, что реверс-инжениринг КР580ВМ80А полностью завершен. Получена полная принципиальная схема и Verilog-модель. В невероятно короткие сроки схему восстановил Vslav 1801BM1 (1801ВМ1@gmail.com).

Оказалось, в КР580ВМ80А ровно 4758 транзисторов (а не 6000 или 4500, как иногда ошибочно упоминают).

Топология КР580ВМ80А похожа, но не идентична i8080. Тем не менее, отличий в реализации опкодов КР580ВМ80А не было обнаружено.

Verilog-модель успешно прошла зубодробительный тест качества симуляции и как Verilog-модель, и как FPGA заменяя реальный КР580ВМ80А в "Специалисте".

Файлы: Главная модель Verilog, схема, Полный пакет файлов.
Читать дальше →

Недорогие, маленькие, сетевые компьютеры — небольшой обзор

Reading time6 min
Views96K
«Чтоб ты жил в интересные времена!» — якобы старинное китайское проклятие.
Да, нам с вами повезло или «повезло» жить в действительно интересные времена (вариант — «в эпоху перемен»). Возможно, это на самом деле проклятие, особенно с точки зрения мифических древних китайцев. Однако факт остается фактом: то, что еще пара десятков лет назад казалось невозможным, сейчас доступно практически каждому. Особенно это заметно в нашей отрасли — информационные технологии и цифровая электроника развиваются просто какими-то совершенно фантастическими темпами. Функциональные возможности, быстродействие, миниатюрность и (относительная) дешевизна современных цифровых решений поражает воображение.
Еще совсем недавно сетевой компьютер размером меньше кредитки и стоимостью в несколько сотен рублей, пригодный для создания на его базе интересных самостоятельных проектов энтузиастами-одиночками с относительно невысоким уровнем знаний в области электроники и программирования, казался весьма отдаленной перспективой. И вот уже мы можем смело выбирать из десятка (как минимум) альтернатив! Давайте посмотрим, что сейчас можно приобрести буквально за несколько десятков долларов, чтобы построить вокруг этого нечто впечатляющее и даже, может быть, полезное.
Итак, поехали.

Information

Rating
5,181-st
Date of birth
Registered
Activity