Passa al contenuto principale

mvbdump

Configurazione dei moduli smartIO MVB tramite USB​

Construction Side La descrizione di questo strumento è in fase di elaborazione. Al momento è riportata soltanto la guida integrata.

Nota: questo software in futuro non sarà più supportato. La funzionalità sarà integrata in futuro nello strumento smiohp.

Opzioni sulla riga di comando​

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

Comandi di esecuzione​

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.

Comandi di controllo FPGA​

  • La configurazione avviene dall'host tramite il canale di trasmissione (Tx) dell'interfaccia seriale USB attraverso cui viene indirizzato lo smartIO.
  • L'FPGA dispone di una API minimale basata su caratteri ASCII e quindi facilmente comprensibile.
  • Non viene fornito alcun riscontro di stato sui comandi eseguiti.
  • Poiché il controllo avviene tipicamente da un codice di programma, essenzialmente non è integrato alcun controllo della sintassi.
  • I comandi vengono interpretati ed eseguiti immediatamente durante la trasmissione.
  • Ciononostante l'FPGA gestisce i seguenti tipici elementi di sintassi:
    • tutti i caratteri dopo // vengono ignorati come commento fino alla fine della riga (LF e/o CR)
    • i white space (0x09, 0x0A, 0x0D, 0x20) vengono in genere ignorati, le eccezioni sono indicate esplicitamente.
    • la distinzione tra maiuscole e minuscole viene ignorata

Tramite la API possono essere gestite le seguenti funzioni:

Comandi diretti​

ComandoDescrizione
RRESET, arresta la sequenza di test e disattiva le linee di ingresso A e B
RRRREnforce high level RESET
LAvvia la sequenza di test con loopback nell'FPGA, la linea A e/o B deve essere attivata in precedenza
PAvvia la sequenza di test con ritorno esterno, la linea A e/o B deve essere attivata in precedenza
{Arresta la sequenza di test e disattiva le linee di ingresso A e B, immissione di una nuova sequenza di test (vedere sotto)
?Restituzione del numero di versione dell'FPGA
@Restituzione dei credits
#Restituzione della hash key della versione DBOA
//Commento, tutti i caratteri fino alla fine della riga vengono ignorati, funziona sempre

Come interruttore​

Come interruttore, costituito da una lettera seguita immediatamente (senza white space!) dal carattere '+' o '-' (i default sono "disattivato")

ComandoDescrizione
A+, A-Ricezione sulla linea MVB A, viene disattivata con RESET o con l'immissione/la fine del programma
B+, B-Ricezione sulla linea MVB B, viene attivata con RESET o con l'immissione/la fine del programma
AB+, AB-Commutare la ricezione sulle linee MVB A+B contemporaneamente, per il resto come sopra
C+, C-Inserimento del CRC ricevuto nel flusso di dati, ad es. diagnostica di messa in servizio. Un bit di stato nel pacchetto MVB ricevuto indica se nel pacchetto sono contenuti CRC
E+, E-I frame con condizioni di errore vengono trasmessi all'host per l'analisi
M+, M-Attivare il filtro white list per i dati in tempo reale nelle porte
W+, W-Inserimento del contatore di byte Tx nel data frame, ad es. verifica dell'implementazione del driver USB
N+, N-No-Parity (ovvero parity-don't-care) nel byte CRC, non conforme a EN 91375-3-1§6.1.3: "The resulting 7-bit remainder shall be extended by an even parity bit."
X+, X-Attivare il filtro white list per la comunicazione di messaggi
S+, S-Attivare la modalità ESD, terminazione dopo Log-0 e EOF breve (solo simulazione MVB)

Come comando con parametri​

Come comando con parametri, costituito da una combinazione '=' e lettera (senza white space!), seguita da un interruttore +/- o da valori di parametri numerici. I valori devono essere sempre espressi in notazione esadecimale con esattamente il numero di cifre prescritto.

ComandoParametroDescrizioneEsempio
=0Zero: cancella tutti i filtri white list=0
=D ## §## = Device - ID
§ = Message Maske
Device Flags: filtro white list per la comunicazione di messaggi; per l'ID del dispositivo indicato vengono trasmessi all'host dati di comunicazione in base alla maschera.
§ è un nibble esadecimale a 4 bit con la seguente assegnazione: "trasmettere, se …"
bit0 (1): single-cast con Device-ID come mittente E (*)
bit1 (2): broadcast da Device-ID
bit2 (4): single-cast con Device-ID come destinatario E (*)
bit3 (8): single-cast con Device-ID (senza direzione)
ad es. 'A' = bit1 + bit3, registrazione dell'intera comunicazione da/verso questo dispositivo
=D20 A
=P ###+, =P ###-### = Port - IDPort Enable: filtro white list per le porte; con '+' la porta indicata viene trasmessa all'host=P5B0+
=T ###### = Slave Response Timeout/µsTimeout: MVB lavora secondo lo standard con un timeout di 43 µs per la risposta dello slave. Questo tempo può essere impostato con questo comando nell'intervallo 0…1023 µs.=T02B
=X5 0## = MappingX5-Header: Select pin mapping for pin header X5
#: indice di mapping per i pin C0 .. C1
=X7 # §## = MappingX7-Header: Select pin mapping for pin header X7
#: indice di mapping per i pin A0 .. A3
§: indice di mapping per i pin B0 .. B3
=R ###### = TabelleReport: emissione di un dump binario per la tabella indicata
1: FIFO - puntatore di scrittura/lettura, stati della state machine
2: Tx-Prog-RAM
3: FIFO - canale A
4: FIFO - canale B
5: DSO Line A-RAM (disattivare prima lo scope!)
6: DSO Line B-RAM (disattivare prima lo scope!)
=S 00## = Enable-MaskScope: abilitazione del DSO interno per la registrazione dei segnali di ingresso @ 24MHz (=> 16 bit / MVB-bit). Lo scope necessita di 22us per armare i trigger per la cancellazione della memoria RAM; per i successivi 8 eventi di trigger vengono registrati rispettivamente 15 MVB-bit incl. 2 MVB-bit di pretrigger. La prima parola di dati contiene rispettivamente i trigger scatenanti, nonché ulteriori meta-informazioni e l'indice del frame corrente.
bit0: (1) trigger con errore CRC dello slave
bit1: (2) trigger con errore CRC del master
bit2: (4) trigger con errore di simbolo
bit3: (8) trigger con rilevamento di inizio frame
=S 00C

Programma di simulazione​

Come comando di programmazione per una sequenza di test, che inizia con {, seguito da più parole di programma o di dati, separate tra loro da , e concluso con }. Per facilitare la creazione di una sequenza di test, l'FPGA può tradurre determinati mnemonici come comandi di controllo e valori costanti. Esempio:

{ .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 di programma comprende 256 parole, utilizzabili per comandi di controllo e dati. Un controllo della lunghezza programmata non viene effettuato né nell'FPGA né nella libreria driver!

Parola di controlloMnemonicParametroDescrizioneEsempio
0000.e 0 00End: fine del programma.e 0 00
10##.j 0 #### = indice della parola di controllo di destinazioneJump: salta alla parola di programma in posizione ##, il conteggio inizia da 0.j 0 02
2###.r ##### = inizializzazione del contatore del cicloRepeat: consente di ripetere n volte una sezione del programma n = [1 .. 4095] = [0x001 .. 0xFFF]. Non annidabile!.r 00A.… .l 0
30##.l 0 #### = indice della parola di controllo di destinazioneLoop: decrementa il contatore del ciclo e salta a ## se maggiore di zero…. .l 0 nn
40##.w ###### = tempo in µsWait: attende per T = ### µs prima dell'esecuzione del comando successivo T = [1 .. 4095] = [0x001 .. 0xFFF].w 064
5§##.f § ##§ = numero di 1/2 bit di disturbo
## = inizio del disturbo in 1/2 bit
Failure: inverte per § mezzi bit dopo ## mezzi bit l'uscita MVB simulata. Il bit di controllo nel comando .X decide sulla linea A/B.f 2 1E
6§##.g § ##§ = numero di parole
## = a partire dalla parola di dati
Generator: inserisce nel flusso di dati, al posto delle parole di dati indicate, valori PRBS a 16 bit, a partire dalla parola ## per § parole
per § = 0 vengono generate 16 parole di dati.
.g 8 01
7§##.x § ##§ = flag di controllo
## = numero di parole
eXchange: trasmette le seguenti ## parole di dati nel programma come dati MVB, dove con i bit di controllo nel nibble § vengono attivate le seguenti funzioni:
bit0 (1): la prima parola di dati è l'header MVB
bit1 (2): genera byte CRC secondo la norma nel flusso di dati
bit2 (4): aggiunge i bit EOF dopo l'ultima parola di dati al frame le seguenti
## parole vengono inviate come parole di dati all'uscita di simulazione. (normale § := 7)
.x 7 02 , $M , 20B3
C§0#.s § 0#§ = delay line
# = time index
Skewing: sfasamento temporale tra i frame delle linee 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
Modificando lo sfasamento temporale, l'esecuzione del successivo comando .X viene ritardata finché entrambe le linee del bus sono nuovamente libere.
.S 0 04
D§$#.d § $ #§ = Ctrl Line A
$ = Ctrl Line B
# = Debug out
Debug: §, $: controllo della simulazione Line A/B (normale §, $ := 3)
bit0 (1): Enable line output
bit1 (2): Enable line error bits
bit2 (4): disturbo del bit di start
#: controllo dei pin di debug e delle opzioni (
i 2 bit inferiori sono portati su 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
## = parametro
Extended: riservato per un set di comandi esteso.+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$MCome parola di dati: header MVB-MASTER
A8E3$SCome parola di dati: header MVB-SLAVE
7EC3$CCome parola di dati: norma EN (6.1.3), valore di esempio per il calcolo del CRC => CRC := 0xDD (con parity bit conforme alla norma)