La estructura que está buscando se llama "codificador de prioridad". Tomará un conjunto de bits y le dará el número del bit con el número más bajo que se afirma. Si invierte sus bits "válidos" para crear un conjunto de bits "vacíos" para las estaciones de reserva (un término que vi por primera vez junto con el IBM System 360 Model 91), el codificador de prioridad le dará el número del primero disponible.
El código fuente HDL para un codificador de prioridad es de hecho una gran declaración combinatoria if-then-else
, pero esta es una construcción común y las herramientas de síntesis pueden asignarla de manera eficiente al hardware subyacente.
Mi primer trabajo de tiempo completo después de la universidad (principios de la década de 1980) fue diseñar una nueva CPU para aplicaciones científicas, y tomé un gran préstamo del diseño 360/91. Desafortunadamente, mi diseño nunca se construyó, pero todavía tengo muchas de mis notas de diseño, y de vez en cuando pienso en hacerlo en un FPGA.