Microsemi-logo

UG0837
Gebruikershandleiding
IGLOO2 en SmartFusion2 FPGA
Simulatie van systeemservices
Juni 2018

Revisiegeschiedenis

De revisiegeschiedenis beschrijft de wijzigingen die in het document zijn doorgevoerd. De wijzigingen worden per revisie weergegeven, beginnend met de meest recente publicatie.
1.1 Revisie 1.0
Revisie 1.0 is gepubliceerd in juni 2018. Het was de eerste publicatie van dit document.

Simulatie van IGLOO2 en SmartFusion2 FPGA-systeemservices

Het System Services-blok van de SmartFusion®2 FPGA-familie beschikt over een verzameling services die verantwoordelijk zijn voor verschillende taken. Deze omvatten simulatieberichtdiensten, datapointerdiensten en datadescriptordiensten. De systeemservices zijn toegankelijk via de Cortex-M3 in SmartFusion2 en vanuit de FPGA-fabric via de fabric interface controller (FIC) voor zowel SmartFusion2 als IGLOO®2. Deze toegangsmethoden worden via de COMM_BLK naar de systeemcontroller verzonden. De COMM_BLK heeft een geavanceerde perifere bus (APB)-interface en fungeert als een kanaal voor het doorgeven van berichten om gegevens uit te wisselen met de systeemcontroller. Systeemserviceverzoeken worden naar de systeemcontroller gestuurd en systeemservicereacties worden via de COMM BLK naar de CoreSysService verzonden. De adreslocatie voor de COMM_BLK is beschikbaar in het microcontroller-subsysteem (MSS)/high performance memory-subsysteem (HPMS). Zie voor details de UG0450: SmartFusion2 SoC en IGLOO2 FPGA-systeemcontroller.
Gebruikershandleiding
De volgende afbeelding toont de gegevensstroom van systeemservices.
Figuur 1 • Stroomdiagram van systeemservicegegevensMicrosemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemdienstensimulatie - gegevensstroomdiagramVoor zowel IGLOO2- als SmartFusion2-systeemservicesimulatie moet u systeemserviceverzoeken verzenden en de systeemservicereacties controleren om te verifiëren dat de simulatie correct is. Deze stap is nodig om toegang te krijgen tot de systeemcontroller, die de systeemservices levert. De manier om te schrijven naar en te lezen van de systeemcontroller is verschillend voor IGLOO2- en SmartFusion2-apparaten. Voor SmartFusion2 is de Coretex-M3 beschikbaar en kunt u schrijven en lezen vanaf de systeemcontroller met behulp van Bus Functional Model (BFM)-opdrachten. Voor IGLOO2 is de Cortex-M3 niet beschikbaar en is de systeemcontroller niet toegankelijk via BFM-opdrachten.
2.1 Soorten beschikbare systeemservices
Er zijn drie verschillende soorten systeemservices beschikbaar en elk type service heeft verschillende subtypen.
Simulatie berichtendiensten
Gegevenswijzerdiensten
Diensten voor gegevensbeschrijvingen
In het hoofdstuk Bijlage – Typen systeemservices (zie pagina 19) van deze handleiding worden de verschillende soorten systeemservices beschreven. Voor meer informatie over systeemservices, zie UG0450: SmartFusion2 SoC en IGLOO2 FPGA systeemcontroller gebruikershandleiding.
2.2 Simulatie van IGLOO2-systeemservices
Systeemservices omvatten het schrijven naar en lezen van de systeemcontroller. Om voor simulatiedoeleinden naar de systeemcontroller te schrijven en ervan te lezen, moet u de volgende stappen uitvoeren.

  1. Instantieer de CoreSysServices zachte IP-kern, beschikbaar in de SmartDesign-catalogus.
  2. Schrijf de HDL-code voor een eindige toestandsmachine (FSM).

De HDL FSM is gekoppeld aan de CoreSysServices Core, die fungeert als de fabric-master van de AHBLite-bus. De CoreSysServices-kern initieert een systeemserviceverzoek aan de COMM BLK en ontvangt systeemservicereacties van de COMM BLK via de FIC_0/1, fabric-interfacecontroller, zoals weergegeven in de volgende afbeelding.
Figuur 2 • Simulatietopologie van IGLOO2-systeemservicesMicrosemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemdienstensimulatie - gegevensstroomdiagram 12.3 Simulatie van SmartFusion2-systeemservices
Om systeemservices in SmartFusion2-apparaten te simuleren, moet u schrijven naar en lezen van de systeemcontroller. Er zijn twee opties beschikbaar om toegang te krijgen tot de systeemcontroller voor simulatiedoeleinden.
Optie 1 — Schrijf de HDL-code voor een FSM om te communiceren met de CoreSysService zachte IP-kern, die dient als een AHBLite fabric master en een systeemserviceverzoek initieert naar de COMM BLK en systeemservicereacties ontvangt van de COMM BLK via de FIC_0/1 fabric interface zoals weergegeven in de volgende afbeelding.
Figuur 3 • Simulatietopologie van SmartFusion2-systeemservicesMicrosemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemdienstensimulatie - gegevensstroomdiagram 2

Optie 2 — Omdat de Cortex-M3 beschikbaar is voor SmartFusion2-apparaten, kunt u BFM-opdrachten gebruiken om rechtstreeks naar de geheugenruimte van de systeemcontroller te schrijven en te lezen.
Door BFM-opdrachten (optie 2) te gebruiken, hoeft u de HDL-codes voor de FSM niet meer te schrijven. In deze gebruikershandleiding wordt optie 2 gebruikt om de simulatie van systeemservices in SmartFusion2 weer te geven. Met deze optie wordt toegang verkregen tot de geheugenruimte van de systeemcontroller om de geheugenkaart van het COMM BLK- en het Fabric Interface Interrupt Controller-blok (FIIC) te achterhalen wanneer u uw BFM-opdrachten schrijft.
2.4 Simulatie Bijvampde
De gebruikershandleiding behandelt de volgende simulaties.

  • IGLOO2-serienummerservicesimulatie (zie pagina 5)
  • SmartFusion2-serienummerservicesimulatie (zie pagina 8)
  • IGLOO2 Zeroization Service-simulatie (zie pagina 13)
  • SmartFusion2 Zeroization Service-simulatie (zie pagina 16)

Soortgelijke simulatiemethoden kunnen worden toegepast op andere systeemdiensten. Voor een volledige lijst van de verschillende beschikbare systeemservices, ga naar Bijlage – Typen systeemservices (zie pagina 19).

2.5 Simulatie van IGLOO2-serienummerservice
Ter voorbereiding op de simulatie van de IGLOO2-serienummerservice voert u de stappen als volgt uit.

  1. Roep de systeembouwer aan om uw HPMS-blok te maken.
  2. Schakel het selectievakje HPMS System Services in op de pagina Apparaatfuncties. Dit geeft de systeembouwer de opdracht om de HPMS_FIC_0 SYS_SERVICES_MASTER businterface (BIF) vrij te geven.
  3. Laat alle andere selectievakjes uitgeschakeld.
  4. Accepteer de standaard op alle andere pagina's en klik op Voltooien om het systeembouwerblok te voltooien. Schrijf in de HDL-editor van de Libero® SoC de HDL-code voor de FSM (File > Nieuw > HDL). Neem de volgende drie toestanden op in uw FSM.
    INIT-status (beginstatus)
    SERV_PHASE (status van serviceaanvraag)
    RSP_PHASE (servicereactiestatus).
    De volgende afbeelding toont de drie toestanden van FSM.
    Figuur 4 • Driestaten-FSM
  5. Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemdienstensimulatie - FSM met drie statussen 1Gebruik in uw HDL-code voor de FSM de juiste opdrachtcode (“01” Hex voor serienummerservice) om de status van het serviceverzoek vanuit de INIT-status in te voeren.
  6. Bewaar uw HDL file. De FSM verschijnt als onderdeel in de Ontwerphiërarchie.
  7. Open SmartDesign. Sleep uw systeembouwerblok op het hoogste niveau en uw FSM-blok naar het SmartDesign-canvas. Sleep de CoreSysService soft IP-kern vanuit de catalogus naar het SmartDesign-canvas.
  8. Klik met de rechtermuisknop op de CoreSysService soft IP-kern om de configurator te openen. Vink het selectievakje Serienummerservice aan (onder Apparaat- en ontwerpinformatieservices).
    groep) om serienummerservice in te schakelen.
  9. Laat alle andere selectievakjes uitgeschakeld. Klik op OK om de configurator af te sluiten.
    Figuur 5 • CoreSysServices zachte IP Core Configurator
    Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA systeemdienstensimulatie - kernconfigurator
  10. Verbind de HPMS_FIC_0 SYS_SERVICES_MASTER BIF van het systeembouwerblok met de AHBL_MASTER BIF van het CoreSysService-blok.
  11. Verbind de uitgang van uw HDL FSM-blok met de ingang van de CoreSysService soft IP-kern. Maak alle andere verbindingen in het SmartDesign-canvas zoals weergegeven in de volgende afbeelding.
    Figuur 6 • SmartDesign Canvas met HDL-blok, CoreSysServices Soft IP en HPMS-blokkenMicrosemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemservicessimulatie - HPMS-blokken
  12. Klik in het SmartDesign-canvas met de rechtermuisknop op >Onderdeel genereren om het ontwerp op het hoogste niveau te genereren.
  13. In de ontwerphiërarchie view, klik met de rechtermuisknop op het ontwerp op het hoogste niveau en selecteer Testbench maken > HDL .
  14. Gebruik een teksteditor om een ​​tekst te maken file met de naam “status.txt” .
  15. Voeg de opdracht voor systeemservice en het 128-bit serienummer toe. Zie voor meer informatie Tabel 1 (Systeemservices-opdracht/antwoordwaarden) in de CoreSysServices v3.1-handboek voor de opdrachtcodes (Hex) die voor verschillende systeemdiensten moeten worden gebruikt. Voor serienummerservice is de opdrachtcode “01” Hex.

