Logo microsemi

UG0837
Guide de l'utilisateur
FPGA IGLOO2 et SmartFusion2
Simulation des services système
Juin 2018

Historique des révisions

L'historique des révisions décrit les modifications apportées au document. Les modifications sont répertoriées par révision, en commençant par la publication la plus récente.
1.1 Révision 1.0
La révision 1.0 a été publiée en juin 2018. Il s'agissait de la première publication de ce document.

Simulation des services système IGLOO2 et SmartFusion2 FPGA

Le bloc Services système de la famille SmartFusion®2 FPGA comprend un ensemble de services responsables de diverses tâches. Il s'agit notamment des services de messagerie de simulation, des services de pointeur de données et des services de descripteur de données. Les services système sont accessibles via le Cortex-M3 dans SmartFusion2 et depuis la structure FPGA via le contrôleur d'interface de structure (FIC) pour SmartFusion2 et IGLOO®2. Ces méthodes d'accès sont envoyées au contrôleur système via COMM_BLK. Le COMM_BLK possède une interface de bus périphérique avancé (APB) et agit comme un conduit de transmission de messages pour échanger des données avec le contrôleur système. Les demandes de service système sont envoyées au contrôleur système et les réponses de service système sont envoyées au CoreSysSerrvice via le COMM BLK. L'emplacement de l'adresse pour le COMM_BLK est disponible à l'intérieur du sous-système de microcontrôleur (MSS)/sous-système de mémoire haute performance (HPMS). Pour plus de détails, voir le UG0450 : SmartFusion2 SoC et IGLOO2 FPGA System Controller.
Guide de l'utilisateur
L'illustration suivante montre le flux de données des services système.
Figure 1 • Diagramme de flux de données de service systèmeSimulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Diagramme de flux de donnéesPour la simulation de service système IGLOO2 et SmartFusion2, vous devez envoyer des demandes de service système et vérifier les réponses du service système pour vérifier que la simulation est correcte. Cette étape est nécessaire pour accéder au contrôleur système, qui fournit les services système. La manière d'écrire et de lire à partir du contrôleur système est différente pour les appareils IGLOO2 et SmartFusion2. Pour SmartFusion2, le Coretex-M3 est disponible et vous pouvez écrire et lire à partir du contrôleur système à l'aide des commandes du modèle fonctionnel de bus (BFM). Pour IGLOO2, le Cortex-M3 n'est pas disponible et le contrôleur système n'est pas accessible à l'aide des commandes BFM.
2.1 Types de services système disponibles
Trois différents types de services système sont disponibles et chaque type de service a différents sous-types.
Services de messagerie de simulation
Services de pointeur de données
Services de descripteurs de données
Le chapitre Annexe – Types de services système (voir page 19) de ce guide décrit les différents types de services système. Pour plus d'informations sur les services système, voir UG0450 : SmartFusion2 SoC et IGLOO2 FPGA System Controller User Guide .
2.2 Simulation des services du système IGLOO2
Les services système impliquent l'écriture et la lecture à partir du contrôleur système. Pour écrire et lire sur le contrôleur système à des fins de simulation, vous devez suivre les étapes ci-dessous.

  1. Instanciez le soft IP core CoreSysServices, disponible dans le catalogue SmartDesign.
  2. Écrivez le code HDL d'une machine à états finis (FSM).

Le HDL FSM s'interface avec le CoreSysServices Core, qui sert de maître de structure du bus AHBLite. Le noyau CoreSysServices initie une demande de service système au COMM BLK et reçoit des réponses de service système du COMM BLK via le contrôleur d'interface de matrice FIC_0/1, comme indiqué dans l'illustration suivante.
Figure 2 • Topologie de simulation des services système IGLOO2Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Diagramme de flux de données 12.3 Simulation des services du système SmartFusion2
Pour simuler les services système dans les appareils SmartFusion2, vous devez écrire et lire à partir du contrôleur système. Deux options sont disponibles pour accéder au contrôleur du système à des fins de simulation.
Option 1 — Écrivez le code HDL pour qu'un FSM s'interface avec le noyau IP logiciel CoreSysService, qui sert de maître de structure AHBLite et initie une demande de service système au COMM BLK et reçoit les réponses de service système du COMM BLK via la structure FIC_0/1 l'interface comme indiqué dans l'illustration suivante.
Figure 3 • Topologie de simulation des services système SmartFusion2Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Diagramme de flux de données 2

Option 2 — Comme le Cortex-M3 est disponible pour les appareils SmartFusion2, vous pouvez utiliser les commandes BFM pour écrire et lire directement dans l'espace mémoire du contrôleur système.
L'utilisation des commandes BFM (option 2) évite d'avoir à écrire les codes HDL pour le FSM. Dans ce guide de l'utilisateur, l'option 2 est utilisée pour afficher la simulation des services système dans SmartFusion2. Avec cette option, l'espace mémoire du contrôleur système est accessible pour connaître la carte mémoire du COMM BLK et le bloc FIIC (Fabric Interface Interrupt Controller) lorsque vous écrivez vos commandes BFM.
2.4 SimulationExamples
Le guide de l'utilisateur couvre les simulations suivantes.

  • Simulation de service de numéro de série IGLOO2 (voir page 5)
  • Simulation de service de numéro de série SmartFusion2 (voir page 8)
  • Simulation du service de mise à zéro IGLOO2 (voir page 13)
  • Simulation du service de mise à zéro SmartFusion2 (voir page 16)

