UG0837
Ghidul utilizatorului
IGLOO2 și SmartFusion2 FPGA
Simularea serviciilor de sistem
iunie 2018
Istoricul revizuirilor
Istoricul revizuirilor descrie modificările care au fost implementate în document. Modificările sunt listate după revizuire, începând cu cea mai recentă publicație.
1.1 Revizia 1.0
Revizia 1.0 a fost publicată în iunie 2018. A fost prima publicare a acestui document.
Simulare de servicii de sistem IGLOO2 și SmartFusion2 FPGA
Blocul System Services din familia SmartFusion®2 FPGA include o colecție de servicii responsabile pentru diverse sarcini. Acestea includ servicii de mesaje de simulare, servicii de indicator de date și servicii de descriptor de date. Serviciile de sistem pot fi accesate prin Cortex-M3 în SmartFusion2 și din fabrică FPGA prin controlerul de interfață fabric (FIC) atât pentru SmartFusion2, cât și pentru IGLOO®2. Aceste metode de acces sunt trimise controlerului de sistem prin COMM_BLK. COMM_BLK are o interfață avansată de magistrală periferică (APB) și acționează ca un canal de transmitere a mesajelor pentru a face schimb de date cu controlerul de sistem. Solicitările de service de sistem sunt trimise controlerului de sistem, iar răspunsurile de service ale sistemului sunt trimise la CoreSysServicie prin COMM BLK. Locația adresei pentru COMM_BLK este disponibilă în interiorul subsistemului de microcontroler (MSS)/subsistemului de memorie de înaltă performanță (HPMS). Pentru detalii, consultați UG0450: SmartFusion2 SoC și IGLOO2 FPGA System Controller.
Ghidul utilizatorului
Următoarea ilustrație arată fluxul de date privind serviciile de sistem.
Figura 1 • Diagrama fluxului de date pentru serviciul sistemuluiAtât pentru simularea serviciului de sistem IGLOO2, cât și pentru SmartFusion2, trebuie să trimiteți solicitări de service de sistem și să verificați răspunsurile serviciului de sistem pentru a verifica dacă simularea este corectă. Acest pas este necesar pentru a accesa controlerul de sistem, care furnizează serviciile sistemului. Modul de a scrie și de a citi de pe controlerul de sistem este diferit pentru dispozitivele IGLOO2 și SmartFusion2. Pentru SmartFusion2, Coretex-M3 este disponibil și puteți scrie și citi de la controlerul de sistem folosind comenzile modelului funcțional de magistrală (BFM). Pentru IGLOO2, Cortex-M3 nu este disponibil și controlerul de sistem nu este accesibil folosind comenzile BFM.
2.1 Tipuri de servicii de sistem disponibile
Sunt disponibile trei tipuri diferite de servicii de sistem și fiecare tip de serviciu are subtipuri diferite.
Servicii de mesaje de simulare
Servicii de indicatori de date
Servicii de descriptor de date
Capitolul Anexă – Tipuri de servicii de sistem (vezi pagina 19) din acest ghid descrie diferitele tipuri de servicii de sistem. Pentru mai multe informații despre serviciile de sistem, consultați UG0450: Ghidul utilizatorului SmartFusion2 SoC și IGLOO2 FPGA System Controller .
2.2 Simularea serviciului de sistem IGLOO2
Serviciile de sistem implică scrierea și citirea din controlerul de sistem. Pentru a scrie și a citi din controlerul de sistem în scopuri de simulare, trebuie să efectuați pașii de mai jos.
- Instanciați nucleul IP soft CoreSysServices, disponibil în catalogul SmartDesign.
- Scrieți codul HDL pentru o mașină cu stări finite (FSM).
HDL FSM se interfață cu CoreSysServices Core, care servește drept maestru de fabrică al magistralei AHBLite. CoreSysServices inițiază cererea de serviciu de sistem către COMM BLK și primește răspunsuri de serviciu de sistem de la COMM BLK prin intermediul controlerului de interfață fabric FIC_0/1, așa cum se arată în ilustrația următoare.
Figura 2 • Topologie de simulare a serviciilor de sistem IGLOO22.3 Simularea serviciului de sistem SmartFusion2
Pentru a simula serviciile de sistem în dispozitivele SmartFusion2, trebuie să scrieți și să citiți din controlerul de sistem. Sunt disponibile două opțiuni pentru a accesa controlerul de sistem în scopuri de simulare.
Opțiunea 1 — Scrieți codul HDL pentru ca un FSM să interfațeze cu miezul IP soft CoreSysService, care servește ca un master al fabricii AHBLite și inițiază cererea de serviciu de sistem către COMM BLK și primește răspunsuri de la serviciul de sistem de la COMM BLK prin intermediul fabricii FIC_0/1 interfață așa cum se arată în ilustrația următoare.
Figura 3 • Topologia de simulare a serviciilor de sistem SmartFusion2
Opțiunea 2 - Deoarece Cortex-M3 este disponibil pentru dispozitivele SmartFusion2, puteți utiliza comenzi BFM pentru a scrie și a citi direct din spațiul de memorie al controlerului de sistem.
Utilizarea comenzilor BFM (opțiunea 2) scutește necesitatea de a scrie codurile HDL pentru FSM. În acest ghid al utilizatorului, opțiunea 2 este utilizată pentru a afișa simularea serviciilor de sistem în SmartFusion2. Cu această opțiune, spațiul de memorie al controlerului de sistem este accesat pentru a afla harta de memorie a COMM BLK și blocul controlerului de întrerupere a interfeței fabricii (FIIC) atunci când scrieți comenzile BFM.
2.4 Simulare Examples
Ghidul utilizatorului acoperă următoarele simulări.
- Simularea serviciului de număr de serie IGLOO2 (vezi pagina 5)
- Simularea serviciului de număr de serie SmartFusion2 (vezi pagina 8)
- Simularea serviciului de zeroizare IGLOO2 (vezi pagina 13)
- Simulare serviciu de zeroizare SmartFusion2 (vezi pagina 16)
Metode similare de simulare pot fi aplicate altor servicii de sistem. Pentru o listă completă a diferitelor servicii de sistem disponibile, accesați Anexa – Tipuri de servicii de sistem (vezi pagina 19).
2.5 Simularea serviciului de numere de serie IGLOO2
Pentru a vă pregăti pentru simularea serviciului de număr de serie IGLOO2, efectuați pașii de mai jos.
- Invocați generatorul de sistem pentru a vă crea blocul HPMS.
- Bifați caseta de selectare HPMS System Services din pagina Device Features. Acest lucru va instrui constructorul de sistem să expună interfața magistrală HPMS_FIC_0 SYS_SERVICES_MASTER (BIF).
- Lăsați toate celelalte casete de selectare nebifate.
- Acceptați valoarea implicită în toate celelalte pagini și faceți clic pe Terminare pentru a finaliza blocul generatorului de sistem. În editorul HDL al SoC Libero®, scrieți codul HDL pentru FSM (File > Nou > HDL). Includeți următoarele trei stări în FSM.
stare INIT (stare inițială)
SERV_PHASE (starea solicitării serviciului)
RSP_PHASE (starea răspunsului serviciului).
Figura următoare prezintă cele trei stări ale FSM.
Figura 4 • FSM cu trei state În codul HDL pentru FSM, utilizați codul de comandă corect („01” Hex pentru serviciul cu numărul de serie) pentru a intra în starea de solicitare a serviciului din starea INIT.
- Salvați-vă HDL file. FSM apare ca o componentă în Ierarhia de proiectare.
- Deschideți SmartDesign. Trageți și plasați blocul dvs. de generator de sistem de nivel superior și blocul dvs. FSM în pânza SmartDesign. Din catalog, trageți și plasați nucleul IP soft CoreSysService în pânza SmartDesign.
- Faceți clic dreapta pe CoreSysService soft IP core pentru a deschide configuratorul. Bifați caseta de selectare Serviciu numere de serie (sub Serviciile de informații despre dispozitiv și design
grup) pentru a activa serviciul de numere de serie. - Lăsați toate celelalte casete de selectare nebifate. Faceți clic pe OK pentru a părăsi configuratorul.
Figura 5 • CoreSysServices soft IP Core Configurator
- Conectați HPMS_FIC_0 SYS_SERVICES_MASTER BIF al blocului de constructor de sistem la AHBL_MASTER BIF al blocului CoreSysService.
- Conectați ieșirea blocului dumneavoastră HDL FSM la intrarea nucleului IP soft CoreSysService. Faceți toate celelalte conexiuni în pânza SmartDesign așa cum se arată în figura următoare.
Figura 6 • SmartDesign Canvas cu HDL Block, CoreSysServices Soft IP și HPMS Blocks - În pânza SmartDesign, faceți clic dreapta pe >Generare componentă pentru a genera designul de nivel superior.
- În Ierarhia de proiectare view, faceți clic dreapta pe designul de nivel superior și selectați create Testbench > HDL .
- Utilizați un editor de text pentru a crea un text file numit „status.txt” .
- Includeți comanda pentru service de sistem și numărul de serie pe 128 de biți. Pentru mai multe informații, consultați Tabelul 1 (Valori de comandă/răspuns pentru serviciile de sistem) din CoreSysServices v3.1 Manual pentru ca codurile de comandă (Hex) să fie utilizate pentru diferite servicii de sistem. Pentru serviciul de numere de serie, codul de comandă este „01” Hex.
Formatul status.txt file pentru serviciul de numere de serie este după cum urmează.
< 2 cifre hexadecimale CMD><32 cifre hexadecimale Număr de serie>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Salvați status.txt file în folderul Simulare al proiectului dumneavoastră. Designul este acum gata pentru simulare.
Odată ce serviciul a început execuția, în fereastra de transcriere ModelSim este afișat un mesaj care indică locația de destinație și numărul de serie, așa cum se arată în figura următoare.
Figura 7 • Fereastra de transcriere ModelSim SimulationControlerul de sistem efectuează o scriere AHB la adresa cu numărul de serie. La finalizarea serviciului, RXFIFO al COMM_BLK va fi încărcat cu răspunsul serviciului.
Notă: Pentru o listă completă a codurilor de comandă care urmează să fie utilizate pentru diferite servicii de sistem, consultați Tabelul 1 (Valori de comandă/răspuns pentru serviciile de sistem) din Manualul CoreSysServices v3.1 sau UG0450: Ghidul utilizatorului pentru controlerul de sistem SmartFusion2 SoC și IGLOO2 FPGA.
2.6 Simularea serviciului de număr de serie SmartFusion2
În acest ghid al utilizatorului, comenzile BFM (opțiunea 2) sunt utilizate pentru a accesa controlerul de sistem pentru service-ul sistemului. Comenzile BFM sunt utilizate deoarece procesorul Cortex-M3 este disponibil pe dispozitiv pentru simularea BFM. Comenzile BFM vă permit să scrieți direct și să citiți din COMM BLK odată ce cunoașteți maparea memoriei COMM_BLK.
Pentru a vă pregăti designul pentru simularea serviciului cu numărul de serie SmartFusion2, efectuați următorii pași.
- Trageți și plasați MSS din catalog în pânza de proiectare a proiectului dvs.
- Dezactivați toate perifericele MSS, cu excepția MSS_CCC, Reset Controller, Interrupt Management și FIC_0, FIC_1 și FIC_2.
- Configurați gestionarea întreruperilor pentru a utiliza MSS pentru întrerupere de fabrică.
- Pregătiți serialnum.bfm file într-un editor de text sau în editorul HDL al Libero. Salvați serialnum.bfm file în folderul Simulare al proiectului. Serialnum.bfm ar trebui să includă următoarele detalii.
• Maparea memoriei la COMM BLK (CMBLK)
• Maparea memoriei la perifericul de gestionare a întreruperii (FIIC)
• Comandă pentru cererea de service pentru sistemul de numere de serie („01” Hex)
• Adresa pentru locația numărului de serie
Un example din serianum.bfm file este după cum urmează.
memmap FIIC 0x40006000; #Mapping Memory to Interrupt Management
memmap CMBLK 0x40016000; #Mapping memorie la COMM BLK
memmap DESCRIPTOR_ADDR 0x20000000; #Locația adresei pentru Serial Num
#Cod de comandă în hexazecimal
constant CMD 0x1 # Cod de comandă pentru Serial NumberService
Registre de configurare #FIIC
constanta FICC_INTERRUPT_ENABLE0 0x0
#COMM_BLK Registre de configurare
CONTROL constant 0x00
constantă STATUS 0x04
constanta INT_ENABLE 0x08
constant DATA8 0x10
constant DATA32 0x14
constant FRAME_START8 0x18
constanta FRAME_START32 0x1C
procedura numar de serie;
int x;
scrie w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configurare
#FICC_INTERRUPT_ENABLE0 # Înregistrați-vă pentru a activa COMBLK_INTR #
#întreruperea de la blocul COMM_BLK la material
#Faza de solicitare
scrie w CMBLK CONTROL 0x10 # Configurați COMM BLK Control #Înregistrați-vă la
activați transferurile pe interfața COMM BLK
scrie w CMBLK INT_ENABLE 0x1 # Configurați COMM BLK Activare întrerupere
#Înregistrați pentru a activa Întreruperea pentru TXTOKAY (bitul corespunzător în
#Status Register)
waitint 19 # așteptați întreruperea COMM BLK, aici #BFM așteaptă
#till COMBLK_INTR este afirmat
readstore w CMBLK STATUS x # Citiți COMM BLK Stare Înregistrați pentru #TXTOKAY
# Întrerupeți
setați xx și 0x1
dacă x
scrieți w CMBLK FRAME_START8 CMD # Configurați COMM BLK FRAME_START8
#Înregistrați-vă pentru a solicita serviciul Număr de serie
endif
endif
waitint 19 # așteptați întreruperea COMM BLK, aici
#BFM așteaptă până când COMBLK_INTR este afirmat
readstore w CMBLK STATUS x # Citiți COMM BLK Stare Înregistrați pentru
#TXTOKAY Întreruperea
setați xx și 0x1
setați xx și 0x1
dacă x
scrie w CMBLK CONTROL 0x14 #Configurați COMM BLK Control
#Înregistrați-vă pentru a activa transferurile pe interfața COMM BLK
scrie w CMBLK DATA32 DESCRIPTOR_ADDR
scrie w CMBLK INT_ENABLE 0x80
scrie w CMBLK CONTROL 0x10
endif
asteapta 20
#Faza de răspuns
astept 19
readstore w CMBLK STATUS x
setați xx și 0x80
dacă x
readcheck w CMBLK FRAME_START8 CMD
scrie w CMBLK INT_ENABLE 0x2
endif
astept 19
readstore w CMBLK STATUS x
setați xx și 0x2
dacă x
readcheck w CMBLK DATA8 0x0
scrie w CMBLK CONTROL 0x18
endif
astept 19
readcheck w FIIC 0x8 0x20000000
readstore w CMBLK STATUS x
setați xx și 0x2
dacă x
readcheck w CMBLK DATA32 DESCRIPTOR_ADDR
endif
readcheck w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck pentru a verifica S/N
readcheck w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck pentru a verifica S/N
readcheck w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck pentru a verifica S/N
readcheck w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck pentru a verifica S/N
reveni - Creați starea. TXT file în editorul HDL al Libero sau în orice editor de text. Includeți comanda de service a sistemului de numere de serie („01” în Hex) și numărul de serie în starea . TXT file. Consultați manualul CoreSysServices v3.1 pentru utilizarea codului de comandă corect.
- Sintaxa acestui lucru file pentru serviciul de număr de serie este, <2 cifre hexadecimale CMD>< 32 cifre hexadecimale Număr de serie> . Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
- Salvați starea .txt file în folderul Simulare al proiectului.
- Editați utilizatorul .bfm (situat în folderul Simulare) pentru a include numărul de serie. bfm file și apelați procedura numărului de serie, așa cum se arată în următorul fragment de cod.
include „serialnum.bfm” #include serialnum.bfm
procedura user_main;
tipăriți „INFO:Simularea începe”;
printează „INFO:Cod de comandă de serviciu în zecimală:%0d”, CMD;
apel serialnum; #apelați procedura serialnum
tipăriți „INFO:Simularea se termină”;
reveni - În Ierarhia de proiectare view, generați testbench (clic dreapta, Top Level Design > Create Testbench > HDL ) și sunteți gata să rulați simularea serviciului de număr de serie.
Odată ce serviciul a început execuția, este afișat un mesaj care indică locația de destinație și numărul de serie. Controlerul de sistem efectuează o scriere AHB la adresa cu numărul de serie. La finalizarea serviciului, RXFIFO al COMM_BLK va fi încărcat cu răspunsul serviciului. Fereastra de transcriere ModelSim afișează adresa și numărul de serie primite, așa cum se arată în figura următoare.
Figura 8 • Simularea serviciului de număr de serie SmartFusion2 în fereastra de transcriere ModelSim
2.7 Simularea serviciului de zeroizare IGLOO2
Pentru a vă pregăti pentru simularea serviciului de zeroizare IGLOO2, efectuați pașii de mai jos.
- Invocați generatorul de sistem pentru a crea blocul HPMS. Bifați caseta de selectare HPMS System Services din Device Features SYS_SERVICES_MASTER BIF. Lăsați toate celelalte casete de selectare nebifate. Acceptați valoarea implicită în toate celelalte pagini și faceți clic pe pagină. Aceasta instruiește generatorul de sistem să expună HPMS_FIC_0 Finish pentru a finaliza configurarea blocului de constructor de sistem.
- În editorul HDL al SoC Libero, scrieți codul HDL pentru FSM. În codul HDL pentru FSM, includeți următoarele trei stări.
stare INIT (stare inițială)
SERV_PHASE (starea solicitării serviciului)
RSP_PHASE (starea răspunsului serviciului)
Figura următoare prezintă cele trei stări ale FSM.
Figura 9 • FSM cu trei state - În codul HDL, utilizați codul de comandă „F0″(Hex) pentru a intra în starea de solicitare a serviciului din starea INIT.
- Salvați-vă HDL file.
- Deschideți SmartDesign, trageți și plasați blocul de generator de sistem de nivel superior și blocul HDL FSM în pânza SmartDesign. Din catalog, trageți și plasați nucleul IP soft CoreSysService în pânza SmartDesign.
- Faceți clic dreapta pe miezul IP soft CoreSysServices pentru a deschide configuratorul și bifați caseta de selectare Zeroization Service din grupul Data Security Services. Lăsați toate celelalte casete de selectare nebifate. Faceți clic pentru a ieși OK.
Figura 10 • CoreSysServices Configurator
- Conectați HPMS_FIC_0 SYS_SERVICES_MASTER BIF al blocului de constructor de sistem la AHBL_MASTER BIF al blocului CoreSysService.
- Conectați ieșirea blocului dumneavoastră HDL FSM la intrarea nucleului IP soft CoreSysService. Faceți toate celelalte conexiuni în pânza SmartDesign.
Figura 11 • SmartDesign Canvas cu HDL Block, CoreSysServices Soft IP și HPMS Blocks
9. În pânza SmartDesign, generați designul de nivel superior (clic dreapta > Generare componentă).
10. În Ierarhia de proiectare view, faceți clic dreapta pe designul de nivel superior și selectați create Testbench > HDL. Acum sunteți gata să rulați simularea.
Odată ce serviciul a început execuția, este afișat un mesaj care indică faptul că zeroizarea a fost finalizată la momentul x, așa cum se arată în figura următoare.
Figura 12 • Fereastra de transcriere a simularii serviciului sistemului de zeroizare IGLOO2
Controlerul de sistem efectuează o scriere AHB la adresa cu numărul de serie. La finalizarea serviciului, RXFIFO al COMM_BLK va fi încărcat cu răspunsul serviciului. Trebuie remarcat faptul că modelul de simulare simulează zeroizarea prin oprirea simulării, mai degrabă decât prin zeroizarea designului în sine.
Notă: Pentru o listă completă a codurilor de comandă care vor fi utilizate pentru diferite servicii de sistem, consultați Tabelul 1 (Valori de comandă/răspuns pentru serviciile de sistem) din CoreSysServices v3.1 Manual:. sau UG0450: Ghidul utilizatorului pentru controlerul de sistem SmartFusion2 SoC și IGLOO2 FPGA
2.8 Simularea serviciului de zeroizare SmartFusion2
În acest ghid, comenzile BFM (opțiunea 2) sunt utilizate pentru a accesa controlerul de sistem pentru service-ul sistemului.
Comenzile BFM sunt utilizate deoarece procesorul Cortex-M3 este disponibil pe dispozitiv pentru simularea BFM. Comenzile BFM vă permit să scrieți direct și să citiți din COMM BLK odată ce cunoașteți maparea memoriei COMM_BLK. Pentru a vă pregăti designul pentru simularea serviciului de zeroizare SmartFusion2, efectuați următorii pași.
- Trageți și plasați MSS din catalog în pânza de proiectare a proiectului dvs.
- Dezactivați toate perifericele MSS, cu excepția MSS_CCC, Reset Controller, Interrupt Management și FIC_0, FIC_1 și FIC_2.
- Configurați gestionarea întreruperilor pentru a utiliza MSS pentru întrerupere de fabrică.
- Pregătiți zeroizare.bfm file într-un editor de text sau în editorul HDL al Libero. Zeroizarea ta. bfm ar trebui să includă:
- Maparea memoriei la COMM BLK (CMBLK)
- Maparea memoriei la perifericul de gestionare a întreruperii (FIIC)
- Comandă pentru cerere de serviciu de zeroizare („F0” Hex pentru zeroizare)
Un example din serianum.bfm file este prezentată în figura următoare.
Figura 13 • Zeroization.bfm pentru SmartFusion2 Zeroization System Services Simulation
5. Salvați zeroization.bfm file în folderul Simulare al proiectului. user.bfm
6. Editați (situat în folderul de simulare zeroization.bfm) pentru a include folosind următorul fragment de cod.
include „zeroization.bfm” #include zeroization.bfm file procedura user_main;
tipăriți „INFO:Simularea începe”;
printează „INFO:Cod de comandă de serviciu în zecimală:%0d”, CMD;
zeroizarea apelului; #apel înapoi procedura de zeroizare
7. În Ierarhia de proiectare , generați testbench (clic dreapta la nivel superior > Create Testbench > HDL ) și sunteți gata să rulați simularea de zeroizare SmartFusion2.
Odată ce serviciul a început execuția, este afișat un mesaj care indică faptul că dispozitivul a fost pus la zero la momentul x. Trebuie remarcat faptul că modelul de simulare simulează zeroizarea prin oprirea simulării, mai degrabă decât prin zeroizarea designului în sine. Fereastra de transcriere ModelSim din figura următoare arată că dispozitivul a fost zero.
Figura 14 • Jurnal de simulare a serviciului de sistem de zeroizare SmartFusion2
Anexă: Tipuri de servicii de sistem
Acest capitol descrie diferite tipuri de servicii de sistem.
3.1 Servicii de mesaje de simulare
Următoarele secțiuni descriu diferite tipuri de servicii de mesaje de simulare.
3.1.1 Flash*Freeze
Simularea va intra în starea Flash*Freeze atunci când cererea de serviciu adecvată este trimisă către COMM_BLK fie de la FIC (în cazul dispozitivelor IGLOO2) fie de la Cortex-M3 (în cazul dispozitivelor SmartFusion2). Odată ce serviciul a fost detectat de controlerul sistemului, simularea va fi oprită și va fi afișat un mesaj care indică faptul că sistemul a intrat în Flash*Freeze (împreună cu opțiunea selectată). La reluarea simulării, RXFIFO al COMM_BLK va fi completat cu răspunsul de serviciu constând din comanda și starea serviciului. Trebuie remarcat faptul că nu există suport pentru simulare pentru ieșirea Flash*Freeze.
3.1.2 Reducerea la zero
Zeroization este în prezent singurul serviciu cu prioritate ridicată din serviciile de sistem procesate de COMM_BLK. Simularea va intra în starea de zero de îndată ce cererea corectă de serviciu este detectată de COMM_BLK. Execuția altor servicii va fi oprită și eliminată de controlerul de sistem, iar serviciul de zeroizare va fi executat în schimb. Odată ce solicitarea serviciului de zeroizare este detectată, simularea se oprește și este afișat un mesaj care indică faptul că sistemul a intrat în zero. Repornirile manuale ale simulării după zero sunt invalide.
3.2 Servicii Data Pointer
Următoarele secțiuni descriu diferite tipuri de servicii de indicatori de date.
3.2.1 Număr de serie
Serviciul de numere de serie va scrie un număr de serie de 128 de biți într-o locație de adresă furnizată ca parte a cererii de serviciu. Acest parametru pe 128 de biți poate fi setat utilizând un suport de simulare a serviciului de sistem file (vezi pagina 22) . Dacă parametrul numărului de serie pe 128 de biți nu este definit în file, va fi folosit un număr de serie implicit de 0. Odată ce serviciul a început execuția, este afișat un mesaj care indică locația de destinație și numărul de serie. Controlerul de sistem efectuează o scriere AHB la adresa cu numărul de serie. La finalizarea serviciului, RXFIFO al COMM_BLK va fi încărcat cu răspunsul serviciului.
3.2.2 Cod utilizator
Serviciul de cod de utilizator scrie un parametru de cod de utilizator pe 32 de biți într-o locație de adresă furnizată ca parte a cererii de serviciu. Acest parametru pe 32 de biți poate fi setat utilizând System Service Simulation Support file (vezi pagina 22). Dacă parametrul pe 32 de biți nu este definit în file, este utilizată o valoare implicită de 0. Odată ce serviciul a început execuția, este afișat un mesaj care indică locația țintă și codul de utilizator. Controlerul de sistem efectuează o scriere AHB la adresa cu parametrul pe 32 de biți. La finalizarea serviciului, RXFIFO al COMM_BLK este încărcat cu răspunsul serviciului, care include comanda de serviciu și adresa țintă.
3.3 Servicii de descriptor de date
Următoarele secțiuni descriu diferite tipuri de servicii de descriptor de date.
3.3.1 AES
Suportul de simulare pentru acest serviciu este preocupat doar de mutarea datelor originale de la sursă la destinație, fără a efectua efectiv vreo criptare/decriptare a datelor. Datele care trebuie criptate/decriptate și structura datelor trebuie scrise înainte ca cererea de serviciu să fie trimisă. Odată ce serviciul a început execuția, este afișat un mesaj care indică execuția serviciului AES. Serviciul AES citește atât structura datelor, cât și datele care urmează să fie criptate/decriptate. Datele originale sunt copiate și scrise la adresa furnizată în structura de date. Odată ce serviciul este finalizat, comanda, starea și adresa structurii de date sunt introduse în RXFIFO.
Nota: Acest serviciu este doar pentru date pe 128 de biți și 256 de biți, iar datele de 128 de biți și 256 de biți au lungimi diferite ale structurii de date.
3.3.2 SHA 256
Suportul de simulare pentru acest serviciu este preocupat doar de mutarea datelor, fără a efectua efectiv niciun hashing asupra datelor. Funcția SHA 256 este concepută pentru a genera o cheie hash de 256 de biți pe baza datelor de intrare. Datele care trebuie să fie analizate prin hash și structura de date trebuie scrise la adresele lor respective înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Lungimea în biți și pointerul definite în structura de date SHA 256 trebuie să corespundă corect lungimii și adresei datelor care urmează să fie hashing. Odată ce serviciul a început execuția, este afișat un mesaj care indică execuția serviciului SHA 256. În loc să execute funcția reală, o cheie hash implicită va fi scrisă în pointerul de destinație din structura de date. Cheia hash implicită este hex „ABCD1234”. Pentru a seta o cheie personalizată, mergeți la secțiunea Setare parametri (vezi pagina 23). La finalizarea serviciului, RXFIFO este încărcat cu răspunsul serviciului constând din comanda de serviciu, starea și indicatorul de structură de date SHA 256.
3.3.3 HMAC
Suportul de simulare pentru acest serviciu se referă doar la mutarea datelor, fără a efectua efectiv niciun hashing asupra datelor. Datele care trebuie să fie analizate prin hash și structura de date trebuie scrise la adresele lor respective înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Serviciul HMAC necesită o cheie de 32 de octeți în plus față de lungimea în octeți, pointerul sursă și pointerul destinație. Odată ce serviciul a început execuția, este afișat un mesaj care indică execuția serviciului HMAC. Cheia este citită și cheia de 256 de biți este copiată din structura de date în pointerul de destinație. La finalizarea serviciului, RXFIFO este încărcat cu răspunsul serviciului constând din comanda de serviciu, starea și pointerul structurii de date HMAC.
3.3.4 DRBG Generare
Generarea de biți aleatori este realizată de acest serviciu. Trebuie remarcat faptul că modelul de simulare nu urmează exact aceeași metodologie de generare a numerelor aleatoare utilizată de siliciu. Structura de date trebuie scrisă corect în locația dorită înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Structura datelor, indicatorul de destinație, lungimea și alte date relevante sunt citite de controlerul de sistem. Serviciul de generare DRBG generează un set pseudoaleator de date cu lungimea cerută (0-128). Controlerul de sistem scrie datele aleatorii în pointerul de destinație. Un mesaj care indică execuția serviciului de generare DRBG este afișat în simulare. Odată ce serviciul este finalizat, comanda, starea și adresa structurii de date sunt introduse în RXFIFO. Dacă lungimea datelor solicitată nu este în intervalul 0-128, un cod de eroare „4” (Max Generate) va fi introdus în RXFIFO. Dacă lungimea datelor suplimentare nu se află în intervalul Solicitare prea mare de 0-128, un cod de eroare de „5” (Lungimea maximă a datelor suplimentare depășite) va fi împins în RXFIFO. Dacă atât lungimea datelor solicitată pentru generare, cât și lungimea datelor suplimentare nu se află în intervalul definit (0-128), un cod de eroare de „1” (Eroare catastrofică) este introdus în RXFIFO.
3.3.5 Resetare DRBG
Funcția de resetare reală este realizată prin eliminarea instanțiilor DRBG și resetarea DRBG. Odată ce solicitarea de service a fost detectată, simularea afișează un mesaj DRBG Reset service finalizat. Răspunsul, care include serviciul și starea, este împins în RXFIFO.
3.3.6 Autotest DRBG
Suportul de simulare pentru autotestul DRBG nu execută de fapt funcția de autotest. Odată ce cererea de serviciu a fost detectată, simularea va afișa un mesaj de execuție a serviciului de autotest DRBG. Răspunsul, care include serviciul și starea, va fi introdus în RXFIFO.
3.3.7 Instanțierea DRBG
Suportul de simulare pentru serviciul de instanțiere DRBG nu realizează de fapt serviciul de instanțiere. Structura de date trebuie scrisă corect în locația dorită înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Odată ce cererea de serviciu a fost detectată, vor fi citite structura și șirul de personalizare definit în spațiul de adrese MSS. Simularea va afișa un mesaj care indică faptul că serviciul DRBG Instantiate a început execuția. Odată ce serviciul este complet, răspunsul, care include comanda serviciului, starea și indicatorul către structura de date, va fi împins în RXFIFO. Dacă lungimea datelor (PERSONALIZATIONLENGTH) nu este în intervalul 0-128, un cod de eroare de „1” (Eroare catastrofică) va fi introdus în RXFIFO pentru stare.
3.3.8 DRBG Uninstantiate
Suportul de simulare pentru serviciul de neinstanțiere DRBG nu realizează de fapt serviciul de neinstanțiere de eliminare a unui DRBG instanțiat anterior, așa cum face siliciul. Solicitarea de service trebuie să includă atât comanda, cât și mânerul DRBG. Odată ce cererea de serviciu a fost detectată, mânerul DRBG va fi stocat. Simularea va afișa un mesaj care indică faptul că serviciul de neinstanțiere DRBG a fost inițializat. Odată ce serviciul este finalizat, răspunsul, care include comanda de service, starea și mânerul DRBG, va fi împins în RXFIFO.
3.3.9 Reseed DRBG
Datorită naturii simulative a blocului de servicii de sistem, serviciul de reseed DRBG în simulare nu este executat automat după fiecare 65535 DRBG generează servicii. Structura de date trebuie scrisă corect în locația dorită înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Odată ce cererea de serviciu a fost detectată, vor fi citite structura și parametrul de intrare suplimentar din spațiul de adrese MSS. Va fi afișat un mesaj care indică faptul că serviciul de reseed DRBG a început să fie executat. Structura de date trebuie scrisă corect în locația dorită înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Odată ce serviciul este complet, răspunsul, care include comanda serviciului, starea și indicatorul către structura de date, va fi împins în RXFIFO.
3.3.10 KeyTree
Funcția actuală nu este executată în simulare pentru serviciul KeyTree. Structura de date a serviciului KeyTree constă dintr-o cheie de 32 de octeți, date optype de 7 biți (MSB ignorat) și o cale de 16 octeți. Datele din structura de date trebuie scrise la adresele lor respective, înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Odată ce serviciul a început execuția, va fi afișat un mesaj care indică execuția serviciului KeyTree. Conținutul structurii de date va fi citit, cheia de 32 de octeți va fi stocată și cheia originală situată în structura de date este suprascrisă. După această scriere AHB, valoarea cheii din structura de date nu ar trebui să se schimbe, dar vor avea loc tranzacții AHB pentru scriere. La finalizarea serviciului, RXFIFO este încărcat cu răspunsul serviciului, constând din comanda serviciului, stare și indicatorul de structură de date KeyTree.
3.3.11 Răspuns la provocare
Funcția reală, cum ar fi autentificarea dispozitivului, nu este executată în simulare pentru serviciul de răspuns la provocări. Structura de date pentru acest serviciu necesită un pointer către buffer, pentru a primi un rezultat de 32 de biți, optip de 7 biți și o cale de 128 de biți. Datele din structura de date trebuie scrise la adresele lor respective înainte ca cererea de serviciu să fie trimisă către COMM_BLK. Odată ce serviciul a început execuția, va fi afișat un mesaj care indică execuția serviciului de răspuns la provocare. Un răspuns generic de 256 de biți va fi scris în pointerul furnizat în structura de date. Cheia implicită este setată ca hex „ABCD1234”. Pentru a obține o cheie personalizată, verificați Setarea parametrilor (vezi pagina 23). La finalizarea serviciului, RXFIFO va fi încărcat cu răspunsul de serviciu, constând din comanda de serviciu, starea și indicatorul de structură a datelor de răspuns la provocare.
3.4 Alte Servicii
Următoarele secțiuni descriu diverse alte servicii de sistem.
3.4.1 Verificare Digest
Funcția reală de recalculare și comparare a rezumatelor componentelor selectate nu este executată pentru serviciul de verificare a rezumatului în simulare. Această solicitare de serviciu constă din comenzi de serviciu și opțiuni de serviciu (LSB de 5 biți). Odată ce serviciul a început execuția, va fi afișat un mesaj care detaliază execuția serviciului de verificare digest, împreună cu opțiunile selectate din cerere. La finalizarea serviciului, RXFIFO va fi încărcat cu răspunsul serviciului, constând din comanda de serviciu și steagurile de trecere/eșec de verificare a digest.
3.4.2 Răspuns de comandă nerecunoscut
Când o solicitare de serviciu nerecunoscută este trimisă către COMM_BLK, COMM_BLK va răspunde automat cu un mesaj de comandă nerecunoscut introdus în RXFIFO. Mesajul constă din comanda trimisă în COMM_BLK și starea comenzii nerecunoscută (252D). Va fi afișat și un mesaj afișat care indică o solicitare de serviciu nerecunoscută. COMM_BLK va reveni la starea inactivă, așteptând să accepte următoarea solicitare de serviciu.
3.4.3 Servicii neacceptate
Serviciile neacceptate setate la COMM_BLK vor declanșa un mesaj în simulare care indică faptul că cererea de serviciu nu este acceptată. COMM_BLK va reveni la o stare inactivă, așteptând să accepte următoarea solicitare de serviciu. PINTERRUPT nu va fi setat, indicând faptul că un serviciu a fost finalizat. Lista actuală de servicii neacceptate include: IAP, ISP, certificat de dispozitiv și serviciul DESIGNVER.
3.5 Suport pentru simularea serviciilor de sistem File
Pentru a sprijini simularea serviciilor de sistem, un text file numit „status.txt” poate fi folosit pentru a transmite instrucțiuni despre comportamentul necesar al modelului de simulare modelului de simulare. Acest file ar trebui să fie localizat în același folder din care se rulează simularea. The file poate fi folosit, printre altele, pentru a forța anumite răspunsuri de eroare pentru serviciile de sistem suportate sau chiar pentru setarea unor parametri necesari pentru simulare, (de ex.ample, număr de serie). Numărul maxim de linii acceptate în „status.txt” file este 256. Instrucțiunile care apar după numărul rândului 256 nu vor fi folosite în simulare.
3.5.1 Forțarea răspunsurilor la eroare
Utilizatorul poate forța un anumit răspuns de eroare pentru un anumit serviciu în timpul testării prin transmiterea informațiilor către modelul de simulare folosind „status.txt” file, care ar trebui să fie plasat în folderul din care se rulează simularea. Pentru a forța răspunsuri de eroare la un anumit serviciu, comanda și răspunsul necesar trebuie introduse în aceeași linie în următorul format:ample, la Comandă> ; instruiți modelul de simulare să genereze un răspuns de eroare de acces la memorie MSS la serviciul de număr de serie, comanda este după cum urmează.
Serviciu: Număr de serie: 01
Mesajul de eroare solicitat: Eroare de acces la memorie MSS: 7F
Ar trebui să aveți linia 017F introdusă în „status.txt” file.
3.5.2 Setarea parametrilor
„status.txt” file poate fi folosit și pentru a seta unii parametri necesari în simulare. Ca un example, pentru a seta parametrul pe 32 de biți pentru codul utilizatorului, formatul liniei trebuie să fie în această ordine: <COD UTILIZATOR 32 biți>; unde ambele valori sunt introduse în hexazecimal. Pentru a seta parametrul de 128 de biți pentru numărul de serie, formatul liniei trebuie să fie în această ordine: <Număr de serie 128 biți [127:0]> ; unde ambele valori sunt introduse în hexazecimal. Pentru a seta parametrul de 256 de biți pentru cheia SHA 256; formatul liniei trebuie să fie în această ordine: <Tasta de 256 biți [255:0]>; unde ambele valori sunt introduse în hexazecimal. Pentru a seta parametrul de 256 de biți pentru cheia de răspuns la provocare, formatul liniei trebuie să fie în această ordine: <Tasta de 256 biți [255:0]>;
unde ambele valori sunt introduse în hexazecimal.
3.5.3 Prioritatea dispozitivului
Serviciile de sistem și COMM_BLK utilizează un sistem cu prioritate ridicată. În prezent, singurul serviciu cu prioritate ridicată este zeroizarea. Pentru a efectua un serviciu cu prioritate înaltă, în timp ce se execută un alt serviciu, serviciul curent este oprit, iar în locul acestuia va fi executat serviciul cu prioritate superioară. COMM_BLK va renunța la serviciul curent pentru a efectua serviciul cu prioritate mai mare. Dacă mai multe servicii fără prioritate sunt trimise înainte de finalizarea unui serviciu curent, aceste servicii vor fi puse în coadă în TXFIFO. Odată ce serviciul curent este complet, următorul serviciu din TXFIFO va fi executat.
Microsemi nu oferă nicio garanție, reprezentare sau garanție cu privire la informațiile conținute aici sau adecvarea produselor și serviciilor sale pentru un anumit scop și nici Microsemi nu își asumă nicio răspundere care decurge din aplicarea sau utilizarea oricărui produs sau circuit. Produsele vândute mai jos și orice alte produse vândute de Microsemi au fost supuse unor teste limitate și nu trebuie utilizate împreună cu echipamente sau aplicații esențiale. Se consideră că orice specificații de performanță sunt de încredere, dar nu sunt verificate, iar Cumpărătorul trebuie să efectueze și să finalizeze toate testele de performanță și alte teste ale produselor, singure și împreună cu sau instalate în orice produs final. Cumpărătorul nu se va baza pe date și specificații de performanță sau parametri furnizați de Microsemi. Este responsabilitatea Cumpărătorului să determine în mod independent caracterul adecvat al oricărui produs și să le testeze și să le verifice. Informațiile furnizate de Microsemi mai jos sunt furnizate „ca atare, unde se află” și cu toate defecțiunile, iar întregul risc asociat cu astfel de informații revine în totalitate Cumpărătorului. Microsemi nu acordă, în mod explicit sau implicit, niciunei părți niciun drept de brevet, licență sau orice alte drepturi de proprietate intelectuală, indiferent dacă se referă la astfel de informații în sine sau la orice lucru descris de astfel de informații. Informațiile furnizate în acest document sunt proprietatea Microsemi, iar Microsemi își rezervă dreptul de a face orice modificări ale informațiilor din acest document sau ale oricăror produse și servicii în orice moment, fără notificare.
Microsemi, o subsidiară deținută în totalitate a Microchip Technology Inc. (Nasdaq: MCHP), oferă un portofoliu cuprinzător de soluții de semiconductori și sisteme pentru industria aerospațială și apărare, comunicații, centre de date și piețe industriale. Produsele includ circuite integrate analogice cu semnal mixt de înaltă performanță și întărite la radiații, FPGA, SoC și ASIC; produse de management al energiei; dispozitive de cronometrare și sincronizare și soluții de timp precise, stabilind standardul mondial pentru timp; Dispozitive de procesare a vocii; soluții RF; componente discrete; soluții de stocare și comunicații pentru întreprinderi; tehnologii de securitate și scalabil anti-tamper produse; soluții Ethernet; Circuite integrate și midspan-uri Power-over-Ethernet; precum și capabilități și servicii de design personalizat. Microsemi are sediul în Aliso Viejo, California, și are aproximativ 4,800 de angajați la nivel global. Aflați mai multe la www.microsemi.com.
Sediul Microsemi
One Enterprise, Aliso Viejo,
CA 92656 SUA
În SUA: +1 800-713-4113
În afara SUA: +1 949-380-6100
Vânzări: +1 949-380-6136
Fax: +1 949-215-4996
E-mail: vânzări.support@microsemi.com
www.microsemi.com
© 2018 Microsemi. Toate drepturile rezervate. Microsemi și sigla Microsemi
sunt mărci comerciale ale Microsemi Corporation. Toate celelalte mărci comerciale și servicii
mărcile sunt proprietatea deținătorilor respectivi.
Documente/Resurse
![]() |
Simulare de servicii de sistem Microsemi UG0837 IGLOO2 și SmartFusion2 FPGA [pdfGhid de utilizare UG0837, UG0837 IGLOO2 și SmartFusion2 FPGA System Services Simulation, IGLOO2 și SmartFusion2 FPGA System Services Simulation, SmartFusion2 FPGA System Services Simulation, FPGA System Services Simulation, Services Simulation |