stringtranslate.com

Codificador de prioridad

Un codificador de prioridad es un circuito o algoritmo que comprime múltiples entradas binarias en un número menor de salidas, similar a un codificador simple . La salida de un codificador de prioridad es la representación binaria del índice de la línea activada más significativa . A diferencia del codificador simple, si dos o más entradas del codificador de prioridad están activas al mismo tiempo, la entrada que tenga la prioridad más alta tendrá precedencia. Es una mejora de un codificador simple porque puede manejar todas las combinaciones de entrada posibles, pero a costa de lógica adicional. [1]

Las aplicaciones de los codificadores de prioridad incluyen su uso en controladores de interrupciones (para permitir que algunas solicitudes de interrupción tengan mayor prioridad que otras), codificación decimal o binaria y conversión de analógico a digital / digital a analógico . [2]

Diagrama a nivel de compuerta de un codificador de prioridad de 4 a 2 de un solo bit
Diagrama a nivel de compuerta de un codificador de prioridad 4 a 2 de un solo bit. I(3) tiene la prioridad más alta.

Se muestra una tabla de verdad de un codificador de prioridad 4 a 2 de un solo bit, donde las entradas se muestran en orden decreciente de prioridad de izquierda a derecha y "x" indica un término indiferente , es decir, cualquier valor de entrada allí produce la misma salida ya que es reemplazado por una entrada de mayor prioridad. La salida "v" (generalmente incluida [a] ) indica si la entrada es válida.

Los codificadores de prioridad se pueden conectar fácilmente en matrices para formar codificadores más grandes, como un codificador de 16 a 4 formado por seis codificadores de prioridad de 4 a 2: cuatro codificadores de 4 a 2 que tienen la fuente de señal conectada a sus entradas, y los dos codificadores restantes toman la salida de los primeros cuatro como entrada.

Construcción recursiva de codificadores de prioridad[3][4][5]

Un codificador de prioridad, también llamado detector de ceros a la izquierda (LZD) o contador de ceros a la izquierda (LZC), recibe un vector de entrada de bits y detecta el índice del primer binario "1" en el vector de entrada. Una señal válida indica si se detectó algún binario "1" en el vector de entrada, por lo tanto, el índice es válido.

Los codificadores de prioridad se pueden construir de manera eficiente mediante recursión. El vector de entrada se divide en fragmentos iguales con bits. Se aplica un codificador de prioridad con un ancho más estrecho de 𝑛/𝑘 para cada fragmento. El bit válido de cada uno de los pasa a un bit para detectar el primer fragmento válido. La ubicación de este fragmento es la parte superior del índice general y dirige la ubicación exacta dentro del fragmento mismo para producir la parte inferior del índice general.

La profundidad de la estructura propuesta es , mientras que la complejidad del área de hardware es . Si se utiliza Stratix V de Altera o un dispositivo equivalente, se recomienda para lograr un mayor rendimiento y compresión del área, ya que el mux se puede implementar utilizando 6-LUT, por lo tanto, un ALM completo.

Hay disponible en línea un generador Verilog de código abierto para el codificador de prioridad recursivo. [6]

Definición recursiva del símbolo (derecha) del codificador de prioridad (izquierda).
Definición recursiva del símbolo (derecha) del codificador de prioridad (izquierda).

A continuación se muestra una descripción del comportamiento del codificador de prioridad en Verilog. [6]

// descripción del comportamiento del codificador de prioridad;// https://github.com/AmeerAbdelhadi/Indirectly-Indexed-2D-Binary-Content-Addressable-Memory-BCAMmódulo pe_bhv  #( parámetro OHW = 512 ) // ancho de entrada one-hot del codificador       ( entrada clk , // reloj para codificador de prioridad canalizado     entrada rst , // registros restablecidos para codificador de prioridad canalizado    entrada [ OHW - 1 : 0 ] oht , // entrada one-hot / [OHW -1:0]       salida reg [ `log2 ( OHW ) - 1 : 0 ] bin , // primer índice '1'/ [`log2(OHW)-1:0]      salida reg vld ); // el binario es válido si se encontró uno      // use el bucle while para una longitud de bucle no fija // Se puede sintetizar bien con QuartusII de Intel siempre @( * ) comienza   bin = { `log2 ( OHW ) { 1 'b0 }};   vld = oht [ bin ] ;    mientras (( ! vld ) && ( bin != ( OHW - 1 ))) comienza     contenedor = contenedor + 1 ;      vld = oht [ bin ];   fin finmódulo final

Codificador simple

Un codificador 4:2 simple que utiliza puerta OR.
Un codificador 4:2 simple que utiliza puerta OR.

Un circuito codificador simple es un convertidor de un bit a binario. Es decir, si hay 2 n líneas de entrada y, como máximo, solo una de ellas estará en estado alto, el código binario de esta línea "activa" se produce en las líneas de salida de n bits.

Notas

  1. ^ Por ejemplo, el codificador de prioridad BCD 10 a 4 de 74 x 147 no tiene una señal válida de salida dedicada. Sin embargo, la no validez se indica cuando todas las salidas están en estado alto simultáneamente. https://www.ti.com/lit/ds/symlink/sn74ls148.pdf

Referencias

  1. ^ Mano, Moshe Morris; Ciletti, Michael D. (2007). Diseño digital (cuarta edición). Upper Saddle River, NJ: Pearson Prentice Hall. pág. 156. ISBN 978-0-13-198924-5.
  2. ^ Manual de aplicaciones TTL . Fairchild Semiconductor. Agosto de 1973. Pág. 4-4.
  3. ^ Abdelhadi, Ameer MS (2016). Arquitectura de estructuras de memoria masivamente paralelas basadas en bloques de RAM: memorias multipuerto y memorias direccionables por contenido (Tesis). Universidad de Columbia Británica.
  4. ^ Abdelhadi, Ameer MS; Lemieux, Guy GF (mayo de 2015). "Memorias direccionables por contenido binario basadas en SRAM modulares". 23.° Simposio internacional anual sobre máquinas informáticas personalizadas programables en campo de 2015 del IEEE . págs. 207–214. doi :10.1109/FCCM.2015.69. ISBN 978-1-4799-9969-9. Número de identificación del sujeto  16985129.
  5. ^ Abdelhadi, Ameer MS; Lemieux, Guy GF (diciembre de 2014). "Memorias binarias direccionables por contenido, profundas y estrechas, utilizando BRAM basadas en FPGA". Conferencia internacional de 2014 sobre tecnología programable en campo (FPT) . págs. 318–321. doi :10.1109/FPT.2014.7082808. ISBN . 978-1-4799-6245-7.S2CID2074456  .​
  6. ^ ab Abdelhadi, AMS; Lemieux, GGF (2014). "Memoria direccionable por contenido binario 2D indirectamente indexada basada en SRAM modular II2DCAM". Universidad de Columbia Británica.
    Abdelhadi, AMS; Lemieux, GGF (2015). "Memorias direccionables por contenido binario basadas en SRAM modulares" (PDF) . 23.° Simposio internacional anual sobre máquinas informáticas personalizadas programables en campo del IEEE de 2015. IEEE. págs. 207–214. doi :10.1109/FCCM.2015.69. ISBN . 978-1-4799-9969-9. Número de identificación del sujeto  16985129.