Utilisez HyperBus pour étendre la mémoire dans les conceptions IoT et les dispositifs corporels compacts, pour réduire l'espace et les coûts

Par Bill Giovino

Avec la contribution de Rédacteurs nord-américains de Digi-Key

Avec la réduction de la taille des dispositifs corporels et des nœuds IoT, les concepteurs doivent faire bon usage de la mémoire intégrée au microcontrôleur pour réduire l'espace requis sur la carte, la consommation et les coûts. Cependant, l'extension de la mémoire est parfois inévitable. Au lieu de se limiter à une structure de bus de contrôleur 32 bits, les concepteurs doivent envisager une interface HyperBus haute vitesse de 333 Mbit/s à double débit de données (DDR) pour les données et les adresses.

Même si les concepteurs s'efforcent d'éviter de recourir à une extension, elle s'avère souvent nécessaire en raison des exigences de mémoire étendue lors du développement. Dans certains cas, les développeurs peuvent aussi tout simplement garantir l'évolutivité de la conception en anticipant les futurs besoins d'extension.

Grâce à l'interface HyperBus, les microcontrôleurs peuvent prendre en charge une mémoire Flash et une mémoire RAM externes sur le même bus, contrairement au bus d'adresses 16 bits et de données de 16 bits et aux broches de commande associées d'une interface 32 bits typique. La solution est adaptée à tout dispositif de mémoire ayant un port d'interface HyperBus et constitue une interface efficace et simple à utiliser pour l'extension mémoire à faible nombre de broches dans les applications où l'espace est restreint.

Même si le fonctionnement du bus est transparent pour le micrologiciel, les développeurs qui utilisent l'interface HyperBus pour la première fois doivent se familiariser avec le fonctionnement des signaux de bus haute vitesse pour assurer une conception robuste. Cet article décrit en premier lieu le fonctionnement de l'interface HyperBus. Il présente ensuite les microcontrôleurs intégrant l'interface et explique aux utilisateurs comment appliquer la solution de manière efficace et comment tester leur conception.

Présentation d'HyperBus

Comme indiqué précédemment, l'HyperBus utilise une interface DDR haute vitesse de 8 bits pour les données et les adresses. En outre, elle utilise une horloge différentielle, un signal de verrouillage de lecture/écriture et une sélection de circuit pour chaque dispositif de mémoire. L'HyperBus prend en charge une mémoire Flash et une mémoire RAM externes sur le même bus et fonctionne avec tout microcontrôleur doté d'une interface périphérique compatible HyperBus.

L'interface HyperBus est configurée comme une interface maître/esclave, où un hôte maître communique avec un ou plusieurs dispositifs de mémoire esclaves sur le bus. Les dispositifs de mémoire Flash HyperBus sont appelés HyperFlash™ et les dispositifs de mémoire DRAM HyperBus sont appelés HyperRAM™.

Le bus utilise une horloge différentielle avec des signaux nommés CK et CK#. Comme l'HyperBus est une interface DDR, les données sont transférées à la fois sur les fronts de montée et de descente de l'horloge. L'horloge est actionnée uniquement par le maître, et sa fréquence ne peut pas dépasser la fréquence d'horloge de la mémoire HyperBus la plus lente du bus.

Le bus bidirectionnel de 8 bits est nommé DQ[0-7] et transfère les adresses, les données et les commandes entre le dispositif maître et les dispositifs esclaves. Un signal bidirectionnel d'échantillonnage de données de lecture/écriture, nommé RWDS, permet de verrouiller les données. RWDS est contrôlé par le dispositif effectuant la lecture des données. Si l'hôte (microcontrôleur) écrit des données sur l'HyperRAM, alors l'HyperRAM contrôle le signal RWDS. Les données en cours de lecture sur le bus DQ[0-7] sont alignées aux deux fronts de l'horloge.

Chaque dispositif esclave est sélectionné à l'aide d'une sélection de circuit active de bas niveau, nommée CS0#, CS1#, CS2#, etc. Une seule une sélection de circuit peut être active. Toutes les transactions de bus sont initiées par la transition de la sélection de circuit désignée d'un haut niveau à un bas niveau. Toutes les transactions de bus sont terminées par la transition de la sélection de circuit désignée d'un bas niveau à un haut niveau. Les développeurs doivent veiller à ce qu'il y ait en permanence une sélection de circuit active. Dans le cas contraire, plusieurs dispositifs esclaves HyperBus peuvent commander simultanément le RWDS, ce qui peut entraîner la corruption des données.

Un signal de réinitialisation de matériel actif de bas niveau, désigné RESET#, est généré par le dispositif maître. Au niveau bas, il réinitialise l'état de tous les dispositifs de mémoire HyperBus externes reliés au signal. Cela inclut la réinitialisation des registres internes de configuration des dispositifs de mémoire. Cependant, cela n'affecte pas l'état de la mémoire interne des dispositifs de mémoire HyperBus. Sur la plupart des interfaces de microcontrôleurs HyperBus maîtres, RESET# n'est pas intégré dans le périphérique HyperBus, mais constitue une broche E/S générale. Les dispositifs esclaves HyperBus ont une faible excursion haute au niveau de la broche RESET#. Par conséquent, si la broche est flottante, elle présente un état haut.

Tous les périphériques compatibles HyperBus sur un microcontrôleur doivent se conformer à la spécification HyperBus. Le dispositif STM32L4R9 Arm® Cortex®-M4F de STMicroelectronics constitue un excellent exemple de microcontrôleur compatible HyperBus (Figure 1). Le STM32L4R9 est doté de 2 Mo de mémoire Flash interne et de 640 Ko de SRAM. Il offre une grande variété de périphériques, notamment deux interfaces OctoSPI pouvant être configurées comme interfaces HyperBus.

Schéma du microcontrôleur STM32F4L9 de STMicroelectronics (cliquez pour agrandir)

