Changes between Version 7 and Version 8 of Component/trx_ofdm
- Timestamp:
- Feb 24, 2009, 2:00:10 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Component/trx_ofdm
v7 v8 50 50 Les interfaces de communication entre les coprocesseurs développés au CEA-Leti ne sont pas directement compatibles avec les interfaces CABA proposés par !SoClib. Pour permettre de faire une conversion de protocole en gardant une fonctionnalité équivalente, un wrapper à été développé. 51 51 52 L'interface fournie par le module MWMR controller a certaines limitations. Par exemple, le contenu des registres configuration ne peut pas être modifié par le coprocesseur. En autre, si le coprocesseur fait une copie locale de ce registre, il ne peut pas savoir quand le contenu de ces registres été mise à jour.52 L'interface fournie par le module MWMR controller a certaines limitations. Par exemple, le contenu des registres configuration ne peut pas être modifié par le coprocesseur. En outre, si le coprocesseur fait une copie locale de ce registre, il ne peut pas savoir quand le contenu de ces registres été mise à jour. 53 53 54 54 Pour résoudre ce problème, nous avons conçu un wrapper qui détecte le changement du contenu des registres de configuration pour détecter un changement dans ces derniers. … … 60 60 Les registres ici détaillés correspondent aux registres de configuration accessible à travers du bloc MWMR (voir Section 7 pou plus de détail). 61 61 62 Le wrapper développé àété conçu pour pouvoir supporter plusieurs coprocesseurs avec plusieurs cœurs de calcul. Par contre, le bloc TRX_OFDM contient uniquement un cœur de calcul, donc tous les registres pour les cœurs 1 à 3 ne sont pas utilisés.62 Le wrapper développé a été conçu pour pouvoir supporter plusieurs coprocesseurs avec plusieurs cœurs de calcul. Par contre, le bloc TRX_OFDM contient uniquement un cœur de calcul, donc tous les registres pour les cœurs 1 à 3 ne sont pas utilisés. 63 63 64 64 || '''Registre de configuration du MWMR''' || '''Description''' || … … 177 177 178 178 == 4) Envoi de la configuration du cœur à travers de MWMR == 179 Les configurations du cœur ne sont pas visibles directement dans le memory map du système. On ne peut pas faire une lecture/écriture à une adresse pour obtenir la valeur à configurer/lire. Pour configurer ces registres, il faut passer par un mécanisme d'indirection mise en place par l ewrapper du trx_ofdm. Ce mécanisme permet uniquement de faire des écritures de configuration, on ne peut pas faire de lecture.179 Les configurations du cœur ne sont pas visibles directement dans le memory map du système. On ne peut pas faire une lecture/écriture à une adresse pour obtenir la valeur à configurer/lire. Pour configurer ces registres, il faut passer par un mécanisme d'indirection mise en place par l'association MWMR + wrapper du trx_ofdm. Ce mécanisme permet uniquement de faire des écritures de configuration, on ne peut pas faire de lecture. 180 180 181 181 Pour charger les configurations au cœur TRX_OFDM on utilise une FIFO (FIFO d'entrée de configuration) et un registre de configuration (Adresse de configuration: registre @5) de MWMR. La procédure est la suivante: 182 182 183 183 * On écrit dans le registre @5 l'adresse de début à configurer. 184 * On écrit dans la FIFO les données de configuration de maniére rséquentielle.184 * On écrit dans la FIFO les données de configuration de maniére séquentielle. 185 185 186 186 Par exemple, si on veut configurer les adresses 10 à 25, on écrit 10 dans le registre @5 et puis on écrit les 15 valeurs de configuration dans la FIFO. … … 196 196 2. Reseter à 0 le registre Excute (registre @0). 197 197 3. Ecrire 1 au registre Execute pour démarrer une nouvelle exécution au module. 198 4. Charger les données au module à travers des FIFOs198 4. Charger les données du module à travers les FIFOs 199 199 5. Attendre la fin du chargement avant de charger des nouvelles données. Pour cella, faire du polling sur le registre de EOC (End of Compute, registre status @0) et attendre la valeur 1. 200 6. On peut lire la valeur de Status du cœur 0 (registre status @1) pour savoir si tout est bien passé. La valeur 0 signifie que tout c'est bien passé.200 6. On peut lire la valeur de Status du cœur 0 (registre status @1) pour savoir si tout est bien passé. La valeur 0 signifie que tout s'est bien passé. 201 201 202 202 On peut charger un nouveau paquet de données dès que le registre de EOC du paquet précédent vaut 1. Autrement on pourrait écraser l'exécution courante. … … 213 213 * Une mémoire de locks 214 214 * Un TTY 215 * Un MWMR connecté au TRX_OFDM215 * Un MWMR connecté au module TRX_OFDM 216 216 217 217 … … 222 222 * Etat de la FIFO logicielle 223 223 * Locks 224 Nous avons séparé les objets FIFO logiciel et son état dans une mémoire (RAM MWMR) pour pouvoir définir cette mémoire comme non cachée. Autrement, il ne serait p ossible d'utiliser le MWMR correctement.224 Nous avons séparé les objets FIFO logiciel et son état dans une mémoire (RAM MWMR) pour pouvoir définir cette mémoire comme non cachée. Autrement, il ne serait pas possible d'utiliser le MWMR correctement. 225 225 226 226 Tout le code nécessaire pour faire fonctionner le bloc TRX_OFDM est embarqué dans le MIPS. Nous avons crée une API (api_trx_ofdm.h) pour permettre une programmation simple de ce bloc. De même, nous avons crée une API (api_mwmr.h et api_mwmr.cpp) pour le MWMR qui intègre toutes les fonctionnalités requises par la API du TRX_OFDM.