Codificación de un codificador de prioridad

0

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?

    
pregunta Vidak

2 respuestas

1

Un enfoque sería que cada una de las 25 entradas muestre 0 si se deselecciona, o su propio valor de prioridad de 5 bits P (i) si se selecciona. Tire todos los valores intermedios en una red de clasificación que devuelva la prioridad máxima mostrada en un ciclo particular. Si luego tiene un comparador para cada entrada para ver si su prioridad de visualización es igual al máximo como un solo bit por entrada, entonces use una técnica de codificación de prioridad clásica (por ejemplo, bitscan) en esos bits.

El almacenamiento total para todos los bits de prioridad es 25 * 5 como menciona @Dave_Tweed.

    
respondido por el shuckc
1

Como han indicado otros carteles, el almacenamiento de 25x5 bits es probablemente la forma más práctica de representar la secuencia de prioridad. En lugar de usar una red de clasificación para identificar la prioridad máxima y luego usar comparadores para identificar el nodo con esa prioridad, sugeriría en cambio tener un cuadro que tome dos pares de entradas de cinco bits (cada par contiene "valor" e "índice" ) y utiliza un mux de 2x10 para generar el par con el valor más alto. Cada nodo debe tener un latch de 5 bits con una "habilitación de salida" para que salga de cero o la prioridad seleccionada. El valor de retención de cada nodo debe alimentarse, junto con el número de nodo, en un árbol cuyos nodos son como se describió anteriormente. Por lo tanto, una implementación de 25 entradas requeriría un árbol de cinco profundos con 24 nodos.

    
respondido por el supercat

Lea otras preguntas en las etiquetas