Het formaat van de status.txt file voor serienummerservice is als volgt.
< 2 hexadecimale cijfers CMD><32 hexadecimale cijfers serienummer>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Sla de status.txt op file in de map Simulatie van uw project. Het ontwerp is nu klaar voor simulatie.
Zodra de uitvoering van de service is begonnen, wordt een bericht met de bestemmingslocatie en het serienummer weergegeven in het ModelSim-transcriptievenster, zoals weergegeven in de volgende afbeelding.
Figuur 7 • ModelSim-simulatietranscriptvensterMicrosemi UG0837 IGLOO2 en SmartFusion2 FPGA systeemservices simulatie - transcriptievensterDe systeemcontroller voert een AHB-schrijfbewerking uit naar het adres met het serienummer. Na voltooiing van de service wordt de RXFIFO van COMM_BLK geladen met het serviceantwoord.
Opmerking: Voor een volledige lijst van de opdrachtcodes die voor verschillende systeemservices moeten worden gebruikt, raadpleegt u Tabel 1 (Systeemservicesopdracht/antwoordwaarden) in het CoreSysServices v3.1-handboek of UG0450: Gebruikershandleiding voor SmartFusion2 SoC en IGLOO2 FPGA-systeemcontroller.
2.6 Simulatie van SmartFusion2-serienummerservice
In deze gebruikershandleiding worden BFM-opdrachten (optie 2) gebruikt om toegang te krijgen tot de systeemcontroller voor systeemservice. BFM-opdrachten worden gebruikt omdat de Cortex-M3-processor op het apparaat beschikbaar is voor BFM-simulatie. Met BFM-opdrachten kunt u rechtstreeks naar de COMM BLK schrijven en lezen zodra u de geheugentoewijzing van de COMM_BLK kent.
Voer de volgende stappen uit om uw ontwerp voor te bereiden op de SmartFusion2-simulatie van serienummerservices.

  1. Sleep de MSS van de catalogus naar het ontwerpcanvas van uw project.
  2. Schakel alle MSS-randapparatuur uit, behalve MSS_CCC, Reset Controller, Interrupt Management en FIC_0, FIC_1 en FIC_2.
  3. Configureer het interruptbeheer om MSS te gebruiken voor fabric-interrupt.
  4. Bereid het serialnum.bfm voor file in een teksteditor of in de HDL-editor van Libero. Sla het serialnum.bfm op file in de map Simulatie van het project. Het serialnum.bfm moet de volgende details bevatten.
    • Geheugentoewijzing aan de COMM BLK (CMBLK)
    • Geheugentoewijzing om randapparatuur voor beheer te onderbreken (FIIC)
    • Commando voor serviceverzoek serienummersysteem (“01” Hex)
    • Adres voor de locatie van het serienummer
    een exampbestand van serialnum.bfm file is als volgt.
    memmap FIIC 0x40006000; #Memory Mapping om het beheer te onderbreken
    memmap CMBLK 0x40016000; #Geheugentoewijzing aan COMM BLK
    memmap DESCRIPTOR_ADDR 0x20000000; #Adreslocatie voor serienummer
    #Opdrachtcode in hexadecimaal
    constante CMD 0x1 # Commandocode voor serienummerservice
    #FIIC-configuratieregisters
    constante FICC_INTERRUPT_ENABLE0 0x0
    #COMM_BLK Configuratieregisters
    constante CONTROLE 0x00
    constante STATUS 0x04
    constante INT_ENABLE 0x08
    constante DATA8 0x10
    constante DATA32 0x14
    constante FRAME_START8 0x18
    constante FRAME_START32 0x1C
    procedure serienummer;
    int x;
    schrijf met FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configure
    #FICC_INTERRUPT_ENABLE0 # Registreer om COMBLK_INTR in te schakelen #
    #interrupt van COMM_BLK-blok naar fabric
    #Aanvraagfase
    schrijf w CMBLK CONTROL 0x10 # Configureer COMM BLK-besturing #Registreer bij
    overdrachten op de COMM BLK-interface mogelijk maken
    schrijf w CMBLK INT_ENABLE 0x1 # Configureer COMM BLK Interrupt inschakelen
    #Registreer om Interrupt voor TXTOKAY in te schakelen (overeenkomend bit in de
    #Status registreren)
    waitint 19 # wacht op COMM BLK Interrupt, hier wacht #BFM
    #till COMBLK_INTR wordt beweerd
    readstore w CMBLK STATUS x # Lees COMM BLK Status Registreer voor #TXTOKAY
    # Onderbreken
    stel xx en 0x1 in
    als x
    schrijf w CMBLK FRAME_START8 CMD # Configureer COMM BLK FRAME_START8
    #Registreer om serienummerservice aan te vragen
    endovisit
    endovisit
    waitint 19 # wacht op COMM BLK Interrupt, hier
    #BFM wacht tot COMBLK_INTR wordt bevestigd
    readstore w CMBLK STATUS x # Lezen COMM BLK Status Registreren voor
    #TXTOKAY Onderbreken
    stel xx en 0x1 in
    stel xx en 0x1 in
    als x
    schrijf w CMBLK-CONTROL 0x14 #Configureer COMM BLK-besturing
    #Registreer om overdrachten op de COMM BLK-interface mogelijk te maken
    schrijf w CMBLK DATA32 DESCRIPTOR_ADDR
    schrijf w CMBLK INT_ENABLE 0x80
    schrijf w CMBLK CONTROL 0x10
    endovisit
    wacht 20
    #Reactiefase
    wacht 19
    leesopslag w CMBLK-STATUS x
    stel xx en 0x80 in
    als x
    leescontrole met CMBLK FRAME_START8 CMD
    schrijf w CMBLK INT_ENABLE 0x2
    endovisit
    wacht 19
    leesopslag w CMBLK-STATUS x
    stel xx en 0x2 in
    als x
    leescontrole w CMBLK DATA8 0x0
    schrijf w CMBLK CONTROL 0x18
    endovisit
    wacht 19
    leescontrole met FIIC 0x8 0x20000000
    leesopslag w CMBLK-STATUS x
    stel xx en 0x2 in
    als x
    leescontrole met CMBLK DATA32 DESCRIPTOR_ADDR
    endovisit
    leescontrole w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck om S/N te controleren
    leescontrole w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck om S/N te controleren
    leescontrole w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck om S/N te controleren
    leescontrole w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck om S/N te controleren
    opbrengst
  5. Maak de status aan. tekst file in Libero's HDL-editor of een andere teksteditor. Neem het serienummer van de systeemserviceopdracht (“01” in Hex) en het serienummer op in de status . tekst file. Zie het CoreSysServices v3.1 handboek voor het gebruik van de juiste opdrachtcode.
  6. De syntaxis hiervan file voor serienummerservice is <2 Hex-cijferig CMD>< 32 Hex-cijferig Serienummer> . Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
  7. Bewaar de status .txt file in de map Simulatie van het project.
  8. Bewerk de gebruiker .bfm (bevindt zich in de map Simulatie) om het serienummer op te nemen. bfm file en bel de serienummerprocedure zoals weergegeven in het volgende codefragment.
    include “serialnum.bfm” #include the serialnum.bfm
    procedure gebruiker_hoofd;
    print “INFO:Simulatie start”;
    print “INFO:Serviceopdrachtcode in decimaal:%0d”, CMD;
    bel serienummer; #roep de serienummerprocedure aan
    print “INFO: Simulatie eindigt”;
    opbrengst
  9. In de ontwerphiërarchie view, genereer de testbench (klik met de rechtermuisknop, Top Level Design > Create Testbench > HDL ) en u bent klaar om de simulatie van de serienummerservice uit te voeren.

