Módulo de lógica adaptativa: equivalencia del elemento lógico

0

He implementado algunos circuitos con Quartus en un Cyclone 5 FPGA. Esto se ha hecho para mi tesis de maestría. Tengo que justificar si el número de elementos lógicos utilizados por mi implementación es "esperado" o no. Durante la clase de mi supervisor, tuve un pequeño ejemplo que muestra cómo puedo construir una LUT de 8 bits con una LUT más pequeña y un multiplexor. Tengo que hacer las mismas cosas pero con un FPGA concreto.

He consultado la hoja de datos del Altera Cyclone V y he encontrado que utilizan el Módulo de Lógica Adaptativa en lugar del Elemento Lógico "simple". Sin embargo, cuando quiero verificar el número de elemento lógico utilizado por esta LUT de 8 bits, la respuesta se da como elemento lógico. En este punto, tengo varias preguntas:

  • En este archivo , está escrito que 2 4 bits de LUT independientes se pueden implementar en un ALM. ¿Significa que se pueden implementar LUT de 1 8 bits en un ALM? Si no, ¿cuántos ALM se necesitan?
  • Cuando configuro solo una LUT en mi diseño y compilación, el número de elementos lógicos utilizados es 34. Este número es un poco inesperado, ya que he leído que un ALM debería ser equivalente a 2 elementos lógicos. Es eso correcto ? En este caso, ¿este valor parece correcto?

Gracias de antemano

EDITAR:

Para ayudarte, este es el código de mi elemento (eliminé líneas para que la publicación quede clara):

module sbox_lu(input logic[7:0] in,
                output logic[7:0] out);
always_comb
case (in)
    'h0 : out = 8'h20;
    'h1 : out = 8'h8d;
    'h2 : out = 8'hb2;
    ...
    'hfc : out = 8'h53;
    'hfd : out = 8'hb4;
    'hfe : out = 8'h6;
    'hff : out = 8'hfe;
endcase
endmodule

Como sugirió duskwuff, estas son algunas capturas de pantalla del planificador de chips: i.stack.imgur.com/WCXL3.png

i.stack.imgur.com/WzX7p.png

La primera imagen es una vista "global" del chip. Podemos ver que se utilizan 5 LAB. Si hago zoom en el grupo superior derecho, obtengo la segunda imagen. En la parte inferior izquierda de LAB, solo se usa un ALM. Si vuelvo a la segunda imagen, podemos ver que se usan 33 ALMS. Si agrego uno del grupo de abajo, obtengo los 34 ALM. Cuando hago clic en el ALM usado, puedo ver la ruta y que cada ALM se puede ver como 6 LUT. Si me refiero al documento anterior, necesitaría 4 ALM para los 6 LUT y 3 2: 1 multiplexor para manejar los últimos 2 bits. De esta manera, no entiendo realmente por qué se usan 34 ALM. Además, el ALM de la parte inferior izquierda de LAB está vacío.

    
pregunta user1382272

2 respuestas

2
  

En este archivo, está escrito que se pueden implementar 2 LUT independientes de 4 bits en un ALM. ¿Significa que se pueden implementar LUT de 1 8 bits en un ALM? Si no, ¿cuántos ALM se necesitan?

No. Consulte la Figura 6 en el PDF que vinculó (página 7). Un solo ALM contiene dos LUT4 y cuatro LUT3. Solo hay 64 bits de "estado" de configuración en estas seis LUT: 16 en cada LUT4 y 8 en cada LUT3, por lo que es imposible usarlas para emular algo más grande que un LUT6 en el caso general. Como se señala en la Tabla 1 (página 2), hay algunos casos especiales en los que es posible emular una LUT más grande, pero estos casos dependen de que los contenidos de la LUT tengan ciertas estructuras específicas.

  

Cuando configuro solo una LUT en mi diseño y compilación, el número de elementos lógicos utilizados es 35. Este número es un poco inesperado, ya que he leído que un ALM debería ser equivalente a 2 elementos lógicos. Es eso correcto ? En este caso, ¿este valor parece correcto?

Es difícil de decir exactamente sin muchos más detalles sobre el diseño que estás implementando, pero hay algunas posibilidades que se me ocurren:

  • ¿Está mirando un recuento exacto de elementos lógicos o está estimando un número de "celdas lógicas"? Esta última es una estimación inexacta del número de compuertas lógicas de 2 entradas que se necesitarían para sintetizar un diseño, y como tal se espera que sea mucho más alto que el número de LUT o LE utilizados.

  • Es posible que el instalador haya optado por no empaquetar su diseño en un solo LE físico, ya sea porque su división pudo haber ayudado con el enrutamiento y la sincronización, o porque ha extraído una señal intermedia que no sería disponible en un diseño de un solo LE, o simplemente porque Quartus simplemente no tenía ganas ese día. (El software FPGA puede ser así de voluble a veces.)

Ver el diseño físico exacto que se ha implementado en Quartus Chip Editor puede ser instructivo.

    
respondido por el duskwuff
0

Bien, recibo la respuesta :) En la práctica, con un ALM, es posible implementar una LUT de 6 entradas. Como necesito crear una LUT con 8 entradas, debo usar 5 ALM: un ALM que tome las 2 últimas entradas y las salidas de los otros 4 ALM. Los otros ALM toman las 6 entradas restantes. Como una entrada de LUT 8 generará un bit, necesito 8 LUT con 8 entradas para generar 8 bits, lo que significa que necesito 40 ALMs en teoría. Sin embargo, dos bits de salida no dependen de los 8 bits de entrada sino de menos, lo que da el número correcto :)

    
respondido por el user1382272

Lea otras preguntas en las etiquetas