Des méthodes de simulation similaires peuvent être appliquées à d'autres services du système. Pour une liste complète des différents services système disponibles, consultez l'Annexe – Types de services système (voir page 19).

2.5 Simulation du service de numéro de série IGLOO2
Pour préparer la simulation de service de numéro de série IGLOO2, procédez comme suit.

  1. Appelez le générateur de système pour créer votre bloc HPMS.
  2. Cochez la case HPMS System Services sur la page Device Features. Cela demandera au constructeur du système d'exposer l'interface de bus HPMS_FIC_0 SYS_SERVICES_MASTER (BIF).
  3. Laissez toutes les autres cases décochées.
  4. Acceptez la valeur par défaut dans toutes les autres pages et cliquez sur Terminer pour terminer le bloc de création de système. Dans l'éditeur HDL du Libero® SoC, écrivez le code HDL pour le FSM (File > Nouveau > HDL) . Incluez les trois états suivants dans votre FSM.
    État INIT (état initial)
    SERV_PHASE (état de la demande de service)
    RSP_PHASE (état de réponse du service).
    La figure suivante montre les trois états de FSM.
    Figure 4 • FSM à trois états
  5. Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - FSM à trois états 1Dans votre code HDL pour le FSM, utilisez le code de commande correct ("01" Hex pour le service de numéro de série) pour entrer l'état de demande de service à partir de l'état INIT.
  6. Sauvegardez votre HDL file. Le FSM apparaît en tant que composant dans la hiérarchie de conception .
  7. Ouvrez Smart Design. Faites glisser et déposez votre bloc de création de système de niveau supérieur et votre bloc FSM dans le canevas SmartDesign. Depuis le catalogue, faites glisser et déposez le noyau IP logiciel CoreSysService dans le canevas SmartDesign.
  8. Cliquez avec le bouton droit sur le noyau IP logiciel CoreSysService pour ouvrir le configurateur. Cochez la case Serial Number Service (sous Device and Design Information Services
    groupe) pour activer le service de numéro de série.
  9. Laissez toutes les autres cases décochées. Cliquez sur OK pour quitter le configurateur.
    Figure 5 • Configurateur de noyau IP logiciel CoreSysServices
    Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Configurateur de base
  10. Connectez le HPMS_FIC_0 SYS_SERVICES_MASTER BIF du bloc de création de système au AHBL_MASTER BIF du bloc CoreSysService.
  11. Connectez la sortie de votre bloc HDL FSM à l'entrée du noyau IP logiciel CoreSysService. Effectuez toutes les autres connexions dans le canevas SmartDesign comme indiqué dans la figure suivante.
    Figure 6 • SmartDesign Canvas avec bloc HDL, CoreSysServices Soft IP et blocs HPMSSimulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Blocs HPMS
  12. Dans le canevas SmartDesign, cliquez avec le bouton droit de la souris sur >Générer le composant pour générer la conception de niveau supérieure.
  13. Dans la hiérarchie de conception view, cliquez avec le bouton droit sur la conception de niveau supérieur et sélectionnez créer Testbench > HDL .
  14. Utiliser un éditeur de texte pour créer un texte file nommé "status.txt" .
  15. Incluez la commande pour le service système et le numéro de série 128 bits. Pour plus d'informations, reportez-vous au tableau 1 (valeurs de commande/réponse des services système) dans le Manuel CoreSysServices v3.1 pour les codes de commande (Hex) à utiliser pour les différents services du système. Pour le service de numéro de série, le code de commande est "01" Hex.