Zodra de uitvoering van de service is begonnen, wordt een bericht weergegeven met de bestemmingslocatie en het serienummer. De systeemcontroller voert een AHB-schrijfbewerking uit naar het adres met het serienummer. Na voltooiing van de service wordt de RXFIFO van COMM_BLK geladen met het serviceantwoord. In het ModelSim-transcriptievenster worden het ontvangen adres en het serienummer weergegeven, zoals weergegeven in de volgende afbeelding.
Figuur 8 • Simulatie van SmartFusion2-serienummerservice in het ModelSim-transcriptvensterMicrosemi UG0837 IGLOO2 en SmartFusion2 FPGA systeemservices simulatie - transcriptievenster 1

2.7 Simulatie van IGLOO2 Zeroization-service
Ter voorbereiding op de IGLOO2-nulisatieservicesimulatie voert u de stappen als volgt uit.

  1. Roep de systeembouwer aan om het HPMS-blok te maken. Schakel het selectievakje HPMS System Services in de Apparaatfuncties SYS_SERVICES_MASTER BIF in. Laat alle andere selectievakjes uitgeschakeld. Accepteer de standaard op alle andere pagina's en klik op pagina. Dit instrueert de systeembouwer om de HPMS_FIC_0 Finish vrij te geven om de configuratie van het systeembouwerblok te voltooien.
  2. Schrijf in de HDL-editor van de Libero SoC de HDL-code voor de FSM. Neem in uw HDL-code voor de FSM de volgende drie toestanden op.
    INIT-status (beginstatus)
    SERV_PHASE (status van serviceaanvraag)
    RSP_PHASE (servicereactiestatus)
    De volgende afbeelding toont de drie toestanden van FSM.
    Figuur 9 • Driestaten-FSMMicrosemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemdienstensimulatie - FSM met drie statussen

     

  3. Gebruik in uw HDL-code de opdrachtcode “F0″(Hex) om de status van het serviceverzoek vanuit de INIT-status in te voeren.
  4. Bewaar uw HDL file.
  5. Open SmartDesign, sleep uw systeembouwerblok op het hoogste niveau en uw HDL FSM-blok naar het SmartDesign-canvas. Sleep de CoreSysService soft IP-kern vanuit de catalogus naar het SmartDesign-canvas.
  6. Klik met de rechtermuisknop op de CoreSysServices soft IP-kern om de configurator te openen en vink het selectievakje Zeroization Service aan onder de groep Data Security Services. Laat alle andere selectievakjes uitgeschakeld. Klik om OK af te sluiten.
    Figuur 10 • CoreSysServices-configurator
    Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA systeemdienstensimulatie - kernconfigurator 1
  7. Verbind de HPMS_FIC_0 SYS_SERVICES_MASTER BIF van het systeembouwerblok met de AHBL_MASTER BIF van het CoreSysService-blok.
  8. Verbind de uitgang van uw HDL FSM-blok met de ingang van de CoreSysService soft IP-kern. Maak alle overige verbindingen in het SmartDesign-canvas.
    Figuur 11 • SmartDesign Canvas met HDL-blok, CoreSysServices Soft IP en HPMS-blokken
    Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemservicessimulatie - HPMS-blokken 19. Genereer in het SmartDesign-canvas het ontwerp op het hoogste niveau (klik met de rechtermuisknop > Component genereren).
    10. In de ontwerphiërarchie view, klik met de rechtermuisknop op het ontwerp op het hoogste niveau en selecteer Testbench maken > HDL. U bent nu klaar om de simulatie uit te voeren.
    Zodra de uitvoering van de service is begonnen, wordt een bericht weergegeven dat aangeeft dat de nulstelling op tijdstip x is voltooid, zoals weergegeven in de volgende afbeelding.
    Figuur 12 • IGLOO2 Zeroization System Service Simulatie Transcriptvenster
    Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA systeemservices simulatie - transcriptievenster 3

De systeemcontroller voert een AHB-schrijfbewerking uit naar het adres met het serienummer. Na voltooiing van de service wordt de RXFIFO van COMM_BLK geladen met het serviceantwoord. Opgemerkt moet worden dat het simulatiemodel de nulstelling simuleert door de simulatie te stoppen in plaats van het ontwerp zelf op nul te zetten.
Opmerking: Voor een compleet overzicht van de opdrachtcodes die voor verschillende systeemservices moeten worden gebruikt, raadpleegt u Tabel 1 (Opdracht-/antwoordwaarden systeemservices) in de CoreSysServices v3.1-handboek:. of UG0450: Gebruikershandleiding SmartFusion2 SoC en IGLOO2 FPGA-systeemcontroller

2.8 Simulatie van SmartFusion2 Zeroization-service
In deze handleiding worden BFM-opdrachten (optie 2) gebruikt om toegang te krijgen tot de systeemcontroller voor systeemservice.
BFM-opdrachten worden gebruikt omdat de Cortex-M3-processor op het apparaat beschikbaar is voor BFM-simulatie. Met BFM-opdrachten kunt u rechtstreeks naar de COMM BLK schrijven en lezen zodra u de geheugentoewijzing van de COMM_BLK kent. Voer de volgende stappen uit om uw ontwerp voor te bereiden op de SmartFusion2-nulisatieservicesimulatie.

  1. Sleep de MSS van de catalogus naar het ontwerpcanvas van uw project.
  2. Schakel alle MSS-randapparatuur uit, behalve MSS_CCC, Reset Controller, Interrupt Management en FIC_0, FIC_1 en FIC_2.
  3. Configureer het interruptbeheer om MSS te gebruiken voor fabric-interrupt.
  4. Bereid het zeroizaton.bfm voor file in een teksteditor of in Libero's HDL-editor. Jouw nulstelling. bfm moet het volgende omvatten:
  • Geheugentoewijzing aan de COMM BLK (CMBLK)
  • Geheugentoewijzing om randapparatuur voor beheer te onderbreken (FIIC)
  • Commando voor nulstelling serviceverzoek (“F0” Hex voor nulstelling)

een exampbestand van serialnum.bfm file wordt getoond in de volgende afbeelding.
Figuur 13 • Zeroization.bfm voor SmartFusion2 Zeroization System Services-simulatie

Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA systeemservices simulatie - transcriptievenster 4

