Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Calcul des transformées de Fourier rapides sur le MCU LPC55S69

Cet article étudie le Transform Engine, une autre partie du PowerQuad, qui permet au MCU LPC55S69 de calculer une transformée de Fourier rapide (FFT).

Le microcontrôleur LPC55S69 de NXP contient de nombreuses fonctionnalités qui le rendent adapté à une variété d'applications. Le MCU LPC55S69 et son unité PowerQuad comprennent des composants uniques - le Biquad et les Transform Engines - qui sont utilisés pour effectuer diverses tâches, laissant les principaux cœurs du processeur libres pour d'autres choses.

Un article précédent, Understanding Digital Filtering with Embedded Microcontrollers, a exploré diverses méthodes largement utilisées pour filtrer et traiter des échantillons de données dans le domaine temporel. Pour cela, il a utilisé le moteur Biquad de l'unité PowerQuad du LPC55S69.

Cet article étudie le Transform Engine, une autre partie du PowerQuad, qui permet au MCU LPC55S69 de calculer une transformée de Fourier rapide (FFT).

Comprendre les transformées de Fourier discrètes

Lorsqu'il s'agit de mesures quotidiennes telles que les longueurs et les températures, un ensemble d'outils existe pour déterminer la taille et la température de la chose particulière à mesurer. Pour les signaux temporels, le choix de l'outil de mesure peut ne pas être aussi évident. Considérez l'exemple de signal suivant donné dans la Figure 1.

Figure 1. Un signal d'entrée échantillonné à intervalle constant.

Comment mesurer, comprendre et décrire ce signal ? Les choix possibles pourraient être l'amplitude, la fréquence, ou plusieurs valeurs calculées avec des méthodes de statistiques. Une façon de commencer consiste à évaluer le signal d'intérêt par rapport à une onde cosinusoïdale connue, illustrée à la figure 2.

Figure 2. Le signal d'entrée à côté d'un signal de jauge cosinus. Les deux ont le même nombre d'échantillons.

Parce que l'amplitude et la fréquence de l'onde cosinus peuvent être facilement fixées et donc identifiées, il est possible de comparer l'onde cosinus au signal d'entrée. Si cela est fait correctement, la valeur résultante du produit scalaire entre le signal d'entrée et l'onde cosinusoïdale quantifie la corrélation entre le signal d'entrée et la jauge. Pour cela, il est raisonnable de considérer le signal d'entrée et de jauge comme des tableaux d'entrées discrètes de la même longueur, et il devient facile de calculer le produit scalaire.

Le résultat est un scalaire et son amplitude est proportionnelle à la corrélation entre le signal d'entrée et le signal de la jauge cosinus. L'opération de produit scalaire se résume à de nombreuses opérations de multiplication et d'addition — la même opération décrite dans Comprendre le filtrage numérique avec des microcontrôleurs intégrés.

Cette méthode donne rapidement de bons résultats. Il existe cependant un cas particulier qui ne fonctionne pas lors de l'application de cette méthode. Si le signal d'entrée est une onde cosinusoïdale avec la même fréquence que la jauge, mais avec sa phase déphasée de 90 degrés par rapport à la jauge, la sortie de la méthode susmentionnée sera nulle. Par inspection visuelle, il semble qu'il existe toujours une corrélation entre la jauge et le signal d'entrée, mais il y a des détails dont nous devons tenir compte.

Figure 3. Le nouveau signal de jauge est déphasé de 90 degrés par rapport à l'ancien.

Ce comportement pourrait être comparé à la mesure de la « longueur » d'une mince bande de papier. Lorsque vous utilisez une règle pour déterminer la longueur d'un côté de la bande de papier, le papier peut mesurer 10 pouces de long et un pouce de large. Les deux chiffres sont corrects, mais la règle a dû être tournée de 90 degrés pour obtenir les deux mesures. Les deux chiffres sont techniquement corrects et nous pouvons les utiliser ensemble pour obtenir une véritable « taille » (longueur et largeur) de notre morceau de papier. Pour surmonter ce problème en termes de notre signal d'entrée, une deuxième jauge peut être utilisée, comme le montre la figure 4.

Figure 4. Les deux signaux de jauge peuvent être utilisés pour mieux quantifier le signal d'entrée.

La seule différence entre les deux jauges (affichées en violet et en vert) est le déphasage de 90 degrés. Dans l'analogie précédente, c'est l'équivalent de la rotation de la règle. Le produit scalaire est calculé entre le signal d'entrée et chacune des jauges pour obtenir la sortie finale. Cela donne des résultats en deux valeurs A et B, chacune contenant la façon dont l'entrée est corrélée à l'une des jauges. Typiquement, ils sont considérés comme un seul nombre complexe :

sortie =B + i * A

L'étape suivante consiste à comparer le signal d'entrée à une gamme de jauges avec différentes fréquences (Figure 5).

Figure 5. Plusieurs jauges peuvent également être appliquées. Les verts sont décalés de 90 degrés par rapport aux violets.

Comme le montre l'image, le résultat final intègre quelques jauges différentes. La partie imaginaire (affichée en violet) est déphasée de 90 degrés par rapport aux signaux verts (partie réelle), tout comme dans l'exemple à deux jauges ci-dessus. Il n'y a pas de limite au nombre de jauges différentes.

L'utilisation de cette technique - appelée transformée de Fourier discrète (DFT) - permet de générer un spectre de sorties à toutes les fréquences d'intérêt pour un problème. Il est possible d'énoncer mathématiquement la technique comme suit :

Équation 1. La description mathématique de la DFT.

Où N est le nombre d'échantillons dans le signal d'entrée et k est la fréquence des jauges de référence (co)sinusoïdales.