Le format du status.txt file pour le service de numéro de série est la suivante.
< CMD à 2 chiffres hexadécimaux>< Numéro de série à 32 chiffres hexadécimaux>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Enregistrez le status.txt file dans le dossier Simulation de votre projet. La conception est maintenant prête pour la simulation.
Une fois que le service a commencé son exécution, un message indiquant l'emplacement de destination et le numéro de série s'affiche dans la fenêtre de transcription de ModelSim, comme illustré dans la figure suivante.
Figure 7 • Fenêtre de transcription de simulation ModelSimSimulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Fenêtre de transcriptionLe contrôleur système effectue une écriture AHB à l'adresse avec le numéro de série. À la fin du service, le RXFIFO de COMM_BLK sera chargé avec la réponse du service.
Remarque : Pour obtenir une liste complète des codes de commande à utiliser pour les différents services système, consultez le tableau 1 (valeurs de commande/réponse des services système) dans le manuel CoreSysServices v3.1 ou UG0450 : SmartFusion2 SoC et IGLOO2 FPGA System Controller User Guide.
2.6 Simulation du service de numéro de série SmartFusion2
Dans ce guide de l'utilisateur, les commandes BFM (option 2) sont utilisées pour accéder au contrôleur système pour le service système. Les commandes BFM sont utilisées car le processeur Cortex-M3 est disponible sur l'appareil pour la simulation BFM. Les commandes BFM vous permettent d'écrire et de lire directement dans le COMM BLK une fois que vous connaissez le mappage mémoire du COMM_BLK.
Pour préparer votre conception pour la simulation de service de numéro de série SmartFusion2, procédez comme suit.

  1. Faites glisser et déposez le MSS du catalogue vers le canevas de conception de votre projet.
  2. Désactivez tous les périphériques MSS sauf MSS_CCC, Reset Controller, Interrupt Management et FIC_0, FIC_1 et FIC_2.
  3. Configurez la gestion des interruptions pour utiliser MSS pour interrompre la matrice.
  4. Préparez le serialnum.bfm file dans un éditeur de texte ou dans l'éditeur HDL de Libero. Enregistrez le numéro de série.bfm file dans le dossier Simulation du projet. Le serialnum.bfm doit inclure les détails suivants.
    • Cartographie de la mémoire vers le COMM BLK (CMBLK)
    • Mappage de la mémoire vers le périphérique de gestion des interruptions (FIIC)
    • Commande pour la demande de service du système de numéro de série ("01" Hex)
    • Adresse pour l'emplacement du numéro de série
    Un exampfichier du numéro de série.bfm file est comme suit.
    memmap FIIC 0x40006000 ; #Mappage de la mémoire pour la gestion des interruptions
    carte mémoire CMBLK 0x40016000 ; #Mappage de la mémoire vers COMM BLK
    memmap DESCRIPTOR_ADDR 0x20000000 ; # Emplacement de l'adresse pour le numéro de série
    #Code de commande en hexadécimal
    constante CMD 0x1 # Code de commande pour Serial NumberService
    Registres de configuration #FIIC
    constante FICC_INTERRUPT_ENABLE0 0x0
    Registres de configuration #COMM_BLK
    constante CONTRÔLE 0x00
    ÉTAT constant 0x04
    constante INT_ENABLE 0x08
    constante DATA8 0x10
    constante DATA32 0x14
    constante FRAME_START8 0x18
    constante FRAME_START32 0x1C
    numéro de série de la procédure ;
    int x;
    écrire w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Configure
    #FICC_INTERRUPT_ENABLE0 # Enregistrez-vous pour activer COMBLK_INTR #
    #interruption du bloc COMM_BLK à la matrice
    # Phase de demande
    écrire w CMBLK CONTROL 0x10 # Configurer COMM BLK Control #Enregistrer sur
    activer les transferts sur l'interface COMM BLK
    écrire w CMBLK INT_ENABLE 0x1 # Configurer l'activation de l'interruption COMM BLK
    #Register to enable Interrupt for TXTOKAY (Bit correspondant dans le
    #Registre d'état)
    waitint 19 # attend l'interruption COMM BLK, ici #BFM attend
    # jusqu'à ce que COMBLK_INTR soit affirmé
    readstore w CMBLK STATUS x # Lire le registre d'état COMM BLK pour #TXTOKAY
    # Interrompre
    définir xx et 0x1
    si x
    écrire w CMBLK FRAME_START8 CMD # Configurer COMM BLK FRAME_START8
    #Inscrivez-vous pour demander le service de numéro de série
    fin si
    fin si
    waitint 19 # attend l'interruption COMM BLK, ici
    #BFM attend que COMBLK_INTR soit affirmé
    readstore w CMBLK STATUS x # Lire le registre d'état COMM BLK pour
    #TXTOKAY Interruption
    définir xx et 0x1
    définir xx et 0x1
    si x
    écrire w CMBLK CONTROL 0x14 #Configure COMM BLK Control
    #S'inscrire pour activer les transferts sur l'interface COMM BLK
    écrire w CMBLK DATA32 DESCRIPTOR_ADDR
    écrire w CMBLK INT_ENABLE 0x80
    écrire w CMBLK CONTROL 0x10
    fin si
    attends 20
    #Phase de réponse
    attendre 19
    readstore avec STATUT CMBLK x
    définir xx et 0x80
    si x
    lirevérifier avec CMBLK FRAME_START8 CMD
    écrire w CMBLK INT_ENABLE 0x2
    fin si
    attendre 19
    readstore avec STATUT CMBLK x
    définir xx et 0x2
    si x
    relecture w CMBLK DATA8 0x0
    écrire w CMBLK CONTROL 0x18
    fin si
    attendre 19
    relecture w FIIC 0x8 0x20000000
    readstore avec STATUT CMBLK x
    définir xx et 0x2
    si x
    readcheck avec CMBLK DATA32 DESCRIPTOR_ADDR
    fin si
    readcheck w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4 ; #Readcheck pour vérifier S/N
    readcheck w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4 ; #Readcheck pour vérifier S/N
    readcheck w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4 ; #Readcheck pour vérifier S/N
    readcheck w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4 ; #Readcheck pour vérifier S/N
    retour
  5. Créez le statut . SMS file dans l'éditeur HDL de Libero ou dans n'importe quel éditeur de texte. Incluez la commande de service du système de numéro de série ("01" en hexadécimal) et le numéro de série dans le statut . SMS file. Consultez le manuel CoreSysServices v3.1 pour utiliser le code de commande correct.
  6. La syntaxe de ce file pour le service de numéro de série est, <2 chiffres hexadécimaux CMD>< 32 chiffres hexadécimaux Numéro de série> . Example: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
  7. Enregistrez le statut .txt file dans le dossier Simulation du projet.
  8. Modifiez l'utilisateur .bfm (situé dans le dossier Simulation) pour inclure le numéro de série. bfm file et appelez la procédure de numéro de série comme indiqué dans l'extrait de code suivant.
    inclure « serialnum.bfm » #inclure le serialnum.bfm
    procédure user_main ;
    imprimer "INFO:La simulation démarre" ;
    print "INFO:Service Command Code in Decimal:%0d", CMD ;
    appeler le numéro de série ; #appeler la procédure serialnum
    imprimer "INFO:Simulation se termine" ;
    retour
  9. Dans la hiérarchie de conception view, générez le testbench (Clic droit, Top Level Design > Create Testbench > HDL ) et vous êtes prêt à exécuter la simulation de service de numéro de série.

Une fois que le service a commencé son exécution, un message indiquant l'emplacement de destination et le numéro de série s'affiche. Le contrôleur système effectue une écriture AHB à l'adresse avec le numéro de série. À la fin du service, le RXFIFO de COMM_BLK sera chargé avec la réponse du service. La fenêtre de transcription ModelSim affiche l'adresse et le numéro de série reçus comme indiqué dans la figure suivante.
Figure 8 • Simulation du service de numéro de série SmartFusion2 dans la fenêtre de transcription ModelSimSimulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Fenêtre de transcription 1

2.7 Simulation du service de zérotage IGLOO2
Pour préparer la simulation du service de mise à zéro IGLOO2, procédez comme suit.

  1. Appelez le générateur de système pour créer le bloc HPMS. Cochez la case HPMS System Services dans Device Features SYS_SERVICES_MASTER BIF. Laissez toutes les autres cases décochées. Acceptez la valeur par défaut dans toutes les autres pages et cliquez sur la page. Cela indique au constructeur de système d'exposer le HPMS_FIC_0 Finish pour terminer la configuration du bloc de constructeur de système.
  2. Dans l'éditeur HDL du Libero SoC, écrivez le code HDL pour le FSM. Dans votre code HDL pour le FSM, incluez les trois états suivants.
    État INIT (état initial)
    SERV_PHASE (état de la demande de service)
    RSP_PHASE (état de réponse du service)
    La figure suivante montre les trois états de FSM.
    Figure 9 • FSM à trois étatsSimulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - FSM à trois états

     

  3. Dans votre code HDL, utilisez le code de commande "F0" (Hex) pour entrer l'état de demande de service à partir de l'état INIT.
  4. Sauvegardez votre HDL file.
  5. Ouvrez SmartDesign, faites glisser et déposez votre bloc de création de système de niveau supérieur et votre bloc HDL FSM dans le canevas SmartDesign. Depuis le catalogue, faites glisser et déposez le noyau IP logiciel CoreSysService dans le canevas SmartDesign.
  6. Cliquez avec le bouton droit sur le noyau IP logiciel CoreSysServices pour ouvrir le configurateur et cochez la case Zeroization Service sous le groupe Data Security Services. Laissez toutes les autres cases décochées. Cliquez pour quitter OK.
    Figure 10 • Configurateur CoreSysServices
    Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA System Services Simulation - Core Configurator 1
  7. Connectez le HPMS_FIC_0 SYS_SERVICES_MASTER BIF du bloc de création de système au AHBL_MASTER BIF du bloc CoreSysService.
  8. Connectez la sortie de votre bloc HDL FSM à l'entrée du noyau IP logiciel CoreSysService. Effectuez toutes les autres connexions dans le canevas SmartDesign.
    Figure 11 • SmartDesign Canvas avec HDL Block, CoreSysServices Soft IP et HPMS Blocks
    Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Blocs HPMS 19. Dans le canevas SmartDesign, générez la conception de niveau supérieur (Clic droit > Générer le composant).
    10. Dans la hiérarchie de conception view, cliquez avec le bouton droit sur la conception de niveau supérieur et sélectionnez créer Testbench > HDL. Vous êtes maintenant prêt à exécuter la simulation.
    Une fois que le service a commencé son exécution, un message indiquant que la mise à zéro est terminée à l'instant x s'affiche comme illustré dans la figure suivante.
    Figure 12 • Fenêtre de transcription de simulation du service du système de zérotage IGLOO2
    Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Fenêtre de transcription 3

Le contrôleur système effectue une écriture AHB à l'adresse avec le numéro de série. À la fin du service, le RXFIFO de COMM_BLK sera chargé avec la réponse du service. Il convient de noter que le modèle de simulation simule la mise à zéro en arrêtant la simulation plutôt qu'en mettant à zéro la conception elle-même.
Remarque : Pour obtenir une liste complète des codes de commande à utiliser pour les différents services système, consultez le tableau 1 (valeurs de commande/réponse des services système) dans le Manuel CoreSysServices v3.1:. ou UG0450 : Guide de l'utilisateur du contrôleur système SmartFusion2 SoC et IGLOO2 FPGA

2.8 Simulation du service de mise à zéro SmartFusion2
Dans ce guide, les commandes BFM (option 2) sont utilisées pour accéder au contrôleur système pour le service système.
Les commandes BFM sont utilisées car le processeur Cortex-M3 est disponible sur l'appareil pour la simulation BFM. Les commandes BFM vous permettent d'écrire et de lire directement dans le COMM BLK une fois que vous connaissez le mappage mémoire du COMM_BLK. Pour préparer votre conception pour la simulation du service de mise à zéro SmartFusion2, procédez comme suit.

  1. Faites glisser et déposez le MSS du catalogue vers le canevas de conception de votre projet.
  2. Désactivez tous les périphériques MSS sauf MSS_CCC, Reset Controller, Interrupt Management et FIC_0, FIC_1 et FIC_2.
  3. Configurez la gestion des interruptions pour utiliser MSS pour interrompre la matrice.
  4. Préparer le zeroizaton.bfm file dans un éditeur de texte ou dans l'éditeur HDL de Libero. Votre zéroisation. bfm devrait inclure :
  • Cartographie de la mémoire vers le COMM BLK (CMBLK)
  • Mappage de la mémoire vers le périphérique de gestion des interruptions (FIIC)
  • Commande pour la demande de service de mise à zéro ("F0" Hex pour la mise à zéro)