5. Sla de zeroization.bfm op file in de map Simulatie van het project. gebruiker.bfm
6. Bewerk de (bevindt zich in de map Zeroization.bfm Simulation) om deze op te nemen met behulp van het volgende codefragment.
include “zeroization.bfm” #include zeroization.bfm file procedure gebruiker_hoofd;
print “INFO:Simulatie start”;
print “INFO:Serviceopdrachtcode in decimaal:%0d”, CMD;
nulstelling van oproepen; #call nulstellingsprocedure retour
7. Genereer in de Ontwerphiërarchie de Testbench (klik met de rechtermuisknop op het hoogste niveau > Testbench maken > HDL ) en u bent klaar om de SmartFusion2-nuleringssimulatie uit te voeren.
Zodra de uitvoering van de dienst is begonnen, wordt een bericht weergegeven dat aangeeft dat het apparaat op tijdstip x op nul is gezet. Opgemerkt moet worden dat het simulatiemodel de nulstelling simuleert door de simulatie te stoppen in plaats van het ontwerp zelf op nul te zetten. Het ModelSim-transcriptievenster in de volgende afbeelding laat zien dat het apparaat op nul is gezet.

Afbeelding 14 • Simulatielogboek SmartFusion2-zeroisatiesysteemservice

Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA systeemservices simulatie - transcriptievenster 5

Bijlage: Soorten systeemservices

In dit hoofdstuk worden verschillende soorten systeemservices beschreven.
3.1 Simulatieberichtdiensten
In de volgende secties worden verschillende typen simulatieberichtservices beschreven.
3.1.1 Flits*Bevriezen
De simulatie komt in de Flash*Freeze-status wanneer het juiste serviceverzoek naar de COMM_BLK wordt verzonden vanaf de FIC (in het geval van IGLOO2-apparaten) of de Cortex-M3 (in SmartFusion2-apparaten). Zodra de service door de systeemcontroller is gedetecteerd, wordt de simulatie gestopt en wordt een bericht weergegeven dat aangeeft dat het systeem Flash*Freeze is binnengegaan (samen met de geselecteerde optie). Bij hervatting van de simulatie zal de RXFIFO van de COMM_BLK worden gevuld met het serviceantwoord bestaande uit het servicecommando en de status. Opgemerkt moet worden dat er geen simulatieondersteuning is voor het afsluiten van Flash*Freeze.
3.1.2 Zeroisatie
Zeroisatie is momenteel de enige service met hoge prioriteit binnen systeemservices die wordt verwerkt door de COMM_BLK. De simulatie zal de nulstellingsstatus ingaan zodra het juiste serviceverzoek wordt gedetecteerd door de COMM_BLK. De uitvoering van andere services wordt stopgezet en weggegooid door de systeemcontroller, en in plaats daarvan wordt de nulstellingsservice uitgevoerd. Zodra het nulstellingsverzoek wordt gedetecteerd, stopt de simulatie en wordt er een bericht weergegeven dat aangeeft dat het systeem op nul is gezet. Handmatige herstart van de simulatie na nulstelling is ongeldig.
3.2 Data Pointer-diensten
In de volgende secties worden verschillende typen datapointerservices beschreven.
3.2.1 Serienummer
De serienummerservice schrijft een 128-bits serienummer naar een adreslocatie die is opgegeven als onderdeel van het serviceverzoek. Deze 128-bits parameter kan worden ingesteld met behulp van System Service Simulation Support file (zie pagina 22) . Als de 128-bits serienummerparameter niet is gedefinieerd in de file, wordt een standaard serienummer van 0 gebruikt. Zodra de uitvoering van de service is begonnen, wordt een bericht weergegeven met de bestemmingslocatie en het serienummer. De systeemcontroller voert een AHB-schrijfbewerking uit naar het adres met het serienummer. Na voltooiing van de service wordt de RXFIFO van COMM_BLK geladen met het serviceantwoord.
3.2.2 Gebruikerscode
De gebruikerscodeservice schrijft een 32-bits gebruikerscodeparameter naar een adreslocatie die wordt verstrekt als onderdeel van het serviceverzoek. Deze 32-bits parameter kan worden ingesteld met behulp van de System Service Simulation Support file (zie pagina 22). Als de 32-bits parameter niet is gedefinieerd in het file, wordt een standaardwaarde van 0 gebruikt. Zodra de uitvoering van de dienst is begonnen, wordt een bericht weergegeven dat de doellocatie en de gebruikerscode aangeeft. De systeemcontroller voert een AHB-schrijfbewerking uit naar het adres met de 32-bits parameter. Na voltooiing van de service wordt de RXFIFO van COMM_BLK geladen met het serviceantwoord, dat het servicecommando en het doeladres omvat.
3.3 Gegevensdescriptordiensten
In de volgende secties worden verschillende typen gegevensdescriptorservices beschreven.

3.3.1 AES
De simulatieondersteuning voor deze service houdt zich alleen bezig met het verplaatsen van de originele gegevens van de bron naar de bestemming, zonder daadwerkelijk enige codering/decodering op de gegevens uit te voeren. De gegevens die moeten worden gecodeerd/ontsleuteld en de gegevensstructuur moeten worden geschreven voordat het serviceverzoek wordt verzonden. Zodra de uitvoering van de dienst is begonnen, wordt een bericht weergegeven dat de uitvoering van de AES-dienst aangeeft. De AES-service leest zowel de datastructuur als de te versleutelen/ontsleutelen gegevens. De originele gegevens worden gekopieerd en geschreven naar het adres dat in de gegevensstructuur is opgegeven. Zodra de service is voltooid, worden het commando, de status en het datastructuuradres in de RXFIFO gepusht.
Opmerking: Deze service is alleen bedoeld voor 128-bits en 256-bits gegevens, en zowel 128-bits als 256-bits gegevens hebben verschillende gegevensstructuurlengtes.

