Problemas al comprender el direccionamiento de cuadros de flujo de bits

1

Estoy tratando de entender cómo funciona el direccionamiento de fotogramas en las secuencias de bits FPGA.

Por lo que entiendo, un cuadro tiene un ancho de 1 bit, va de arriba a abajo y se identifica mediante una dirección única de 32 bits. Esta dirección para el cuadro se compone de Dirección de bloque, Dirección principal, Dirección menor y Dirección de palabra.

Al observar un flujo de bits con un HexViewer, puedo ver las palabras de 32 bits que están ingresando en el dispositivo.

Enlaimagenanterior,tenemosladirecciónenelflujodebitsydospalabrasporfila(HxDnoharía1palabraporfila,bueno).En0x48tenemos30004000500046A1.MelasarregléparadescifrarqueestassonpalabrasCMDparaunencabezadodepaquetedeTipo1yTipo2.Despuésdeestohayunaseriedepalabrasutilizadasparaconfigurareldispositivo.

Loquenoentiendoescómoladirecciónquevemosenazulenlaimagenanteriorserelacionaconladireccióndelmarco.LadocumentacióndeXilinx( XAPP452 ) proporciona toneladas de información sobre la estructura de la dirección del marco, pero donde está en realidad se utiliza?

Mirando más abajo en mi archivo de configuración veré una palabra que no es CMD, como 0xFFFFFCFC. Tengo la dirección de donde está en mi flujo de bits, pero me gustaría saber la dirección de marco para dónde va ...

    
pregunta nhoughto

1 respuesta

3
  

Lo que no entiendo es cómo la dirección que vemos en azul en la imagen anterior se relaciona con la dirección del marco. La documentación de Xilinx (XAPP452) proporciona toneladas de información sobre la estructura de la dirección del marco, pero ¿dónde se usa realmente?

Tenga en cuenta que el documento al que hace referencia es para dispositivos Spartan-3, no Spartan- 3E . El formato general del flujo de bits es idéntico, pero algunos de los detalles de los registros pueden diferir un poco.

De todos modos, sin embargo, no hay relación. La dirección en azul es un desplazamiento dentro del flujo de bits, que el dispositivo de destino no utiliza en absoluto. Una escritura en el registro de dirección de marco aparece en la parte del flujo de bits que incluyó en su pregunta, pero (¡spoilers!) Es solo cero.

Tenga en cuenta que un flujo de bits de Xilinx (o, al menos, este tipo de flujo de bits de Xilinx) consiste fundamentalmente en una serie de operaciones de escritura realizadas en varios registros de dispositivos. El registro de dirección de marco es uno de estos registros; establece la ubicación física en el dispositivo donde irán los datos escritos en el registro FDRI. Dado que la mayoría de los flujos de bits sin comprimir se escribirán en todo el dispositivo, comienzan con un nivel de cero, y se incrementan automáticamente a medida que se escriben en FDRI.

A continuación se muestra el desmontaje de ciertos comandos "interesantes" en su captura de pantalla:

00000000: ff ff ff ff    <-- standard synchronization header
          aa 99 55 66

00000008: 30 00 80 01    <-- write 1 word to register 04 (CMD)
0000000c: 00 00 00 07    <-- value - 07 = probably RCRC (reset CRC)

…

00000020: 30 01 c0 01    <-- write 1 word to register 0e (IDCODE)
00000024: 01 c1 00 93    <-- value - 01C10093 = XC3S100E

…

00000038: 30 00 20 01    <-- write 1 word to register 01 (FAR)
0000003c: 00 00 00 00    <-- value - it's just zero

…

00000048: 30 00 40 00    <-- write 0 words to register 02 (FDRI)
                             this is actually just setup for
                             the next instruction...
0000004c: 50 00 46 a1    <-- write 18,081 words to that register

Todos los datos que siguen a esa escritura son los datos escritos en FDRI. Su flujo de bits no está comprimido, por lo que cada parte del FPGA se representará en el siguiente blob de datos. La habilitación de la compresión del flujo de bits hará que Bitgen comprima las corridas largas de ceros utilizando escrituras de múltiples cuadros. Esto puede ser un poco más fácil de analizar; Te recomiendo que lo intentes.

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas