Pull to refresh
1
0
Андрей @KasDS

User

Send message

Создаем I2C Master Controller на Verilog. FSM, Clock, Output Logic, etc

Level of difficultyMedium
Reading time12 min
Views5.4K
После длительного перерыва я продолжил разработку I2C Master Controller на Verilog. В прошлых статьях я рассмотрел основной теоретический материал, необходимый для реализации изначальной задумки. В этом материале переходим к более интересному содержанию: я последовательно расскажу про процесс проектирования конечного автомата I2C, расскажу про тактирование и как организована логика выходных сигналов и многое другое.

Всем, кому интересно — добро пожаловать под кат!

image


Читать дальше →
Total votes 47: ↑46 and ↓1+56
Comments9

Алгоритмы программы для дозиметра на счетчике Гейгера

Level of difficultyEasy
Reading time17 min
Views6.2K

Эта статья написана на основе собственного опыта разработки и программирования бытовых дозиметров на счетчиках Гейгера для коммерческих заказчиков.

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

Будет полезна радиолюбителям, разработчикам и программистам для аналогичных задач.

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

Декодирование JPEG для чайников

Reading time9 min
Views272K

[FF D8]


Вам когда-нибудь хотелось узнать как устроен jpg-файл? Сейчас разберемся! Прогревайте ваш любимый компилятор и hex-редактор, будем декодировать это:


Jpeg file in hex editor


Специально взял рисунок поменьше. Это знакомый, но сильно пережатый favicon Гугла: Google favicon


Последующее описание упрощено, и приведенная информация не полная, но зато потом будет легко понять спецификацию.


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


[FF D8] — маркер начала. Он всегда находится в начале всех jpg-файлов.


Следом идут байты [FF FE]. Это маркер, означающий начало секции с комментарием. Следующие 2 байта [00 04] — длина секции (включая эти 2 байта). Значит в следующих двух [3A 29] — сам комментарий. Это коды символов ":" и ")", т.е. обычного смайлика. Вы можете увидеть его в первой строке правой части hex-редактора.

Читать дальше →
Total votes 413: ↑408 and ↓5+403
Comments140

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

Reading time8 min
Views289K

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать
Total votes 125: ↑100 and ↓25+95
Comments174

Основы работы отечественных МК 1986ВЕ1Т с болгарскими отладчиками OLIMEX ARM-USB-OCD-H. Часть 2 — RAM & Interruptions

Reading time9 min
Views5.7K

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

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

Первые эксперименты со смешанным Litex+Verilog проектом для ПЛИС

Reading time14 min
Views2.7K

В предыдущей статье мы начали осваивать построение шинно-ориентированных систем на базе среды Litex (которая всё делает на Питоне) с внедрением собственных модулей на Верилоге. Статья так разрослась, что практические опыты мы оставили на потом. Пришла пора провести их. Сегодня мы подключимся к VGA-монитору и поуправляем изображением, которое выдаёт модуль gpu, описанный в файле gpu.v, то есть, реализованный на языке Verilog. Управлять мы им будем через регистр команд, расположенный в блоке CSR, спроецированном на шину Wishbone. Все эти сущности, в свою очередь относятся к среде Litex. Инструменты для опытов мы тоже будем использовать штатные, Litex-овские. Приступаем!

Читать далее
Total votes 15: ↑13 and ↓2+21
Comments4

Создаём простейший проект для ПЛИС Lattice в среде Litex

Reading time16 min
Views6.2K

В предыдущей паре статей я рассуждал про ПЛИС Lattice. Давайте сегодня поговорим об эффективной разработке под них. Один наш крупный руководитель уверяет, что из разговоров с иностранными Заказчиками, он выяснил, что российских разработчиков считают пишущими классные вещи, но делающими это крайне медленно. Ну, разумеется, по сравнению с разработчиками из других стран. И разумеется, «классные» идёт на первом месте.

Один из методов обхода проблемы скорости разработки – использование готовой инфраструктуры для проектов. Я делал цикл статей про комплекс Redd, где продвигал использование готовой шинной инфраструктуры в среде разработки Quartus. Сначала это была честная процессорная система, потом – процессор мы изъяли, а шины – оставили.

Затем я делал пару циклов, где активно использовал данный подход. Мне приходилось дописывать только проблемно-ориентированные модули, остальное — среда разработки создавала за меня.

Есть ли что-то подобное для Lattice в частности и сцепки Yosys/NextPNR в целом? Вы не поверите! Решение не просто есть, но оно ещё и настолько кроссплатформенное, что подойдёт и для Yosys/NextPNR, и для Quartus, и для Vivado! И называется оно Litex. Итак, давайте попробуем поэкспериментировать с ним для подхода, который я уже давно продвигаю: «делаем штатную основу, а на неё нанизываем свои целевые блоки».

Читать далее
Total votes 11: ↑7 and ↓4+8
Comments5

Трюк с XOR для собеседований и не только

Reading time8 min
Views104K


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

Хоть и непривычно ожидать решения с XOR на собеседованиях, довольно забавно разбираться, как они работают. Оказывается, все они основаны на одном фундаментальном трюке, который я постепенно раскрою в этом посте. Далее мы рассмотрим множество способов применения этого трюка с XOR, например, при решении популярной задачи с собеседований:

Дан массив из n — 1 целых чисел, находящихся в интервале от 1 до n. Все числа встречаются только один раз, за исключением одного числа, которого нет. Найдите отсутствующее число.

Разумеется, существует множество прямолинейных способов решения этой задачи, однако есть и довольно неожиданный, в котором применяется XOR.
Читать дальше →
Total votes 76: ↑70 and ↓6+80
Comments104

3 причины бросить учить английский на уровне Intermediate

Reading time4 min
Views66K

За четыре года в стенах нашего офиса двадцать человек начинали учить английский, и только двое дошли до уровня advanced. За тысячу академических часов они перепробовали занятия в группе, индивидуальные консультации, оксфордские учебники, подкасты, статьи на Medium, даже смотрели «Кремниевую Долину» в оригинале. Стоило ли это таких усилий? Всё очень неоднозначно. Здесь я приведу мысли о том, какой уровень полезно освоить программисту, и когда стоит прекратить целенаправленное изучение.

Читать дальше →
Total votes 119: ↑79 and ↓40+63
Comments298

Функциональное программирование — это не то, что нам рассказывают

Reading time17 min
Views125K

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



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


int Factorial(int n)
{
    Log.Info($"Computing factorial of {n}");
    return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}

чем ужасные императивные программы вроде