3.3.2 SHA256
De simulatieondersteuning voor deze dienst houdt zich alleen bezig met het verplaatsen van de gegevens, zonder daadwerkelijk enige hashing op de gegevens uit te voeren. De SHA 256-functie is ontworpen om een ​​256-bit hash-sleutel te genereren op basis van de invoergegevens. De gegevens die moeten worden gehasht en de gegevensstructuur moeten naar hun respectieve adressen worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. De lengte in bits en pointer gedefinieerd binnen de SHA 256-datastructuur moet correct overeenkomen met de lengte en het adres van de te hashen gegevens. Zodra de uitvoering van de dienst is begonnen, wordt een bericht weergegeven dat de uitvoering van de SHA 256-dienst aangeeft. In plaats van de eigenlijke functie uit te voeren, wordt er vanuit de datastructuur een standaard hash-sleutel naar de bestemmingsaanwijzer geschreven. De standaard hash-sleutel is hex “ABCD1234”. Voor het instellen van een aangepaste sleutel gaat u naar het gedeelte Parameterinstelling (zie pagina 23). Na voltooiing van de service wordt de RXFIFO geladen met het serviceantwoord dat bestaat uit het servicecommando, de status en de SHA 256-datastructuuraanwijzer.
3.3.3 HMAC
De simulatieondersteuning voor deze dienst houdt zich alleen bezig met het verplaatsen van gegevens, zonder daadwerkelijk enige hashing op de gegevens uit te voeren. De gegevens die moeten worden gehasht en de gegevensstructuur moeten naar hun respectieve adressen worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. De HMAC-service vereist een sleutel van 32 bytes naast de lengte in bytes, bronaanwijzer en bestemmingsaanwijzer. Zodra de uitvoering van de service is begonnen, wordt een bericht weergegeven dat de uitvoering van de HMAC-service aangeeft. De sleutel wordt gelezen en de 256-bits sleutel wordt gekopieerd van de datastructuur naar de bestemmingsaanwijzer. Na voltooiing van de service wordt de RXFIFO geladen met het serviceantwoord dat bestaat uit het servicecommando, de status en de HMAC-datastructuuraanwijzer.

3.3.4 DRBG genereren
Deze dienst genereert willekeurige bits. Opgemerkt moet worden dat het simulatiemodel niet precies dezelfde methodologie voor het genereren van willekeurige getallen volgt die door het silicium wordt gebruikt. De datastructuur moet correct naar de beoogde locatie worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. De datastructuur, bestemmingsaanwijzer, lengte en andere relevante gegevens worden door de systeemcontroller gelezen. De DRBG-generatieservice genereert een pseudo-willekeurige gegevensset met de gevraagde lengte (0-128). De systeemcontroller schrijft de willekeurige gegevens naar de bestemmingsaanwijzer. Tijdens de simulatie wordt een bericht weergegeven dat de uitvoering van de DRBG-generatieservice aangeeft. Zodra de service is voltooid, worden het commando, de status en het datastructuuradres in de RXFIFO gepusht. Als de gevraagde datalengte niet binnen het bereik van 0-128 ligt, wordt een foutcode van “4” (Max Generate) in de RXFIFO geduwd. Als de extra datalengte niet binnen het Request Too Big-bereik van 0-128 valt, wordt een foutcode van “5” (Max. lengte van aanvullende data overschreden) in de RXFIFO gepusht. Als zowel de gevraagde datalengte voor het genereren als de extra datalengte niet binnen het gedefinieerde bereik (0-128) liggen, wordt een foutcode van “1” (Catastrofale fout) in de RXFIFO gepusht.

