Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Программируемые логические схемы и их применение»
Как бы поэффективнее разделить 12-и битное число на 3?
Отправлено
avsetaki
14 декабря 2006 г. 18:07
Составить ответ
|
Вернуться на конференцию
Ответы
Что подразумевается под эффективностью?
—
V61
(15.12.2006 10:33:57
195.245.194.142
,
пустое
)
к-во лог. элементов плис (скорость минимальная)
—
avsetaki
(15.12.2006 14:00:28
84.108.76.37
,
пустое
)
за 12 тактов - сумматор и 2 - 3 регистра
—
V61
(15.12.2006 15:24:36
195.245.194.142
,
пустое
)
Ну тогда вот это влезет в минимум и выполнится за 6 тактов - 6 4-битных констант + 24-битный сдвигатель влево + 24-битный сумматор + 24-битный регистр -->
—
=AVR=
(15.12.2006 14:51:2
80.92.96.19
,
пустое
,
ссылка
)
Можно и так :)
—
__hard
(14.12.2006 22:05:52
193.111.254.58
, 110 байт)
Неверно
—
=AVR=
(15.12.2006 00:43:28
80.92.96.19
, 203 байт)
Нет, на много удлинять не надо, всего ещё один операнд + 1/4096
—
avsetaki
(15.12.2006 01:03:39
84.108.76.37
,
пустое
)
Ничего не даст, т.к. 4095/4096=0 (в целых). Для 12-битных чисел нужно минимум 7 операций сдвига и 6 сложений, только сдвигать надо влево и суммировать 32-битные операнды - коррекция сама получится(+)
—
=AVR=
(15.12.2006 02:38:31
80.92.96.19
, 76 байт)
Можно даже обойтись 28-битными ресурсами: y = ((x << 11)+(x << 9)+(x << 7)+(x << 5)+(x << 3)+(x << 1)+x)[27...17]
—
=AVR=
(15.12.2006 12:19:48
80.92.96.19
,
пустое
)
Описка, 24-битными: y = ((x << 11)+(x << 9)+(x << 7)+(x << 5)+(x << 3)+(x << 1)+x)[23...13]
—
=AVR=
(15.12.2006 13:51:38
80.92.96.19
,
пустое
)
ага, неверно. про остаток то я и забыл
—
__hard
(15.12.2006 00:57:47
193.111.254.58
,
пустое
)
Про коррекцию (пример 2) -->
—
=AVR=
(15.12.2006 00:47:57
80.92.96.19
,
пустое
,
ссылка
)
умножать можно?
—
ы
(14.12.2006 19:37:44
80.92.98.211
, 87 байт)
Еще проще ans = MSW(ans*0x5556), т.е. ans = (ans*0x5556) >> 16
—
=AVR=
(15.12.2006 00:45:27
80.92.96.19
,
пустое
)
Идея хороша, только умножение потянет много ресурсов.
—
avsetaki
(15.12.2006 00:59:30
84.108.76.37
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 6 на 2:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru