Как стать автором
Обновить

Комментарии 23

А синтезатор сам не справился если написать а*16351?
В 2014-м iCEcube2 не справлялся. Писал ошибку отображения операции. Как сейчас — не знаю, надо будет попробовать. Кроме того если из кристалла пытаешься выжимать последние ячейки (а там ситуация была именно такова), подобные конструкции всё-таки наверно лучше делать ручками.
Ультрамикропотребляющее. Очень дешевое.

А где вообще эти iCE40 добывать то в России? Ну, так чтобы по 1-2 штуки…
Эфо ими пытается заниматься. Но у них какие-то проблемы работы с частными лицами вроде. И 1-2 штуки…
Гляньте на терраэлектронике. Во всяком случае у них можно оставить заказ. Кроме того на icestorm есть здоровый каталог самодельных плат на iCE40. Наверняка их авторы могут помочь советом, где брать микросхемы.
На заглавной картинке не Лешенька, а Борис!
Всё равно хулиган и двоечник, проекты которого в кристалл не лезут :))))
И который в перспективе может стать вашим начальником. ;-)
Согласен… Это вообще древняя как мир истина. Больше всех в колхозе работает лошадь, а больше всех получает председатель :)))

Кстати точно так же можно делить, если делитель постоянный. Ряд только становится с отрицательной степенью двойки и меняется направление сдвига.

С делителем интересная идея, надо будет попробовать.

как вариант, самый ленивый:
1) результат деления представляется с ценой мл. разряда 2^-n;
2) рассчитывается множитель A=divider/(2^-n);
3) делаем для полученного множителя схему по приведенной статье.
Собственно все, на выходе умножалки будет число поделенное на divider с ценой мл. разряда 2^-n.

Огромное спасибо, Вы мне сейчас глаза открыли) Я раньше смотрел на оптимизированный код деления на константу как на магию.

Ваш формат тритов похож на CSD-формат. В ЦОС иногда используют в КИХ-фильтрах как раз для сокращения занимаемых умножителями ресурсов. Но вся сложность в подборе таких схем и выборе минимальной из них.
Блин, ну надо же! Не просто похож, в точности он и есть, вплоть до обозначений в виде строки со знаками +, 0 и — !. Хотя у меня пожалуй рассматривается несколько более общий случай. Никогда об этом не слыхал. Надо будет поподробнее прочитать, благо там ссылки есть. Большое спасибо за инфу!
Меня самого в этой истории больше всего прикололо то, что для чисел более не менее приличной разрядности максимальная сложность умножения существенно меньше разрядности. Например для 14-разрядных чисел, умножение требует не более 8 операций сложения/вычитания. Для бОльших разрядностей не считал. Интуитивно мне казалось, что найдётся n-разрядное число, требующее n-1 операций. Хотелось бы исследовать этот вопрос математически.
Не за что, в любом случае, ваш алгоритм поиска схем оригинален и интересен. Встречал в интернетах, что даже числа с плавающей точкой переводят в CDS-формат (там 2 в отрицательной степени используются). Так же интересно было бы мантиссы флотовых чисел представить в таком формате (например, для float16 мантисса 10 бит, в CSD-формате хватило бы 6-7).

Читайте Кнута, там, емнип, и это тоже было.

Посылаю голову пеплом, это не у Кнута, это у Уоррена, раздел 8.4.

Краткие поиски ведут к ответу, что число операций для умножения n-разрядных чисел не превышает n/2+1, в силу существования nonadjacent form таких чисел в двоичной системе счисления с допустимыми цифрами {-1, 0, 1}. См. Sec. 2.3, вебархив для https://ccrwest.org/gordon/half.pdf

и увы, умножителей там нет.

У соседей по семейству, из серии Ultra/UltraPlus умножители таки есть.
Но там ног, правда, немного, самый большой корпус — QFN48.
В начале 2014-го, когда начинался проект, самих соседей ещё не было :)
Будь умножитель это конечно сильно бы выручило. Не пришлось бы делать его руками, освободилось бы куча ресурсов на кристалле и не пришлось бы так предельно ужиматься. А малое количество ног бывает иногда и малозначащим. В том проекте у меня например использовалось всего 9 ног. Кстати для аудио приложений (где всё последовательное) это довольно типичная ситуация. Вобщем в целом семейство отличное. И очень хорошая отладочная плата iCE40-HX8K Breakout Board. Всем кто начинает с FPGA её рекомендую. И из всего домашнего зоопарка это пожалуй моя любимая зверушка. Во всяком случае наиболее используемая.
для ultra/ultraPlus есть такие же breakout платы. Из радостей — мигабит набортной памяти у ICE40UP5K и умножители.
ну а для HX есть ICESTICK ICE40HX1K-STICK-EVN который ещё дешевле.
Шикарная КДВП!

И спасибо за статью.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории