Saltar al contenido principal

mvbdump

Configuración de módulos smartIO MVB mediante USB​

Construction Side La descripción de esta herramienta está en preparación. Por el momento solo se reproduce la ayuda integrada.

Nota: Este software dejará de recibir soporte en el futuro. La funcionalidad se integrará en el futuro en la herramienta smiohp.

Opciones en la línea de comandos​

usage: mvbdump <options>
recommended:
-i <inputBatchFile>
-c <c-sequence>
-s <inputDumpFile>
-o <dumpFile>
-f <format> (def = 0 [bin], 1, 2, ...)
-t <minutes> (def = 0: interactive mode)
-sl (synch to local time)
-sp <port> (synch to TIMEDATE48 in port)
-sw <offset> (synch to TIMEDATE48 at word offset)
optional:
-V print version
-u <usbDevice> (def = '', find by udev)
important: stty -F <usbDevice> raw -echo -echoe -echok

Comandos de ejecución​

entering interactive mode:
-q (terminate session)
-t <minutes> (end interactive mode)
-r (device txPreset)
-i <inputBatchFile>
-sl (synch to local time)
-sp <port> <offset> (synch to TIMEDATE48 in port / offset)
all other input will be send to the device.

Comandos de control de la FPGA​

  • La configuración se realiza desde el host a través del canal de transmisión (Tx) de la interfaz serie USB con la que se accede al smartIO.
  • La FPGA dispone de una API minimalista basada en caracteres ASCII y, por tanto, fácil de seguir.
  • No se devuelve ninguna respuesta de estado sobre los comandos ejecutados.
  • Dado que el control se realiza habitualmente desde un código de programa, básicamente no hay integrada ninguna comprobación de sintaxis.
  • Los comandos se interpretan y ejecutan inmediatamente durante la transmisión.
  • Aun así, la FPGA admite los siguientes elementos de sintaxis habituales:
    • todos los caracteres tras // se ignoran como comentario hasta el final de la línea (LF y/o CR)
    • los espacios en blanco (0x09, 0x0A, 0x0D, 0x20) se ignoran por lo general; las excepciones se indican explícitamente.
    • no se distingue entre mayúsculas y minúsculas

A través de la API pueden manejarse las siguientes funciones:

Comandos directos​

ComandoDescripción
RRESET, detiene la secuencia de prueba y desconecta las líneas de entrada A y B
RRRREnforce high level RESET
LInicia la secuencia de prueba con realimentación loopback en la FPGA; la línea A y/o B debe activarse previamente
PInicia la secuencia de prueba con realimentación externa; la línea A y/o B debe activarse previamente
{Detiene la secuencia de prueba y desconecta las líneas de entrada A y B, introducción de una nueva secuencia de prueba (véase más abajo)
?Devuelve el número de versión de la FPGA
@Devuelve los créditos
#Devuelve la clave hash de la versión DBOA
//Comentario, todos los caracteres hasta el final de la línea se ignoran, funciona siempre

Como interruptor​

Como interruptor, formado por una letra seguida inmediatamente (¡sin espacio en blanco!) del carácter '+' o '-' (los valores por defecto son "desactivado")

ComandoDescripción
A+, A-Recepción en la línea MVB A; se desactiva con RESET o con la introducción/fin del programa
B+, B-Recepción en la línea MVB B; se activa con RESET o con la introducción/fin del programa
AB+, AB-Conmutar simultáneamente la recepción en las líneas MVB A+B, por lo demás como arriba
C+, C-Inserción del CRC recibido en el flujo de datos, p. ej., diagnóstico de puesta en marcha. Un bit de estado en el paquete MVB recibido indica si el paquete contiene CRC
E+, E-Las tramas con condiciones de error se transmiten al host para su análisis
M+, M-Activar el filtro de lista blanca para datos en tiempo real en puertos
W+, W-Inserción del contador de bytes Tx en la trama de datos, p. ej., verificación de la implementación del controlador USB
N+, N-No-Parity (o Parity-don't-care) en el byte CRC, no conforme con EN 91375-3-1§6.1.3: "The resulting 7-bit remainder shall be extended by an even parity bit."
X+, X-Activar el filtro de lista blanca para la comunicación de mensajes
S+, S-Activar el modo ESD, terminación tras Log-0 y EOF corto (solo simulación MVB)

Como comando con parámetros​

Como comando con parámetros, formado por una combinación de '=' y una letra (¡sin espacio en blanco!), seguida de un interruptor +/- o de valores de parámetros numéricos. Los datos deben expresarse siempre en notación hexadecimal con exactamente el número de dígitos indicado.

ComandoParámetroDescripciónEjemplo
=0Zero: borrar todos los filtros de lista blanca=0
=D ## §## = Device - ID
§ = Máscara de mensaje
Device Flags: filtro de lista blanca para la comunicación de mensajes; para el ID de dispositivo indicado se transmiten al host los datos de comunicación según la máscara.
§ es un nibble hexadecimal de 4 bit con la siguiente asignación: "transmitir cuando …"
bit0 (1): Single-Cast con Device-ID como emisor Y (*)
bit1 (2): Broad-Cast de Device-ID
bit2 (4): Single-Cast con Device-ID como receptor Y (*)
bit3 (8): Single-Cast con Device-ID (sin dirección)
p. ej., 'A' = bit1 + bit3, registro de toda la comunicación desde/hacia este dispositivo
=D20 A
=P ###+, =P ###-### = Port - IDPort Enable: filtro de lista blanca para puertos; con '+' el puerto indicado se transmite al host=P5B0+
=T ###### = Timeout de respuesta del esclavo/µsTimeout: MVB trabaja según el estándar con un timeout de 43 µs para la respuesta del esclavo. Este tiempo puede ajustarse con este comando en el rango 0…1023 µs.=T02B
=X5 0## = MappingX5-Header: Select pin mapping for pin header X5
#: índice de mapeo para los pines C0 .. C1
=X7 # §## = MappingX7-Header: Select pin mapping for pin header X7
#: índice de mapeo para los pines A0 .. A3
§: índice de mapeo para los pines B0 .. B3
=R ###### = TablaReport: salida de un volcado binario de la tabla indicada
1: FIFO - punteros de escritura/lectura, estados de la máquina de estados
2: Tx-Prog-RAM
3: FIFO - canal A
4: FIFO - canal B
5: DSO Line A-RAM (¡desactivar antes el scope!)
6: DSO Line B-RAM (¡desactivar antes el scope!)
=S 00## = Máscara de habilitaciónScope: habilitación del DSO interno para el registro de las señales de entrada @ 24MHz (=> 16-bit / MVB-bit). El scope necesita 22us hasta armar los triggers para borrar la memoria RAM; para los siguientes 8 eventos de trigger se registran en cada caso 15 bits MVB, incl. 2 bits MVB de pretrigger. La primera palabra de datos contiene en cada caso los triggers que lo han disparado, así como más metainformación y el índice de trama actual.
bit0: (1) Trigger con error de CRC del esclavo
bit1: (2) Trigger con error de CRC del maestro
bit2: (4) Trigger con error de símbolo
bit3: (8) Trigger con detección de inicio de trama
=S 00C

Programa de simulación​

Como comando de programación para una secuencia de prueba, que comienza con {, seguido de varias palabras de programa o de datos separadas entre sí por , y cerrado con }. Para facilitar la creación de una secuencia de prueba, la FPGA puede traducir determinados mnemónicos como comandos de control y valores constantes. Ejemplo:

{ .w 064 // Warte 100 µs
, .r 00A // Wiederhole 10 mal …
, .x 7 02 // (*) erzeuge Frame mit 2 Datenworten mit HDR, CRC und EOF
, $M // fügt das Datenwort C715 als Master Header ein
, 0101 // Steuerbefehl vom Master, Lese 16-bit Port 257
, .w 0 04 // Warte 4 us
, .x 7 02 // erzeuge Frame mit 2 Datenworten mit HDR, CRC und EOF
, $S // fügt das Datenwort A8E3 als Slave Header ein
, 1234 // Simuliertes Antwort-Byte vom Slave
, .w 010 // Warte 16 us
, .l 0 02 // Wiederhole ab (*)
, .e 0 00 // Programm Ende
}

La memoria de programa comprende 256 palabras que pueden utilizarse para comandos de control y datos. Ni en la FPGA ni en la biblioteca de controladores se realiza una comprobación de la longitud programada.

Palabra de controlMnemonicParámetroDescripciónEjemplo
0000.e 0 00End: fin del programa.e 0 00
10##.j 0 #### = índice de la palabra de control de destinoJump: salta a la palabra de programa en la posición ##; el recuento comienza en 0.j 0 02
2###.r ##### = inicialización del contador de bucleRepeat: permite repetir n veces una sección del programa n = [1 .. 4095] = [0x001 .. 0xFFF] ¡No se puede anidar!.r 00A.… .l 0
30##.l 0 #### = índice de la palabra de control de destinoLoop: decrementa el contador de bucle y salta a ## si es mayor que cero…. .l 0 nn
40##.w ###### = tiempo en µsWait: espera T = ### µs antes de la ejecución del siguiente comando T = [1 .. 4095] = [0x001 .. 0xFFF].w 064
5§##.f § ##§ = número de medios bits de perturbación
## = inicio de la perturbación en medios bits
Failure: invierte, durante § medios bits, tras ## medios bits, la salida MVB simulada. El bit de control del comando .X decide sobre la línea A/B.f 2 1E
6§##.g § ##§ = número de palabras
## = a partir de la palabra de datos
Generator: inserta en el flujo de datos, en lugar de las palabras de datos indicadas, valores PRBS de 16 bit, a partir de la palabra ## durante § palabras
para § = 0 se generan 16 palabras de datos.
.g 8 01
7§##.x § ##§ = flags de control
## = número de palabras
eXchange: transmite las siguientes ## palabras de datos del programa como datos MVB; con los bits de control del nibble § se conmutan las siguientes funciones:
bit0 (1): la primera palabra de datos es el encabezado MVB
bit1 (2): genera bytes CRC según la norma en el flujo de datos
bit2 (4): añade bits EOF tras la última palabra de datos a la trama las siguientes
## palabras se envían como palabras de datos a la salida de simulación. (normal § := 7)
.x 7 02 , $M , 20B3
C§0#.s § 0#§ = delay line
# = time index
Skewing: desfase temporal entre tramas de la línea A/B
§: delay line B (0) or line A (1)
0:A first, B delayed
1: B: first, A: delayed
#: time-index of delay, [0..7]
0: 0 .00 µs (perfect sync, never ever)
1: 0 .33 µs (1/2 bit time)
2: 1 .00 µs (3/2 bit times)
3: 7.65 µs
4: 7.99 µs (critical)
5: 8.30 µs
6: 9.67 µs
7: 10.34 µs
Al modificar el desfase temporal se retrasa la ejecución del siguiente comando .X hasta que ambas líneas de bus vuelvan a estar libres.
.S 0 04
D§$#.d § $ #§ = Ctrl Line A
$ = Ctrl Line B
# = Debug out
Debug: §, $: control de la simulación de la línea A/B (normal §, $ := 3)
bit0 (1): Enable line output
bit1 (2): Enable line error bits
bit2 (4): perturbación del bit de inicio
#: control de los pines de depuración y opciones (
los 2 bits inferiores se llevan a X5)
bit0 (1): Header X5:Pin X0, (select mapping 4, =X504)
bit1 (2): Header X5:Pin X1, (select mapping 4, =X504)
.D 3 3 3
E§##.+§ ##§ = comando
## = parámetro
Extended: reservado para un conjunto de comandos ampliado.+N ##
E4##.+w #### = time grid in msWait on ms-grid point, which is ## ms since last .+w command ahead.+w 01
E…tbd
EF00.+N 00NoOperation
F000.N 0 00NoOperation
C715$MComo palabra de datos: encabezado MVB-MASTER
A8E3$SComo palabra de datos: encabezado MVB-SLAVE
7EC3$CComo palabra de datos: norma EN (6.1.3), valor de ejemplo para el cálculo del CRC => CRC := 0xDD (con bit de paridad conforme a la norma)