Limites de la transformée de Fourier rapide (FFT)

La FFT est un moyen numériquement efficace de calculer la DFT qui nécessite moins d'opérations de multiplication et d'addition par rapport à la méthode décrite ci-dessus. Cependant, il y a quelques restrictions à la saisie :

  1. La longueur de l'entrée doit être une puissance de deux.
  2. Les longueurs d'entrée arbitraires et l'espacement des fréquences dans la sortie ne sont pas autorisés. Les bacs de sortie sont espacés par le taux d'échantillonnage du signal d'entrée divisé par le nombre d'échantillons dans l'entrée. Si l'entrée est par exemple un signal de 256 points échantillonné à 48 kHz, les tableaux de sortie correspondent à des fréquences espacées de 187 Hz (48.000 divisé par 256).
  3. Lorsque l'entrée est constituée de nombres réels (par exemple, des échantillons obtenus à partir d'un CAN), la sortie est symétrique. Si l'entrée, par exemple, se compose de 64 échantillons, le résultat FFT se composera également de 64 nombres complexes. Cependant, la seconde moitié du tableau de sortie contient les conjugués complexes de la première moitié.

Utilisation du moteur FFT PowerQuad

Les mathématiques derrière les opérations DFT/FFT peuvent être effectuées par de simples opérations de multiplication et d'ajout, ce qui est idéal pour externaliser les opérations mathématiques vers un coprocesseur dédié, tel que le PowerQuad sur le MCU LPC55S69. Pour cette raison, les principaux cœurs du processeur sont libres de travailler sur d'autres tâches.

L'utilisation du moteur PowerQuad FFT est un processus simple, et le SDK officiel est fourni avec des exemples de projets qui démontrent les fonctionnalités de cotraitement. Un exemple en particulier, appelé powerquad_transform, illustre le processus de calcul FFT.

Le fichier powerquad_transform.c contient plusieurs fonctions qui testent les différents modes du moteur FFT. L'un d'eux est la fonction PQ_RFFTFixed16Example. Cet exemple initialise le PowerQuad pour accepter des données entières 16 bits. Les données à virgule flottante doivent être converties en valeurs à virgule fixe au préalable, car le moteur de transformation PowerQuad ne prend en charge que les entiers.

FILTER_INPUT_LEN définit le nombre d'échantillons d'entrée. Le tableau de sortie est deux fois plus long car il doit stocker les parties réelles et imaginaires des valeurs résultantes.

Figure 6. Cette partie du code définit les données de test et les résultats attendus.

Le dernier tableau contient des données de test pour vérifier le résultat. Notez comment la seconde moitié du tableau contient les conjugués complexes comme indiqué ci-dessus. De plus, les conjugués ne sont pas égaux (par exemple la paire 76,-50 et 77,49). Quoi qu'il en soit, une fois les données initialisées, la structure de données suivante est utilisée pour configurer le PowerQuad :

Figure 7. Cette partie de l'exemple de programme configure et initialise l'unité PowerQuad.

Il est nécessaire de réduire l'échelle de l'entrée pour éviter que l'algorithme ne déborde. Ce processus se produit dans la deuxième ligne de l'image ci-dessus. FILTER_INPUTA_PRESCALER est défini sur cinq car il y a 32 (deux à la puissance cinq) échantillons. La pré-mise à l'échelle est une autre caractéristique matérielle du PowerQuad, et c'est probablement la raison de l'imprécision observée dans les résultats de test attendus.

Une fois que tout est configuré, l'emplacement des zones d'entrée et de sortie est transmis à l'unité PowerQuad, ce qui se produit dans la fonction PQ_transformRFFT. Cette méthode définit quelques registres de configuration et démarre le PowerQuad en écrivant dans le registre de contrôle. Dans cet exemple, le CPU attend la fin du PowerQuad. L'attente n'est pas toujours nécessaire et le PowerQuad peut effectuer des calculs de manière asynchrone pendant que le processeur effectue d'autres tâches.

Utiliser le PowerQuad pour les opérations mathématiques

Le PowerQuad est un coprocesseur pour les opérations mathématiques complexes disponible sur divers appareils de la série LPC5500 MCU. Il comprend un moteur spécial pour calculer efficacement les FFT, qui peuvent être effectués indépendamment des principaux cœurs du processeur. Le SDK pour le MCU LPC55S69 contient des exemples de configuration et d'utilisation du PowerQuad.

La page communautaire de NXP contient des informations détaillées, des discussions et des articles centrés sur le MCU LPC55S69.

Les articles de l'industrie sont une forme de contenu qui permet aux partenaires de l'industrie de partager des nouvelles, des messages et des technologies utiles avec les lecteurs d'All About Circuits d'une manière qui ne convient pas au contenu éditorial. Tous les articles de l'industrie sont soumis à des directives éditoriales strictes dans le but d'offrir aux lecteurs des informations utiles, une expertise technique ou des histoires. Les points de vue et opinions exprimés dans les articles de l'industrie sont ceux du partenaire et pas nécessairement ceux d'All About Circuits ou de ses rédacteurs.


Embarqué

  1. Comprendre la relation entre le cloud computing et la virtualisation
  2. Quels sont les meilleurs cours de cloud computing ?
  3. Les plus gros obstacles à une adoption sans serveur plus large
  4. Infrastructure de cloud computing ; Comprendre les bases
  5. La grande victoire :le cloud computing dans les jeux
  6. Pourquoi migrer vers le cloud ? 10 avantages du cloud computing
  7. Top 10 des métiers du cloud computing au Royaume-Uni
  8. Présentation des arguments en faveur des puces neuromorphiques pour l'IA informatique
  9. Advantech fait passer le calcul accéléré du Cloud à la périphérie avec NVIDIA