Вы можете найти различные алгоритмы для быстрого подсчета битов . Последние два: Nifty Parallel Count и MIT HAKMEM Count вполне могут быть легко преобразованы в ворота. Смотрите эту страницу для хорошего объяснения того, как это работает.
Вы можете сделать это с помощью оборудования Gates. Используйте четыре 1-битных сумматора, чтобы сложить пары бит вместе. Это дает вам четыре 3-битных числа. Добавьте их попарно, используя два 3-битных сумматора. Это дает вам два 4-битных числа для добавления с помощью одного 4-битного сумматора. Это оставляет вам 5-битное значение, но вы можете игнорировать верхний бит. Затем используйте два 4-битных компаратора для проверки значений 2 и 3.
Для минимального количества деталей, почему бы не сделать это аналоговым?
Создайте делитель напряжения с одним резистором сверху, а ваши 8 входов соединены снизу с помощью 8 резисторов параллельно. Затем просто используйте два компаратора, чтобы определить уровни напряжения, которые будут генерировать 2 или 3 бита. Это всего 6 частей:
Сеть с 8 резисторами будет выдавать напряжение от 0 В (для набора 0 битов) до 5 В (для набора 8 битов). 2 бита произведут 0.5v. 3 бита произведут 1.56v.
- С 0 или 1 битом, выход будет 00.
- С 2 или 3 битами, выход будет 01.
- С 4 или более битами, вывод будет 11.
Добавлено:
Спасибо DavidCary за отличное предложение. После долгих вычислений, я думаю, что я нашел набор резисторов, которые работают, но сначала вы должны тщательно проверить мои расчеты. Здесь я использую компараторы с выходами с открытым стоком, и мне кажется, что мне удалось получить один выход. Низкий означает мертвый в следующем раунде, Высокий - живой в следующем раунде.
Приятно то, что в этой схеме только два компонента больше, чем в другой схеме. Все они резисторы серии E8, поэтому их можно достать. Кроме того, R6 должен был иметь более высокое значение, например 4.7k или что-то в этом роде.