Arnold Enginegger
699 subscribers
38 photos
4 videos
12 files
81 links
Тоже хочу в блогеры
Download Telegram
Позавчера в плисочате коллега предложил вычислять синусы с помощью широко известной в узких кругах формулы Марвина Минского, которую он (Минский), по собственному признанию, придумал случайно:

sin = sin + (cos >> shift)
cos = cos - (sin >> shift)

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

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

На графике сверху слева круг, построенный по значениям синуса и косинуса (несколько сотен периодов). Красным цветом обозначены значения из генератора, зеленым - референсные значения честных синуса и косинуса такой же разрядности. На графике сверху справа два периода синусоиды - референсная и полученная из генератора. Два графика ниже - спектры комплексных сигналов, полученных как (cos + isin). Зеленый - референсный, красный - из генератора.

В общем, вывод можно сделать следующий. Для рисования кругов метод годный, особенно если разрядность побольше - визуально разница между честным кругом и "нечестным" совсем не заметна. Применять в ЦОС - тут нужно хорошечно подумать. Наверное в чём-то не очень чувствительном к искажениям. Из графиков видно, что постоянную составляющую у меня получилось скомпенсировать, а вот фазовый сдвиг между синусом и косинусом нет (сдвиг проявляется в виде диагонально сплюснутого круга и в виде зеркальной палки на отрицательной части спектра). Даже небольшой имбаланс фаз, в одну выборку длиной, вызывает заметное отражение на спектре. Хотя, и здесь могут быть варианты, например использовать синус и косинус по отдельности.

PS: на уровни не смотрите, ибо окно, fft processing gain и пр.
👍8🔥6🥱1🍌1
Для тех, кто не в курсе про существование самого большого и толкового ресурса по ПЛИС в телеге, знайте:

👉 Чат: https://t.me/fpgasystems
👉 Новости: https://t.me/fpgasystems_events

Оттуда вы найдёте ходы в другие не менее интересные плисовые, околоплисовые и электронные каналы. Лайк и подписка!
👍5
В одной панельке отверстия диаметром 0.8 просверлены карбид-вольфрамовым сверлом для печатных плат. В другой отверстия 0.85 просверлены фрезой "кукуруза" 0.8. Разница на лицо. Сверло при заходе в текстолит немного произвольно смещается, а обратно в соосность уже не может вернуться, т.к. боком не пилит. Кукуруза при входе наверное тоже смещается, но потом возвращается на место и отверстие получается ровно там, где планировалось. Наверное для свёрел нужны обороты побольше бытовых 10тыс./мин.
👍7
Чёт я не понял, куда делось комментирование к предыдущему посту. Надеюсь, здесь оно будет.
Сегодня наконец дошли руки до пробы пера с языком Zig. Попробовал собрать hello world для голого RISC-V (PicoRV32). Пол дня гугления, курения мануалов и копипасты вылились в три файла: https://gist.github.com/punzik/bda5ee814b39e876e14405b63d9770d6

Теперь на этой рыбе можно писать полезный код, чем я позже и займусь.
🔥4👍1
Сегодня узнал, что GHDL поддерживает (не полностью, правда) PSL - язык описания проверок и ограничений (Property Specification Language) для HDL языков. По сути это SVA, не привязанный к SV (но в случае с GHDL - привязанный к VHDL).
Некоторое время назад я написал статью про формальную верификацию с открытыми тулами, и решил переписать тот простой пример на VHDL+PSL. Пример запускается в SymbiYosys и правильно отрабатывает. Не пинайте строго, на VHDL последний раз писал лет 25 назад, а на PSL никогда.
В общем, тема интересная, тем более PSL в отличие от SVA уже поддерживается опенсорсом, и поддержка его активно пилится в GHDL.
Однако, переходить на VHDL я пока не готов :)
👍2🔥2
Несколько дней назад Meta опубликовала исходники нейротула для преобразования научных статей из PDF в Markdown с распознаванием математических формул и выражений в формат LaTeX. Тул называется Nougat (Neural Optical Understanding for Academic Documents).
Как понятно из названия, это нейросеть, которая работает как OCR, т.е. распознаёт текст на изображении, а не извлекает его из документа. Т.е., она делает текст не только из хороших доков, но и из довольно кривых сканов (к сожалению, не всегда получается).
Можно попробовать онлайн, но обычно там очередь на несколько минут.
В следующем сообщении будет три примера, которые я сделал локально на своём компе. Установка программы очень простая, модель она подтягивает сама при первом запуске. Главное, чтобы в компе была какая-никакая Nvidia и библиотека CUDA, т.к. на CPU работает очень медленно (я не дождался завершения).
🔥4
Недавно в GTKWave закоммитили интересный пуллреквест. Он выносит часть функционала в библиотеку libgtkwave и добавляет начальную поддержку плагинов. Т.е. теперь в GTKWave будут не только фильтры, но и полноценный доступ к внутреннему API программы. В качестве примера автор сделал небольшой плагин с консолью на Питоне. Посмотрите, там видосик есть.
👍4🔥41