int Factorial(int n)
{
    int result = 1;
    for (int i = 2; i <= n; i++)
    {
        result *= i;
    }
    return result;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

Читать дальше →
Total votes 208: ↑200 and ↓8+251
Comments795

Политкорректность проникает в Россию через книги про проектирование чипов на SystemVerilog для не-начинающих

Reading time11 min
Views19K
Наконец-то в России вышел учебник по SystemVerilog уровнем выше чем для начинающих. Учебник описывает технологии и приемы, которые спрашивают на интервью в NVidia, Intel, AMD, Apple и другие электронные компании: использование concurrent assertions и functional coverage, что сейчас требуют не только от инженеров по верификации, но и от дизайнеров микросхем; алгоритм работы симулятора с дельта-циклами; вменяемое объяснение static timing analysis; схемы коммуникации аппаратных блоков через аппаратные очереди; реализацию этих коммуникаций с помощью конечных автоматов с трактами данных и т.д.

В главе про последнее российского читателя может озадачить упоминание «политкорректной системы». Что бы это значило? Это вероятно намек на казус, который произошел в округе Лос-Анжелес в 2003 году. Чиновники Лос-Анджелеса попросили производителей, поставщиков и подрядчиков прекратить использование терминов «master/slave» («хозяин» и «раб») в отношении компьютерного оборудования, так как одному из работников округа эти термины напомнили про рабовладельческое прошлое.

Сейчас авторы технической литературы избегают терминов master/slave. В современной Америке работают и афро-американские инженеры (например София Мвокани из Камеруна — на фото слева), и использование старых терминов выглядит архаично, как выглядели бы например термины «пан/холоп» в украинской технической литературе вместо принятых «провідний/ведений» (рус. «ведущий/ведомый»).

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



Полное изображение эмблемы под кожанкой Татьяны Александровны — под катом, но в основном я буду рассказывать про дельта-циклы и конечные автоматы:
Читать дальше →
Total votes 43: ↑32 and ↓11+21
Comments47

История создания Ethernet-CAN конвертера

Reading time6 min
Views15K
Одним ясным солнечным днем по работе понадобился недорогой преобразователь интерфейсов CAN в Ethernet. Естественно поиски начались с готовых решений, но, как нередко это бывает, в итоге было принято решение о разработке собственного образца. Естественно, энтузиазм автора не смог устоять и ограничиться столь «урезанным» функционалом. Что из этого вышло, каким образом и почему — под катом.

image
Читать дальше →
Total votes 47: ↑43 and ↓4+39
Comments36

Нововведения языка SystemVerilog

Reading time4 min
Views31K
image

В данной статье показаны некоторые нововведения языка SystemVerilog в области организации данных по сравнению с Verilog-2001 для синтезируемого подмножества языка.

История SystemVerilog довольна длина и туманна. Начавшись после принятия стандарта Verilog-95, она вылелась в Verilog-2001. Однако язык не слишком подходил для верификации, инженеры использовании языки семейства «E» — VERA, Testbuider. В современном виде SystemVerilog появился после 2005 года. Сейчас средства синтеза и моделирование такие как Quartus II, ISE, ModelSim/QuestaSim уверенно поддерживают SystemVerilog. Стандарт называется IEEE 1800-2012.

Прим. Эта статья давно написана, но не опубликована. Надеюсь будет полезна начинающим.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments9

В гости к отцу

Reading time9 min
Views168K
В гостях у отца я не был давно, с летних каникул. Семестр выдался напряженный, я приезжал домой лишь один раз. Только переночевал, взял мешок картошки и снова в общагу. Сходить к отцу времени не было. Да и не очень-то хотелось, если честно.

Фраза «в гости к отцу» может показаться странной, но я к ней привык давно – с тех пор, как родители развелись. Мне тогда лет десять было. Но деревня есть деревня – от дома матери до дома отца было минут десять ходу.

Стучать не стал – кто в деревне стучит в ворота, чтобы зайти? Раз открыто – значит, можно заваливаться. Во дворе работал лопатой дядя Вася, брат отца – убирал снег. Разумеется, никакая это была не лопата, а самое настоящее пехло. Или, как говорят в деревне, пяхло.

— Мать честная! – изумленно воскликнул дядя Вася. – Жень! Жень! Ванька приехал! Беги на подстанцию, пусть трансформатор гасят!
Читать дальше →
Total votes 74: ↑61 and ↓13+48
Comments61

Конкурс от РОСНАНО: проходите онлайн-курс по современной микроэлектронике, потом практический тур с ПЛИС, получаете приз

Reading time1 min
Views2.6K
Мероприятие для продвинутых школьников: сначала онлайн-курс с профориентацией по разработке современных микросхем (части 1, 2, 3), а потом практический семинар по цифровой схемотехнике и языку описания аппаратуры Verilog, с синтезом на ПЛИС/FPGA. Те, кто отличатся, получат в качестве призов платы.

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

Подробности семинара на сайте STEMford

Подробности семинара на Вконтакте

Total votes 14: ↑10 and ↓4+6
Comments11

Профилирование памяти на STM32 и других микроконтроллерах: статический анализ размера стека

Reading time6 min
Views10K
Привет, Хабр!

В прошлой статье и я сам упоминал, и в комментариях спрашивали — ок, хорошо, методом научного тыка мы подобрали размер стека, вроде ничего не падает, а можно как-то надёжнее оценить, чему он равен и кто вообще столько сожрал?

Отвечаем коротко: да, но нет.

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

Ответ немного длиннее — под катом.
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments22

Мой путь из инженера в программисты

Reading time6 min
Views42K
Краткое содержание
Автор поныл, как тяжело живется инженерам на Руси и решил уходить в программисты. У него получилось. Пост о том, как именно.

Зачем я все это пишу


  • Благодарность. Сказать «спасибо» сообществу Хабра.
  • Поддержка и мотивация. Морально поддержать инженеров, которые тоже решили менять свое призвание на новое, но не могут решиться.
  • Самомотивация. Для движения вперед очень полезны маленький отчет и немного планов, высказанных публично.
  • Поделиться опытом. Возможно, кому-то мой путь покажет его собственную дорожку.
Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments109

Инженер VS Программист. Или куда уходят инженеры

Reading time3 min
Views62K
За последнюю неделю на Хабре появилось как минимум три поста о том, как люди разного возраста, пола и полученной специальности становились программистами. Успешными программистами. Эти истории отвечали на вопрос «как», но почти упускали вопрос «почему».

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

Почему же я, инженер с 14 годами стажа, решил перейти в программисты?
Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments170

Карьерные стероиды. Базовый алгоритм

Reading time12 min
Views30K
Статья про быстрый карьерный рост внутри одной компании. Именно внутри одной, т.к. скачок при переходе — это другая методика, к ней нужно иначе готовиться (там больше комплект увольнения подходит).

Сразу скажу: я не считаю, что строить карьеру — это правильно, без этого никак и кто не строит — валенок. При этом я и не считаю, что не строить карьеру — правильно.

В карьере нет ничего плохого или хорошего. Так же, как нет ничего плохого или хорошего в изучении ERP, ремонте своей квартиры или прохождении курса «100 отжиманий». Карьера — это проект с определенной целью, в который человек сознательно вступает, чтобы чего-то получить. Взамен он должен потратить больше ресурсов, чем расходовал до этого — времени, нервов, денег.

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

Если вы не планируете строить карьеру — не вопрос. Я тоже не планирую, например, никогда внедрять ERP, поэтому не читаю о нем статей. Хотя мог бы читать и писать в комментах все, что я думаю о ERP и авторах статей о ней — только зачем?

Надеюсь, мы договорились. Возвращаемся к карьере.
Читать дальше →
Total votes 53: ↑44 and ↓9+35
Comments61

Information

Rating
Does not participate
Location
Дубна, Москва и Московская обл., Россия
Date of birth
Registered
Activity