Langage et technologie pour l’implémentation
Le module doit être programmé en langage de type HDL (Hardware Description Language) pour faciliter la compréhension et permettre l’emploi de variables de configurations. Une approche modulaire et hiérarchique permet la réutilisation des blocs conçus, elle est donc à privilégier. Le langage choisi pour la réalisation de la FFT/IFFT est le VHDL (Very High Speed Integrated Circuit Hardware Description Language) et le code doit être entièrement synthétisable. Les paramètres de configuration doivent être fixés avant la synthèse au niveau hiérarchique supérieur dans le code. La conception ne doit pas être dédiée à une plate forme spécifique, ni à une technologie précise. En revanche, le module est principalement ciblé pour être utilisé dans des plates-formes de type FPGA (Field Programmable Gate Array). Des attributs peuvent servir à optimiser le module pour une certaine plate-forme, mais l’implémentation dans d’autres technologies doit rester possible.
Ressources et vitesse
Les ressources matérielles limitées telles que la logique de calcul et de contrôle ainsi que la mémoire doivent êtres minimisées pour laisser de l’espace au reste du design. En contrepartie, la fréquence d’opération doit être maximisée afin d’avoir les meilleures performances. Il n’y a pas de valeur précise à atteindre quant à la vitesse requise pour réaliser une transformée, puisque c’est un paramètre qui varie en fonction de l’application de traitement du signal et de la technologie. La latence, délai en cycles d’horloge entre l’entrée du premier échantillon d’une FFT et la sortie du premier point en fréquence, doit aussi être minimisée.
Paramètres fixes
Toutes les données traitées sont complexes, c’est-à-dire qu’elles possèdent une partie réelle et une partie imaginaire. Les nombres sont représentés en complément à deux et on considère le point décimal à la suite du MSB. Ainsi pour un mot de b bits, la plage de représentation des nombres se situe entre 1-2-(b-1) et -1. L’incrément entre deux nombres consécutifs est de 2-(b-1) .
Le module de transformée de Fourier reçoit ses données d’entrée, des échantillons temporels dans le cas d’une FFT, de façon sérielle. La sortie est aussi produite de manière sérielle. Le module doit posséder un port d’entrée et un port de sortie, chacun ayant la largeur d’une donnée complexe. Le module a aussi une entrée pour l’horloge cl k et une pour un signal d’activation de l’horloge ce. Les données n’ont pas besoin d’entrer à un rythme constant, mais les échantillons doivent arriver de manière synchrone avec l’horloge. Il doit aussi posséder un mécanisme pour la synchronisation avec des modules extérieurs, tel qu’un signal pour lui indiquer le début d’une séquence et un signal pour informer que les résultats sont valides.
Le module doit être en mesure de fonctionner en temps réel, c’est-à-dire que pour chaque donnée qui entre, une donnée est produite en sortie. Une fois que la dernière donnée d’une séquence deN points est fournie au module, celui-ci est en mesure d’accepter la première donnée de la séquence suivante. Aucune étape intermédiaire de traitement n doit rompre le rythme. On doit aussi pouvoir opérer le module pour réaliser une seule transformée, puis d’attendre la suivante.
Les résultats de la FFT font suite à plusieurs étapes de calcul qui peuvent introduire des erreurs dues à la représentation discrète des nombres et à l’utilisation de la notation en point fixe. Ces erreurs de quantification doivent être les plus faibles possible. Il est même souhaitable de caractériser ces erreurs et d’identifier leurs sources.
Paramètres reconfigurables
Plusieurs paramètres du module doivent être configurables pour répondre aux besoins des différentes applications de traitement numérique du signal nécessitant une transformée de Fourier. Ces paramètres sont énumérés et détaillés dans les sous-sections suivantes.
Taille
La taille de la transformée de Fourier doit être paramétrée. Ainsi, toutes les tailles de puissance de deux peuvent être sélectionnées puisque l’algorithme de la FFT se prête bien à faire des transformées de taille puissance de deux. L’espace occupé par le module croît en fonction de la taille de la transformée. La limite pour la taille maximale n’est pas imposée par le module lui-même, mais par les ressources logiques et mémoires requises. Seulement faire des transformées ayant des tailles puissances de quatre, comme c’est le cas avec certains algorithmes, serait trop limitatif.
Largeur des mots binaires
L’espace occupé par le module ainsi que la précision des calculs sont largement dépendant de la largeur utilisée par les mots binaires.
Entrée et sortie
La largeur des ports en entrée et en sortie doit pouvoir être choisie indépendamment. Des valeurs de l’ordre de 5 à 20 bits comme largeur de mot binaire sont acceptables. En tout temps, on retrouve la même taille pour la partie réelle et pour la partie imaginaire.
Facteurs de phase
La largeur binaire des facteurs de phase doit aussi être un paramètre configurable. La précision des résultats et l’utilisation de ressources mémoires en dépendent. Des largeurs binaires semblables à celles des données, soit de 5 à 20 bits.
Interne
Les largeurs des différents bus de données internes doivent être paramétrées de manière à conserver ou à améliorer la précision des résultats. Pour ce faire, des mécanismes d’augmentation de la largeur des mots binaires pour empêcher le débordement et/ou pour réduire la largeur, tels que l’arrondi ou la troncation, doivent être employés.
Type de transformée
Le passage du domaine du temps au domaine de la fréquence, autant que celui du domaine de la fréquence au domaine du temps doivent être possibles. L’usager du module doit avoir le choix entre une FFT ou une IFFT. Ces deux transformées contiennent essentiellement les mêmes mécanismes mathématiques. Dans le cas de l’IFFT . Ainsi, seul le signe de l’exponentielle complexe exécutant une rotation de phase change.
Ordonnancement de l’entrée
En général dans les différentes architectures de FFT, si les données arrivent au module de manière chronologique (ordre naturel), elles ressortent en ordre des bits renversé . L’inverse est aussi vrai: une entrée en ordre renversé donnera une sortie en ordre naturel. Le choix de l’ordonnancement en entrée doit être disponible pour permettre la cascade d’une FFT à l’entrée ordonnée et d’une IFFT à l’entrée en ordre des bits renversé. Cette dernière produira une sortie ordonnée.
INTRODUCTION |