Un exampfichier du numéro de série.bfm file est illustré dans la figure suivante.
Figure 13 • Zeroization.bfm pour la simulation des services système de zéroisation SmartFusion2

Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Fenêtre de transcription 4

5. Enregistrez le fichier zeroization.bfm file dans le dossier Simulation du projet. utilisateur.bfm
6. Modifiez le (situé dans le dossier zeroization.bfm Simulation) pour inclure le à l'aide de l'extrait de code suivant.
inclure "zeroization.bfm" #include zeroization.bfm file procédure user_main ;
imprimer "INFO:La simulation démarre" ;
print "INFO:Service Command Code in Decimal:%0d", CMD ;
appel à zéro ; #call retour de procédure de mise à zéro
7. Dans la Hiérarchie de conception, générez le Testbench (Cliquez avec le bouton droit sur le niveau supérieur > Créer un Testbench > HDL) et vous êtes prêt à exécuter la simulation de mise à zéro SmartFusion2.
Une fois que le service a commencé son exécution, un message indiquant que l'appareil a été mis à zéro à l'instant x s'affiche. Il convient de noter que le modèle de simulation simule la mise à zéro en arrêtant la simulation plutôt qu'en mettant à zéro la conception elle-même. La fenêtre de transcription ModelSim dans la figure suivante montre que l'appareil a été mis à zéro.

Figure 14 • Journal de simulation de service du système de mise à zéro SmartFusion2

Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA - Fenêtre de transcription 5

Annexe : Types de services système

Ce chapitre décrit les différents types de services système.
3.1 Services de messagerie de simulation
Les sections suivantes décrivent divers types de services de messagerie de simulation.
3.1.1 Flash*Figer
La simulation entrera dans l'état Flash*Freeze lorsque la demande de service appropriée est envoyée au COMM_BLK depuis le FIC (dans le cas des appareils IGLOO2) ou le Cortex-M3 (dans les appareils SmartFusion2). Une fois que le service a été détecté par le contrôleur du système, la simulation sera arrêtée et un message indiquant que le système est entré en Flash*Freeze (avec l'option sélectionnée) s'affichera. A la reprise de la simulation, le RXFIFO du COMM_BLK sera rempli avec la réponse de service composée de la commande de service et de l'état. Il convient de noter qu'il n'y a pas de support de simulation pour la sortie Flash*Freeze.
3.1.2 Zéroisation
La mise à zéro est actuellement le seul service hautement prioritaire dans les services système traités par le COMM_BLK. La simulation entrera dans l'état de mise à zéro dès que la demande de service correcte sera détectée par le COMM_BLK. L'exécution d'autres services sera interrompue et rejetée par le contrôleur système, et le service de mise à zéro sera exécuté à la place. Une fois la demande de service de mise à zéro détectée, la simulation s'arrête et un message indiquant que le système est entré en mise à zéro s'affiche. Les redémarrages manuels de la simulation après la mise à zéro ne sont pas valides.
3.2 Services de pointeur de données
Les sections suivantes décrivent divers types de services de pointeur de données.
3.2.1 Numéro de série
Le service de numéro de série écrira un numéro de série de 128 bits à un emplacement d'adresse fourni dans le cadre de la demande de service. Ce paramètre 128 bits peut être défini à l'aide d'un support de simulation de service système file (voir page 22) . Si le paramètre de numéro de série 128 bits n'est pas défini dans le file, un numéro de série par défaut de 0 sera utilisé. Une fois que le service a commencé son exécution, un message indiquant l'emplacement de destination et le numéro de série s'affiche. Le contrôleur système effectue une écriture AHB à l'adresse avec le numéro de série. À la fin du service, le RXFIFO de COMM_BLK sera chargé avec la réponse du service.
3.2.2 Code utilisateur
Le service de code utilisateur écrit un paramètre de code utilisateur 32 bits à un emplacement d'adresse fourni dans le cadre de la demande de service. Ce paramètre 32 bits peut être défini à l'aide du support de simulation de service système file (voir page 22). Si le paramètre 32 bits n'est pas défini dans le file, une valeur par défaut de 0 est utilisée. Une fois que le service a commencé son exécution, un message indiquant l'emplacement cible et le code utilisateur s'affiche. Le contrôleur système effectue une écriture AHB à l'adresse avec le paramètre 32 bits. À la fin du service, le RXFIFO de COMM_BLK est chargé avec la réponse de service, qui comprend la commande de service et l'adresse cible.
3.3 Services de descripteurs de données
Les sections suivantes décrivent divers types de services de descripteur de données.

3.3.1 AES
La prise en charge de la simulation pour ce service ne concerne que le déplacement des données d'origine de la source vers la destination, sans effectuer réellement de chiffrement/déchiffrement sur les données. Les données qui doivent être chiffrées/déchiffrées et la structure des données doivent être écrites avant l'envoi de la demande de service. Une fois que le service a commencé son exécution, un message indiquant l'exécution du service AES s'affiche. Le service AES lit à la fois la structure des données et les données à chiffrer/déchiffrer. Les données d'origine sont copiées et écrites à l'adresse fournie dans la structure de données. Une fois le service terminé, la commande, l'état et l'adresse de la structure de données sont poussés dans le RXFIFO.
Note: Ce service est uniquement pour les données 128 bits et 256 bits, et les données 128 bits et 256 bits ont des longueurs de structure de données différentes.

3.3.2 SHA256
La prise en charge de la simulation pour ce service ne concerne que le déplacement des données, sans réellement effectuer de hachage sur les données. La fonction SHA 256 est conçue pour générer une clé de hachage 256 bits basée sur les données d'entrée. Les données qui doivent être hachées et la structure de données doivent être écrites à leurs adresses respectives avant que la demande de service ne soit envoyée au COMM_BLK. La longueur en bits et le pointeur définis dans la structure de données SHA 256 doivent correspondre correctement à la longueur et à l'adresse des données à hacher. Une fois que le service a commencé son exécution, un message indiquant l'exécution du service SHA 256 s'affiche. Plutôt que d'exécuter la fonction réelle, une clé de hachage par défaut sera écrite dans le pointeur de destination à partir de la structure de données. La clé de hachage par défaut est hexadécimal "ABCD1234". Pour régler une touche personnalisée, allez à la section Réglage des paramètres (voir page 23). À la fin du service, le RXFIFO est chargé avec la réponse de service composée de la commande de service, de l'état et du pointeur de structure de données SHA 256.
3.3.3 HMAC
La prise en charge de la simulation pour ce service ne concerne que le déplacement des données, sans réellement effectuer de hachage sur les données. Les données qui doivent être hachées et la structure de données doivent être écrites à leurs adresses respectives avant que la demande de service ne soit envoyée au COMM_BLK. Le service HMAC nécessite une clé de 32 octets en plus de la longueur en octets, du pointeur source et du pointeur de destination. Une fois que le service a commencé son exécution, un message indiquant l'exécution du service HMAC s'affiche. La clé est lue et la clé de 256 bits est copiée de la structure de données vers le pointeur de destination. À la fin du service, le RXFIFO est chargé avec la réponse de service composée de la commande de service, de l'état et du pointeur de structure de données HMAC.

3.3.4 Génération DRBG
La génération de bits aléatoires est effectuée par ce service. Il convient de noter que le modèle de simulation ne suit pas exactement la même méthodologie de génération de nombres aléatoires utilisée par le silicium. La structure de données doit être correctement écrite dans son emplacement prévu avant que la demande de service ne soit envoyée au COMM_BLK. La structure des données, le pointeur de destination, la longueur et d'autres données pertinentes sont lues par le contrôleur du système. Le service de génération DRBG génère un ensemble de données pseudo-aléatoires de la longueur demandée (0-128). Le contrôleur système écrit les données aléatoires dans le pointeur de destination. Un message indiquant l'exécution du service de génération DRBG s'affiche dans la simulation. Une fois le service terminé, la commande, l'état et l'adresse de la structure de données sont poussés dans le RXFIFO. Si la longueur de données demandée n'est pas dans la plage de 0 à 128, un code d'erreur de "4" (Max Generate) sera poussé dans le RXFIFO. Si la longueur des données supplémentaires n'est pas dans la plage Request Too Big de 0 à 128, un code d'erreur de "5" (Max Length of Additional Data Exceeded) sera envoyé dans le RXFIFO. Si la longueur des données demandées pour la génération et la longueur des données supplémentaires ne se situent pas dans leur plage définie (0-128), un code d'erreur de "1" (erreur catastrophique) est poussé dans le RXFIFO.

