Создайте модуль clz16, который просматривает 16 бит, и имеет 4-битный результат (0..15) и вывод «allzero». Соедините два из них вместе, чтобы сделать clz32, вам нужен мультиплексор, чтобы выбрать, какие 4 младших бита и немного логики для верхних 2 битов вывода.
clz16 состоит из двух clz8 одинаковым образом. Clz8 состоит из двух clz4.
Clz4 - это всего лишь три логические функции входов <= 4, поэтому неважно, как вы это делаете, синтезатор сводит его к нескольким элементам. </p>
Этот иерархический подход больше, чем решение Мэтью Слэттери с каскадными муксами, но, вероятно, не настолько (ему не нужны широкие ворота для переключения муксов), и я считаю, что он допускает более низкую опору. задержка. Оба подхода хорошо масштабируются до больших размеров (например, 64, 128 бит) с опорой задержки. войти2 (n).