UG0837
Guida per l'utente
IGLOO2 e SmartFusion2 FPGA
Simulazione dei servizi di sistema
Giugno 2018
Cronologia delle revisioni
La cronologia delle revisioni descrive le modifiche implementate nel documento. Le modifiche sono elencate per revisione, a partire dalla pubblicazione più recente.
1.1 Revisione 1.0
La revisione 1.0 è stata pubblicata nel giugno 2018. È stata la prima pubblicazione di questo documento.
Simulazione dei servizi di sistema FPGA IGLOO2 e SmartFusion2
Il blocco System Services della famiglia SmartFusion®2 FPGA presenta una raccolta di servizi responsabili di varie attività. Questi includono servizi di messaggi di simulazione, servizi di puntatore di dati e servizi di descrittore di dati. È possibile accedere ai servizi di sistema tramite Cortex-M3 in SmartFusion2 e dalla struttura FPGA tramite il controller di interfaccia della struttura (FIC) sia per SmartFusion2 che per IGLOO®2. Questi metodi di accesso vengono inviati al controller di sistema tramite COMM_BLK. COMM_BLK dispone di un'interfaccia APB (bus periferico avanzato) e funge da condotto di passaggio dei messaggi per scambiare dati con il controller di sistema. Le richieste di servizi di sistema vengono inviate al controller di sistema e le risposte di servizi di sistema vengono inviate a CoreSysSerrvice tramite COMM BLK. La posizione dell'indirizzo per COMM_BLK è disponibile all'interno del sottosistema del microcontrollore (MSS)/sottosistema della memoria ad alte prestazioni (HPMS). Per i dettagli, vedere UG0450: SoC SmartFusion2 e controller di sistema FPGA IGLOO2.
Guida per l'utente
L'illustrazione seguente mostra il flusso di dati dei servizi di sistema.
Figura 1 • Diagramma del flusso dei dati del servizio di sistemaSia per la simulazione del servizio di sistema IGLOO2 che per quella SmartFusion2, è necessario inviare richieste di servizio di sistema e controllare le risposte del servizio di sistema per verificare che la simulazione sia corretta. Questo passaggio è necessario per accedere al controller di sistema, che fornisce i servizi di sistema. Il modo di scrivere e leggere dal controller di sistema è diverso per i dispositivi IGLOO2 e SmartFusion2. Per SmartFusion2, è disponibile Coretex-M3 ed è possibile scrivere e leggere dal controller di sistema utilizzando i comandi del modello funzionale bus (BFM). Per IGLOO2, Cortex-M3 non è disponibile e il controller del sistema non è accessibile utilizzando i comandi BFM.
2.1 Tipi di servizi di sistema disponibili
Sono disponibili tre diversi tipi di servizi di sistema e ciascun tipo di servizio presenta sottotipi diversi.
Servizi di messaggistica di simulazione
Servizi di puntamento dati
Servizi di descrittore dei dati
Il capitolo Appendice – Tipi di servizi di sistema (vedi pagina 19) di questa guida descrive i diversi tipi di servizi di sistema. Per ulteriori informazioni sui servizi di sistema, consultare UG0450: Guida per l'utente del controller di sistema SmartFusion2 SoC e IGLOO2 FPGA .
2.2 Simulazione del servizio del sistema IGLOO2
I servizi di sistema implicano la scrittura e la lettura dal controller di sistema. Per scrivere e leggere dal controller di sistema a scopo di simulazione, è necessario eseguire i passaggi seguenti.
- Crea un'istanza del soft IP core CoreSysServices, disponibile nel catalogo SmartDesign.
- Scrivere il codice HDL per una macchina a stati finiti (FSM).
L'FSM HDL si interfaccia con CoreSysServices Core, che funge da fabric master del bus AHBLite. Il core CoreSysServices avvia la richiesta del servizio di sistema al COMM BLK e riceve le risposte del servizio di sistema dal COMM BLK tramite FIC_0/1, controller dell'interfaccia di struttura, come mostrato nella seguente illustrazione.
Figura 2 • Topologia di simulazione dei servizi di sistema IGLOO22.3 Simulazione del servizio del sistema SmartFusion2
Per simulare i servizi di sistema nei dispositivi SmartFusion2, è necessario scrivere e leggere dal controller di sistema. Sono disponibili due opzioni per accedere al controller del sistema a scopo di simulazione.
Opzione 1: scrivere il codice HDL per un FSM da interfacciare con il core IP soft CoreSysService, che funge da master della struttura AHBLite e avvia la richiesta di servizio di sistema al COMM BLK e riceve risposte di servizio di sistema dal COMM BLK attraverso la struttura FIC_0/1 interfaccia come mostrato nella seguente illustrazione.
Figura 3 • Topologia di simulazione dei servizi di sistema SmartFusion2
Opzione 2 — Poiché Cortex-M3 è disponibile per i dispositivi SmartFusion2, è possibile utilizzare i comandi BFM per scrivere e leggere direttamente dallo spazio di memoria del controller di sistema.
L'uso dei comandi BFM (opzione 2) evita la necessità di scrivere i codici HDL per l'FSM. In questa guida per l'utente, l'opzione 2 viene utilizzata per mostrare la simulazione dei servizi di sistema in SmartFusion2. Con questa opzione, è possibile accedere allo spazio di memoria del controller di sistema per scoprire la mappa di memoria del COMM BLK e il blocco FIIC ( Fabric Interface Interrupt Controller ) quando si scrivono i comandi BFM.
2.4 Simulazione Esamples
La guida per l'utente copre le seguenti simulazioni.
- Simulazione del servizio numero di serie IGLOO2 (vedi pagina 5)
- Simulazione del servizio numero di serie SmartFusion2 (vedi pagina 8)
- Simulazione del servizio di azzeramento IGLOO2 (vedi pagina 13)
- Simulazione del servizio di azzeramento SmartFusion2 (vedi pagina 16)
Metodi di simulazione simili possono essere applicati ad altri servizi di sistema. Per un elenco completo dei diversi servizi di sistema disponibili, andare all'Appendice – Tipi di servizi di sistema (vedi pagina 19).
2.5 Simulazione del servizio numero di serie IGLOO2
Per prepararsi alla simulazione del servizio del numero di serie IGLOO2, eseguire i passaggi seguenti.
- Richiama il system builder per creare il tuo blocco HPMS.
- Selezionare la casella di controllo Servizi di sistema HPMS nella pagina Funzionalità del dispositivo. Ciò indicherà al costruttore del sistema di esporre l'interfaccia bus (BIF) HPMS_FIC_0 SYS_SERVICES_MASTER.
- Lascia tutte le altre caselle deselezionate.
- Accettare l'impostazione predefinita in tutte le altre pagine e fare clic su Fine per completare il blocco del generatore di sistema. Nell'editor HDL di Libero® SoC, scrivere il codice HDL per l'FSM (File > Nuovo > HDL). Includi i seguenti tre stati nel tuo FSM.
Stato INIT (stato iniziale)
SERV_PHASE (stato della richiesta di servizio)
RSP_PHASE (stato di risposta del servizio).
La figura seguente mostra i tre stati della FSM.
Figura 4 • FSM a tre Stati Nel codice HDL per l'FSM, utilizzare il codice di comando corretto ("01" esadecimale per il servizio del numero di serie) per immettere lo stato di richiesta di servizio dallo stato INIT.
- Salva il tuo HDL file. La FSM appare come un componente nella Gerarchia di Progettazione.
- Apri SmartDesign. Trascina e rilascia il blocco del generatore di sistema di livello superiore e il blocco FSM nell'area di disegno SmartDesign. Dal catalogo, trascina e rilascia il core IP soft CoreSysService nel canvas di SmartDesign.
- Fare clic con il pulsante destro del mouse sul core IP soft CoreSysService per aprire il configuratore. Seleziona la casella di controllo Servizio numero di serie (sotto Servizi informazioni dispositivo e progettazione
gruppo) per abilitare il servizio del numero di serie. - Lascia tutte le altre caselle deselezionate. Fare clic su OK per uscire dal configuratore.
Figura 5 • CoreSysServices Soft IP Core Configurator
- Connettere il BIF HPMS_FIC_0 SYS_SERVICES_MASTER del blocco del generatore di sistema al BIF AHBL_MASTER del blocco CoreSysService.
- Collega l'output del blocco FSM HDL all'input del core IP soft CoreSysService. Effettua tutte le altre connessioni nella tela SmartDesign come mostrato nella figura seguente.
Figura 6 • SmartDesign Canvas con blocco HDL, CoreSysServices Soft IP e blocchi HPMS - Nell'area di disegno SmartDesign, fare clic con il pulsante destro del mouse su >Genera componente per generare il Level Design superiore.
- Nella gerarchia del design view, fai clic con il pulsante destro del mouse sulla progettazione di livello superiore e seleziona crea Testbench > HDL .
- Utilizza un editor di testo per creare un testo file denominato "status.txt" .
- Includere il comando per il servizio di sistema e il numero di serie a 128 bit. Per ulteriori informazioni, vedere la Tabella 1 (Valori di comando/risposta dei servizi di sistema) nel file Manuale CoreSysServices v3.1 per i codici di comando (Hex) da utilizzare per i diversi servizi del sistema. Per il servizio con numero di serie, il codice di comando è "01" esadecimale.
Il formato di status.txt file per il servizio del numero di serie è il seguente.
< CMD a 2 cifre esadecimali><32 Numero di serie a cifre esadecimali>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Salva lo status.txt file nella cartella Simulazione del tuo progetto. Il progetto è ora pronto per la simulazione.
Una volta iniziata l'esecuzione del servizio, nella finestra di trascrizione ModelSim viene visualizzato un messaggio che indica la posizione di destinazione e il numero di serie, come mostrato nella figura seguente.
Figura 7 • Finestra di trascrizione della simulazione ModelSimIl controller del sistema esegue una scrittura AHB sull'indirizzo con il numero di serie. Al completamento del servizio, l'RXFIFO di COMM_BLK verrà caricato con la risposta del servizio.
Nota: per un elenco completo dei codici di comando da utilizzare per i diversi servizi di sistema, vedere la Tabella 1 (Valori di comando/risposta dei servizi di sistema) nel Manuale CoreSysServices v3.1 o UG0450: Guida per l'utente del controller di sistema SmartFusion2 SoC e IGLOO2 FPGA.
2.6 Simulazione del servizio numero di serie SmartFusion2
In questa guida per l'utente, i comandi BFM (opzione 2) vengono utilizzati per accedere al controller di sistema per il servizio di sistema. I comandi BFM vengono utilizzati poiché il processore Cortex-M3 è disponibile sul dispositivo per la simulazione BFM. I comandi BFM consentono di scrivere e leggere direttamente su COMM BLK una volta conosciuta la mappatura della memoria di COMM_BLK.
Per preparare il progetto per la simulazione del servizio del numero di serie SmartFusion2, eseguire i passaggi seguenti.
- Trascina e rilascia l'MSS dal catalogo all'area di disegno del tuo progetto.
- Disabilitare tutte le periferiche MSS tranne MSS_CCC, Reset Controller, Gestione interruzioni e FIC_0, FIC_1 e FIC_2.
- Configurare la gestione delle interruzioni per utilizzare MSS per l'interruzione del fabric.
- Preparare il serialnum.bfm file in un editor di testo o nell'editor HDL di Libero. Salvare il serialnum.bfm file nella cartella Simulazione del progetto. Il serialnum.bfm dovrebbe includere i seguenti dettagli.
• Mappatura della memoria su COMM BLK (CMBLK)
• Mappatura della memoria sulla periferica di gestione degli interruzioni (FIIC)
• Comando per richiesta assistenza sistema numero di serie (“01” Hex)
• Indirizzo per la posizione del numero di serie
un example del serialnum.bfm file è il seguente.
memmap FIIC 0x40006000; #Mappatura della memoria per la gestione degli interrupt
memmap CMBLK 0x40016000; #Mappatura memoria su COMM BLK
memmap DESCRIPTOR_ADDR 0x20000000; #Posizione dell'indirizzo per il numero di serie
#Codice comando in esadecimale
costante CMD 0x1 # Codice comando per Serial NumberService
Registri di configurazione #FIIC
costante FICC_INTERRUPT_ENABLE0 0x0
#COMM_BLK Registri di configurazione
CONTROLLO costante 0x00
STATO costante 0x04
costante INT_ENABLE 0x08
costante DATI8 0x10
costante DATI32 0x14
costante FRAME_START8 0x18
costante FRAME_START32 0x1C
numero di serie della procedura;
intero x;
scrivi w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configure
#FICC_INTERRUPT_ENABLE0 # Registrati per abilitare COMBLK_INTR #
#interrupt dal blocco COMM_BLK al tessuto
#Fase di richiesta
scrivi w CMBLK CONTROL 0x10 # Configura COMM BLK Control #Registrati su
abilitare i trasferimenti sull'interfaccia COMM BLK
scrivi w CMBLK INT_ENABLE 0x1 # Configura l'abilitazione dell'interrupt COMM BLK
#Registrati per abilitare l'Interrupt per TXTOKAY (bit corrispondente nel file
#Registro di stato)
waitint 19 # aspetta l'interruzione COMM BLK, qui #BFM aspetta
#fino all'affermazione di COMBLK_INTR
readstore w CMBLK STATUS x # Leggi il registro di stato COMM BLK per #TXTOKAY
# Interrompere
imposta xx e 0x1
se x
scrivi w CMBLK FRAME_START8 CMD # Configura COMM BLK FRAME_START8
#Registrati per richiedere il servizio Serial Number
finese
finese
waitint 19 # aspetta l'interruzione COMM BLK, qui
#BFM attende finché non viene affermato COMBLK_INTR
readstore w CMBLK STATUS x # Leggi lo stato COMM BLK Registro per
#TXTOKAY Interruzione
imposta xx e 0x1
imposta xx e 0x1
se x
scrivere w CMBLK CONTROL 0x14 #Configura controllo COMM BLK
#Registrati per abilitare i trasferimenti sull'interfaccia COMM BLK
scrivere w CMBLK DATA32 DESCRIPTOR_ADDR
scrivere w CMBLK INT_ENABLE 0x80
scrivere w CMBLK CONTROL 0x10
finese
aspetta 20
#Fase di risposta
aspettare 19
readstore w CMBLK STATUS x
imposta xx e 0x80
se x
rileggi w CMBLK FRAME_START8 CMD
scrivere w CMBLK INT_ENABLE 0x2
finese
aspettare 19
readstore w CMBLK STATUS x
imposta xx e 0x2
se x
readcheck w CMBLK DATA8 0x0
scrivere w CMBLK CONTROL 0x18
finese
aspettare 19
ricontrolla w FIIC 0x8 0x20000000
readstore w CMBLK STATUS x
imposta xx e 0x2
se x
readcheck w CMBLK DATA32 DESCRIPTOR_ADDR
finese
readcheck w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck per verificare il S/N
readcheck w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck per verificare il S/N
readcheck w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck per verificare il S/N
readcheck w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck per verificare il S/N
ritorno - Crea lo stato. TXT file nell'editor HDL di Libero o in qualsiasi editor di testo. Includere il comando di servizio del sistema del numero di serie (“01” in esadecimale) e il numero di serie nello stato . TXT file. Consultare il manuale CoreSysServices v3.1 per utilizzare il codice di comando corretto.
- La sintassi di questo file per il servizio del numero di serie è, <2 cifre esadecimali CMD>< 32 cifre esadecimali Numero di serie> . Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
- Salva lo stato .txt file nella cartella Simulazione del progetto.
- Modifica l'utente .bfm (situato nella cartella Simulation) per includere il serialnum. bfm file e chiamare la procedura del numero di serie come mostrato nel seguente frammento di codice.
include “serialnum.bfm” #include serialnum.bfm
procedura utente_main;
stampa “INFO: Inizio simulazione”;
print “INFO:Codice comando servizio in decimale:%0d”, CMD ;
chiama numero di serie; #chiama la procedura serialnum
stampa “INFO:Fine simulazione”;
ritorno - Nella gerarchia del design view, genera il testbench (tasto destro, Top Level Design > Crea Testbench > HDL ) e sei pronto per eseguire la simulazione del servizio del numero di serie.
Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica la posizione di destinazione e il numero di serie. Il controller del sistema esegue una scrittura AHB sull'indirizzo con il numero di serie. Al completamento del servizio, l'RXFIFO di COMM_BLK verrà caricato con la risposta del servizio. La finestra di trascrizione ModelSim visualizza l'indirizzo e il numero di serie ricevuti come mostrato nella figura seguente.
Figura 8 • Simulazione del servizio numero di serie SmartFusion2 nella finestra Trascrizione ModelSim
2.7 Simulazione del servizio di azzeramento IGLOO2
Per prepararsi alla simulazione del servizio di azzeramento IGLOO2, eseguire i passaggi seguenti.
- Richiamare il system builder per creare il blocco HPMS. Selezionare la casella di controllo Servizi di sistema HPMS in Funzionalità dispositivo SYS_SERVICES_MASTER BIF. Lascia tutte le altre caselle deselezionate. Accettare l'impostazione predefinita in tutte le altre pagine e fare clic su pagina. Ciò indica al builder del sistema di esporre HPMS_FIC_0 Finish per completare la configurazione del blocco del builder del sistema.
- Nell'editor HDL di Libero SoC, scrivere il codice HDL per l'FSM. Nel codice HDL per la FSM, includi i seguenti tre stati.
Stato INIT (stato iniziale)
SERV_PHASE (stato della richiesta di servizio)
RSP_PHASE (stato di risposta del servizio)
La figura seguente mostra i tre stati della FSM.
Figura 9 • FSM a tre Stati - Nel codice HDL, utilizzare il codice comando “F0″(Hex) per immettere lo stato di richiesta di servizio dallo stato INIT.
- Salva il tuo HDL file.
- Apri SmartDesign, trascina e rilascia il blocco del generatore di sistema di livello superiore e il blocco FSM HDL nell'area di disegno SmartDesign. Dal catalogo, trascina e rilascia il core IP soft CoreSysService nel canvas di SmartDesign.
- Fare clic con il pulsante destro del mouse sul core IP soft CoreSysServices per aprire il configuratore e selezionare la casella di controllo Zeroization Service nel gruppo Data Security Services. Lascia tutte le altre caselle deselezionate. Fare clic su OK per uscire.
Figura 10 • Configuratore CoreSysServices
- Connettere il BIF HPMS_FIC_0 SYS_SERVICES_MASTER del blocco del generatore di sistema al BIF AHBL_MASTER del blocco CoreSysService.
- Collega l'output del blocco FSM HDL all'input del core IP soft CoreSysService. Effettua tutte le altre connessioni nell'area di disegno SmartDesign.
Figura 11 • SmartDesign Canvas con blocco HDL, CoreSysServices Soft IP e blocchi HPMS
9. Nell'area di disegno SmartDesign, generare il progetto di livello superiore (fare clic con il pulsante destro del mouse > Genera componente).
10. Nella gerarchia del progetto view, fai clic con il pulsante destro del mouse sulla progettazione di livello superiore e seleziona Crea Testbench > HDL. Ora sei pronto per eseguire la simulazione.
Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica che l'azzeramento è stata completata al tempo x come mostrato nella figura seguente.
Figura 12 • Finestra di trascrizione della simulazione del servizio del sistema di azzeramento IGLOO2
Il controller del sistema esegue una scrittura AHB sull'indirizzo con il numero di serie. Al completamento del servizio, l'RXFIFO di COMM_BLK verrà caricato con la risposta del servizio. È opportuno notare che il modello di simulazione simula l'azzeramento interrompendo la simulazione anziché azzerando il progetto stesso.
Nota: per un elenco completo dei codici di comando da utilizzare per i diversi servizi di sistema, vedere la Tabella 1 (Valori di comando/risposta dei servizi di sistema) nella Manuale CoreSysServices v3.1:. o UG0450: Guida per l'utente del controller di sistema SmartFusion2 SoC e IGLOO2 FPGA
2.8 Simulazione del servizio di azzeramento SmartFusion2
In questa guida, i comandi BFM (opzione 2) vengono utilizzati per accedere al controller di sistema per il servizio di sistema.
I comandi BFM vengono utilizzati poiché il processore Cortex-M3 è disponibile sul dispositivo per la simulazione BFM. I comandi BFM consentono di scrivere e leggere direttamente su COMM BLK una volta conosciuta la mappatura della memoria di COMM_BLK. Per preparare il progetto per la simulazione del servizio di azzeramento SmartFusion2, eseguire i passaggi seguenti.
- Trascina e rilascia l'MSS dal catalogo all'area di disegno del tuo progetto.
- Disabilitare tutte le periferiche MSS tranne MSS_CCC, Reset Controller, Gestione interruzioni e FIC_0, FIC_1 e FIC_2.
- Configurare la gestione delle interruzioni per utilizzare MSS per l'interruzione del fabric.
- Preparare il file zeroizaton.bfm file in un editor di testo o nell'editor HDL di Libero. La tua azzeramento. bfm dovrebbe includere:
- Mappatura della memoria su COMM BLK (CMBLK)
- Mappatura della memoria sulla periferica di gestione degli interrupt (FIIC)
- Comando per richiesta servizio di azzeramento (“F0” Hex per azzeramento)
un example del serialnum.bfm file è mostrato nella figura seguente.
Figura 13 • Zeroization.bfm per la simulazione dei servizi del sistema di azzeramento SmartFusion2
5. Salvare il file zeroization.bfm file nella cartella Simulazione del progetto. utente.bfm
6. Modificare il file (situato nella cartella zeroization.bfm Simulation) per includerlo utilizzando il seguente frammento di codice.
include "zeroization.bfm" #include zeroization.bfm file procedura utente_main;
stampa “INFO: Inizio simulazione”;
print “INFO:Codice comando servizio in decimale:%0d”, CMD ;
azzeramento delle chiamate; #ritorno procedura di azzeramento chiamata
7. Nella Gerarchia di progettazione, generare il Testbench (fare clic con il pulsante destro del mouse su livello superiore > Crea Testbench > HDL) e si è pronti per eseguire la simulazione di azzeramento SmartFusion2.
Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica che il dispositivo è stato azzerato al tempo x. È opportuno notare che il modello di simulazione simula l'azzeramento interrompendo la simulazione anziché azzerando il progetto stesso. La finestra di trascrizione ModelSim nella figura seguente mostra che il dispositivo è stato azzerato.
Figura 14 • Registro di simulazione del servizio del sistema di azzeramento SmartFusion2
Appendice: Tipi di servizi di sistema
In questo capitolo vengono descritti vari tipi di servizi di sistema.
3.1 Servizi di messaggistica di simulazione
Le sezioni seguenti descrivono vari tipi di servizi di messaggi di simulazione.
3.1.1 Flash*Blocca
La simulazione entrerà nello stato Flash*Freeze quando la richiesta di servizio corretta viene inviata a COMM_BLK dal FIC (nel caso dei dispositivi IGLOO2) o dal Cortex-M3 (nei dispositivi SmartFusion2). Una volta che il servizio è stato rilevato dal controller del sistema, la simulazione verrà interrotta e verrà visualizzato un messaggio che indica che il sistema è entrato in Flash*Freeze (insieme all'opzione selezionata). Alla ripresa della simulazione, l'RXFIFO del COMM_BLK verrà riempito con la risposta del servizio composta dal comando del servizio e dallo stato. Va notato che non è disponibile alcun supporto per la simulazione dell'uscita da Flash*Freeze.
3.1.2 Azzeramento
L'azzeramento è attualmente l'unico servizio ad alta priorità all'interno dei servizi di sistema elaborati da COMM_BLK. La simulazione entrerà nello stato di azzeramento non appena verrà rilevata la richiesta di servizio corretta da COMM_BLK. L'esecuzione di altri servizi verrà interrotta e scartata dal controller di sistema e al suo posto verrà eseguito il servizio di azzeramento. Una volta rilevata la richiesta del servizio di azzeramento, la simulazione si interrompe e viene visualizzato un messaggio che indica che il sistema è entrato in azzeramento. I riavvii manuali della simulazione dopo l'azzeramento non sono validi.
3.2 Servizi di puntamento dati
Le sezioni seguenti descrivono vari tipi di servizi puntatore dati.
3.2.1 Numero di serie
Il servizio del numero di serie scriverà un numero di serie a 128 bit in una posizione di indirizzo fornita come parte della richiesta di servizio. Questo parametro a 128 bit può essere impostato utilizzando un supporto per la simulazione del servizio di sistema file (vedi pagina 22) . Se il parametro del numero di serie a 128 bit non è definito nel file file, verrà utilizzato il numero di serie predefinito pari a 0. Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica la posizione di destinazione e il numero di serie. Il controller del sistema esegue una scrittura AHB sull'indirizzo con il numero di serie. Al completamento del servizio, l'RXFIFO di COMM_BLK verrà caricato con la risposta del servizio.
3.2.2 Codice utente
Il servizio usercode scrive un parametro usercode a 32 bit in una posizione di indirizzo fornita come parte della richiesta di servizio. Questo parametro a 32 bit può essere impostato utilizzando il supporto di simulazione del servizio di sistema file (vedi pagina 22). Se il parametro a 32 bit non è definito nel file file, viene utilizzato il valore predefinito 0. Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica la posizione di destinazione e il codice utente. Il controller del sistema esegue una scrittura AHB all'indirizzo con il parametro a 32 bit. Al completamento del servizio, l'RXFIFO di COMM_BLK viene caricato con la risposta del servizio, che include il comando del servizio e l'indirizzo di destinazione.
3.3 Servizi di descrittore dei dati
Le sezioni seguenti descrivono vari tipi di servizi di descrittore di dati.
3.3.1 gradi Celsius
Il supporto di simulazione per questo servizio riguarda solo lo spostamento dei dati originali dalla sorgente alla destinazione, senza eseguire effettivamente alcuna crittografia/decrittografia sui dati. I dati che devono essere crittografati/decrittografati e la struttura dei dati devono essere scritti prima dell'invio della richiesta di servizio. Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica l'esecuzione del servizio AES. Il servizio AES legge sia la struttura dei dati che i dati da crittografare/decrittografare. I dati originali vengono copiati e scritti all'indirizzo fornito all'interno della struttura dati. Una volta completato il servizio, il comando, lo stato e l'indirizzo della struttura dati vengono inseriti nell'RXFIFO.
Nota: Questo servizio è solo per dati a 128 bit e 256 bit e sia i dati a 128 bit che quelli a 256 bit hanno lunghezze di struttura dati diverse.
3.3.2 SHA 256
Il supporto di simulazione per questo servizio riguarda solo lo spostamento dei dati, senza eseguire effettivamente alcun hashing sui dati. La funzione SHA 256 è progettata per generare una chiave hash a 256 bit basata sui dati di input. I dati da sottoporre ad hashing e la struttura dei dati devono essere scritti nei rispettivi indirizzi prima che la richiesta di servizio venga inviata a COMM_BLK. La lunghezza in bit e il puntatore definiti all'interno della struttura dati SHA 256 devono corrispondere correttamente alla lunghezza e all'indirizzo dei dati da sottoporre ad hashing. Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica l'esecuzione del servizio SHA 256. Invece di eseguire la funzione vera e propria, una chiave hash predefinita verrà scritta nel puntatore di destinazione dalla struttura dati. La chiave hash predefinita è esadecimale "ABCD1234". Per impostare una chiave personalizzata, andare alla sezione Impostazione parametri (vedi pagina 23). Al completamento del servizio, RXFIFO viene caricato con la risposta del servizio composta dal comando del servizio, dallo stato e dal puntatore alla struttura dati SHA 256.
3.3.3 HMAC
Il supporto di simulazione per questo servizio riguarda solo lo spostamento dei dati, senza eseguire effettivamente alcun hashing sui dati. I dati da sottoporre ad hashing e la struttura dei dati devono essere scritti nei rispettivi indirizzi prima che la richiesta di servizio venga inviata a COMM_BLK. Il servizio HMAC richiede una chiave da 32 byte oltre alla lunghezza in byte, al puntatore di origine e al puntatore di destinazione. Una volta iniziata l'esecuzione del servizio, viene visualizzato un messaggio che indica l'esecuzione del servizio HMAC. La chiave viene letta e la chiave a 256 bit viene copiata dalla struttura dati al puntatore di destinazione. Al completamento del servizio, RXFIFO viene caricato con la risposta del servizio composta dal comando del servizio, dallo stato e dal puntatore alla struttura dati HMAC.
3.3.4 Generazione DRBG
La generazione di bit casuali viene eseguita da questo servizio. Va notato che il modello di simulazione non segue esattamente la stessa metodologia di generazione di numeri casuali utilizzata dal silicio. La struttura dati deve essere scritta correttamente nella posizione prevista prima che la richiesta di servizio venga inviata a COMM_BLK. La struttura dei dati, il puntatore di destinazione, la lunghezza e altri dati rilevanti vengono letti dal controller del sistema. Il servizio di generazione DRBG genera un insieme di dati pseudocasuali della lunghezza richiesta (0-128). Il controller del sistema scrive i dati casuali nel puntatore di destinazione. Nella simulazione viene visualizzato un messaggio che indica l'esecuzione del servizio di generazione DRBG. Una volta completato il servizio, il comando, lo stato e l'indirizzo della struttura dati vengono inseriti nell'RXFIFO. Se la lunghezza dei dati richiesta non rientra nell'intervallo 0-128, verrà inserito un codice di errore "4" (Max Generate) nell'RXFIFO. Se la lunghezza dei dati aggiuntivi non rientra nell'intervallo Request Too Big compreso tra 0 e 128, verrà inserito un codice di errore "5" (Lunghezza massima dei dati aggiuntivi superata) nell'RXFIFO. Se sia la lunghezza dei dati richiesta per la generazione che la lunghezza dei dati aggiuntivi non rientrano nell'intervallo definito (0-128), un codice di errore "1" (Errore catastrofico) viene inserito in RXFIFO.
3.3.5 Ripristino DRBG
La funzione di ripristino effettiva viene eseguita rimuovendo le istanze DRBG e reimpostando DRBG. Una volta rilevata la richiesta di servizio, la simulazione visualizza il messaggio DRBG Reset service completato. La risposta, che include il servizio e lo stato, viene inserita in RXFIFO.
3.3.6 Autotest DRBG
Il supporto della simulazione per l'autotest DRBG non esegue effettivamente la funzione di autotest. Una volta rilevata la richiesta di servizio, la simulazione visualizzerà un messaggio di esecuzione del servizio di autotest DRBG. La risposta, che include il servizio e lo stato, verrà inserita in RXFIFO.
3.3.7 Istanziazione DRBG
Il supporto di simulazione per il servizio di creazione di istanze DRBG non esegue effettivamente il servizio di creazione di istanze. La struttura dati deve essere scritta correttamente nella posizione prevista prima che la richiesta di servizio venga inviata a COMM_BLK. Una volta rilevata la richiesta di servizio verrà letta la struttura e la stringa di personalizzazione definita all'interno dello spazio indirizzi MSS. La simulazione visualizzerà un messaggio che indica che il servizio DRBG Instantiate ha iniziato l'esecuzione. Una volta completato il servizio, la risposta, che include il comando del servizio, lo stato e il puntatore alla struttura dati, verrà inserita nell'RXFIFO. Se la lunghezza dei dati (PERSONALIZATIONLENGTH) non è compresa nell'intervallo 0-128, un codice di errore "1" (Errore catastrofico) verrà inserito in RXFIFO per lo stato.
3.3.8 DRBG Non istanziare
Il supporto di simulazione per il servizio di rimozione di un'istanza di DRBG in realtà non esegue il servizio di rimozione di un'istanza di DRBG precedentemente istanziato, come fa il silicio. La richiesta di servizio deve includere sia il comando che l'handle DRBG. Una volta rilevata la richiesta di servizio, l'handle DRBG verrà archiviato. La simulazione visualizzerà un messaggio che indica che il servizio di annullamento dell'istanza DRBG è stato inizializzato. Una volta completato il servizio, la risposta, che include il comando del servizio, lo stato e l'handle DRBG, verrà inserita in RXFIFO.
3.3.9 Riseminamento DRBG
A causa della natura simulativa del blocco dei servizi di sistema, il servizio di reseeding DRBG nella simulazione non viene eseguito automaticamente dopo ogni 65535 DRBG generati servizi. La struttura dati deve essere scritta correttamente nella posizione prevista prima che la richiesta di servizio venga inviata a COMM_BLK. Una volta rilevata la richiesta di servizio, verranno letti la struttura e i parametri di input aggiuntivi nello spazio indirizzi MSS. Verrà visualizzato un messaggio che indica che il servizio di reseeding DRBG è stato avviato. La struttura dati deve essere scritta correttamente nella posizione prevista prima che la richiesta di servizio venga inviata a COMM_BLK. Una volta completato il servizio, la risposta, che include il comando del servizio, lo stato e il puntatore alla struttura dati, verrà inserita nell'RXFIFO.
3.3.10 Albero delle chiavi
La funzione effettiva non viene eseguita nella simulazione per il servizio KeyTree. La struttura dei dati del servizio KeyTree è costituita da una chiave da 32 byte, dati opttype da 7 bit (MSB ignorato) e percorso da 16 byte. I dati all'interno della struttura dati dovrebbero essere scritti nei rispettivi indirizzi prima che la richiesta di servizio venga inviata a COMM_BLK. Una volta iniziata l'esecuzione del servizio verrà visualizzato un messaggio che indica l'esecuzione del servizio KeyTree. Verrà letto il contenuto della struttura dati, la chiave da 32 byte verrà memorizzata e la chiave originale situata all'interno della struttura dati verrà sovrascritta. Dopo questa scrittura AHB, il valore della chiave all'interno della struttura dati non dovrebbe cambiare, ma si verificheranno transazioni AHB per la scrittura. Al completamento del servizio, RXFIFO viene caricato con la risposta del servizio, composta dal comando del servizio, dallo stato e dal puntatore alla struttura dati KeyTree.
3.3.11 Risposta alla sfida
La funzione effettiva, come l'autenticazione del dispositivo, non viene eseguita nella simulazione per il servizio di risposta alla sfida. La struttura dei dati per questo servizio richiede un puntatore al buffer per ricevere un risultato di 32 byte, un opttype di 7 bit e un percorso di 128 bit. I dati all'interno della struttura dati dovrebbero essere scritti nei rispettivi indirizzi prima che la richiesta di servizio venga inviata a COMM_BLK. Una volta iniziata l'esecuzione del servizio verrà visualizzato un messaggio che indica l'esecuzione del servizio di risposta alla sfida. Una risposta generica a 256 bit verrà scritta nel puntatore fornito all'interno della struttura dati. La chiave predefinita è impostata come esadecimale "ABCD1234". Per ottenere una chiave personalizzata, controllare l'impostazione dei parametri (vedere pagina 23). Al completamento del servizio, RXFIFO verrà caricato con la risposta del servizio, composta dal comando del servizio, dallo stato e dal puntatore della struttura dei dati della risposta alla sfida.
3.4 Altri servizi
Le sezioni seguenti descrivono vari altri servizi di sistema.
3.4.1 Controllo del digest
La funzione effettiva di ricalcolo e confronto dei digest dei componenti selezionati non viene eseguita per il servizio di controllo del digest nella simulazione. Questa richiesta di servizio è composta da comandi di servizio e opzioni di servizio (LSB a 5 bit). Una volta iniziata l'esecuzione del servizio, verrà visualizzato un messaggio che descrive in dettaglio l'esecuzione del servizio di controllo del digest, insieme alle opzioni selezionate dalla richiesta. Al completamento del servizio, RXFIFO verrà caricato con la risposta del servizio, composta dal comando di servizio e dai flag di pass/fail del controllo digest.
3.4.2 Risposta al comando non riconosciuta
Quando una richiesta di servizio non riconosciuta viene inviata a COMM_BLK, COMM_BLK risponderà automaticamente con un messaggio di comando non riconosciuto inserito in RXFIFO. Il messaggio è costituito dal comando inviato nel COMM_BLK e dallo stato del comando non riconosciuto (252D). Verrà inoltre visualizzato un messaggio sul display che indica che è stata rilevata una richiesta di servizio non riconosciuta. COMM_BLK tornerà allo stato inattivo, in attesa di accettare la successiva richiesta di servizio.
3.4.3 Servizi non supportati
I servizi non supportati impostati su COMM_BLK attiveranno un messaggio nella simulazione indicando che la richiesta di servizio non è supportata. COMM_BLK tornerà allo stato inattivo, in attesa di accettare la successiva richiesta di servizio. Il PINTERRUPT non verrà impostato, indicando che un servizio è stato completato. L'elenco attuale dei servizi non supportati include: IAP, ISP, certificato del dispositivo e il servizio DESIGNVER.
3.5 Supporto per la simulazione dei servizi di sistema File
Per supportare la simulazione dei servizi di sistema, un text file chiamato "status.txt" può essere utilizzato per passare istruzioni sul comportamento richiesto del modello di simulazione al modello di simulazione. Questo file dovrebbe trovarsi nella stessa cartella da cui viene eseguita la simulazione. IL file può essere utilizzato, tra le altre cose, per forzare determinate risposte di errore per i servizi di sistema supportati o anche per impostare alcuni parametri necessari per la simulazione, (ad es.ample, numero di serie). Il numero massimo di righe supportate nello "status.txt" file è 256. Le istruzioni che compaiono dopo la riga numero 256 non verranno utilizzate nella simulazione.
3.5.1 Forzare risposte agli errori
L'utente può forzare una determinata risposta di errore per un particolare servizio durante il test passando le informazioni al modello di simulazione utilizzando "status.txt" file, che dovrebbe essere inserito nella cartella da cui viene eseguita la simulazione. Per forzare risposte di errore ad un determinato servizio, il comando e la risposta richiesta devono essere digitati sulla stessa riga nel seguente formato:ample, al comando> ; istruire il modello di simulazione a generare una risposta di errore di accesso alla memoria MSS al servizio del numero di serie, il comando è il seguente.
Servizio: Numero di serie: 01
Messaggio di errore richiesto: Errore di accesso alla memoria MSS: 7F
Dovresti avere la riga 017F inserita in "status.txt" file.
3.5.2 Impostazione dei parametri
Il file "status.txt" file può essere utilizzato anche per impostare alcuni parametri necessari nella simulazione. Come example, per poter impostare il parametro a 32 bit per il codice utente, il formato della riga deve essere in questo ordine: <CODICE UTENTE a 32 Bit>; dove entrambi i valori sono inseriti in formato esadecimale. Per poter impostare il parametro a 128 bit per il numero di serie, il formato della riga deve essere in questo ordine: <Numero di serie a 128 bit [127:0]> ; dove entrambi i valori sono inseriti in formato esadecimale. Per impostare il parametro a 256 bit per la chiave SHA 256; il formato della riga deve essere in questo ordine: <Chiave a 256 bit [255:0]>; dove entrambi i valori sono inseriti in formato esadecimale. Per poter impostare il parametro a 256 bit per la chiave di risposta al challenge, il formato della riga deve essere in questo ordine: <Chiave a 256 bit [255:0]>;
dove entrambi i valori sono inseriti in formato esadecimale.
3.5.3 Priorità del dispositivo
I servizi di sistema e COMM_BLK utilizzano un sistema ad alta priorità. Attualmente l'unico servizio ad alta priorità è l'azzeramento. Per eseguire un servizio ad alta priorità, mentre viene eseguito un altro servizio, il servizio corrente viene interrotto e al suo posto verrà eseguito il servizio con priorità più alta. COMM_BLK scarterà il servizio corrente per eseguire il servizio con priorità più alta. Se vengono inviati più servizi con priorità non alta prima del completamento di un servizio corrente, questi servizi verranno accodati all'interno del TXFIFO. Una volta completato il servizio corrente, verrà eseguito il servizio successivo nel TXFIFO.
Microsemi non fornisce alcuna garanzia, dichiarazione o garanzia in merito alle informazioni qui contenute o all'idoneità dei suoi prodotti e servizi per uno scopo particolare, né Microsemi si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi prodotto o circuito. I prodotti venduti ai sensi del presente documento e qualsiasi altro prodotto venduto da Microsemi sono stati soggetti a test limitati e non devono essere utilizzati insieme ad apparecchiature o applicazioni mission-critical. Eventuali specifiche di prestazione sono ritenute affidabili ma non sono verificate e l'Acquirente deve condurre e completare tutte le prestazioni e altri test dei prodotti, da solo e insieme, o installati in qualsiasi prodotto finale. L'Acquirente non farà affidamento su dati e specifiche o parametri di prestazione forniti da Microsemi. È responsabilità dell'Acquirente determinare autonomamente l'idoneità di eventuali prodotti e testare e verificare gli stessi. Le informazioni fornite da Microsemi di seguito sono fornite "così come sono, dov'è" e con tutti i difetti, e l'intero rischio associato a tali informazioni è interamente a carico dell'Acquirente. Microsemi non concede, in modo esplicito o implicito, a nessuna parte alcun diritto di brevetto, licenza o qualsiasi altro diritto di proprietà intellettuale, sia in relazione a tali informazioni stesse oa qualsiasi cosa descritta da tali informazioni. Le informazioni fornite in questo documento sono di proprietà di Microsemi e Microsemi si riserva il diritto di apportare modifiche alle informazioni contenute in questo documento oa qualsiasi prodotto e servizio in qualsiasi momento senza preavviso.
Microsemi, una consociata interamente controllata da Microchip Technology Inc. (Nasdaq: MCHP), offre un portafoglio completo di semiconduttori e soluzioni di sistema per i mercati aerospaziale e della difesa, delle comunicazioni, dei data center e industriale. I prodotti includono circuiti integrati analogici a segnale misto ad alte prestazioni e resistenti alle radiazioni, FPGA, SoC e ASIC; prodotti per la gestione dell'alimentazione; dispositivi di cronometraggio e sincronizzazione e soluzioni temporali precise, che stabiliscono lo standard mondiale per il tempo; dispositivi di elaborazione vocale; soluzioni RF; componenti discreti; soluzioni di archiviazione e comunicazione aziendali; tecnologie di sicurezza e anti-t scalabileamper prodotti; Soluzioni Ethernet; CI e midspan Power-over-Ethernet; nonché capacità e servizi di progettazione personalizzati. Microsemi ha sede ad Aliso Viejo, in California, e conta circa 4,800 dipendenti in tutto il mondo. Scopri di più su www.microsemi.com.
Sede Microsemi
Un'impresa, Aliso Viejo,
CA 92656 Stati Uniti
Negli USA: +1 Numero di telefono: 800-713-4113
Fuori dagli USA: +1 Numero di telefono: 949-380-6100
Vendite: +1 Numero di telefono: 949-380-6136
Fax: +1 Numero di telefono: 949-215-4996
E-mail: vendite.support@microsemi.com
www.microsemi.com
© 2018 Microsemi. Tutti i diritti riservati. Microsemi e il logo Microsemi
sono marchi di Microsemi Corporation. Tutti gli altri marchi e servizi
i marchi sono di proprietà dei rispettivi proprietari.
Documenti / Risorse
![]() |
Simulazione dei servizi di sistema FPGA Microsemi UG0837 IGLOO2 e SmartFusion2 [pdf] Guida utente UG0837, UG0837 Simulazione dei servizi di sistema FPGA IGLOO2 e SmartFusion2, Simulazione dei servizi di sistema FPGA IGLOO2 e SmartFusion2, Simulazione dei servizi di sistema FPGA SmartFusion2, Simulazione dei servizi di sistema FPGA, Simulazione dei servizi |