3.3.5 DRBG-reset
De daadwerkelijke resetfunctie wordt uitgevoerd door DRBG-instanties te verwijderen en DRBG opnieuw in te stellen. Zodra het serviceverzoek is gedetecteerd, geeft de simulatie het bericht DRBG Reset-service voltooid weer. Het antwoord, dat de service en status omvat, wordt in de RXFIFO gepusht.
3.3.6 DRBG-zelftest
De simulatieondersteuning voor de DRBG-zelftest voert de zelftestfunctie niet daadwerkelijk uit. Zodra het serviceverzoek is gedetecteerd, geeft de simulatie een DRBG-zelftestservice-uitvoeringsbericht weer. Het antwoord, dat de service en status omvat, wordt naar de RXFIFO gepusht.
3.3.7 DRBG-instantie
De simulatieondersteuning voor de DRBG-instantiatieservice voert de instantiatieservice niet daadwerkelijk uit. De datastructuur moet correct naar de beoogde locatie worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. Zodra het serviceverzoek is gedetecteerd, worden de structuur en de personalisatiereeks die in de MSS-adresruimte is gedefinieerd, gelezen. Bij de simulatie wordt een bericht weergegeven dat aangeeft dat de uitvoering van de DRBG Instantiate-service is begonnen. Zodra de service is voltooid, wordt het antwoord, dat het servicecommando, de status en de verwijzing naar de datastructuur omvat, naar de RXFIFO gepusht. Als de gegevenslengte (PERSONALISATIONLENGTH) niet binnen het bereik van 0-128 ligt, wordt een foutcode van “1” (Catastrofale fout) in de RXFIFO gepusht voor de status.
3.3.8 DRBG Niet-instantiëren
De simulatieondersteuning voor de niet-instantiële dienst van DRBG voert niet feitelijk de niet-instantiële dienst uit van het verwijderen van een eerder geïnstantieerde DRBG, zoals silicium dat doet. Het serviceverzoek moet zowel de opdracht als de DRBG-handle bevatten. Zodra de serviceaanvraag is gedetecteerd, wordt de DRBG-handle opgeslagen. De simulatie geeft een bericht weer dat aangeeft dat de niet-instantiële service van DRBG is geïnitialiseerd. Zodra de service is voltooid, wordt het antwoord, dat het servicecommando, de status en de DRBG-handle bevat, naar de RXFIFO gepusht.
3.3.9 DRBG opnieuw zaaien
Vanwege de simulatieve aard van het systeemserviceblok wordt de DRBG-reseed-service in de simulatie niet automatisch uitgevoerd na elke 65535 DRBG-genereerservice. De datastructuur moet correct naar de beoogde locatie worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. Zodra het serviceverzoek is gedetecteerd, worden de structuur en aanvullende invoerparameters in de MSS-adresruimte gelezen. Er wordt een bericht weergegeven dat aangeeft dat de uitvoering van de DRBG-reseed-service is begonnen. De datastructuur moet correct naar de beoogde locatie worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. Zodra de service is voltooid, wordt het antwoord, dat het servicecommando, de status en de verwijzing naar de datastructuur omvat, naar de RXFIFO gepusht.
3.3.10 Sleutelboom
De eigenlijke functie wordt niet uitgevoerd in de simulatie voor de KeyTree-service. De KeyTree-servicegegevensstructuur bestaat uit een sleutel van 32 bytes, 7-bits optypegegevens (MSB genegeerd) en een pad van 16 bytes. De gegevens binnen de gegevensstructuur moeten naar hun respectieve adressen worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. Zodra de uitvoering van de dienst is begonnen, wordt een bericht weergegeven dat de uitvoering van de KeyTree-dienst aangeeft. De inhoud van de datastructuur wordt gelezen, de sleutel van 32 bytes wordt opgeslagen en de originele sleutel in de datastructuur wordt overschreven. Na dit AHB-schrijfproces zou de waarde van de sleutel binnen de datastructuur niet moeten veranderen, maar zullen er AHB-transacties voor het schrijfproces plaatsvinden. Na voltooiing van de service wordt de RXFIFO geladen met het serviceantwoord, bestaande uit het servicecommando, de status en de KeyTree-datastructuuraanwijzer.
3.3.11 Uitdagingsreactie
De daadwerkelijke functie, zoals authenticatie van het apparaat, wordt niet uitgevoerd in de simulatie voor de challenge response-service. De datastructuur voor deze service vereist een verwijzing naar de buffer om een ​​resultaat van 32 bytes, een optype van 7 bits en een pad van 128 bits te ontvangen. De gegevens binnen de gegevensstructuur moeten naar hun respectieve adressen worden geschreven voordat het serviceverzoek naar de COMM_BLK wordt verzonden. Zodra de uitvoering van de dienst is begonnen, wordt een bericht weergegeven dat de uitvoering van de uitdagingsresponsdienst aangeeft. Een generiek antwoord van 256 bits zal naar de aanwijzer in de datastructuur worden geschreven. De standaardsleutel is ingesteld als hex “ABCD1234”. Om een ​​aangepaste sleutel te krijgen, controleert u Parameter Setting (zie pagina 23). Na voltooiing van de service wordt de RXFIFO geladen met het serviceantwoord, bestaande uit de datastructuuraanwijzer van het servicecommando, de status en het uitdagingsantwoord.
3.4 Andere diensten
In de volgende secties worden verschillende andere systeemservices beschreven.
3.4.1 Samenvattingscontrole
De feitelijke functie van het herberekenen en vergelijken van samenvattingen van geselecteerde componenten wordt niet uitgevoerd voor de samenvattingscontroleservice tijdens de simulatie. Dit serviceverzoek bestaat uit serviceopdrachten en serviceopties (5-bit LSB). Zodra de uitvoering van de service is begonnen, wordt een bericht weergegeven met details over de uitvoering van de digest-controleservice, samen met de geselecteerde opties uit het verzoek. Na voltooiing van de service wordt de RXFIFO geladen met het serviceantwoord, bestaande uit het servicecommando en de samenvattingscontrole geslaagd/mislukt-vlaggen.
3.4.2 Niet-herkende commandoreactie
Wanneer een niet-herkend serviceverzoek naar de COMM_BLK wordt verzonden, zal de COMM_BLK automatisch antwoorden met een niet-herkend opdrachtbericht dat in de RXFIFO wordt gepusht. Het bericht bestaat uit de opdracht die naar de COMM_BLK is verzonden en de niet-herkende opdrachtstatus (252D). Er wordt ook een displaybericht weergegeven dat aangeeft dat er een niet-herkend serviceverzoek is gedetecteerd. De COMM_BLK keert terug naar een inactieve toestand, wachtend op acceptatie van het volgende serviceverzoek.
3.4.3 Niet-ondersteunde services
Niet-ondersteunde services die zijn ingesteld op COMM_BLK zullen tijdens de simulatie een bericht activeren dat aangeeft dat het serviceverzoek niet wordt ondersteund. De COMM_BLK keert terug naar een inactieve toestand, wachtend op acceptatie van het volgende serviceverzoek. De PINTERRUPT wordt niet ingesteld, wat aangeeft dat een service is voltooid. De huidige lijst met niet-ondersteunde services omvat: IAP, ISP, Device Certificate en de DESIGNVER Service.
3.5 Ondersteuning voor simulatie van systeemservices File
Ter ondersteuning van de simulatie van systeemservices wordt een tekst file genaamd “status.txt” kan worden gebruikt om instructies over het vereiste gedrag van het simulatiemodel door te geven aan het simulatiemodel. Dit file moet zich in dezelfde map bevinden als waaruit de simulatie wordt uitgevoerd. De file kan onder andere worden gebruikt om bepaalde foutreacties voor de ondersteunde systeemdiensten te forceren of zelfs om enkele parameters in te stellen die nodig zijn voor simulatie (bijvoorbeeldample, serienummer). Het maximale aantal regels dat wordt ondersteund in de ”status.txt” file is 256. Instructies die na regelnummer 256 verschijnen, worden niet gebruikt in de simulatie.
3.5.1 Foutreacties forceren
De gebruiker kan tijdens het testen een bepaalde foutreactie voor een bepaalde service forceren door de informatie door te geven aan het simulatiemodel met behulp van “status.txt” file, die in de map moet worden geplaatst van waaruit de simulatie wordt uitgevoerd. Om foutreacties op een bepaalde dienst af te dwingen, moeten het commando en het vereiste antwoord op dezelfde regel worden getypt in het volgende formaat:ample, naar Command> ; instrueer het simulatiemodel om een ​​MSS-geheugentoegangsfoutreactie op de serienummerservice te genereren, de opdracht is als volgt.
Onderhoud: Serienummer: 01
Foutbericht gevraagd: MSS Memory Access Error: 7F
U zou de regel 017F moeten invoeren in "status.txt" file.
3.5.2 Parametrering
De “status.txt” file kan ook worden gebruikt om enkele parameters in te stellen die nodig zijn bij simulatie. Als example, om de 32-bits parameter voor de gebruikerscode in te stellen, moet het formaat van de regel in deze volgorde zijn: <32 bit GEBRUIKERSCODE>; waarbij beide waarden hexadecimaal worden ingevoerd. Om de 128-bits parameter voor het serienummer in te stellen, moet het formaat van de lijn in deze volgorde zijn: <128 bit serienummer [127:0]> ; waarbij beide waarden hexadecimaal worden ingevoerd. Om de 256-bit parameter voor de SHA 256-sleutel in te stellen; het formaat van de regel moet in deze volgorde zijn: <256 bit sleutel [255:0]>; waarbij beide waarden hexadecimaal worden ingevoerd. Om de 256-bits parameter voor de uitdagingsantwoordsleutel in te stellen, moet het formaat van de regel in deze volgorde zijn: <256 bit sleutel [255:0]>;
waarbij beide waarden hexadecimaal worden ingevoerd.
3.5.3 Apparaatprioriteit
Systeemdiensten en de COMM_BLK maken gebruik van een systeem met hoge prioriteit. Momenteel is nulstelling de enige dienst met hoge prioriteit. Om een ​​dienst met hoge prioriteit uit te voeren, terwijl een andere dienst wordt uitgevoerd, wordt de huidige dienst stopgezet en wordt de dienst met hogere prioriteit in zijn plaats uitgevoerd. De COMM_BLK zal de huidige service negeren om de service met hogere prioriteit uit te voeren. Als meerdere services zonder hoge prioriteit worden verzonden voordat een huidige service is voltooid, worden deze services in de wachtrij geplaatst binnen de TXFIFO. Zodra de huidige service is voltooid, wordt de volgende service in de TXFIFO uitgevoerd.

