Logo microsemiSmartFusion2
Contrôleur DDR et contrôleur série haute vitesse
Méthodologie d'initialisation
Guide de l'utilisateur

Introduction

Lors de la création d'une conception à l'aide d'un périphérique SmartFusion2, si vous utilisez l'un des deux contrôleurs DDR (FDDR ou MDDR) ou l'un des blocs de contrôleur série à grande vitesse (SERDESIF), vous devez initialiser les registres de configuration de ces blocs au moment de l'exécution avant ils peuvent être utilisés. Par exempleample, pour le contrôleur DDR, vous devez définir le mode DDR (DDR3/DDR2/LPDDR), la largeur PHY, le mode rafale et l'ECC.
De même, pour le bloc SERDESIF utilisé comme point de terminaison PCIe, vous devez définir la fenêtre PCIE BAR sur AXI (ou AHB).
Ce document décrit les étapes nécessaires pour créer une conception Libero qui initialise automatiquement le contrôleur DDR et les blocs SERDESIF à la mise sous tension. Il décrit également comment générer le code du micrologiciel à partir de Libero SOC qui est utilisé dans le flux de conception intégré.
Une description détaillée de la théorie des opérations est fournie en premier.
La section suivante décrit comment créer une telle conception à l'aide de Libero SoC System Builder, un puissant outil de conception qui, entre autres fonctionnalités, crée la solution « d'initialisation » pour vous si vous utilisez des blocs DDR ou SERDESIF dans votre conception.
La section suivante décrit comment assembler une solution « d'initialisation » complète sans utiliser le SmartFusion2 System Builder. Cela aide à expliquer ce qui doit être fait si vous ne souhaitez pas utiliser le Générateur de système et décrit également ce que l'outil Générateur de système génère réellement pour vous. Cette rubrique traite :

  • La création des données de configuration du contrôleur DDR et des registres de configuration SERDESIF
  • La création de la logique FPGA nécessaire au transfert des données de configuration vers les différents registres de configuration ASIC

Enfin, nous décrivons la génération fileest lié à :

  • La création d'une solution d'« initialisation » du firmware.
  • La simulation de la conception de la solution « d'initialisation » DDR.

Pour plus de détails sur le contrôleur DDR et les registres de configuration SERDESIF, reportez-vous au Guide de l'utilisateur des interfaces série et DDR haute vitesse Microsemi SmartFusion2.

Théorie de fonctionnement

La solution d'initialisation périphérique utilise les principaux composants suivants :

  • La fonction CMSIS SystemInit(), qui s'exécute sur le Cortex-M3 et orchestre le processus d'initialisation.
  • Le noyau IP soft CoreConfigP, qui initialise les registres de configuration des périphériques.
  • Le noyau IP soft CoreResetP, qui gère la séquence de réinitialisation des contrôleurs MSS, DDR et des blocs SERDESIF.

Le processus d'initialisation du périphérique fonctionne comme suit :

  1. Lors de la réinitialisation, le Cortex-M3 exécute la fonction CMSIS SystemInit(). Cette fonction est automatiquement exécutée avant l'exécution de la fonction main() de l'application.
    Le signal de sortie CoreResetP MSS_HPMS_READY est affirmé au début du processus d'initialisation, indiquant que le MSS et tous les périphériques (sauf MDDR) sont prêts pour la communication.
  2. La fonction SystemInit() écrit les données de configuration dans les contrôleurs DDR et les registres de configuration SERDESIF via le bus MSS FIC_2 APB3. Cette interface est connectée au noyau logiciel CoreConfigP instancié dans la structure FPGA.
  3. Une fois tous les registres configurés, la fonction SystemInit() écrit dans les registres de contrôle CoreConfigP pour indiquer l'achèvement de la phase de configuration des registres ; les signaux de sortie CoreConfigP CONFIG1_DONE et CONIG2_DONE sont alors activés.
    Il existe deux phases de configuration de registre (CONFIG1 et CONFIG2) selon les périphériques utilisés dans la conception.
  4. Si l'un ou les deux MDDR/FDDR sont utilisés et qu'aucun des blocs SERDESIF n'est utilisé dans la conception, il n'y a qu'une seule phase de configuration de registre. Les deux signaux de sortie CoreConfigP CONFIG1_DONE et CONIG2_DONE sont affirmés l'un après l'autre sans aucune attente/délai.
    Si un ou plusieurs blocs SERDESIF en mode non-PCIe sont utilisés dans la conception, il n'y a qu'une seule phase de configuration du registre. CONFIG1_DONE et CONIG2_DONE sont affirmés l'un après l'autre sans aucune attente/délai.
    Si un ou plusieurs blocs SERDESIF en mode PCIe sont utilisés dans la conception, il y a deux phases de configuration de registre. CONFIG1_DONE est activé une fois la première phase de configuration du registre terminée. Le système SERDESIF et les registres de voie sont configurés dans cette phase. Si SERDESIF est configuré dans un mode non-PCIE, le signal CONFIG2_DONE est également activé immédiatement.
  5. Suit alors la deuxième phase de configuration du registre (si SERDESIF est configuré en mode PCIE). Voici les différents événements qui se produisent dans la deuxième phase :
    – CoreResetP désactive les signaux PHY_RESET_N et CORE_RESET_N correspondant à chacun des blocs SERDESIF utilisés. Il affirme également un signal de sortie SDIF_RELEASED après que tous les blocs SERDESIF ne sont plus réinitialisés. Ce signal SDIF_RELEASED est utilisé pour indiquer au CoreConfigP que le noyau SERDESIF n'est plus réinitialisé et est prêt pour la deuxième phase de configuration du registre.
    – Une fois que le signal SDIF_RELEASED est affirmé, la fonction SystemInit() commence à interroger pour l'affirmation de PMA_READY sur la voie SERDESIF appropriée. Une fois que PMA_READY est affirmé, le deuxième ensemble de registres SERDESIF (registres PCIE) est configuré/écrit par la fonction SystemInit().
  6. Une fois tous les registres PCIE configurés, la fonction SystemInit() écrit dans les registres de contrôle CoreConfigP pour indiquer l'achèvement de la deuxième phase de configuration des registres ; le signal de sortie CoreConfigP CONIG2_DONE est alors activé.
  7. Outre les assertions/désassertions de signal ci-dessus, CoreResetP gère également l'initialisation des différents blocs en exécutant les fonctions suivantes :
    - Annulation de la réinitialisation du noyau FDDR
    – Annulation des blocs SERDESIF Réinitialisations PHY et CORE
    – Surveillance du signal de verrouillage FDDR PLL (FPLL). Le FPLL doit être verrouillé pour garantir que l'interface de données FDDR AXI/AHBLite et la structure FPGA peuvent communiquer correctement.
    – Surveillance des signaux de verrouillage PLL du bloc SERDESIF (SPLL). Le SPLL doit être verrouillé pour garantir que l'interface AXI/AHBLite des blocs SERDESIF (mode PCIe) ou l'interface XAUI puisse communiquer correctement avec la matrice FPGA.
    – Attendre que les mémoires DDR externes se stabilisent et soient prêtes à être accédées par les contrôleurs DDR.
  8. Lorsque tous les périphériques ont terminé leur initialisation, CoreResetP affirme le signal INIT_DONE ; le registre interne CoreConfigP INIT_DONE est alors activé.
    Si l'un ou les deux MDDR/FDDR sont utilisés et que le temps d'initialisation DDR est atteint, le signal de sortie CoreResetP DDR_READY est activé. L'affirmation de ce signal DDR_READY peut être surveillée comme une indication que le DDR (MDDR/FDDR) est prêt pour la communication.
    Si un ou plusieurs blocs SERDESIF sont utilisés et que la deuxième phase de configuration de registre est terminée avec succès, le signal de sortie CoreResetP SDIF_READY est activé. L'assertion de ce signal SDIF_READY peut être surveillée comme une indication que tous les blocs SERDESIF sont prêts pour la communication.
  9. La fonction SystemInit(), qui attendait l'affirmation de INIT_DONE, se termine et la fonction main() de l'application est exécutée. À ce moment-là, tous les contrôleurs DDR et blocs SERDESIF utilisés ont été initialisés, et l'application du micrologiciel et la logique de la matrice FPGA peuvent communiquer de manière fiable avec eux.

La méthodologie décrite dans ce document repose sur le Cortex-M3 exécutant le processus d'initialisation dans le cadre du code d'initialisation du système exécuté avant la fonction main() de l'application.
Reportez-vous aux organigrammes de la Figure 1-1, de la Figure 1-2 et de la Figure 1-3 pour les étapes d'initialisation de FDDR/MDDR, SEREDES (mode non PCIe) et SERDES (mode PCIe).
La figure 1-4 montre un chronogramme d'initialisation périphérique.

Microsemi SmartFusion2 DDR Controller et Serial High Speed ​​Controller - chronogramme 1 Microsemi SmartFusion2 DDR Controller et Serial High Speed ​​Controller - chronogramme 2

Microsemi SmartFusion2 DDR Controller et Serial High Speed ​​Controller - chronogramme 3Microsemi SmartFusion2 DDR Controller et Serial High Speed ​​Controller - chronogramme 4Figure 1-3 • Organigramme d'initialisation SERDESIF (PCIe)
La procédure d'initialisation décrite dans ce document nécessite que vous exécutiez Cortex-M3 pendant le processus d'initialisation, même si vous ne prévoyez pas d'exécuter de code sur Cortex-M3. Vous devez créer une application firmware de base qui ne fait rien (une simple boucle, par example) et chargez cet exécutable dans la mémoire non volatile intégrée (eNVM) afin que les contrôleurs DDR et les blocs SERDESIF soient initialisés au démarrage du Cortex-M3.

Utilisation de System Builder pour créer une conception à l'aide de blocs DDR et SERDESIF

Le SmartFusion2 System Builder est un puissant outil de conception qui vous aide à capturer vos exigences au niveau du système et à produire une conception mettant en œuvre ces exigences. Une fonction très importante du System Builder est la création automatique du sous-système d'initialisation des périphériques. "Utilisation de SmartDesign pour créer une conception à l'aide de blocs DDR et SERDESIF" à la page 17 décrit en détail comment créer une telle solution sans System Builder.
Si vous utilisez System Builder, vous devez effectuer les tâches suivantes pour créer une conception qui initialise vos contrôleurs DDR et vos blocs SERDESIF à la mise sous tension :

  1. Dans la page Fonctionnalités du périphérique (Figure 2-1), spécifiez les contrôleurs DDR utilisés et le nombre de blocs SERDESIF utilisés dans votre conception.
  2. Dans la page Mémoire, indiquez le type de DDR (DDR2/DDR3/LPDDR) et les données de configuration de vos mémoires DDR externes. Voir la section Page Mémoire pour plus de détails.
  3. Dans la page Peripherals, ajoutez des fabric masters configurés en tant que AHBLite/AXI au sous-système Fabric DDR et/ou au sous-système MSS DDR FIC (facultatif).
  4. Dans la page Paramètres d'horloge, spécifiez les fréquences d'horloge pour les sous-systèmes DDR.
  5. Complétez vos spécifications de conception et cliquez sur Terminer. Cela génère la conception créée par System Builder, y compris la logique nécessaire à la solution « d'initialisation ».
  6. Si vous utilisez des blocs SERDESIF, vous devez instancier les blocs SERDESIF dans votre conception et connecter leurs ports d'initialisation à ceux du noyau généré par System Builder.

Page des fonctionnalités de l'appareil de l'éditeur de système
Dans la page Device Features, spécifiez les contrôleurs DDR (MDDR et/ou FDDR) utilisés et le nombre de blocs SERDESIF utilisés dans votre conception (Figure 2-1).

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Page des caractéristiques de l'appareilFigure 2-1 • Page Fonctionnalités de l'appareil de l'éditeur de système

Page Mémoire du générateur de système
Pour utiliser MSS DDR (MDDR) ou Fabric DDR (FDDR), sélectionnez le Type de mémoire dans la liste déroulante (Figure 2-2).

Contrôleur Microsemi SmartFusion2 DDR et contrôleur série haute vitesse - Mémoire externeFigure 2-2 • Mémoire externe MSS

Vous devez :

  1. Sélectionnez le type de DDR (DDR2, DDR3 ou LPDDR).
  2. Définissez le temps d'établissement de la mémoire DDR. Consultez les spécifications de votre mémoire DDR externe pour définir le temps de réglage correct de la mémoire. La mémoire DDR peut ne pas s'initialiser correctement si le temps d'établissement de la mémoire n'est pas correctement défini.
  3. Importez les données de configuration du registre DDR ou définissez vos paramètres de mémoire DDR. Pour plus de détails, reportez-vous au Guide de l'utilisateur des interfaces série et DDR haute vitesse Microsemi SmartFusion2.

Ces données sont utilisées pour générer le registre DDR BFM et la configuration du firmware files comme décrit dans « Création et compilation de l'application de micrologiciel » à la page 26 et « BFM Files Utilisé pour simuler la conception » à la page 27. Pour plus de détails sur les registres de configuration du contrôleur DDR, reportez-vous au Guide de l'utilisateur des interfaces série et DDR haute vitesse Microsemi SmartFusion2.
Un exampfichier de la configuration file La syntaxe est illustrée à la Figure 2-3. Les noms de registre utilisés dans ce file sont les mêmes que celles décrites dans le Guide de l'utilisateur des interfaces série et DDR haute vitesse Microsemi SmartFusion2

Contrôleur Microsemi SmartFusion2 DDR et contrôleur série haute vitesse - File Syntaxe ExampleIllustration 2-3 • Configuration File Syntaxe Example
Page Périphériques de System Builder
Dans la page Peripherals, pour chaque contrôleur DDR, un sous-système distinct est créé (sous-système DDR Fabric pour FDDR et sous-système MSS DDR FIC pour MDDR). Vous pouvez ajouter un cœur Fabric AMBA Master (configuré en tant qu'AXI/AHBLite) à chacun de ces sous-systèmes pour permettre l'accès du Fabric Master aux contrôleurs DDR. Lors de la génération, System Builder instancie automatiquement les cœurs de bus (selon le type de maître AMBA ajouté) et expose le BIF maître du cœur de bus et les broches d'horloge et de réinitialisation des sous-systèmes correspondants (FDDR/MDDR) sous les groupes de broches appropriés, au haut. Tout ce que vous avez à faire est de connecter les BIF aux cœurs Fabric Master appropriés que vous instancieriez dans la conception. Dans le cas de MDDR, il est facultatif d'ajouter un noyau maître Fabric AMBA au sous-système MSS DDR FIC ; Cortex-M3 est un maître par défaut sur ce sous-système. La Figure 2-4 montre la page des périphériques de System Builder.

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Page Périphériques BuilderFigure 2-4 • Page Périphériques du générateur de système

Page Paramètres de l'horloge du générateur de système
Dans la page Clock Settings, pour chaque contrôleur DDR, vous devez spécifier les fréquences d'horloge liées à chaque sous-système DDR (MDDR et/ou FDDR).
Pour MDDR, vous devez spécifier :

  • MDDR_CLK - Cette horloge détermine la fréquence de fonctionnement du contrôleur DDR et doit correspondre à la fréquence d'horloge à laquelle vous souhaitez que votre mémoire DDR externe fonctionne. Cette horloge est définie comme un multiple de M3_CLK (horloge principale Cortex-M3 et MSS, Figure 2-5). Le MDDR_CLK doit être inférieur à 333 MHz.
  • DDR_FIC_CLK – Si vous avez choisi d'accéder également au MDDR à partir de la structure FPGA, vous devez spécifier le DDR_FIC_CLK. Cette fréquence d'horloge est définie comme le rapport du MDDR_CLK et doit correspondre à la fréquence à laquelle le sous-système de matrice FPGA qui accède au MDDR fonctionne.

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Horloges MDDRFigure 2-5 • Horloge principale Cortex-M3 et MSS ; Horloges MDDR

Pour FDDR, vous devez spécifier :

  • FDDR_CLK - Détermine la fréquence de fonctionnement du contrôleur DDR et doit correspondre à la fréquence d'horloge à laquelle vous souhaitez que votre mémoire DDR externe fonctionne. Notez que cette horloge est définie comme un multiple de M3_CLK (horloge MSS et Cortex-M3, Figure 2-5). Le FDDR_CLK doit être compris entre 20 MHz et 333 MHz.
  • FDDR_SUBSYSTEM_CLK – Cette fréquence d'horloge est définie comme un rapport de FDDR_CLK et doit correspondre à la fréquence à laquelle le sous-système de matrice FPGA qui accède au FDDR fonctionne.

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Horloges DDR FabricFigure 2-6 • Horloges DDR de matrice
Configuration SERDESIF
Les blocs SERDESIF ne sont pas instanciés dans la conception générée par System Builder. Cependant, pour tous les blocs SERDESIF, les signaux d'initialisation sont disponibles à l'interface du noyau System Builder et peuvent être connectés aux noyaux SERDESIF au niveau suivant de la hiérarchie, comme illustré à la Figure 2-7.Contrôleur Microsemi SmartFusion2 DDR et contrôleur série haute vitesse - Connectivité d'initialisation périphériqueFigure 2-7 • Connectivité d'initialisation des périphériques SERDESIF
Semblable aux registres de configuration DDR, chaque bloc SERDES possède également des registres de configuration qui doivent être chargés au moment de l'exécution. Vous pouvez soit importer ces valeurs de registre, soit utiliser le configurateur d'interface série haute vitesse (Figure 2-8) pour entrer vos paramètres PCIe ou EPCS et les valeurs de registre sont automatiquement calculées pour vous. Pour plus de détails, reportez-vous au Guide de l'utilisateur du configurateur SERDES.Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Configurateur d'interface sérieIllustration 2-8 • Configurateur d'interface série haute vitesse
Une fois que vous avez intégré votre logique utilisateur avec le bloc System Builder et le bloc SERDES, vous pouvez générer votre SmartDesign de niveau supérieur. Cela génère tous les HDL et BFM files qui sont nécessaires pour implémenter et simuler votre conception. Vous pouvez ensuite poursuivre avec le reste du flux de conception.

Utilisation de SmartDesign pour créer une conception à l'aide de blocs DDR et SERDESIF

Cette section décrit comment assembler une solution « d'initialisation » complète sans utiliser le SmartFusion2 System Builder. L'objectif est de vous aider à comprendre ce que vous devez faire si vous ne souhaitez pas utiliser le System Builder. Cette section décrit également ce que l'outil System Builder génère réellement pour vous. Cette section décrit comment :

  • Entrez les données de configuration pour le contrôleur DDR et les registres de configuration SERDESIF.
  • Instanciez et connectez les Fabric Cores nécessaires pour transférer les données de configuration vers les contrôleurs DDR et les registres de configuration SERDESIF.

Configuration du contrôleur DDR
Les contrôleurs MSS DDR (MDDR) et Fabric DDR (FDDR) doivent être configurés dynamiquement (au moment de l'exécution) pour correspondre aux exigences de configuration de la mémoire DDR externe (mode DDR, largeur PHY, mode rafale, ECC, etc.). Les données saisies dans le configurateur MDDR/FDDR sont écrites dans les registres de configuration du contrôleur DDR par la fonction CMSIS SystemInit(). Le configurateur comporte trois onglets différents pour saisir différents types de données de configuration :

  • Données générales (mode DDR, largeur de données, fréquence d'horloge, ECC, interface de matrice, puissance d'entraînement)
  • Données d'initialisation de la mémoire (longueur de rafale, ordre de rafale, mode de synchronisation, latence, etc.)
  • Données de synchronisation de la mémoire

Reportez-vous aux spécifications de votre mémoire DDR externe et configurez le contrôleur DDR pour qu'il corresponde aux exigences de votre mémoire DDR externe.
Pour plus de détails sur la configuration DDR, reportez-vous au Guide de l'utilisateur de configuration SmartFusion2 MSS DDR.
Configuration SERDESIF
Double-cliquez sur le bloc SERDES dans le canevas SmartDesign pour ouvrir le configurateur afin de configurer le SERDES (Figure 3-1). Vous pouvez soit importer ces valeurs de registre, soit utiliser le configurateur SERDES pour entrer vos paramètres PCIe ou EPCS et les valeurs de registre sont automatiquement calculées pour vous. Pour plus de détails, reportez-vous au Guide de l'utilisateur du configurateur SERDES.Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Configurateur d'interface série haute vitesseIllustration 3-1 • Configurateur d'interface série haute vitesse
Création du sous-système d'initialisation de conception FPGA
Pour initialiser les blocs DDR et SERDESIF, vous devez créer le sous-système d'initialisation dans la structure FPGA. Le sous-système d'initialisation de la structure FPGA déplace les données du Cortex-M3 vers les registres de configuration DDR et SERDESIF, gère les séquences de réinitialisation nécessaires pour que ces blocs soient opérationnels et signale quand ces blocs sont prêts à communiquer avec le reste de votre conception. Pour créer le sous-système d'initialisation, vous devez :

  • Configurer FIC_2 à l'intérieur du MSS
  • Instancier et configurer les cœurs CoreConfigP et CoreResetP
  • Instancier l'oscillateur RC 25/50 MHz sur puce
  • Instancier la macro de réinitialisation du système (SYSRESET)
  • Connectez ces composants aux interfaces de configuration, aux horloges, aux réinitialisations et aux ports de verrouillage PLL de chaque périphérique

MSS FIC_2 Configuration APB
Pour configurer le MSS FIC_2 :

  1. Ouvrez la boîte de dialogue du configurateur FIC_2 à partir du configurateur MSS (Figure 3-2).
  2. Sélectionnez Initialiser les périphériques à l'aide de Cortex-M3.
  3. Selon votre système, cochez une ou les deux cases suivantes :
    – MSS DDR
    – Blocs Fabric DDR et/ou SERDES
  4. Cliquez sur OK et continuez à générer le MSS (vous pouvez différer cette action jusqu'à ce que vous ayez entièrement configuré le MSS selon vos exigences de conception). Les ports FIC_2 (FIC_2_APB_MASTER, FIC_2_APB_M_PCLK et FIC_2_APB_M_RESET_N) sont maintenant exposés à l'interface MSS et peuvent être connectés aux cœurs CoreConfigP et CoreResetP.

Contrôleur Microsemi SmartFusion2 DDR et contrôleur série haute vitesse - Configurateur MSS FIC 2Figure 3-2 • Configurateur MSS FIC_2

CoreConfigP
Pour configurer CoreConfigP :

  1. Instanciez CoreConfigP dans votre SmartDesign (généralement celui où le MSS est instancié).
    Ce noyau se trouve dans le catalogue Libero (sous Périphériques).
  2. Double-cliquez sur le noyau pour ouvrir le configurateur.
  3. Configurez le noyau pour spécifier quels périphériques doivent être initialisés (Figure 3-3)

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Boîte de dialogueFigure 3-3 • Boîte de dialogue CoreConfigP

CoreResetP
Pour configurer CoreResetP :

  1. Instanciez CoreResetP dans votre SmartDesign (généralement celui où le MSS est instancié).
    Ce noyau se trouve dans le catalogue Libero, sous Périphériques.
  2. Double-cliquez sur le noyau à l'intérieur du SmartDesign Canvas pour ouvrir le configurateur (Figure 3-4).
  3. Configurez le noyau pour :
    – Spécifiez le comportement de réinitialisation externe (EXT_RESET_OUT affirmé). Choisissez l'une des quatre options :
    o EXT_RESET_OUT n'est jamais affirmé
    o EXT_RESET_OUT est affirmé si la réinitialisation à la mise sous tension (POWER_ON_RESET_N) est affirmée
    o EXT_RESET_OUT est affirmé si FAB_RESET_N est affirmé
    o EXT_RESET_OUT est affirmé si la réinitialisation à la mise sous tension (POWER_ON_RESET_N) ou FAB_RESET_N est affirmé
    – Spécifiez le volume de l'appareiltage. La valeur sélectionnée doit correspondre au voltage que vous avez sélectionné dans la boîte de dialogue Paramètres du projet Libero.
    – Cochez les cases appropriées pour indiquer les périphériques que vous utilisez dans votre conception.
    – Spécifiez le temps de réglage de la mémoire DDR externe. Il s'agit de la valeur maximale pour toutes les mémoires DDR utilisées dans votre application (MDDR et FDDR). Reportez-vous à la fiche technique du fournisseur de mémoire DDR externe pour configurer ce paramètre. 200us est une bonne valeur par défaut pour les mémoires DDR2 et DDR3 fonctionnant à 200MHz. C'est un paramètre très important pour garantir une simulation de travail et un système de travail sur silicium. Une valeur incorrecte pour le temps de stabilisation peut entraîner des erreurs de simulation. Reportez-vous à la fiche technique du fournisseur de mémoire DDR pour configurer ce paramètre.
    – Pour chaque bloc SERDES de votre conception, cochez les cases appropriées pour indiquer si :
    o PCIe est utilisé
    o La prise en charge de la réinitialisation à chaud PCIe est requise
    o La prise en charge de PCIe L2/P2 est requise

Note: Si vous utilisez la puce 090 (M2S090) et que votre conception utilise SERDESIF, vous n'avez pas à cocher les cases suivantes : "Utilisé pour PCIe", "Inclure le support PCIe HotReset" et "Inclure le support PCIe L2/P2". Si vous utilisez un appareil non-090 et utilisez un ou plusieurs blocs SERDESIF, vous devez cocher les quatre cases sous la section SERDESIF appropriée.
Note: Pour plus de détails sur les options disponibles dans ce configurateur, reportez-vous au manuel CoreResetP.

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - CoreResetPConfiguratorFigure 3-4 • CoreResetPCConfigurator

Instanciation d'oscillateur 25/50 MHz
CoreConfigP et CoreResetP sont cadencés par l'oscillateur RC 25/50 MHz sur puce. Vous devez instancier un oscillateur 25/50 MHz et le connecter à ces cœurs.

  1. Instanciez le cœur des oscillateurs à puce dans votre SmartDesign (généralement celui où le MSS est instancié). Ce noyau se trouve dans le catalogue Libero sous Clock & Management.
  2. Configurez ce cœur de sorte que l'oscillateur RC pilote la structure FPGA, comme illustré à la Figure 3-5.

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Configurateur d'oscillateursFigure 3-5 • Configurateur d'oscillateurs à puce

Instanciation de la réinitialisation du système (SYSRESET)
La macro SYSRESET fournit une fonctionnalité de réinitialisation au niveau de l'appareil à votre conception. Le signal de sortie POWER_ON_RESET_N est activé/désactivé chaque fois que la puce est mise sous tension ou que la broche externe DEVRST_N est activée/désactivée (Figure 3-6).
Instanciez la macro SYSRESET dans votre SmartDesign (généralement celle où le MSS est instancié). Cette macro se trouve dans le catalogue Libero sous Macro Library.Aucune configuration de cette macro n'est nécessaire.

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Macro SYSRESETFigure 3-6 • Macro SYSRESET

Connectivité globale
Après avoir instancié et configuré les cœurs MSS, FDDR, SERDESIF, OSC, SYSRESET, CoreConfigP et CoreResetP dans votre conception, vous devez les connecter pour former le sous-système d'initialisation périphérique. Pour simplifier la description de la connectivité dans ce document, elle est divisée en connectivité de chemin de données de configuration conforme APB3 associée aux connexions liées à CoreConfigP et CoreResetP.
Connectivité du chemin des données de configuration
La figure 3-7 montre comment connecter le CoreConfigP aux signaux MSS FIC_2 et aux interfaces de configuration conformes APB3 des périphériques.
Tableau 3-1 • Connexions port/BIF de chemin de données de configuration

DEPUIS
Interface port/bus
(BIF)/ Composant
À
Port/Interface de bus (BIF)/Composant
APB S PRESET N/CoreConfigP APB S PRESET N/SDIF<0/1/2/3> APB S PRÉRÉGLAGE N/
FDDR
MDDR APB S PRESE TN/MSS
APB S PCLK/CoreConfigP APB S PCLK/SDIF APB S PCLK/FDDR MDDR APB S POLK/MSS
MDDR APBmslave/CoreConfig MDDR APB ESCLAVE (BIF)/MSS
SDIF<0/1/2/ 3> APBmslave/Config APB ESCLAVE (BIF)/ SDIF<0/1/2/3>
FDDR APBmesclave APB ESCLAVE (BIF)/ FDDR
FIC 2 APBmmaster/CoreConfigP FIC 2 APB MAÎTRE/MSS

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Connectivité du sous-systèmeFigure 3-7 • Connectivité du sous-système FIC_2 APB3

Horloges et réinitialisations Connectivité
La figure 3-8 montre comment connecter le CoreResetP aux sources de réinitialisation externes et aux signaux de réinitialisation du noyau des périphériques. Il montre également comment connecter le CoreResetP aux signaux d'état de synchronisation d'horloge des périphériques (signaux de verrouillage PLL). De plus, il montre comment le CoreConfigP et le CoreResetP sont connectés.

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse - Connectivité du sous-système 2Figure 3-8 • Connectivité du sous-système Core SF2Reset

Création et compilation de l'application du micrologiciel

Lorsque vous exportez le firmware depuis LiberoSoC (Design Flow Window > Export Firmware > Export Firmware), Libero génère ce qui suit files dans le /firmware/drivers_config/ dossier sys_config :

  • sys_config.c – Contient les structures de données contenant les valeurs des registres périphériques.
  • sys_config.h – Contient les instructions #define qui spécifient quels périphériques sont utilisés dans la conception et doivent être initialisés.
  • sys_config_mddr_define.h – Contient les données de configuration du contrôleur MDDR saisies dans la boîte de dialogue Configuration des registres.
  • sys_config_fddr_define.h – Contient les données de configuration du contrôleur FDDR saisies dans la boîte de dialogue Configuration des registres.
  • sys_config_mss_clocks.h - Ce file contient les fréquences d'horloge MSS telles que définies dans le configurateur MSS CCC. Ces fréquences sont utilisées par le code CMSIS pour fournir des informations d'horloge correctes à de nombreux pilotes MSS qui doivent avoir accès à leur fréquence d'horloge périphérique (PCLK) (par exemple, les diviseurs de débit en bauds MSS UART sont fonction du débit en bauds et de la fréquence PCLK ).
  • sys_config_SERDESIF_ .c – Contient le SERDESIF_ enregistrer les données de configuration fournies lors du SERDESIF_ configuration de bloc dans la création de conception.
  • sys_config_SERDESIF_ .h – Contient les instructions #define qui spécifient le nombre de paires de configuration de registre et le numéro de voie qui doivent être interrogés pour PMA_READY (uniquement en mode PCIe).

Ces files sont nécessaires pour que le code CMSIS se compile correctement et contienne des informations concernant votre conception actuelle, y compris les données de configuration des périphériques et les informations de configuration de l'horloge pour le MSS.
Ne modifiez pas ces files manuellement ; ils sont créés dans les répertoires de composants/périphériques correspondants chaque fois que les composants SmartDesign contenant les périphériques respectifs sont générés. Si des modifications sont apportées aux données de configuration de l'un des périphériques, vous devez réexporter les projets de micrologiciel afin que le micrologiciel mis à jour files (voir la liste ci-dessus) sont exportés vers le /dossier firmware/drivers_config/sys_config.
Lorsque vous exportez le firmware, Libero SoC crée les projets de firmware : une bibliothèque où votre configuration de conception files et les pilotes sont compilés.
Si vous cochez la case Créer un projet case à cocher lorsque vous exportez le firmware, un projet logiciel SoftConsole/IAR/Keil est créé pour contenir le projet d'application où vous pouvez modifier le main.c et l'utilisateur C/H files. Ouvrez le projet SoftConSole/IAR/Keil pour compiler correctement le code CMSIS et configurer correctement votre application de micrologiciel pour correspondre à la conception de votre matériel.

BFM Files Utilisé pour simuler la conception

Lorsque vous générez les composants SmartDesign contenant les périphériques associés à votre conception, la simulation files correspondant aux périphériques respectifs sont générés dans le /répertoire de simulation :

  • test.bfm – BFM de haut niveau file qui est d'abord exécuté lors de toute simulation qui exerce le processeur SmartFusion2 MSS Cortex-M3. Il exécute device_init.bfm et user.bfm, dans cet ordre.
  • MDDR_init.bfm – Si votre conception utilise le MDDR, Libero le génère file; il contient des commandes d'écriture BFM qui simulent les écritures des données du registre de configuration MSS DDR que vous avez saisies (à l'aide de la boîte de dialogue Modifier les registres ou dans l'interface graphique MSS_MDDR) dans les registres du contrôleur MSS DDR.
  • FDDR_init.bfm – Si votre conception utilise le FDDR, Libero génère ce file; il contient des commandes d'écriture BFM qui simulent les écritures des données du registre de configuration Fabric DDR que vous avez entrées (à l'aide de la boîte de dialogue Edit Registers ou dans l'interface graphique FDDR) dans les registres du contrôleur Fabric DDR.
  • SERDESIF_ _init.bfm – Si votre conception utilise un ou plusieurs blocs SERDESIF, Libero génère ce file pour chacun des SERDESIF_ blocs utilisés ; il contient des commandes d'écriture BFM qui simulent les écritures des données du registre de configuration SERDESIF que vous avez saisies (à l'aide de la boîte de dialogue Modifier les registres ou dans le SERDESIF_ GUI) dans le SERDESIF_ registres. Si le bloc SERDESIF est configuré en PCIe, cela file a également des instructions #define qui contrôlent l'exécution des 2 phases de configuration du registre dans un ordre parfait.
  • utilisateur.bfm – Contient les commandes utilisateur. Ces commandes sont exécutées une fois que le fichier device_init.bfm est terminé. Modifier ceci file pour entrer vos commandes BFM.
  • SERDESIF_ _user.bfm – Contient les commandes utilisateur. Modifier ceci file pour entrer vos commandes BFM. Utilisez ceci si vous avez configuré SERDESIF_ bloc en mode de simulation BFM PCIe et en tant que maître AXI/AHBLite. Si vous avez configuré SERDESIF_ bloc en mode de simulation RTL, vous n'en aurez pas besoin file.

Lorsque vous appelez la simulation à chaque fois, les deux simulations suivantes files sont recréés dans le répertoire /simulation avec le contenu mis à jour :

  • sous-système.bfm – Contient les instructions #define pour chaque périphérique utilisé dans votre conception, qui spécifient la section particulière du fichier device_init.bfm à exécuter correspondant à chaque périphérique.
  • peripheral_init.bfm – Contient la procédure BFM qui émule la fonction CMSIS :: SystemInit() exécutée sur le Cortex-M3 avant d'entrer dans la procédure main(). Il copie les données de configuration de tout périphérique utilisé dans la conception dans les registres de configuration de périphérique appropriés, puis attend que tous les périphériques soient prêts avant d'affirmer que vous pouvez utiliser ces périphériques. Il exécute MDDR_init.bfm et FDDR_init.bfm.

En utilisant ces produits files, les contrôleurs DDR de votre conception sont configurés automatiquement, simulant ce qui se passerait sur un appareil SmartFusion2. Vous pouvez modifier le user.bfm file pour ajouter toutes les commandes nécessaires pour simuler votre conception (Cortex-M3 est le maître). Ces commandes sont exécutées après l'initialisation des périphériques. Ne modifiez pas test.bfm, subsystem.bfm,peripheral_init.bfm, MDDR_init.bfm, FDDR_init.bfm files et le SERDESIF_ _init.bfm files.

Assistance produit

Microsemi SoC Products Group soutient ses produits avec divers services de support, y compris le service client, le centre de support technique client, un website, courrier électronique et bureaux de vente dans le monde entier.
Cette annexe contient des informations sur la manière de contacter Microsemi SoC Products Group et d'utiliser ces services d'assistance.
Service client
Contactez le service client pour une assistance produit non technique, telle que la tarification des produits, les mises à niveau des produits, les informations de mise à jour, le statut de la commande et l'autorisation.
Depuis l'Amérique du Nord, appelez 800.262.1060
Depuis le reste du monde, appelez 650.318.4460
Fax, de n'importe où dans le monde, 408.643.6913
Centre de support technique client
Microsemi SoC Products Group équipe son centre d'assistance technique à la clientèle d'ingénieurs hautement qualifiés qui peuvent vous aider à répondre à vos questions sur le matériel, les logiciels et la conception des produits Microsemi SoC. Le centre de support technique client passe beaucoup de temps à créer des notes d'application, des réponses aux questions courantes sur le cycle de conception, la documentation des problèmes connus et diverses FAQ. Alors, avant de nous contacter, veuillez consulter nos ressources en ligne. Il est fort probable que nous ayons déjà répondu à vos questions.
Assistance technique
Visitez le service client website (www.microsemi.com/soc/support/search/default.aspx) pour plus d'informations et d'assistance. De nombreuses réponses disponibles sur le moteur de recherche web ressource comprend des diagrammes, des illustrations et des liens vers d'autres ressources sur le website.
Website
Vous pouvez parcourir une variété d'informations techniques et non techniques sur la page d'accueil du SoC, à l'adresse www.microsemi.com/soc.
Contacter le centre de support technique client
Des ingénieurs hautement qualifiés font partie du personnel du centre de support technique. Le centre de support technique peut être contacté par e-mail ou via le groupe de produits Microsemi SoC website.
E-mail
Vous pouvez communiquer vos questions techniques à notre adresse e-mail et recevoir des réponses par e-mail, fax ou téléphone. De plus, si vous rencontrez des problèmes de conception, vous pouvez envoyer votre conception par e-mail files pour recevoir de l'aide.
Nous surveillons constamment le compte de messagerie tout au long de la journée. Lorsque vous nous envoyez votre demande, assurez-vous d'inclure votre nom complet, le nom de votre entreprise et vos coordonnées pour un traitement efficace de votre demande.
L'adresse e-mail du support technique est soc_tech@microsemi.com.
Mes cas
Les clients de Microsemi SoC Products Group peuvent soumettre et suivre des cas techniques en ligne en allant sur Mes cas.
En dehors des États-Unis
Les clients ayant besoin d'assistance en dehors des fuseaux horaires américains peuvent contacter le support technique par e-mail (soc_tech@microsemi.com) ou contactez un bureau de vente local. Les listes des bureaux de vente sont disponibles sur www.microsemi.com/soc/company/contact/default.aspx.
Assistance technique ITAR
Pour une assistance technique sur les FPGA RH et RT qui sont réglementés par l'International Traffic in Arms Regulations (ITAR), contactez-nous via soc_tech_itar@microsemi.com. Sinon, dans Mes dossiers, sélectionnez Oui dans la liste déroulante ITAR. Pour une liste complète des FPGA Microsemi réglementés par ITAR, visitez le site ITAR web page.
Microsemi Corporation (NASDAQ : MSCC) propose un portefeuille complet de solutions de semi-conducteurs pour : aérospatiale, défense et sécurité; entreprise et communications; et les marchés des énergies industrielles et alternatives. Les produits comprennent des dispositifs analogiques et RF haute performance et haute fiabilité, des circuits intégrés RF et à signaux mixtes, des SoC personnalisables, des FPGA et des sous-systèmes complets. Microsemi a son siège social à Aliso Viejo, en Californie. En savoir plus sur www.microsemi.com.
© 2014 Microsemi Corporation. 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 commerciales et marques de service sont la propriété de leurs propriétaires respectifs.

5-02-00384-1/08.14Logo microsemiSiège social de Microsemi
Une entreprise, Aliso Viejo CA 92656 États-Unis
Aux États-Unis : +1 949-380-6100
Ventes : +1 949-380-6136
Télécopieur : +1 949-215-4996

Documents / Ressources

Contrôleur DDR Microsemi SmartFusion2 et contrôleur série haute vitesse [pdf] Guide de l'utilisateur
Contrôleur SmartFusion2 DDR et contrôleur série haute vitesse, SmartFusion2 DDR, contrôleur et contrôleur série haute vitesse, contrôleur haute vitesse

Références

Laisser un commentaire

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