Changes between Version 7 and Version 8 of Component/trx_ofdm


Ignore:
Timestamp:
Feb 24, 2009, 2:00:10 PM (15 years ago)
Author:
ivan.miro-panades@…
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/trx_ofdm

    v7 v8  
    5050Les 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é.
    5151
    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.
     52L'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.
    5353
    5454Pour 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.
     
    6060Les registres ici détaillés correspondent aux registres de configuration accessible à travers du bloc MWMR (voir Section 7 pou plus de détail).
    6161
    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.
     62Le 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.
    6363
    6464|| '''Registre de configuration du MWMR''' || '''Description'''                                                                          ||
     
    177177
    178178== 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 le wrapper du trx_ofdm. Ce mécanisme permet uniquement de faire des écritures de configuration, on ne peut pas faire de lecture.
     179Les 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.
    180180
    181181Pour 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:
    182182
    183183 * 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érer séquentielle.
     184 * On écrit dans la FIFO les données de configuration de maniére séquentielle.
    185185
    186186Par 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.
     
    196196 2. Reseter à 0 le registre Excute (registre @0).
    197197 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 FIFOs
     198 4. Charger les données du module à travers les FIFOs
    199199 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é.
    201201
    202202On 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.
     
    213213 * Une mémoire de locks
    214214 * Un TTY
    215  * Un MWMR connecté au TRX_OFDM
     215 * Un MWMR connecté au module TRX_OFDM
    216216
    217217
     
    222222 * Etat de la FIFO logicielle
    223223 * 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 possible d'utiliser le MWMR correctement.
     224Nous 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.
    225225
    226226Tout 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.