3.3.5 Réinitialisation DRBG
La fonction de réinitialisation proprement dite est exécutée en supprimant les instanciations DRBG et en réinitialisant DRBG. Une fois la demande de service détectée, la simulation affiche un message Service de réinitialisation DRBG terminé. La réponse, qui comprend le service et l'état, est poussée dans le RXFIFO.
3.3.6 Autotest DRBG
Le support de simulation pour l'autotest DRBG n'exécute pas réellement la fonction d'autotest. Une fois la demande de service détectée, la simulation affichera un message d'exécution du service d'autotest DRBG. La réponse, qui inclut le service et l'état, sera poussée dans le RXFIFO.
3.3.7 Instanciation DRBG
La prise en charge de la simulation pour le service d'instanciation DRBG n'exécute pas réellement le service d'instanciation. La structure de données doit être correctement écrite dans son emplacement prévu avant que la demande de service ne soit envoyée au COMM_BLK. Une fois la demande de service détectée, la structure et la chaîne de personnalisation définies dans l'espace d'adressage MSS seront lues. La simulation affichera un message indiquant que le service DRBG Instantiate a commencé son exécution. Une fois le service terminé, la réponse, qui comprend la commande de service, l'état et le pointeur vers la structure de données, sera poussée dans le RXFIFO. Si la longueur des données (PERSONALIZATIONLENGTH) n'est pas comprise entre 0 et 128, un code d'erreur de "1" (erreur catastrophique) sera poussé dans le RXFIFO pour le statut.
3.3.8 Désinstanciation de DRBG
La prise en charge de la simulation pour le service de désinstanciation DRBG n'exécute pas réellement le service de désinstanciation consistant à supprimer un DRBG précédemment instancié, comme le fait le silicium. La demande de service doit inclure à la fois la commande et le descripteur DRBG. Une fois la demande de service détectée, le descripteur DRBG sera stocké. La simulation affichera un message indiquant que le service de désinstanciation DRBG a été initialisé. Une fois le service terminé, la réponse, qui comprend la commande de service, l'état et le descripteur DRBG, sera poussée dans le RXFIFO.
3.3.9 Réamorçage DRBG
En raison de la nature simulative du bloc de services système, le service de réamorçage DRBG dans la simulation n'est pas exécuté automatiquement après chaque génération de services 65535 DRBG. La structure de données doit être correctement écrite dans son emplacement prévu avant que la demande de service ne soit envoyée au COMM_BLK. Une fois la demande de service détectée, la structure et le paramètre d'entrée supplémentaire dans l'espace d'adressage MSS seront lus. Un message indiquant que le service de réamorçage DRBG a commencé à s'exécuter s'affiche. La structure de données doit être correctement écrite dans son emplacement prévu avant que la demande de service ne soit envoyée au COMM_BLK. Une fois le service terminé, la réponse, qui comprend la commande de service, l'état et le pointeur vers la structure de données, sera poussée dans le RXFIFO.
3.3.10 Arbre de clés
La fonction réelle n'est pas exécutée en simulation pour le service KeyTree. La structure de données du service KeyTree se compose d'une clé de 32 octets, de données d'optype de 7 bits (MSB ignoré) et d'un chemin de 16 octets. Les données dans la structure de données doivent être écrites à leurs adresses respectives, avant que la demande de service ne soit envoyée au COMM_BLK. Une fois que le service a commencé son exécution, un message indiquant l'exécution du service KeyTree s'affichera. Le contenu de la structure de données sera lu, la clé de 32 octets sera stockée et la clé d'origine située dans la structure de données sera écrasée. Après cette écriture AHB, la valeur de la clé dans la structure de données ne devrait pas changer, mais les transactions AHB pour l'écriture se produiront. À la fin du service, le RXFIFO est chargé avec la réponse de service, composée de la commande de service, de l'état et du pointeur de structure de données KeyTree.
3.3.11 Réponse au défi
La fonction réelle, telle que l'authentification de l'appareil, n'est pas exécutée en simulation pour le service de réponse au challenge. La structure de données de ce service nécessite un pointeur vers le tampon, pour recevoir un résultat de 32 octets, un type d'option de 7 bits et un chemin de 128 bits. Les données dans la structure de données doivent être écrites à leurs adresses respectives avant que la demande de service ne soit envoyée au COMM_BLK. Une fois que le service a commencé son exécution, un message indiquant l'exécution du service challenge-réponse sera affiché. Une réponse générique de 256 bits sera écrite dans le pointeur fourni dans la structure de données. La clé par défaut est définie comme hexadécimal "ABCD1234". Pour obtenir une touche personnalisée, vérifiez le réglage des paramètres (voir page 23). À la fin du service, le RXFIFO sera chargé avec la réponse de service, consistant en la commande de service, l'état et le pointeur de structure de données de réponse de défi.
3.4 Autres Prestations
Les sections suivantes décrivent divers autres services système.
3.4.1 Vérification du résumé
La fonction réelle de recalcul et de comparaison des résumés des composants sélectionnés n'est pas exécutée pour le service de vérification de résumé dans la simulation. Cette demande de service se compose de commandes de service et d'options de service (LSB 5 bits). Une fois que le service a commencé son exécution, un message détaillant l'exécution du service de vérification de résumé s'affichera, ainsi que les options sélectionnées à partir de la requête. À la fin du service, le RXFIFO sera chargé avec la réponse de service, composée de la commande de service et des indicateurs de réussite/échec de la vérification de résumé.
3.4.2 Réponse de commande non reconnue
Lorsqu'une demande de service non reconnue est envoyée au COMM_BLK, le COMM_BLK répondra automatiquement avec un message de commande non reconnu poussé dans le RXFIFO. Le message se compose de la commande envoyée dans le COMM_BLK et de l'état de la commande non reconnue (252D). Un message d'affichage indiquant qu'une demande de service non reconnue a été détectée sera également affiché. Le COMM_BLK reviendra à un état inactif, attendant d'accepter la prochaine demande de service.
3.4.3 Services non pris en charge
Les services non pris en charge définis sur COMM_BLK déclencheront un message dans la simulation indiquant que la demande de service n'est pas prise en charge. Le COMM_BLK reviendra à un état inactif, attendant d'accepter la prochaine demande de service. Le PINTERRUPT ne sera pas défini, indiquant qu'un service a été terminé. La liste actuelle des services non pris en charge comprend : IAP, ISP, Device Certificate et le service DESIGNVER.
3.5 Prise en charge de la simulation des services système File
Pour prendre en charge la simulation des services système, un texte file appelé, "status.txt" peut être utilisé pour transmettre des instructions sur le comportement requis du modèle de simulation au modèle de simulation. Ce file doit être situé dans le même dossier que celui à partir duquel la simulation est exécutée. Le file peut être utilisé, entre autres, pour forcer certaines réponses d'erreur pour les services système supportés ou encore pour régler certains paramètres nécessaires à la simulation, (par example, numéro de série). Le nombre maximum de lignes supportées dans le « status.txt » file est 256. Les instructions qui apparaissent après le numéro de ligne 256 ne seront pas utilisées dans la simulation.
3.5.1 Forcer les réponses d'erreur
L'utilisateur peut forcer une certaine réponse d'erreur pour un service particulier lors des tests en transmettant les informations au modèle de simulation à l'aide du "status.txt" file, qui doit être placé dans le dossier à partir duquel la simulation est exécutée. Afin de forcer les réponses d'erreur à un certain service, la commande et la réponse requise doivent être saisies sur la même ligne au format suivant :ample, à Commande> ; ordonner au modèle de simulation de générer une réponse d'erreur d'accès à la mémoire MSS au service de numéro de série, la commande est la suivante.
Entretien : Numéro de série : 01
Message d'erreur demandé : Erreur d'accès à la mémoire MSS : 7F
Vous devriez avoir la ligne 017F entrée dans "status.txt" file.
3.5.2 Paramétrage
Le "status.txt" file peut également être utilisé pour définir certains paramètres nécessaires à la simulation. En tant qu'example, afin de définir le paramètre 32 bits pour le code utilisateur, le format de la ligne doit être dans cet ordre : <CODE UTILISATEUR 32 bits> ; où les deux valeurs sont saisies en hexadécimal. Afin de définir le paramètre 128 bits pour le numéro de série, le format de la ligne doit être dans cet ordre : <Numéro de série 128 bits [127:0]> ; où les deux valeurs sont saisies en hexadécimal. Afin de définir le paramètre 256 bits pour la clé SHA 256 ; le format de la ligne doit être dans cet ordre : <Clé 256 bits [255:0]> ; où les deux valeurs sont saisies en hexadécimal. Afin de définir le paramètre 256 bits pour la clé de réponse au défi, le format de la ligne doit être dans cet ordre : <Clé 256 bits [255:0]> ;
où les deux valeurs sont saisies en hexadécimal.
3.5.3 Priorité de l'appareil
Les services système et le COMM_BLK utilisent un système hautement prioritaire. Actuellement, le seul service hautement prioritaire est la mise à zéro. Afin d'effectuer un service de haute priorité, alors qu'un autre service est en cours d'exécution, le service en cours est arrêté et le service de priorité plus élevée sera exécuté à sa place. Le COMM_BLK supprimera le service actuel afin d'effectuer le service de priorité supérieure. Si plusieurs services non prioritaires sont envoyés avant l'achèvement d'un service en cours, ces services seront mis en file d'attente dans le TXFIFO. Une fois le service en cours terminé, le service suivant dans le TXFIFO sera exécuté.

