Une bouffée d'air frais dans la robotique

Telecom Robotics

PWM spread spectrum

Tutoriaux

Nos Robots

Connexion utilisateur

Telecom Robotics / Areabot

Une bouffée d'air dans la robotique

5. Simulation

Simulation

Pour vérifier le bon fonctionnement du générateur, nous avons écrit
un environnement de simulation (appelé testbench dans le jargon des HDL). Ce n'est pas un testbench à proprement parler, car il ne vérifie pas
automatiquement que la sortie du générateur SSPWM est correcte. Il se contente juste de fournir quelques valeurs en entrée, et de générer des chronogrammes (trace.vcd).

A charge de l'utilisateur de regarder les chronogrammes (Modelsim, gtkWave, ...) et de vérifier qu'ils sont corrects.

Dans ce fichier, la génération des chronogrammes est commentée, car ce qui nous intéresse vraiment est décrit plus bas...

Voici un bout des chronogrammes de la simulation du testbench par défaut (rapport cyclique val=128, soit 50%) :

Chronogrammes de simulation

On vérifie bien que le rapport cyclique est constant (50%), et que la période varie de très-peu à beaucoup !

 

Cependant, il est intéressant de vérifier l'impact des paramètres period_min et period_range
sur le spectre du signal obtenu. Pour cela, le testbench effectue trois tests, avec trois valeurs différentes du paramètres period_range, les autres paramètres restant fixés. Il sort la valeur de out à chaque cycle d'horloge dans un fichier séparé pour chaque test (test1.dat, test2.dat et test3.dat).

Ces fichiers sont ensuite passés dans un programme (transvec) qui se charge de calculer le spectre du signal PWM par FFT. Le spectre peut ensuite être affiché grâce à GnuPlot.

Pour simplifier la vie, un Makefile se charge de tout. Il suffit d'appeller "make" et les opérations suivantes sont effectuées :

  • simulation du système en Verilog par Cver
  • si nécessaire, compilation du programme de calcul des FFT
  • calcul des FFT,
  • affichage des spectres par GnuPlot.

Pour que cela fonctionne, il faut bien entendu que GnuPlot et Cver soient installés, et disposer d'un compilateur C et la bibliothèque fftw3.

Voici quelques résultats, pour différentes valeurs d'horloge système. On a pris un rapport cyclique de 50%, une fréquence PWM maximale d'environ 40kHz, et une minimum d'environ 7kHz. Cliquez sur les images pour les agrandir.


Horloge 10MHz Horloge 25MHz Horloge 40MHz Horloge 100MHz

 

On peut constater qu'il ne sert à rien d'avoir un range trop grand. Cela vient du fait que les nombres aléatoire choisis sont uniformément distribués, et déterminent non pas une fréquence mais une période. On a donc une plus grande concentration de fréquences possibles dans la partie basse du spectre due à l'hyperbole (T=1/f).

On peut constater aussi qu'il vaut mieux utiliser une horloge de base d'au moins 25MHz. Et qu'avec un range d'environ 6, on obtient bien un spectre bien plus plat et étalé...


Nos soutiens

Images aléatoires

Untitled image Spectre f=100MHz 

Événements à venir

  • pas grand chose...

Contenu populaire

Parcourir les archives

« Juillet 2008  
Lu Ma Me Je Ve Sa Di
  1 2 3 4 5 6
8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Syndication

Syndiquer le contenu