Figure 1 : Le microcontrôleur STM32F4L9 de STMicroelectronics est basé sur un cœur Arm® Cortex®-M4 avec unité en virgule flottante et est doté de deux interfaces compatibles HyperBus (représentées en orange). (Source de l'image : STMicroelectronics)

Le STM32L4R9 accède aux adresses de la mémoire externe HyperBus qui sont mappées en mémoire dans l'espace d'adresses du bus AHB du microcontrôleur. Les lectures et les écritures sur la mémoire externe sont accessibles par le cœur tout comme pour une mémoire interne. Après la configuration des dispositifs de mémoire externes, le fonctionnement HyperBus est transparent pour le cœur.

Les mémoires HyperBus sont toutes des mémoires de 16 bits. Par conséquent, tous les accès à partir du STM32L4R9 doivent s'effectuer dans les limites de 16 bits. Les accès aux données à partir du maître STM32L4R9 peuvent être de 16 bits ou 32 bits et doivent également être effectués en respectant les limites correspondantes.

Une transaction de lecture ou d'écriture typique sur l'HyperBus consiste en une série séquentielle de transferts de données à un cycle d'horloge de 16 bits via deux transferts de données d'un demi-cycle d'horloge de 8 bits de largeur, un sur chaque front d'horloge asymétrique ou passage d'horloge différentielle. Les transactions de lecture et d'écriture transfèrent toujours des mots de données de 16 bits. Les mots de données en lecture contiennent toujours deux octets valides. Les mots de données en écriture peuvent avoir un ou deux octets masqués pour empêcher l'écriture d'octets individuels dans une rafale d'écriture. Le protocole HyperBus ne prend pas en charge les transferts d'octets, ni les opérations sur les bits, comme le bit-banding (lecture-modification-écriture).

Chaque port compatible HyperBus du STM32L4R9 est doté d'un espace d'adresse mappé en mémoire de 256 Mo, selon le mappage suivant :

HyperBus1 (OctoSPI1) 0x90000000 à 0x9FFFFFFF
HyperBus2 (OctoSPI2) 0x70000000 à 0x7FFFFFFF

L'adresse interne du dispositif de mémoire HyperRAM ou HyperFlash en cours d'accès est décalée de l'adresse mémoire de base de l'emplacement ci-dessus. Par exemple, si le STM32F4L9 effectue une lecture à partir de l'emplacement de mémoire 0x90000047, il lit la valeur stockée dans le dispositif de mémoire sur l'HyperBus1 dans l'emplacement de mémoire 0x0047.

Cypress Semiconductor a conçu la spécification HyperBus, ainsi qu'une gamme de produits de mémoire HyperBus. La mémoire HyperFlash S26KS512SDPBHI020 64 Mo x 8 de Cypress peut facilement communiquer avec l'un des ports OctoSPI. Elle prend en charge les accès aux rafales cycliques contenant jusqu'à 32 mots de 16 bits. Avec une fréquence d'horloge maximale de 166,6 MHz, le dispositif HyperFlash S26KS512 prend en charge une vitesse de lecture continue de 333 Mo/s. À la fréquence maximum OctoSPI de 60 MHz, le STM32L4R9 peut lire une mémoire HyperBus externe à 120 Mo/s maximum.

Le STM32L4R9 peut exécuter le code directement à partir de la mémoire Flash si l'accès à l'HyperFlash se fait via le bus système Cortex-M4. Lorsqu'elle est utilisée pour la mémoire de code, l'interface OctoSPI prend en charge la méthode XIP (eXecute In Place) avec une mémoire tampon de préchargement intégrée qui charge la prochaine adresse mémoire à partir de la mémoire externe.

La mémoire HyperRAM S27KS0641DPBHI020 8 Mo x 8 de Cypress Semiconductor est une DRAM à actualisation automatique pouvant servir d'extension pour la mémoire de données STM32L4R9. Elle prend en charge les accès aux rafales cycliques contenant jusqu'à 64 mots de 16 bits. Le dispositif HyperRAM S27KS0641 prend également en charge une vitesse de lecture continue jusqu'à 333 Mo/s et peut être lu par le STM32L4R9 à une vitesse maximale de 120 Mo/s.

Interfaçage avec les mémoires HyperBus

Le STM32L4R9 est doté de deux ports compatibles HyperBus pouvant communiquer séparément avec des dispositifs de mémoire externe HyperRAM et HyperFlash (Figure 2). Comme le signal RESET# est optionnel, il n'est pas illustré. Grâce à l'HyperFlash et l'HyperRAM de Cypress, le STM32L4R9 peut facilement étendre sa mémoire interne avec un effet limité sur la taille de la carte à circuit imprimé et la complexité de la conception.

Image du STM32L4R9 de STMicroelectonics avec deux ports compatibles HyperBus

Figure 2 : Le STM32L4R9 est doté de deux ports compatibles HyperBus pouvant communiquer séparément avec des dispositifs de mémoire externe HyperRAM et HyperFlash. (Source de l'image : STMicroelectronics)

Les signaux les plus importants pour la configuration sont DQ[0-7] et RWDS. Pour de meilleures performances, la longueur de ces signaux sur la carte à circuit imprimé doit être la plus courte possible entre le microcontrôleur et la mémoire.

Les signaux de l'horloge différentielle CK et CK# doivent être adjacents, avec un écart constant sur toute la longueur des signaux. Si possible, il vaut mieux protéger CK et CK# avec des balises de protection VSS pour réduire les interférences électromagnétiques. Pour réduire la désadaptation de l'impédance, il convient de répartir tous les signaux sur la couche supérieure de la carte à circuit imprimé, avec une couche VSS sous-jacente solide.

Pour les développeurs non initiés à l'HyperBus, il est recommandé d'ajouter des points de test. Pour DQ[0-7] et RWDS, ces points doivent se trouver à la fois sur le microcontrôleur STM32L4R9 et sur le dispositif de mémoire. Lorsque le STM32L4R9 est en cours d'écriture, il est recommandé d'examiner les points de test les plus proches du dispositif de mémoire. Lorsqu'il est en cours de lecture, examinez les points de test les plus proches du STM32L4R9. Pour CK, CK# et CS, placez les points de test à proximité du dispositif de mémoire.

En raison des fréquences d'horloge élevées de l'interface DDR, la tension d'alimentation du STM32L4R9 et des dispositifs de mémoire doit être pure. Une alimentation parasitée affecte la temporisation du signal et peut entraîner des erreurs de transfert de bus. Par conséquent, l'utilisation de condensateurs de découplage est recommandée. Les dispositifs de mémoire HyperBus sont dotés de broches E/S d'alimentation et de masse distinctes. En outre, des condensateurs de 1 µF et 0,1 µF sur la couche inférieure ou supérieure doivent être ajoutés à l'alimentation VCCQ des E/S.

Accès micrologiciel à HyperBus

Les dispositifs de mémoire HyperBus sont dotés de registres intégrés servant à configurer les options et les temporisations du dispositif. On les appelle les registres de configuration (CR). Tous les dispositifs HyperRAM sont dotés de CR internes permettant de configurer certaines caractéristiques opérationnelles. Pour le dispositif HyperRAM S27KS0641, le micrologiciel peut configurer ses modes à faible puissance, le type et la longueur des rafales cycliques, les paramètres de temporisation de lecture et d'écriture, et la force de commande de sortie au niveau du bus de données externe de 8 bits.

L'HyperFlash ne dispose pas de CR, mais est doté de registres d'état. Le dispositif HyperFlash S26KS512 comprend trois registres d'état. Il prend en charge un code de correction d'erreur (ECC) interne pour valider les opérations d'écriture et inclut un registre d'état ECC pour indiquer les erreurs d'écriture. Un autre registre comprend l'adresse de toutes les erreurs ECC. Un troisième registre compte les corrections ECC et les erreurs non corrigeables. Tous ces registres sont en lecture seule.

Les transactions HyperBus prennent en charge deux types d'opérations de mémoire. Le premier est la lecture ou l'écriture sur la mémoire externe. Le second est la lecture ou l'écriture sur les CR, ou la lecture des registres d'état.

Après la configuration de l'interface OctoSPI du STM32L4R9 en tant que port HyperBus, le cœur peut accéder à la mémoire comme il le fait avec n'importe quel emplacement mappé en mémoire. Chaque opération de lecture ou d'écriture dans l'espace HyperBus mappé en mémoire initie une transaction entre le microcontrôleur et la mémoire externe. Chaque transaction HyperBus commence par l'envoi de trois mots de 16 bits par le microcontrôleur, avec des instructions de commande/adressage, vers le dispositif de mémoire externe. La séquence de commande/adressage indique au dispositif de mémoire externe si l'opération est une lecture ou une écriture, si l'espace mémoire ou les registres de configuration sont en cours d'adressage, s'il s'agit d'une transaction en rafale cyclique ou linéaire, et indique la ligne et la colonne d'adresse cible. Même si le processus est transparent pour le microcontrôleur doté d'un micrologiciel opérationnel, la séquence de commande/adressage est importante lors du débogage.

Premiers pas avec HyperBus

Une fois qu'il a compris le protocole HyperBus, le développeur doit effectuer une programmation expérimentale à l'aide d'une carte d'évaluation, surtout s'il utilise l'interface pour la première fois. La carte d'évaluation STM32L4R9I-EVAL de STMicroelectronics pour le microcontrôleur STM32L4R9 constitue un excellent point de départ (Figure 3). Le dispositif de mémoire HyperRAM est entouré en rouge et ses points de test se situent à droite, au niveau du connecteur d'embase.

Image de la carte STM32L4R9I-EVAL de STMicroelectronics

Figure 3 : La carte STM32L4R9I-EVAL de STMicroelectronics sert à évaluer le microcontrôleur STM32L4R9. Le dispositif de mémoire HyperRAM est entouré en rouge et ses points de test se situent à droite, au niveau du connecteur d'embase. (Source de l'image : STMicroelectronics)

La carte STM32L4R9I-EVAL offre de nombreuses fonctionnalités, notamment une interface de caméra, deux microphones MEMS, un joystick et un écran LCD TFT couleur de 4,3 pouces et 480 x 272 pixels. La carte d'évaluation prend en charge l'interface OctoSPI et inclut un dispositif HyperRAM IS66WVH8M8BLL de 64 Mo d'ISSI, soudé à la carte à circuit imprimé.

Conclusion

Le protocole HyperBus est une interface conviviale, adaptée à l'extension de la mémoire à faible nombre de broches des applications à espace critique. Même si le fonctionnement du bus est transparent pour le micrologiciel, il est important que les développeurs qui utilisent l'interface HyperBus pour la première fois se familiarisent avec le fonctionnement des signaux de bus haute vitesse pour assurer une conception robuste.

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de Digi-Key Electronics ni les politiques officielles de la société.

À propos de l'auteur

Bill Giovino

Bill Giovino est un ingénieur en électronique titulaire d'un BSEE de l'Université de Syracuse, et l'une des rares personnes à avoir réussi à passer de l'ingénierie de conception à l'ingénierie des applications sur le terrain et au marketing technologique.

Depuis plus de 25 ans, Bill œuvre à la promotion des nouvelles technologies devant un public technique et non technique pour de nombreuses entreprises, notamment STMicroelectronics, Intel et Maxim Integrated. Chez STMicroelectronics, Bill a contribué aux premiers succès de l'entreprise dans l'industrie des microcontrôleurs. Chez Infineon, Bill a orchestré les premiers succès de l'entreprise en matière de conception de microcontrôleurs dans l'industrie automobile américaine. En tant que consultant marketing pour son entreprise CPU Technologies, Bill a aidé de nombreuses entreprises à transformer des produits sous-performants en réussites.

Bill a été l'un des premiers à adopter l'Internet des objets, notamment en mettant la première pile TCP/IP complète sur un microcontrôleur. Bill pense que les ventes passent par l'éducation et accorde une importance croissante à une communication claire et bien écrite pour la promotion des produits en ligne. Il est modérateur du groupe populaire LinkedIn Semiconductor Sales & Marketing et parle couramment le B2E.

À propos de l'éditeur

Rédacteurs nord-américains de Digi-Key