Народ много чего из этого делает - http://easyelectronics.ru/parallelnyj-c ... -r-2r.html
Даже


https://habr.com/ru/articles/133893/Итак, вернемся к вычислению квадратного корня. Мы будем использовать «детский» метод (он же арифметический), который основывается на том простом факте, что квадрат числа — это сумма нечетных чисел от 1 до 2n-1:
1 = 1^2 = 1
1 + 3 = 2^2 = 4
1 + 3 + 5 = 3^2 = 9
Не будет никакого умножения/деления, только сдвиги и сложение/вычитание!Да и деление, умножение я ещё не делал пока на плиске.



Да, "большой" 16-разрядный счётчик (в идеале с насыщением для очень низких оборотов), который считает длительность оборота в тактах. Я гоняю и 29-разрядные счётчики на 300 МГц.По схеме , прям волшебство какое-то. В ней, так понял, есть огромный счётчик.
Да, Сет и Ресет — просто цифровые компараторы, которые дают "1" при совпадении значений на входах. Да, вход PWM (заданный к-т заполнения ШИМ) должен менять эти значения исходя из требуемого значения ШИМ.Set и Reset (81 и 244) срабатывают на совпадении, плавать будут в зависимости от установки значений?
Это просто (синхронный) RS-триггер на основе D-триггера со входами count_enable (E) и reset (R), на вход (D) которого приходит лог. "1" — я так привык.Как работают Unit Delay и про Constant, пока не соображу.
Тактовая частота и разрядность счётчика будут определять минимальную частоту, на которой можно будет реализовать мой алгоритм. С понижением тактовой частоты будет страдать точность ШИМ на высших оборотах.Про задающую частоту, не обязательно привязывать всё к 32 кГц