Microsemi geeft geen garantie, verklaring of waarborg met betrekking tot de hierin opgenomen informatie of de geschiktheid van haar producten en diensten voor een bepaald doel, noch aanvaardt Microsemi enige aansprakelijkheid die voortvloeit uit de toepassing of het gebruik van een product of circuit. De producten die hieronder worden verkocht en alle andere producten die door Microsemi worden verkocht, zijn onderworpen aan beperkte tests en mogen niet worden gebruikt in combinatie met bedrijfskritieke apparatuur of toepassingen. Alle prestatiespecificaties worden geacht betrouwbaar te zijn, maar zijn niet geverifieerd, en de Koper moet alle prestatie- en andere tests van de producten uitvoeren en voltooien, alleen en samen met, of geïnstalleerd in, eventuele eindproducten. Koper zal zich niet verlaten op door Microsemi verstrekte gegevens en prestatiespecificaties of parameters. Het is de verantwoordelijkheid van de koper om onafhankelijk de geschiktheid van producten te bepalen en deze te testen en te verifiëren. De informatie die hieronder door Microsemi wordt verstrekt, wordt geleverd "zoals het is, waar het is" en met alle fouten, en het volledige risico dat aan dergelijke informatie is verbonden, ligt volledig bij de Koper. Microsemi verleent aan geen enkele partij, expliciet of impliciet, octrooirechten, licenties of andere IE-rechten, met betrekking tot dergelijke informatie zelf of iets dat door dergelijke informatie wordt beschreven. De informatie in dit document is eigendom van Microsemi en Microsemi behoudt zich het recht voor om op elk moment en zonder voorafgaande kennisgeving wijzigingen aan te brengen in de informatie in dit document of in producten en diensten.
Microsemi, een volledige dochteronderneming van Microchip Technology Inc. (Nasdaq: MCHP), biedt een uitgebreid portfolio van halfgeleider- en systeemoplossingen voor ruimtevaart en defensie, communicatie, datacenters en industriële markten. Producten omvatten hoogwaardige en stralingsbestendige analoge geïntegreerde schakelingen met gemengd signaal, FPGA's, SoC's en ASIC's; energiebeheerproducten; timing- en synchronisatieapparatuur en nauwkeurige tijdoplossingen, die de wereldstandaard voor tijd bepalen; spraakverwerkingsapparaten; RF-oplossingen; discrete componenten; zakelijke opslag- en communicatieoplossingen; beveiligingstechnologieën en schaalbare anti-tamper producten; Ethernet-oplossingen; Power-over-Ethernet IC's en midspans; evenals aangepaste ontwerpmogelijkheden en services. Microsemi heeft zijn hoofdkantoor in Aliso Viejo, Californië, en heeft wereldwijd ongeveer 4,800 werknemers. Meer informatie op www.microsemi.com.

Microsemi-logo

Microsemi-hoofdkantoor
Een onderneming, Aliso Viejo,
CA 92656 VS.
Binnen de VS: +1 800-713-4113
Buiten de VS: +1 949-380-6100
Verkoop: +1 949-380-6136
Faxen: +1 949-215-4996
E-mail: verkoop.support@microsemi.com
www.microsemi.com
© 2018 Microsemi. Alle rechten voorbehouden. Microsemi en het Microsemi-logo
zijn handelsmerken van Microsemi Corporation. Alle andere handelsmerken en service
merken zijn eigendom van hun respectievelijke eigenaren.

Documenten / Bronnen

Microsemi UG0837 IGLOO2 en SmartFusion2 FPGA-systeemdienstensimulatie [pdf] Gebruikershandleiding
UG0837, UG0837 IGLOO2 en SmartFusion2 FPGA Systeemservices Simulatie, IGLOO2 en SmartFusion2 FPGA Systeemservices Simulatie, SmartFusion2 FPGA Systeemservices Simulatie, FPGA Systeemservices Simulatie, Services Simulatie

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *