Re: Быстро поделить 20 бит на 10 бит

Привет!

"Leha Bishletov"

битное?

Банальнейший AMD AM186/ER наример. Мало? Ну тогда на тебе от Advantech EVA-X1630C - RISC 75MHz (до 100), софтварно компатибл с 186 процессором, деление 32- на 16-битное число осуществляет за 16 тактов, т.е. 160 нс. Тебе понадобится два деления плюс пересылки. Итого примерно 400 нс. Много?

formatting link
В качестве бесплатного приложения встроенный Ethernet и два последовательных порта. ;-)

оценить

Будет дороже.

такую

С уважением,

Виталий Насенник

Reply to
Vitali Nassennik
Loading thread data ...

LB> Hello all.

LB> Посоветуйте, как можно быстро поделить 20-ти битное число на 10-ти битное? LB> Сделать это надо максимум за 30мкс. МК с такими возможностями я не знаю. LB> Единственное, что приходит в голову, это отдельная ПЛИС, которая будет LB> выполнять деление. Hо я с ними (ПЛИС) ни когда не работал и не могу оценить LB> насколько это реально и сколько может стоить м/с, позволяющая реализовать такую LB> функцию. М.б. есть готовые делители?

Ну сейчас тебе накидают советов :-) По моему небольшому опыту деления, могу посоветовать следующее:

  1. Если надо делить на константу, то для скорости деление можно заменить умножением, подробности есть у Кнута (второй том, кажись). Я когда-то смотрел AN для ARM на этом принципе - там деление 32-бит на 10 занимало то-ли 8, то ли 10 тактов. Еще для прикола там был генератор кода (10-15 строк ассемблера ARM) - вводишь константу деления - на выходе получаешь текст исходного кода для деления.
  2. 20-бит это совсем не круто по нонешним временам. Например, Fujitsu MB90 имеют инструкции деления 32/16 бит, если верить документации - то не более 37 тактов макс + накладные на адресацию (1-4 такта). Про "классику" x86 и упоминать неудобно. Тут, правда, может быть тонкость, что результат в 16-бит не поместится. Но тут можно делить по частям - сначала старшие биты, потом младшие с учетом остатка от старших. Совсем уж для простоты жизни можно взять 32 битный процессор, например ARM, будет круто и относительно дорого.
  3. Новые AVR (до 16 МГц которые, 30 мкс - это 480 тактов), тоже должны бы справится с делением в столбик за такое время - разрядность-то небольшая. Хотя по прикидкам - времени получается впритык.
Reply to
Vyacheslav Ovsiyenko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.