cyclop 0 19 февраля, 2005 Опубликовано 19 февраля, 2005 · Жалоба Изредка возникает необходимость в вычислении сочетаний из n элементов по m в группе, причём, чаще всего m=2. Чистая комбинаторика. Калькулятор в руки и за дело - один факториал делим на произведение двух других. А если нужно расписать сами сочетания? Тоже не проблема - составляем программулю на любом знакомом алгоритм. языке. Вот только загвоздка в том, что я уже забыл, где моя C-среда находится и чего в ней нажимают, создавая проекты, а из Verilog_а не вылезаю. Для таких же приведу модуль create_binions, вычисляющий число и выдающий сами сочетания из n элементов по 2, написанный на Verilog. Ограничение: число элементов множества не должно быть больше 26. Пользуйтесь.. Схемотехническое применение сочетаний из n элементов по 2. Допустим, у вас стоит задача адресации некоторого числа А абонентов, представляющих собой ячейки (разъёмы) или корпуса ПЛИС, причём, адрес абонента зависит только от его места расположения без всяких заданий адреса в самом абоненте (джампера и пр.), т.е, географическая что ли, по-научному, адресация. Обычно задача решается пибо выделением каждому абоненту своего CS, что расточительно при А > 8, либо кодированием адреса на проводах с использованием инверсных линий (проводной дешифратор). В сдучае проводного дешифратора разрядность адресной шины K = 2D, должна удовлетворять равенству 2**D >= A, число контактов разъёма (ПЛИС) будет равно D, а функция, реализующая дешифратор, будет Fdc = &D. Но и 2D проводов и D контактов кажется расточительством. Более щадящие цифры получаются в проводном дешифраторе, имеющим кодировкой сочетания из D по 2. Число контактов разъёма (ПЛИС) будет всегда равно 2, а число проводов D тоже уменьшится. Повычисляем немного (хотя бы с помощью модуля create_binions) C[D/2] = A : C[4/2] = 6 (для дешифр. с инверсными линиями при K=2D=4, A = 4), C[5/2] = 10, C[6/2] = 15 (для дешифр. с инверсными линиями при K=2D=6, A = 8), C[7/2] = 21, C[8/2] = 28 (для дешифр. с инверсными линиями при K=2D=8, A = 16). Дальнейшее увеличение D ещё больше увеличивает разницу, а кроме того, появились промежуточные значения с нечётным числом проводов! Такой вот "бином Ньютона". binion_v.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться