¿Por qué un SRL basado en LUT6 solo tiene 32 entradas pero no 64?

2

Los FPGA de Xilinx son capaces de usar LUT como elementos de memoria. Se puede utilizar como ROM, RAM y Shift Register (SRL).

Los nuevos dispositivos Xilinx utilizan LUT de 6 entradas, que proporcionan 64x1 bits para RAM / ROM, pero solo 32 bits para SRL.

¿Por qué los SRL están restringidos a 2 ^ 5 bits?

No tengo conocimiento de ninguna explicación en los documentos oficiales.

    
pregunta Paebbels

2 respuestas

2

Creo que esto se debe al hecho de que las LUT en el Spartan 6 se construyen internamente como una entrada de 5 entradas, 2 salidas de LUT seguidas de un mux desechable.

Ahora, por qué no puede crear un registro de desplazamiento de 2 bits de ancho y 32 bits de largo en una sola LUT es una buena pregunta. Parece que eso debería ser posible, y luego debería ser posible hacer un bucle de la salida de un lado hacia el otro lado para obtener un registro de desplazamiento de 64 bits en una sola LUT. Tendrías que preguntarle a Xilinx por qué no lo admiten.

    
respondido por el alex.forencich
1

No tengo una respuesta, ya que no conozco los detalles internos de las rebanadas de Xilinx. Tengo algunos punteros.

Primero, no puede guardar datos en una LUT6. Solo puede guardar datos en registros (que están numerados 2 / LUT6) y RAM / blockRAM distribuida. Lo que anula un poco su suposición de LUT6 = 64 bits.

La RAM distribuida y los registros de desplazamiento no están relacionados con las primitivas LUT6. Si consulta la Spartan-6 Configuration Logic Blocks User Guide , verá que hay 3 tipos de cortes en esa arquitectura:

  1. Rebanada normal, teniendo solo LUT6 ( tienen tienen otras cosas, solo nada relevante para esta discusión).
  2. SLICEL, que tiene LUT6 y bloques lógicos de transporte rápido.
  3. SLICEM, que tiene lo que SLICEL tiene, además de RAM distribuida.

Los registros de desplazamiento (y la RAM distribuida) solo están disponibles en los CLB de SLICEM, lo que significa que necesitan el bloque de RAM distribuido y la LUT6. Xilinx no proporciona detalles sobre el bloque de RAM, pero sabemos por la documentación que una RAM LUT6 + puede implementar una RAM distribuida de un solo puerto de 64x1 bits o una SRL32.

Un gurú de VLSI probablemente podría deducir cuáles son los detalles de la RAM interna, pero me parece razonable que:

  • 1 bloque LUT6 + 1 RAM = SRL32
  • 1 LUT6 + 1 bloque de RAM = 64x1b RAM de un solo puerto
  • 2 LUT6s + 2 bloques de RAM = 64x1b RAM de doble puerto simple

Como un turno, los registros se implementan probablemente como RAM de doble puerto de 32 bits con controles específicos proporcionados por el LUT6.

    
respondido por el Jonathan Drolet

Lea otras preguntas en las etiquetas