Changes between Version 1 and Version 2 of Component/FHT
- Timestamp:
- Mar 5, 2009, 5:20:10 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Component/FHT
v1 v2 9 9 10 10 == 2) Architecture du bloc == 11 L'architecture du bloc FHT est composée de deux modules, le cœur et le wrapper. Le cœur effectue tous les traitements FHT. Le wrapper sert à fournir une interface compatible SoClib CABA avec le module MWMR_controller, disponible dans la librairieSoClib.11 L'architecture du bloc FHT est composée de deux modules, le cœur et le wrapper. Le cœur effectue tous les traitements FHT. Le wrapper sert à fournir une interface compatible !SoClib CABA avec le module MWMR_controller, disponible dans la librairie !SoClib. 12 12 13 [[Image( aaa.JPG, align=top,nolink)]]13 [[Image(Diapositive1.GIF, align=top,nolink)]] 14 14 15 15 === 2.1) Interface du bloc FHT === … … 34 34 * FIFO out: FIFO de sortie des donnés calculées 35 35 36 [[Image( aaa.JPG, align=top,nolink)]]36 [[Image(Diapositive2.GIF, align=top,nolink)]] 37 37 38 38 Le format de donnés d'entrée complexe a ce format : la partie I (réelle) est sur les 16 bits poids forts et la partie Q (imaginaire) sur les 16 bits poids faibles. 39 39 40 [[Image( aaa.JPG, align=top,nolink)]]40 [[Image(Diapositive3.GIF, align=top,nolink)]] 41 41 42 42 ==== 2.2.1) User mux ==== 43 43 Le User Multiplexor construit les symboles d’entrées pour la FHT (8, 16 ou 32 complexes) à partir de 2 flots d’entrée. L’origine de chaque complexe est définie par un jeu de 2 masques de 32 bits. Pour chaque bit (i) du jeux des masques, on détermine si la donnée provient de la FIFO 0, FIFO 1 ou elle est nulle. 44 44 45 [[Image(aaa.JPG, align=top,nolink)]] 45 ||''' Mask1(i)'''|| '''Mask0(i)''' || '''Data i''' || 46 || 0 || 0 || null || 47 || 0 || 1 || fifo_in 0 || 48 || 1 || 0 || fifo_in 1 || 49 || 1 || 1 || interdit || 50 46 51 47 52 ==== 2.2.2) FHT ==== … … 60 65 61 66 === 2.3) Anoc_copro_wrapper === 62 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é.67 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é. 63 68 64 69 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. … … 74 79 Le wrapper développé a été conçu pour pouvoir supporter plusieurs coprocesseurs avec plusieurs cœurs de calcul. Par contre, le bloc FHT contient uniquement un cœur de calcul, donc tous les registres pour les cœurs 1 à 3 ne sont pas utilisés. 75 80 76 [[Image(aaa.JPG, align=top,nolink)]] 81 ||'''Registre de configuration du MWMR''' || '''Description''' || 82 ||@0 || Execute: Début d'exécution. Bits 0 à 3, un bit par coeur || 83 ||@1 || SlotID pour le coeur 0 || 84 ||@2 || SlotID pour le coeur 1 (non utilisé) || 85 ||@3 || SlotID pour le coeur 2 (non utilisé) || 86 ||@4 || SlotID pour le coeur 3 (non utilisé) || 87 ||@5 || Adresse de configuration: Définit à quelle adresse débute la configuration du coeur || 88 77 89 78 90 ==== 2.3.2) Registres de status ==== 79 91 Ces registres sont accessibles uniquement en lecture. 80 92 93 ||'''Registre de Status du MWMR''' || '''Description''' || 94 ||@0 || EOC (End of Compute). Bits 0 à 3 (un bit par coeur) || 95 ||@1 || Status du coeur 0 || 96 ||@2 || Status du coeur 1 (non utilisé) || 97 ||@3 || Status du coeur 2 (non utilisé) || 98 ||@4 || Status du coeur 3 (non utilisé) || 81 99 82 [[Image(aaa.JPG, align=top,nolink)]] 100 83 101 84 102 == 3) Configuration du cœur == 85 103 86 [[Image(aaa.JPG, align=top,nolink)]] 104 ||'''adresse''' || '''nom du registre''' || '''bloc dest''' || '''contenus''' || 105 ||128 || fht_conf || core fht || configuration du Core || 106 ||129 || user_mask0 || user mux || masque de l'utilisateur 0 || 107 ||130 || user_mask1 || user mux || masque de l'utilisateur 1 || 87 108 88 format du registre fht_conf 109 [[BR]] 110 '''format du registre fht_conf''' 111 ||'''nom''' || '''champ''' || '''fonction''' || 112 ||cfg_sat_rst_at_load || 17 || le compteur de saturation est remis à 0 à chaque load_cfg || 113 ||cfg_nb_buf || 16:5 || nombre de buffers à traiter -1 || 114 ||cfg_nb_shift || 4:2 || nombre de positions de décalage || 115 ||cfg_fht_sz || 1:0 || codage de la taille de la FHT || 89 116 90 [[Image(aaa.JPG, align=top,nolink)]] 91 92 cfg_fht_sz code la taille effective de la FHT sur 2 bits : 93 94 [[Image(aaa.JPG, align=top,nolink)]] 117 [[BR]] 118 '''cfg_fht_sz code la taille effective de la FHT sur 2 bits :''' 119 ||'''nombre de points de la FHT''' || '''8''' || '''16''' || '''32''' || 120 || cfg_fht_sz || 0 || 1 || 2 || 95 121 96 122 == 4) Envoi de la configuration du cœur à travers de MWMR == … … 132 158 * Un MWMR connecté au module FHT 133 159 134 [[Image( aaa.JPG, align=top,nolink)]]160 [[Image(Diapositive4.GIF, align=top,nolink)]] 135 161 136 162 Tout le code nécessaire pour faire fonctionner le bloc FHT est embarqué dans le MIPS. Nous avons crée une API (api_fht.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 FHT.