Microsemi n'offre aucune garantie, représentation ou garantie concernant les informations contenues dans ce document ou l'adéquation de ses produits et services à un usage particulier, et Microsemi n'assume aucune responsabilité quelle qu'elle soit découlant de l'application ou de l'utilisation de tout produit ou circuit. Les produits vendus ci-dessous et tous les autres produits vendus par Microsemi ont été soumis à des tests limités et ne doivent pas être utilisés avec des équipements ou des applications critiques. Toutes les spécifications de performance sont considérées comme fiables mais ne sont pas vérifiées, et l'Acheteur doit effectuer et compléter tous les tests de performance et autres des produits, seuls et avec, ou installés dans, tout produit final. L'acheteur ne doit pas se fier aux données et aux spécifications de performance ou aux paramètres fournis par Microsemi. Il est de la responsabilité de l'Acheteur de déterminer indépendamment l'adéquation de tout produit et de tester et de vérifier celui-ci. Les informations fournies par Microsemi ci-dessous sont fournies "telles quelles, où qu'elles soient" et avec tous les défauts, et l'intégralité du risque associé à ces informations incombe entièrement à l'Acheteur. Microsemi n'accorde, explicitement ou implicitement, à aucune partie des droits de brevet, des licences ou tout autre droit de propriété intellectuelle, que ce soit en ce qui concerne ces informations elles-mêmes ou tout ce qui est décrit par ces informations. Les informations fournies dans ce document sont la propriété de Microsemi, et Microsemi se réserve le droit d'apporter des modifications aux informations contenues dans ce document ou à tout produit et service à tout moment et sans préavis.
Microsemi, une filiale en propriété exclusive de Microchip Technology Inc. (Nasdaq : MCHP), propose un portefeuille complet de semi-conducteurs et de solutions système pour l'aérospatiale et la défense, les communications, les centres de données et les marchés industriels. Les produits comprennent des circuits intégrés à signaux mixtes analogiques hautes performances et résistants aux rayonnements, des FPGA, des SoC et des ASIC ; produits de gestion de l'alimentation ; dispositifs de chronométrage et de synchronisation et solutions de temps précis, établissant la norme mondiale en matière de temps ; dispositifs de traitement de la voix ; solutions RF ; composants discrets ; solutions de stockage et de communication d'entreprise ; technologies de sécurité et anti-t évolutifampeuh produits ; Solutions Ethernet ; Circuits intégrés et injecteurs Power-over-Ethernet ; ainsi que des capacités et des services de conception personnalisés. Microsemi a son siège social à Aliso Viejo, en Californie, et compte environ 4,800 XNUMX employés dans le monde. En savoir plus sur www.microsemi.com.

Logo microsemi

Siège social de Microsemi
Une entreprise, Aliso Viejo,
CA 92656 États-Unis
Aux États-Unis : +1 800-713-4113
Hors USA : +1 949-380-6100
Ventes : +1 949-380-6136
Télécopieur : +1 949-215-4996
Courriel : ventes.support@microsemi.com
www.microsemi.com
© 2018 Microsemi. Tous les droits sont réservés. Microsemi et le logo Microsemi
sont des marques déposées de Microsemi Corporation. Toutes les autres marques et service
les marques sont la propriété de leurs propriétaires respectifs.

Documents / Ressources

Simulation des services système Microsemi UG0837 IGLOO2 et SmartFusion2 FPGA [pdf] Guide de l'utilisateur
UG0837, UG0837 Simulation des services système FPGA IGLOO2 et SmartFusion2, Simulation des services système FPGA IGLOO2 et SmartFusion2, Simulation des services système FPGA SmartFusion2, Simulation des services système FPGA, Simulation des services

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *