UG0837
Användarhandbok
IGLOO2 och SmartFusion2 FPGA
Simulering av systemtjänster
juni 2018
Revisionshistorik
Revisionshistoriken beskriver de ändringar som implementerades i dokumentet. Ändringarna listas efter revidering, med början i den senaste publikationen.
1.1 Revision 1.0
Revision 1.0 publicerades i juni 2018. Det var den första publiceringen av detta dokument.
IGLOO2 och SmartFusion2 FPGA System Services Simulering
SmartFusion®2 FPGA-familjens System Services-block innehåller en samling tjänster som ansvarar för olika uppgifter. Dessa inkluderar simuleringsmeddelandetjänster, datapekartjänster och databeskrivningstjänster. Systemtjänsterna kan nås via Cortex-M3 i SmartFusion2 och från FPGA-tyget via fabric interface controller (FIC) för både SmartFusion2 och IGLOO®2. Dessa åtkomstmetoder skickas till systemstyrenheten via COMM_BLK. COMM_BLK har ett avancerat gränssnitt för periferisk buss (APB) och fungerar som en meddelandeöverföringskanal för att utbyta data med systemstyrenheten. Systemtjänstförfrågningar skickas till systemkontrollern och systemtjänstsvar skickas till CoreSysSerrvice via COMM BLK. Adressplatsen för COMM_BLK är tillgänglig i undersystemet för mikrokontroller (MSS)/högprestandaminne (HPMS). För detaljer, se UG0450: SmartFusion2 SoC och IGLOO2 FPGA System Controller.
Användarhandbok
Följande illustration visar systemtjänsters dataflöde.
Figur 1 • SystemtjänstdataflödesdiagramFör både IGLOO2 och SmartFusion2 systemtjänstsimulering måste du skicka ut systemtjänstförfrågningar och kontrollera systemtjänstsvaren för att verifiera att simuleringen är korrekt. Detta steg är nödvändigt för att komma åt systemkontrollern, som tillhandahåller systemtjänsterna. Sättet att skriva till och läsa från systemkontrollern är annorlunda för IGLOO2- och SmartFusion2-enheter. För SmartFusion2 är Coretex-M3 tillgänglig och du kan skriva och läsa från systemstyrenheten med hjälp av BFM-kommandon (bus functional model). För IGLOO2 är Cortex-M3 inte tillgänglig och systemkontrollern är inte tillgänglig med BFM-kommandon.
2.1 Typer av tillgängliga systemtjänster
Tre olika typer av systemtjänster finns tillgängliga och varje typ av tjänst har olika undertyper.
Simuleringsmeddelandetjänster
Datapekartjänster
Datadeskriptortjänster
Kapitlet Appendix – Systemservicetyper (se sidan 19) i denna guide beskriver de olika typerna av systemtjänster. För mer information om systemtjänster, se UG0450: SmartFusion2 SoC och IGLOO2 FPGA System Controller User Guide.
2.2 IGLOO2 System Service Simulering
Systemtjänster innebär att skriva till och läsa från systemkontrollern. För att skriva till och läsa från systemkontrollern för simuleringsändamål måste du utföra stegen enligt följande.
- Instantiera CoreSysServices mjuka IP-kärna, tillgänglig i SmartDesign-katalogen.
- Skriv HDL-koden för en finita tillståndsmaskin (FSM).
HDL FSM gränssnitt med CoreSysServices Core, som fungerar som konstruktionsmästaren för AHBLite-bussen. CoreSysServices-kärnan initierar systemtjänstbegäran till COMM BLK och tar emot systemtjänstsvar från COMM BLK via FIC_0/1, strukturgränssnittskontrollern som visas i följande illustration.
Figur 2 • IGLOO2 System Services Simuleringstopologi2.3 SmartFusion2 System Service Simulering
För att simulera systemtjänster i SmartFusion2-enheter måste du skriva till och läsa från systemkontrollern. Två alternativ finns tillgängliga för åtkomst till systemstyrenheten för simuleringsändamål.
Alternativ 1 — Skriv HDL-koden för en FSM för gränssnitt med CoreSysService mjuka IP-kärna, som fungerar som en AHBLite-strukturmaster och initierar systemtjänstbegäran till COMM BLK och tar emot systemtjänstsvar från COMM BLK via FIC_0/1-strukturen gränssnittet som visas i följande illustration.
Figur 3 • SmartFusion2 System Services Simuleringstopologi
Alternativ 2 — Eftersom Cortex-M3 är tillgänglig för SmartFusion2-enheter kan du använda BFM-kommandon för att direkt skriva till och läsa från minnesutrymmet på systemkontrollern.
Genom att använda BFM-kommandon (alternativ 2) sparas behovet av att skriva HDL-koder för FSM. I den här användarhandboken används alternativ 2 för att visa simulering av systemtjänster i SmartFusion2. Med det här alternativet kommer systemstyrenhetens minnesutrymme åt för att ta reda på minneskartan för COMM BLK och FIIC-blocket (Fabrik Interface Interrupt Controller) när du skriver dina BFM-kommandon.
2.4 Simulering Examples
Användarhandboken täcker följande simuleringar.
- IGLOO2 serienummerservicesimulering (se sidan 5)
- SmartFusion2 serienummerservicesimulering (se sidan 8)
- IGLOO2 Zeroization Service Simulation (se sidan 13)
- SmartFusion2 Zeroization Service Simulation (se sidan 16)
Liknande simuleringsmetoder kan tillämpas på andra systemtjänster. För en fullständig lista över de olika tillgängliga systemtjänsterna, gå till Bilaga – Systemtjänstertyper (se sidan 19).
2.5 IGLOO2 serienummerservicesimulering
Utför stegen enligt följande för att förbereda för IGLOO2 serienummerservicesimulering.
- Anropa systembyggaren för att skapa ditt HPMS-block.
- Markera kryssrutan HPMS System Services på sidan Enhetsfunktioner. Detta kommer att instruera systembyggaren att exponera HPMS_FIC_0 SYS_SERVICES_MASTER-bussgränssnittet (BIF).
- Lämna alla andra kryssrutor omarkerade.
- Acceptera standarden på alla andra sidor och klicka på Slutför för att slutföra systembyggarblocket. I Libero® SoC:s HDL-editor, skriv HDL-koden för FSM (File > Nytt > HDL). Inkludera följande tre tillstånd i din FSM.
INIT-tillstånd (initialtillstånd)
SERV_PHASE (status för tjänstbegäran)
RSP_PHASE (servicesvarstillstånd).
Följande figur visar de tre tillstånden i FSM.
Figur 4 • Trestats-FSM I din HDL-kod för FSM, använd den korrekta kommandokoden ("01" Hex för serienummertjänst) för att ange servicebegärans tillstånd från INIT-tillståndet.
- Spara din HDL file. FSM visas som en komponent i designhierarkin.
- Öppna SmartDesign. Dra och släpp ditt systembyggarblock på högsta nivån och ditt FSM-block till SmartDesign-duken. Från katalogen, dra och släpp CoreSysService mjuka IP-kärnan i SmartDesign-duken.
- Högerklicka på CoreSysService mjuka IP-kärnan för att öppna konfiguratorn. Markera kryssrutan Serienummertjänst (under Device and Design Information Services
grupp) för att aktivera serienummerservice. - Lämna alla andra kryssrutor omarkerade. Klicka på OK för att avsluta konfiguratorn.
Figur 5 • CoreSysServices mjuka IP Core Configurator
- Anslut HPMS_FIC_0 SYS_SERVICES_MASTER BIF för systembyggarblocket till AHBL_MASTER BIF för CoreSysService-blocket.
- Anslut utgången på ditt HDL FSM-block till ingången på CoreSysService mjuka IP-kärna. Gör alla andra anslutningar i SmartDesign-duken som visas i följande figur.
Figur 6 • SmartDesign Canvas med HDL-block, CoreSysServices Soft IP och HPMS-block - På SmartDesign-duken högerklickar du på >Generera komponent för att generera designen på toppnivån.
- I designhierarkin view, högerklicka på designen på översta nivån och välj skapa testbänk > HDL .
- Använd en textredigerare för att skapa en text file heter "status.txt" .
- Inkludera kommandot för systemtjänst och 128-bitars serienummer. För mer information, se Tabell 1 (System Services Command/Response Values) i Handbok för CoreSysServices v3.1 för att kommandokoderna (Hex) ska användas för olika systemtjänster. För serienummerservice är kommandokoden "01" Hex.
Formatet för status.txt file för serienummerservice är följande.
< 2 sexsiffrig CMD><32 sexsiffrig serienummer>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Spara status.txt file i simuleringsmappen i ditt projekt. Designen är nu klar för simulering.
När tjänsten har börjat köras visas ett meddelande som anger destinationsplatsen och serienumret i ModelSim-avskriftsfönstret, som visas i följande figur.
Figur 7 • ModelSim Simulation Transcript WindowSystemstyrenheten gör en AHB-skrivning till adressen med serienumret. Efter avslutad tjänst kommer COMM_BLK:s RXFIFO att laddas med servicesvaret.
Obs: För en fullständig lista över kommandokoderna som ska användas för olika systemtjänster, se Tabell 1 (System Services Command/Response Values) i CoreSysServices v3.1 Handbook eller UG0450: SmartFusion2 SoC och IGLOO2 FPGA System Controller User Guide.
2.6 SmartFusion2 Serienummer Service Simulering
I den här användarhandboken används BFM-kommandon (alternativ 2) för att komma åt systemstyrenheten för systemservice. BFM-kommandon används eftersom Cortex-M3-processorn är tillgänglig på enheten för BFM-simulering. BFM-kommandon låter dig skriva direkt till och läsa från COMM BLK när du känner till minnesmappingen för COMM_BLK.
Utför följande steg för att förbereda din design för SmartFusion2 serienummerservicesimulering.
- Dra och släpp MSS från katalogen till designduken för ditt projekt.
- Inaktivera all MSS-kringutrustning utom MSS_CCC, Reset Controller, Interrupt Management och FIC_0, FIC_1 och FIC_2.
- Konfigurera avbrottshanteringen för att använda MSS för att strukturera avbrott.
- Förbered serialnum.bfm file i en textredigerare eller i Liberos HDL-redigerare. Spara serienumret.bfm file i projektets simuleringsmapp. Serialnum.bfm bör innehålla följande detaljer.
• Minnesmappning till COMM BLK (CMBLK)
• Minneskartläggning för att avbryta perifer hantering (FIIC)
• Kommando för serienummersystemtjänstbegäran ("01" Hex)
• Adress för platsen för serienumret
Ett example av serienumret.bfm file är följande.
memmap FIIC 0x40006000; #Minnesmapping för att avbryta hantering
memmap CMBLK 0x40016000; #Memory Mapping till COMM BLK
memmap DESCRIPTOR_ADDR 0x20000000; #Adressplats för serienummer
#Kommandokod i hexadecimal
konstant CMD 0x1 # Kommandokod för serienummertjänst
#FIIC Konfigurationsregister
konstant FICC_INTERRUPT_ENABLE0 0x0
#COMM_BLK Konfigurationsregister
konstant KONTROLL 0x00
konstant STATUS 0x04
konstant INT_ENABLE 0x08
konstant DATA8 0x10
konstant DATA32 0x14
konstant FRAME_START8 0x18
konstant FRAME_START32 0x1C
procedurens serienummer;
int x;
skriv w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Konfigurera
#FICC_INTERRUPT_ENABLE0 # Registrera dig för att aktivera COMBLK_INTR #
#avbrott från COMM_BLK block till tyg
#Begärans fas
skriv w CMBLK CONTROL 0x10 # Konfigurera COMM BLK Control #Registrera dig till
aktivera överföringar på COMM BLK-gränssnittet
skriv w CMBLK INT_ENABLE 0x1 # Konfigurera COMM BLK Interrupt Enable
#Registrera dig för att aktivera avbrott för TXTOKAY (Motsvarande bit i
#Statusregister)
waitint 19 # vänta på COMM BLK Interrupt , Här väntar #BFM
#tills COMBLK_INTR hävdas
readstore w CMBLK STATUS x # Läs COMM BLK Status Registrera dig för #TXTOKAY
# Avbryt
set xx & 0x1
om x
skriv w CMBLK FRAME_START8 CMD # Konfigurera COMM BLK FRAME_START8
#Registrera dig för att begära serienummerservice
endif
endif
waitint 19 # vänta på COMM BLK Interrupt , Här
#BFM väntar tills COMBLK_INTR bekräftas
readstore w CMBLK STATUS x # Läs COMM BLK Status Registrera dig för
#TXTOKAY Avbrott
set xx & 0x1
set xx & 0x1
om x
skriv w CMBLK CONTROL 0x14 #Konfigurera COMM BLK Control
#Registrera dig för att aktivera överföringar på COMM BLK-gränssnittet
skriv w CMBLK DATA32 DESCRIPTOR_ADDR
skriv w CMBLK INT_ENABLE 0x80
skriv w CMBLK CONTROL 0x10
endif
vänta 20
#Responsfas
vänta 19
readstore w CMBLK STATUS x
set xx & 0x80
om x
läskontroll w CMBLK FRAME_START8 CMD
skriv w CMBLK INT_ENABLE 0x2
endif
vänta 19
readstore w CMBLK STATUS x
set xx & 0x2
om x
läskontroll w CMBLK DATA8 0x0
skriv w CMBLK CONTROL 0x18
endif
vänta 19
läskontroll med FIIC 0x8 0x20000000
readstore w CMBLK STATUS x
set xx & 0x2
om x
läskontroll w CMBLK DATA32 DESCRIPTOR_ADDR
endif
läskontroll w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Läskontroll för att kontrollera S/N
läskontroll w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Läskontroll för att kontrollera S/N
läskontroll w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Läskontroll för att kontrollera S/N
läskontroll w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Läskontroll för att kontrollera S/N
återvända - Skapa statusen. Text file i Liberos HDL-redigerare eller någon textredigerare. Inkludera serienummersystemets servicekommando ("01" i Hex) och serienumret i statusen . Text file. Se handboken CoreSysServices v3.1 för att använda rätt kommandokod.
- Syntaxen för detta file för serienummerservice är <2 sexsiffrigt CMD>< 32 sexsiffrigt serienummer> . Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
- Spara statusen .txt file i projektets simuleringsmapp.
- Redigera användaren .bfm (finns i simuleringsmappen) för att inkludera serienumret. bfm file och ring serienummerproceduren som visas i följande kodavsnitt.
inkludera "serialnum.bfm" #inkludera serienumret.bfm
procedure user_main;
print "INFO:Simulering startar";
skriv ut "INFO:Servicekommandokod i decimal:%0d", CMD ;
ring serienummer; #ringa serienummerproceduren
skriv ut "INFO:Simulering slutar";
återvända - I designhierarkin view, generera testbänken (högerklicka, design på toppnivå > Skapa testbänk > HDL ) och du är redo att köra simulering av serienummerservice.
När tjänsten har börjat utföras visas ett meddelande som anger destinationsplatsen och serienumret. Systemstyrenheten gör en AHB-skrivning till adressen med serienumret. Efter avslutad tjänst kommer COMM_BLK:s RXFIFO att laddas med servicesvaret. ModelSim-avskriftsfönstret visar adressen och serienumret som tas emot enligt följande figur.
Figur 8 • SmartFusion2 Serienummertjänstsimulering i ModelSim Transcript Window
2.7 IGLOO2 nollställningstjänstsimulering
Utför stegen enligt följande för att förbereda för IGLOO2-nollningstjänstsimulering.
- Anropa systembyggaren för att skapa HPMS-blocket. Markera kryssrutan HPMS System Services i Enhetsfunktioner SYS_SERVICES_MASTER BIF. Lämna alla andra kryssrutor omarkerade. Acceptera standarden på alla andra sidor och klicka på sidan. Detta instruerar systembyggaren att exponera HPMS_FIC_0 Finish för att slutföra konfigurationen av systembyggarblocket.
- Skriv HDL-koden för FSM i Libero SoC:s HDL-editor. Inkludera följande tre tillstånd i din HDL-kod för FSM.
INIT-tillstånd (initialtillstånd)
SERV_PHASE (status för tjänstbegäran)
RSP_PHASE (servicesvarstillstånd)
Följande figur visar de tre tillstånden i FSM.
Figur 9 • Trestats-FSM - I din HDL-kod använder du kommandokoden "F0"(Hex) för att ange servicebegärans tillstånd från INIT-tillståndet.
- Spara din HDL file.
- Öppna SmartDesign, dra och släpp ditt systembyggarblock på högsta nivån och ditt HDL FSM-block till SmartDesign-duken. Från katalogen, dra och släpp CoreSysService mjuka IP-kärnan i SmartDesign-duken.
- Högerklicka på CoreSysServices mjuka IP-kärna för att öppna konfiguratorn och markera kryssrutan Zeroization Service under gruppen Data Security Services. Lämna alla andra kryssrutor omarkerade. Klicka för att avsluta.
Figur 10 • CoreSysServices Configurator
- Anslut HPMS_FIC_0 SYS_SERVICES_MASTER BIF för systembyggarblocket till AHBL_MASTER BIF för CoreSysService-blocket.
- Anslut utgången på ditt HDL FSM-block till ingången på CoreSysService mjuka IP-kärna. Gör alla andra anslutningar i SmartDesign-duken.
Figur 11 • SmartDesign Canvas med HDL-block, CoreSysServices Soft IP och HPMS-block
9. I SmartDesign-duken, generera designen på toppnivån (högerklicka > Generera komponent).
10. I designhierarkin view, högerklicka på designen på toppnivån och välj skapa testbänk > HDL. Du är nu redo att köra simulering.
När tjänsten har börjat köras visas ett meddelande som indikerar att nollställningen har slutförts vid tidpunkten x som visas i följande figur.
Figur 12 • IGLOO2 Nollställningssystem Service Simulation Transcript Window
Systemstyrenheten gör en AHB-skrivning till adressen med serienumret. Efter avslutad tjänst kommer COMM_BLK:s RXFIFO att laddas med servicesvaret. Det bör noteras att simuleringsmodellen simulerar nollställning genom att stoppa simuleringen snarare än att nollställa själva designen.
Obs: För en fullständig lista över kommandokoderna som ska användas för olika systemtjänster, se Tabell 1 (System Services Command/Response Values) i Handbok för CoreSysServices v3.1:. eller UG0450: Användarhandbok för SmartFusion2 SoC och IGLOO2 FPGA System Controller
2.8 SmartFusion2 Zeroization Service Simulering
I den här guiden används BFM-kommandon (alternativ 2) för att komma åt systemstyrenheten för systemservice.
BFM-kommandon används eftersom Cortex-M3-processorn är tillgänglig på enheten för BFM-simulering. BFM-kommandon låter dig skriva direkt till och läsa från COMM BLK när du känner till minnesmappingen för COMM_BLK. Utför följande steg för att förbereda din design för SmartFusion2 nollställningstjänstsimulering.
- Dra och släpp MSS från katalogen till designduken för ditt projekt.
- Inaktivera all MSS-kringutrustning utom MSS_CCC, Reset Controller, Interrupt Management och FIC_0, FIC_1 och FIC_2.
- Konfigurera avbrottshanteringen för att använda MSS för att strukturera avbrott.
- Förbered zeroizaton.bfm file i en textredigerare eller i Liberos HDL-redigerare. Din nollställning. bfm bör innehålla:
- Minnesmappning till COMM BLK (CMBLK)
- Minneskartläggning för att avbryta perifer hantering (FIIC)
- Kommando för nollställningstjänstbegäran ("F0" Hex för nollställning)
Ett example av serienumret.bfm file visas i följande bild.
Figur 13 • Zeroization.bfm för SmartFusion2 Zeroization System Services Simulation
5. Spara zeroization.bfm file i projektets simuleringsmapp. user.bfm
6. Redigera (finns i mappen zeroization.bfm Simulation) för att inkludera med hjälp av följande kodavsnitt.
inkludera "zeroization.bfm" #include zeroization.bfm file procedure user_main;
print "INFO:Simulering startar";
skriv ut "INFO:Servicekommandokod i decimal:%0d", CMD ;
ring nollning; #call nollställningsprocedur retur
7. Generera testbänken i designhierarkin (högerklicka på toppnivån > Skapa testbänk > HDL) och du är redo att köra SmartFusion2-nollningssimuleringen.
När tjänsten har börjat köras visas ett meddelande som indikerar att enheten har nollställts vid tidpunkten x. Det bör noteras att simuleringsmodellen simulerar nollställning genom att stoppa simuleringen snarare än att nollställa själva designen. ModelSim-transkriptionsfönstret i följande figur visar att enheten har nollställts.
Figur 14 • SmartFusion2 Zeroization System Service Simulation Log
Bilaga: Typer av systemtjänster
Det här kapitlet beskriver olika typer av systemtjänster.
3.1 Simuleringsmeddelandetjänster
Följande avsnitt beskriver olika typer av simuleringsmeddelandetjänster.
3.1.1 Flash*Frys
Simuleringen kommer att gå in i Flash*Freeze-tillståndet när den korrekta servicebegäran skickas till COMM_BLK från antingen FIC (i fallet med IGLOO2-enheter) eller Cortex-M3 (i SmartFusion2-enheter). När tjänsten har upptäckts av systemkontrollern kommer simuleringen att stoppas och ett meddelande som indikerar att systemet har gått in i Flash*Freeze (tillsammans med det valda alternativet) kommer att visas. Vid återupptagande av simuleringen kommer RXFIFO för COMM_BLK att fyllas med servicesvaret som består av servicekommandot och status. Det bör noteras att det inte finns något simuleringsstöd för Flash*Freeze exit.
3.1.2 Nollställning
Nollställning är för närvarande den enda högprioriterade tjänsten inom systemtjänster som bearbetas av COMM_BLK. Simuleringen kommer att gå in i nollställningstillståndet så snart den korrekta servicebegäran detekteras av COMM_BLK. Utförande av andra tjänster kommer att stoppas och kasseras av systemkontrollern, och nollställningstjänsten kommer att exekveras istället. När begäran om nollställningstjänst detekteras, stoppas simuleringen och ett meddelande som indikerar att systemet har gått in i nollställning visas. Manuella omstarter av simulering efter nollställning är ogiltiga.
3.2 Datapekartjänster
Följande avsnitt beskriver olika typer av datapekartjänster.
3.2.1 Serienummer
Serienummertjänsten kommer att skriva ett 128-bitars serienummer till en adressplats som tillhandahålls som en del av tjänsteförfrågan. Denna 128-bitars parameter kan ställas in med hjälp av ett systemtjänstsimuleringsstöd file (se sidan 22). Om 128-bitars serienummerparametern inte är definierad i file, kommer ett standardserienummer på 0 att användas. När tjänsten har börjat utföras visas ett meddelande som anger destinationsplatsen och serienumret. Systemstyrenheten gör en AHB-skrivning till adressen med serienumret. Efter avslutad tjänst kommer COMM_BLK:s RXFIFO att laddas med servicesvaret.
3.2.2 Användarkod
Användarkodtjänsten skriver en 32-bitars användarkodparameter till en adressplats som tillhandahålls som en del av tjänsteförfrågan. Denna 32-bitars parameter kan ställas in med hjälp av System Service Simulation Support file (se sidan 22). Om 32-bitarsparametern inte är definierad i file, används ett standardvärde på 0. När tjänsten har börjat köras visas ett meddelande som anger målplatsen och användarkoden. Systemstyrenheten utför en AHB-skrivning till adressen med 32-bitarsparametern. Efter avslutad tjänst laddas COMM_BLK:s RXFIFO med tjänstesvaret, vilket inkluderar tjänstekommandot och måladress.
3.3 Databeskrivningstjänster
Följande avsnitt beskriver olika typer av datadeskriptortjänster.
3.3.1 AES
Simuleringsstödet för denna tjänst handlar endast om att flytta originaldata från källan till destinationen, utan att faktiskt utföra någon kryptering/dekryptering av data. Datan som behöver krypteras/dekrypteras och datastrukturen bör skrivas innan tjänsteförfrågan skickas. När tjänsten har börjat köras, visas ett meddelande som indikerar exekvering av AES-tjänsten. AES-tjänsten läser både datastrukturen och data som ska krypteras/dekrypteras. Originaldata kopieras och skrivs till den adress som anges i datastrukturen. När tjänsten är klar skjuts kommandot, statusen och datastrukturadressen in i RXFIFO.
Notera: Den här tjänsten är endast för 128-bitars och 256-bitars data, och både 128-bitars och 256-bitars data har olika datastrukturlängder.
3.3.2 SHA 256
Simuleringsstödet för den här tjänsten handlar bara om att flytta data, utan att faktiskt utföra någon hash på datan. SHA 256-funktionen är utformad för att generera en 256-bitars hashnyckel baserat på indata. Datan som behöver hashas och datastrukturen bör skrivas till sina respektive adresser innan tjänsteförfrågan skickas till COMM_BLK. Längden i bitar och pekare som definieras inom SHA 256-datastrukturen måste korrekt motsvara längden och adressen för den data som ska hashas. När tjänsten har börjat exekveras, visas ett meddelande som indikerar exekveringen av SHA 256-tjänsten. Istället för att utföra den faktiska funktionen kommer en standardhash-nyckel att skrivas till målpekaren från datastrukturen. Standardhash-nyckeln är hex "ABCD1234". För att ställa in en anpassad nyckel, gå till avsnittet Parameterinställning (se sidan 23). När tjänsten har slutförts laddas RXFIFO med tjänstesvaret som består av tjänstekommandot, status och SHA 256-datastrukturpekaren.
3.3.3 HMAC
Simuleringsstödet för denna tjänst handlar bara om att flytta data, utan att faktiskt utföra någon hash på data. Datan som behöver hashas och datastrukturen bör skrivas till sina respektive adresser innan tjänsteförfrågan skickas till COMM_BLK. HMAC-tjänsten kräver en 32-byte nyckel utöver längden i byte, källpekare och destinationspekare. När tjänsten har börjat exekvera, visas ett meddelande som indikerar exekvering av HMAC-tjänsten. Nyckeln läses och 256-bitarsnyckeln kopieras från datastrukturen till destinationspekaren. När tjänsten har slutförts laddas RXFIFO med tjänstesvaret som består av tjänstekommandot, status och HMAC-datastrukturpekare.
3.3.4 DRBG Generera
Generering av slumpmässiga bitar utförs av denna tjänst. Det bör noteras att simuleringsmodellen inte exakt följer samma metodik för generering av slumptal som används av kisel. Datastrukturen måste vara korrekt skriven till sin avsedda plats innan tjänsteförfrågan skickas till COMM_BLK. Datastrukturen, målpekaren, längden och andra relevanta data läses av systemstyrenheten. DRBG-genereringstjänsten genererar en pseudoslumpmässig uppsättning data med den begärda längden (0-128). Systemstyrenheten skriver slumpmässiga data till destinationspekaren. Ett meddelande som indikerar exekveringen av DRBG-genereringstjänsten visas i simuleringen. När tjänsten är klar skjuts kommandot, statusen och datastrukturadressen in i RXFIFO. Om den begärda datalängden inte ligger inom intervallet 0-128, kommer en felkod på "4" (Max Generate ) att tryckas in i RXFIFO. Om den extra datalängden inte är inom Request Too Big-intervallet 0-128, kommer en felkod på "5" (Max Length of Additional Data Exceeded) att skjutas in i RXFIFO. Om både den begärda datalängden för generering och ytterligare datalängd inte ligger inom deras definierade intervall (0-128), skjuts en felkod på "1" (katastrofiskt fel) in i RXFIFO.
3.3.5 DRBG-återställning
Den faktiska återställningsfunktionen utförs genom att ta bort DRBG-instansieringar och återställa DRBG. När servicebegäran har upptäckts visar simuleringen ett meddelande om DRBG Reset service completed. Svaret, som inkluderar tjänsten och status, skjuts in i RXFIFO.
3.3.6 DRBG-självtest
Simuleringsstödet för DRBG-självtestet utför faktiskt inte självtestfunktionen. När servicebegäran har upptäckts kommer simuleringen att visa ett DRBG-självtesttjänstexekveringsmeddelande. Svaret, som inkluderar tjänsten och status, kommer att skjutas in i RXFIFO.
3.3.7 DRBG Instantiering
Simuleringsstödet för DRBG-instanstjänsten utför faktiskt inte instansieringstjänsten. Datastrukturen måste vara korrekt skriven till sin avsedda plats innan tjänsteförfrågan skickas till COMM_BLK. När tjänsteförfrågan har upptäckts kommer strukturen och personaliseringssträngen som definieras i MSS-adressutrymmet att läsas. Simuleringen kommer att visa ett meddelande som indikerar att DRBG Instantiate-tjänsten har börjat köras. När tjänsten är klar, kommer svaret, som inkluderar tjänstekommandot, status och pekare till datastrukturen, att skjutas in i RXFIFO. Om datalängden (PERSONALISATIONLENGTH) inte ligger inom intervallet 0-128, kommer en felkod på "1" (katastrofiskt fel) att tryckas in i RXFIFO för status.
3.3.8 DRBG Avinstallera
Simuleringsstödet för DRBG-avinstallationstjänsten utför faktiskt inte den oinstantierade tjänsten att ta bort en tidigare instansierad DRBG, som kislet gör. Servicebegäran måste innehålla både kommandot och DRBG-handtaget. När servicebegäran har upptäckts kommer DRBG-handtaget att lagras. Simuleringen kommer att visa ett meddelande som indikerar att DRBG-avinstallationstjänsten har initierats. När tjänsten är klar, kommer svaret, som inkluderar servicekommandot, status och DRBG-handtag, att skjutas in i RXFIFO.
3.3.9 DRBG återsådd
På grund av systemtjänstblockets simulativa natur exekveras inte DRBG-återinställningstjänsten i simulering automatiskt efter varje 65535 DRBG-genereringstjänst. Datastrukturen måste vara korrekt skriven till sin avsedda plats innan tjänsteförfrågan skickas till COMM_BLK. När tjänsteförfrågan har upptäckts kommer strukturen och ytterligare indataparameter i MSS-adressutrymmet att läsas. Ett meddelande som indikerar att DRBG reseed-tjänsten har börjat exekveras, kommer att visas. Datastrukturen måste vara korrekt skriven till sin avsedda plats innan tjänsteförfrågan skickas till COMM_BLK. När tjänsten är klar, kommer svaret, som inkluderar tjänstekommandot, status och pekare till datastrukturen, att skjutas in i RXFIFO.
3.3.10 Nyckelträd
Den faktiska funktionen exekveras inte i simulering för KeyTree-tjänsten. KeyTree-tjänstens datastruktur består av en 32-byte nyckel, 7-bitars optypedata (MSB ignoreras) och 16-byte sökväg. Data i datastrukturen bör skrivas till deras respektive adresser innan tjänsteförfrågan skickas till COMM_BLK. När tjänsten har börjat köras, kommer ett meddelande som indikerar körningen av KeyTree-tjänsten att visas. Innehållet i datastrukturen kommer att läsas, 32-byte-nyckeln kommer att lagras och den ursprungliga nyckeln som finns i datastrukturen skrivs över. Efter denna AHB-skrivning bör värdet på nyckeln i datastrukturen inte ändras, men AHB-transaktioner för skrivningen kommer att inträffa. När tjänsten har slutförts laddas RXFIFO med tjänstesvaret, bestående av tjänstekommandot, status och KeyTree-datastrukturpekaren.
3.3.11 Utmaningssvar
Den faktiska funktionen, som autentisering av enheten, exekveras inte i simulering för utmaningssvarstjänsten. Datastrukturen för denna tjänst kräver en pekare till bufferten för att ta emot ett 32-byte-resultat, 7-bitars optype och en 128-bitars sökväg. Data i datastrukturen bör skrivas till sina respektive adresser innan tjänsteförfrågan skickas till COMM_BLK. När tjänsten har börjat exekveras, kommer ett meddelande som indikerar exekveringen av utmaningssvarstjänsten att visas. Ett generiskt 256-bitars svar kommer att skrivas in i pekaren som tillhandahålls i datastrukturen. Standardnyckeln är inställd som hex "ABCD1234". För att få en anpassad nyckel, kontrollera Parameter Setting (se sidan 23). När tjänsten har slutförts kommer RXFIFO:n att laddas med tjänstesvaret, bestående av tjänstkommandot, status och utmaningssvarsdatastrukturpekaren.
3.4 Andra tjänster
Följande avsnitt beskriver olika andra systemtjänster.
3.4.1 Sammanfattningskontroll
Den faktiska funktionen att räkna om och jämföra sammandrag av valda komponenter exekveras inte för sammanfattningskontrolltjänsten i simulering. Denna tjänsteförfrågan består av tjänstekommandon och tjänstealternativ (5-bitars LSB). När tjänsten har börjat köras kommer ett meddelande som beskriver utförandet av sammanfattningskontrolltjänsten att visas, tillsammans med de valda alternativen från begäran. När tjänsten har slutförts kommer RXFIFO:n att laddas med tjänstesvaret, bestående av tjänstkommandot och flaggorna för sammanfattningskontroll av godkänt/misslyckande.
3.4.2 Okänt kommandosvar
När en okänd tjänsteförfrågan skickas till COMM_BLK, kommer COMM_BLK automatiskt att svara med ett okänt kommandomeddelande inskjutet i RXFIFO. Meddelandet består av kommandot som skickas till COMM_BLK och den okända kommandostatusen (252D). Ett displaymeddelande som indikerar att en okänd servicebegäran har upptäckts kommer också att visas. COMM_BLK kommer att återgå till ett viloläge och väntar på att acceptera nästa servicebegäran.
3.4.3 Tjänster som inte stöds
Ostödda tjänster inställda på COMM_BLK kommer att utlösa ett meddelande i simulering som indikerar att tjänsteförfrågan inte stöds. COMM_BLK kommer att återgå till ett viloläge och väntar på att acceptera nästa servicebegäran. PINTERRUPT kommer inte att ställas in, vilket antyder att en tjänst har slutförts. Den aktuella listan över tjänster som inte stöds inkluderar: IAP, ISP, Device Certificate och DESIGNVER Service.
3.5 Systemtjänster Simuleringsstöd File
För att stödja simulering av systemtjänster, en text file kallad, "status.txt" kan användas för att skicka instruktioner om det nödvändiga beteendet hos simuleringsmodellen till simuleringsmodellen. Detta file ska finnas i samma mapp som simuleringen körs från. De file kan bland annat användas för att tvinga fram vissa felsvar för de systemtjänster som stöds eller till och med för att ställa in några parametrar som behövs för simulering, (t.ex.ample, serienummer). Det maximala antalet rader som stöds i "status.txt" file är 256. Instruktioner som visas efter rad nummer 256 kommer inte att användas i simuleringen.
3.5.1 Framtvinga felsvar
Användaren kan tvinga fram ett visst felsvar för en viss tjänst under testning genom att skicka informationen till simuleringsmodellen med hjälp av "status.txt" file, som ska placeras i mappen som simuleringen körs från. För att framtvinga felsvar på en viss tjänst bör kommandot och det nödvändiga svaret skrivas in på samma rad i följande format:ample, till Kommando> ; instruera simuleringsmodellen att generera ett MSS-minnesåtkomstfelsvar på serienummertjänsten, är kommandot som följer.
Service: Serienummer: 01
Felmeddelande begärt: MSS Memory Access Error: 7F
Du bör ha raden 017F inskriven i "status.txt" file.
3.5.2 Parameterinställning
"status.txt" file kan också användas för att ställa in vissa parametrar som behövs i simulering. Som example, för att ställa in 32-bitarsparametern för användarkoden måste formatet på raden vara i denna ordning: <32-bitars ANVÄNDARKOD>; där båda värdena anges i hexadecimal. För att ställa in 128-bitarsparametern för serienumret måste formatet på raden vara i denna ordning: <128 bitars serienummer [127:0]> ; där båda värdena anges i hexadecimal. För att ställa in 256-bitarsparametern för SHA 256-nyckeln; formatet på raden måste vara i denna ordning: <256 bitars nyckel [255:0]>; där båda värdena anges i hexadecimal. För att ställa in 256-bitarsparametern för utmaningssvarsnyckeln måste formatet på raden vara i denna ordning: <256 bitars nyckel [255:0]>;
där båda värdena anges i hexadecimal.
3.5.3 Enhetsprioritet
Systemtjänster och COMM_BLK använder ett högprioriterat system. För närvarande är den enda högprioriterade tjänsten nollställning. För att utföra en högprioriterad tjänst, medan en annan tjänst exekveras, stoppas den aktuella tjänsten och den högre prioriterade tjänsten exekveras i dess ställe. COMM_BLK kommer att förkasta den aktuella tjänsten för att utföra tjänsten med högre prioritet. Om flera icke-högprioriterade tjänster skickas innan en aktuell tjänst har slutförts, kommer dessa tjänster att köas inom TXFIFO. När den aktuella tjänsten är klar kommer nästa tjänst i TXFIFO att exekveras.
Microsemi lämnar inga garantier, representationer eller garantier avseende informationen häri eller lämpligheten av dess produkter och tjänster för något särskilt ändamål, och Microsemi tar inte heller något ansvar som uppstår till följd av tillämpningen eller användningen av någon produkt eller krets. Produkterna som säljs nedan och alla andra produkter som säljs av Microsemi har varit föremål för begränsade tester och bör inte användas tillsammans med verksamhetskritisk utrustning eller applikationer. Eventuella prestandaspecifikationer anses vara tillförlitliga men är inte verifierade, och köparen måste utföra och slutföra alla prestanda- och andra tester av produkterna, ensam och tillsammans med, eller installerade i, eventuella slutprodukter. Köparen ska inte förlita sig på några data och prestandaspecifikationer eller parametrar som tillhandahålls av Microsemi. Det är köparens ansvar att självständigt avgöra lämpligheten för alla produkter och att testa och verifiera densamma. Informationen som tillhandahålls av Microsemi nedan tillhandahålls "i befintligt skick, var är" och med alla fel, och hela risken förknippad med sådan information ligger helt och hållet hos köparen. Microsemi ger inte, uttryckligen eller underförstått, till någon part några patenträttigheter, licenser eller andra IP-rättigheter, vare sig det gäller sådan information i sig eller något som beskrivs i sådan information. Informationen som tillhandahålls i detta dokument ägs av Microsemi, och Microsemi förbehåller sig rätten att göra ändringar av informationen i detta dokument eller till produkter och tjänster när som helst utan föregående meddelande.
Microsemi, ett helägt dotterbolag till Microchip Technology Inc. (Nasdaq: MCHP), erbjuder en omfattande portfölj av halvledar- och systemlösningar för flyg- och försvars-, kommunikations-, datacenter- och industrimarknader. Produkterna inkluderar högpresterande och strålningshärdade analoga integrerade kretsar med blandade signaler, FPGA, SoC och ASIC; Power Management produkter; timing- och synkroniseringsenheter och exakta tidslösningar, sätter världens standard för tid; röstbehandlingsanordningar; RF-lösningar; diskreta komponenter; företagslagrings- och kommunikationslösningar; säkerhetsteknik och skalbar anti-tamper produkter; Ethernet-lösningar; Power-over-Ethernet IC och midspans; samt anpassade designmöjligheter och tjänster. Microsemi har sitt huvudkontor i Aliso Viejo, Kalifornien, och har cirka 4,800 XNUMX anställda globalt. Läs mer på www.microsemi.com.
Microsemis högkvarter
One Enterprise, Aliso Viejo,
CA 92656 USA
Inom USA: +1 800-713-4113
Utanför USA: +1 949-380-6100
Försäljning: +1 949-380-6136
Fax: +1 949-215-4996
E-post: försäljning.support@microsemi.com
www.microsemi.com
© 2018 Microsemi. Alla rättigheter förbehållna. Microsemi och Microsemi-logotypen
är varumärken som tillhör Microsemi Corporation. Alla andra varumärken och tjänster
varumärken är deras respektive ägares egendom.
Dokument/resurser
![]() |
Microsemi UG0837 IGLOO2 och SmartFusion2 FPGA System Services Simulering [pdf] Användarhandbok UG0837, UG0837 IGLOO2 och SmartFusion2 FPGA System Services Simulation, IGLOO2 och SmartFusion2 FPGA System Services Simulation, SmartFusion2 FPGA System Services Simulation, FPGA System Services Simulation, Services Simulation |