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:
- Rebanada normal, teniendo solo LUT6 ( tienen tienen otras cosas, solo nada relevante para esta discusión).
- SLICEL, que tiene LUT6 y bloques lógicos de transporte rápido.
- 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.