Dans cet article, nous verrons comment fonctionnent certains de ces périphériques et comment les combiner pour automatiser de nombreuses tâches de bas niveau nécessaires à une application microcontrôleur classique.
Le DOC (Data Operations Circuit) est sans doute l'un des périphériques les plus intéressants, mais aussi les moins bien compris, d'un microcontrôleur RA. Il peut apporter des gains de performance significatifs dans les applications temps réel en déchargeant le processeur de tâches simples, en améliorant le temps de réponse et en réduisant potentiellement la consommation d'énergie. C'est particulièrement vrai lorsque le DOC est utilisé conjointement avec d'autres fonctionnalités plus avancées de la famille RA.
Au cœur du DOC se trouve une unité arithmétique et logique (UAL) simple. Cette UAL possède trois fonctions de base : la comparaison, l’addition et la soustraction de données 16 bits, puis la génération d’une interruption selon une condition spécifiée. Ces opérations sont exécutées automatiquement, sans intervention du processeur, grâce au transfert des données par le DOC via un contrôleur DMA (contrôleur de transfert de données), que nous détaillerons plus loin. Voir figure 1.
Figure 1 : Schéma fonctionnel simplifié du circuit de traitement des données (DOC).
En mode comparaison 16 bits, une valeur de référence initiale est chargée dans le DOC, puis les données 16 bits à comparer sont chargées et comparées à cette valeur de référence par le matériel. Le DOC peut être programmé pour générer une interruption en cas de correspondance vraie ou fausse.
En mode sommation 16 bits, une valeur initiale de 16 bits est chargée dans le DOC. Ensuite, une ou plusieurs valeurs supplémentaires de 16 bits sont chargées dans le DOC et ajoutées à la valeur initiale. Une fois toutes les valeurs nécessaires chargées, le système vérifie l'absence de dépassement de capacité et, le cas échéant, génère une interruption. Ce mécanisme simple permet de déterminer si un seuil spécifique a été dépassé, ce qui est idéal, par exemple, pour la détection automatique de niveau à l'aide du CAN.
En mode de soustraction 16 bits, une valeur initiale de 16 bits est chargée dans le DOC. Ensuite, une ou plusieurs valeurs supplémentaires de 16 bits sont chargées dans le DOC et soustraites de la valeur initiale. Une fois toutes les valeurs nécessaires chargées, un contrôle de dépassement de capacité est effectué et une interruption est générée si nécessaire. Ce mécanisme simple permet de déterminer si un seuil spécifique a été dépassé.
Cependant, la véritable puissance du circuit de traitement des données (DOC) réside dans le fait que ces trois fonctions simples permettent de prendre des décisions directes sur le fonctionnement du système, sans intervention du processeur. Cela signifie que des décisions simples peuvent être prises directement au niveau du microcontrôleur, laissant ainsi au matériel du système le soin de traiter les données qu'il produit, sur la base d'une simple comparaison.
Combiné à des périphériques comme le DMAC (contrôleur d'accès direct à la mémoire) ou le DTC (contrôleur de transfert de données), qui automatisent le transfert de données vers le DOC, ce circuit permet de créer un système capable de prendre des décisions basées sur les données, quelle que soit leur source. Cela peut se faire sans aucune intervention du processeur, même lorsque celui-ci est inactif. On obtient ainsi une réponse beaucoup plus rapide aux modifications de données, sans avoir à attendre une interruption du processeur pour réagir à l'événement.
On peut imaginer de nombreux cas d'utilisation du DOC ; par exemple, avec une interface UART, le DOC pourrait détecter automatiquement une adresse entrante et alerter le processeur lorsque l'adresse est valide. Le DOC pourrait également être utilisé avec le convertisseur analogique-numérique (CAN) d'un système de détection de niveau pour détecter automatiquement le dépassement d'un seuil programmé. L'utilisation du DOC pour ce type de fonctions présente de nombreux avantages. Par exemple, le processeur pourrait être dédié à d'autres tâches prioritaires, et le DOC n'alerterait, par le biais d'une interruption, que lorsqu'une condition spécifique est atteinte. Le processeur pourrait être mis en veille pour réduire la consommation d'énergie et ne se réveillerait que par une interruption lors de la détection d'une alarme valide par la comparaison du DOC.
Le circuit de traitement des données (DOC) est présent dans tous les membres de la famille RA, et nous avons continuellement amélioré ses fonctions. Les dernières versions offrent des fonctionnalités supplémentaires permettant une prise de décision automatisée encore plus complexe concernant les données.
Intéressons-nous maintenant au contrôleur de transfert de données (DTC) mentionné précédemment. Ce périphérique offre un mécanisme simple et extrêmement flexible pour le transfert de données entre un périphérique et la mémoire, ou entre la mémoire et un périphérique. Le contrôleur de transfert de données est présent dans tous les membres de la famille de microcontrôleurs RA.
Le DTC utilise un contrôleur programmable simple pour effectuer les transferts de données entre la mémoire et les périphériques, et inversement, tout en conservant ses informations de configuration dans une table en SRAM. Cette solution est beaucoup plus compacte que l'utilisation d'un bloc matériel dédié important, tel que celui généralement utilisé par le contrôleur d'accès direct à la mémoire (DMAC). Cette programmabilité offre une flexibilité bien supérieure à celle d'un DMAC, et le stockage de la table de configuration décrivant le transfert en SRAM permet de disposer d'un nombre quasi illimité de canaux, limité uniquement par la quantité de SRAM disponible.
Dans la famille RA, un événement (ou interruption), déclenché par le processeur, un périphérique ou une broche externe, peut générer plusieurs actions sur le dispositif. La figure 2 présente un schéma simplifié du contrôleur d'interruptions. On y observe qu'un seul événement peut déclencher plusieurs actions : une interruption classique, qui modifie l'adresse de l'application ; un transfert DMAC ; ou un transfert DTC. Il est également possible de déclencher plusieurs de ces actions à partir d'un seul événement.
contrôleur d'interruptions
RA
. Le principal avantage de cette programmabilité réside dans le fait que toutes les informations nécessaires au transfert sont stockées dans un petit bloc de SRAM sur la puce. Ainsi, le contrôleur DTC peut être utilisé pour créer non seulement un ou deux canaux de transfert de données, mais aussi 10, 20, voire plus si nécessaire. Le principal inconvénient de ce mécanisme est que chaque transfert nécessite plusieurs cycles pour lire les données de configuration stockées en SRAM ; les transferts DTC sont donc généralement plus lents que les transferts DMA.
Le DTC peut transférer un ou plusieurs octets entre un périphérique et la mémoire, ou entre la mémoire et un périphérique, jusqu'à 256 fois. Les adresses source et destination du transfert peuvent être identiques ou incrémentées/décrémentées indépendamment, créant ainsi une structure tampon en mémoire.
À la fin du transfert, le DTC peut générer une interruption pour signaler au processeur que les données sont prêtes, ou déclencher un second transfert DTC. Ceci permet d'enchaîner plusieurs transferts, ce que nous appelons, de manière quelque peu paradoxale, le mode d'enchaînement. Ce mode est particulièrement utile lorsqu'il faut déplacer plusieurs données entre des périphériques et la mémoire. L'enchaînement est particulièrement intéressant lorsqu'il est utilisé avec le DOC mentionné précédemment, car il permet de déclencher plusieurs transferts depuis différentes adresses mémoire et/ou périphériques à partir d'une seule source d'interruption. Par exemple, cela signifie qu'avec une interruption, telle que l'interruption ADC, nous pouvons charger les données de comparaison dans le DOC, puis, en enchaînant un second transfert, nous pouvons charger le DOC avec les données ADC pour la comparaison — le tout de manière entièrement automatique, sans intervention du processeur. La capacité d'une interruption à générer une séquence complexe de transferts différents est extrêmement puissante, et pas seulement lorsqu'elle est utilisée avec le DOC. La figure 3 illustre certains des différents modes de fonctionnement du DTC.

Figure 3 : Exemples de modes de fonctionnement du contrôleur de transfert de données
Le DTC peut également être configuré en mode répétition, dans lequel il répète le transfert un certain nombre de fois. Pour la plupart des applications, la flexibilité du DTC offre un équilibre parfait entre vitesse, flexibilité et, bien sûr, coût du composant. Les transferts automatisés entre n'importe quel périphérique et la mémoire peuvent être créés quasiment sans limite.
Le contrôleur de transfert de données (DTC) constitue une méthode idéale pour automatiser le transfert de données entre les périphériques et la mémoire sans intervention du processeur. L'utilisation du DTC en mode guirlande lors du transfert de données vers le DOC permet de tester facilement de grandes quantités de données sans intervention du processeur, laissant ainsi la puce prendre des décisions directes.
Vous pouvez donc constater à quel point le DTC est beaucoup plus flexible que le DMAC traditionnel. Si vous avez besoin de vitesses de transfert de données maximales, le DMAC reste la méthode la plus appropriée, et presque tous les microcontrôleurs RA intègrent plusieurs canaux DMAC. Cependant, en termes de flexibilité et de gestion des données, le DTC est nettement supérieur, permettant la création de plusieurs canaux, limités uniquement par la SRAM disponible.
Voyons maintenant comment combiner le DTC et le DOC avec le CAN pour créer un système d'échantillonnage analogique intelligent, capable de fonctionner sans intervention du processeur. Ceci permet de réduire la charge du processeur et même d'économiser de l'énergie en le désactivant pendant le fonctionnement du système. Le système à créer est un détecteur de niveau multi-entrées simple qui utilise le mode de balayage de groupe du CAN 12 bits pour échantillonner séquentiellement chacun des quatre signaux d'entrée. Grâce à la combinaison du DTC et du DOC, il détecte le dépassement d'un seuil programmable. Ce n'est que si ce seuil est dépassé que le système génère une interruption et réveille le processeur.
Après la configuration initiale du système, le processeur passe en mode veille pour économiser de l'énergie et n'est réveillé que par une interruption DOC signalant le dépassement du seuil. La figure 4 présente un schéma simplifié du système.
Figure 4 : Schéma simplifié du système
. En mode de balayage de groupe, le CAN échantillonne en continu chaque entrée et copie le résultat dans la SRAM. Une fois les quatre entrées échantillonnées, le CAN génère une requête DTC. En mode chaîne, cette requête initie une chaîne de huit transferts entre la mémoire et le DOC, copiant à partir de la SRAM sur puce à la fois les quatre résultats ADC et une valeur de seuil correspondante par rapport à laquelle chaque résultat ADC doit être comparé à nouveau.
Requête de transfert ADC vers DTC.
Transfert DTC 1 : Comparaison [0] avec DOC. Chaîne activée, transfert suivant effectué.
Transfert DTC 2 : AN000 vers DOC. Chaîne activée, transfert suivant effectué.
Transfert DTC 3 : Comparaison [0] avec DOC. Chaîne activée, transfert suivant effectué.
Transfert DTC 4 : AN001 vers DOC. Chaîne activée, transfert suivant effectué.
Transfert DTC 5 : Comparaison [0] avec DOC. Chaîne activée, transfert suivant effectué.
Transfert DTC 6 : AN003 vers DOC. Chaîne activée, transfert suivant effectué.
Transfert DTC 7 : Comparaison [0] avec DOC. Chaîne activée, transfert suivant effectué.
Transfert DTC 8 : AN005 vers DOC. Chaîne désactivée, arrêtée.
Dans ce cas, le DOC est initialisé pour comparer chaque valeur et générer une interruption si l'un des seuils est dépassé.
Une fois l'ADC, le DOC et le DTC initialisés, chaque entrée de l'ADC est contrôlée en continu en arrière-plan, sans intervention du processeur. Le processeur peut alors traiter d'autres tâches ou se mettre en veille et ne se réveillera que lorsqu'une entrée dépassera sa valeur correspondante.
De nombreuses autres tâches de bas niveau peuvent être automatisées en combinant le DOC et le DTC de manière similaire. Cette technique s'avère extrêmement puissante pour automatiser les fonctions de bas niveau et permet de gagner du temps et de réduire les coûts de développement des pilotes logiciels de bas niveau pour ces tâches. Elle améliore également les performances du système en automatisant les fonctions de base sans solliciter le processeur.
Chaque membre de la famille de microcontrôleurs RA intègre des fonctions périphériques intelligentes, telles que le circuit opérateur de données (DOC) et le contrôleur de transfert de données (DTC), ainsi que de nombreuses autres fonctions périphériques performantes pouvant servir à créer des sous-systèmes intelligents. Ensemble, le DOC et le DTC offrent des solutions très flexibles et puissantes pour l'automatisation des fonctions d'E/S de bas niveau dans de nombreuses applications. L'automatisation de ces fonctions de bas niveau améliore non seulement le temps de réponse du système aux événements en temps réel, mais permet souvent aussi de réduire la complexité et la taille du logiciel système, augmentant ainsi la fiabilité et diminuant les coûts de test.
La famille de microcontrôleurs RA est conçue pour une vaste gamme d'applications de communication et de contrôle, telles que la commande de moteurs, les capteurs intelligents, la mesure, les instruments portables, les modems basse consommation et de nombreuses autres applications industrielles et grand public. Elle est disponible avec différentes capacités de mémoire et différents formats de boîtier. Pour plus d'informations, consultez le site www.renesas.com/ra.
Auteur : Graeme Clark, spécialiste principal en marketing produit chez Renesas Electronics
