Digamos que tengo un codificador de prioridad de 25 bits. Entonces, cada pin de entrada de \ $ i_ {24} \ $ a \ $ i_0 \ $ tiene su prioridad distinta en nuestro codificador. Eso significa que si hay más de una entrada activa, el codificador actuará como si solo estuviera activa la entrada con la prioridad más alta, y devolverá un vector de 5 bits, \ $ out_ {4..0} \ $ (según, por supuesto, a ceil(log2(25))=5
)
Ok, supongo que esa introducción no era necesaria, todos saben cómo funciona un codificador de prioridad. Mi pregunta es: ---- > Si queremos cambiar la prioridad de las entradas y codificar una prioridad completamente arbitraria para cada entrada, ¿cuántos bits se necesitan para contener toda la información de codificación?
Mi línea de pensamiento era esta: la primera entrada tiene 25 prioridades posibles, por lo que necesitamos 5 bits para su valor. Hasta que nos queden 16 entradas, necesitamos 5 bits para cada entrada, por lo que son 9 entradas codificadas con 5 bits. Luego necesitamos 4 bits para las siguientes 8 entradas, 3 bits para las siguientes 4 entradas, 2 bits para las siguientes 2 entradas, 1 bit para la próxima 1 entrada y cero bits para la última entrada restante. Eso suma: \ $ 9 \ cdot 5 + 8 \ cdot 4 + 4 \ cdot 3 + 2 \ cdot 2 + 1 \ cdot 1 + 1 \ cdot 0 = 94 \ $ bits. ¿Es esto correcto? ¿Necesitamos 94 bits para codificar completamente las prioridades de un codificador priorato de 25 entradas?