FR 2569286 A1 19860221 FR 8412801 A 19840814 PROCESSEUR DE SIGNAL DESTINE PLUS PARTICULIEREMENT A EFFECTUER DES OPERATIONS DE FILTRAGE ADAPTATIF. La présente invention concerne un processeur de signal destiné plus particulièrement à effectuer des opérations de filtrage adaptatif, processeur comportant une unité arithmétique et logique munie d'une première entrée d'opérande et d'une deuxième entrée d'opérande, prévue pour coopérer avec un accumulateur, un organe de multiplication muni d'une première entrée d'opérande et d'une deuxième entrée d'opérande, au moins deux mémoires vives munies d'accès de données, une première ligne pour connecter l'accès de données de l'une des mémoires vives à la première entrée d'opérande de l'organe de multiplication, une deuxième ligne pour connecter l'accès de données de l'autre mémoire à la deuxième entrée de l'organe de multiplication, une troisième ligne pour transférer les données de la sortie de l'unité arithmétique et logique vers lesdites mémoires vives, et un organe séquenceur pour commander le fonctionnement du processeur en fonction d'instructions, transmises par une ligne commune d'instructions provenant d'une mémoireprogramme. Un tel processeur est connu de la publication intitulée Un microprocesseur rapide orienté vers le traitement numérique adaptatif du signal" ayant pour auteurs Miche CAND et al. parue en 1981 dans les Annales des Télécommunications, vol. 36, n011-12 aux pages 685 à 688. Ce processeur connu est bâti autour d'une architecture à deux lignes communes, une ligne qui reçoit les données des mémoires vives et une ligne qui fournit à ces mêmes mémoires des données notamment des résultats de calculs effectués par l'unité arithmétique et logique combinés ou non avec ceux de l'organe de multiplication. Pour faire les calculs rapidement il importe que les opérandes appliqués aux entrées d'opérande de l'organe de multiplication soient appliqués simultanément. Pour cela, dans le processeur connu on a prévu une première et une deuxième lignes particulières qui relient, en dehors de la ligne commune recevant les données des mémoires, les accès de données des mémoires aux entrées d'opérande de l'organe de multiplication. Ces lignes particulières ne desservent que l'organe de multiplication.L'unité arithmétique et logique n'est pas alimentée simultanément par les données provenant des mémoires. Ce processeur connu présente donc l'inconvénient que toutes les opérations que doit effectuer l'unité arithmétique et logique impliquent qu'un opérande provienne de l'accumulateur : c'est-à-dire que l'on doit prévoir des instructions supplémentaires pour charger l'accumulateur, ce qui rallonge la durée de traitement. La présente invention propose un processeur du genre mentionné dans le préambule qui ne présente pas cet inconvénient. Pour cela, un processeur conforme à l'invention est remarquable en ce qu'il est prévu, pour transformer la première ligne en ligne commune, des premiers moyens de connexion pour la connecter, en outre, sur l'accès de données de la deuxième mémoire et sur l'entrée de l'unité arithmétique et logique et pour transformer la deuxième ligne en ligne commune, des deuxièmes moyens de connexion pour la connecter, en outre, sur les accès de données de la première mémoire et sur l'entrée de l'unité arithmétique et logique. Ainsi par les mesures preconisees par l'invention on aboutit à un processeur présentant une architecture à trois lignes communes On peut encore améliorer les performances du processeur conforme à l'invention. Pour cela, selon une caractéristique importante de l'invention, il est prévu des moyens de connexions supplémentaires permettant de relier entre elles lesdites lignes communes. Cette mesure de l'invention permet de gagner du temps pour les transferts d'informations entre ces lignes communes. Selon une autre caractéristique importante de l'invention, un tel processeur est remarquable en ce qu'en une seule instruction on agit sur les moyens de connexions pour définir une source d'informations et une destination à chacune desdites trois lignes communes. Une telle instruction permet donc trois transferts d'information simultanés. Ceci permet d'effectuer des opérations de calcul relativement compliquées avec quelques instructions et d'obtenir ainsi des résultats rapidement. Un processeur de l'invention permet de réaliser les opérations suivantes simultanément en pipe-line - recherche de l'instruction suivante N + 1, - lire ou écrire les opérandes de l'instruction N, - incrémenter positivement ou négativement les adresses desdites mémoires vives, - exécution des opérations par l'unité arithmétique et logique définies dans l'instruction N - 1, - lancer une multiplication, - utiliser le résultat de la multiplication Lancée à L'instruction N - 2. La description suivante, faite en regard des dessins annexés, le tout donné à titre d'exemple non limitatif, fera bien comprendre comment L'invention peut être réalisée. La figure 1 représente un processeur conforme à l'invention. La figure 2 représente le détail des unités d'adressage. La figure 3 représente le détaiL du circuit séquenceur. La figure 4 représente un diagrammetemps dans Le cas d'un branchement immédiat déclenché par Le circuit séquenceur. La figure 5 représente un diagramme temps dans Le cas d'un branchement calculé décLenché par le circuit séquenceur. La figure 6 représente la structure des instructions utilisées par Le processeur de l'invention. La figure 7 représente le détail d'une unité d'adressage affectée à une mémoire morte et à un adressage externe. Les figures 8a et 8b représentent La succession des instructions pour un premier exemple de programmation. Les figures 9a et 9b représentent la succession des instructions pour un deuxième exemple de programmation. La figure 10 montre une cellule biquad. La figure 11 montre l'implantation en mémoire des coefficients de cette ceLlule. La figure 12 représente la succession des instructions pour un troisième exemple de programmation. Le processeur montré à la figure 1 est destiné plus particulièrement à effectuer des opérations de filtrage adaptatif. Ces opérations se rencontrent notamment lorsqu'on veut simuler les fonctions de filtres semblables à celles qui sont effectuées dans les modems du type avec égaliser et annuleur d'écho. Dans ces opérations on fait appel à des grandeurs pouvant provenir de mémoires 10 et 20 ; l'opération de multiplication est effectuée par un organe de multiplication 30 ; cet organe est muni de deux entrées d'opérande Rx et Ry connectées respectivement aux registres de sortie 31 et 32 des mémoires 10 et 20. Une ligne commune BUSZ transfère à ces mémoires des données transitant par des registres d'entrée 33 et 34 ; ces mémoires sont adressées par des unités d'adressage 35 et 36. Une unité arithmétique et logique 37 permet d'effectuer notamment l'opération de somme. Cette unité 37, tout comme l'organe de multiplication 30 permet d'effectuer des opérations selon différents modes c'est-à-dire sur des grandeurs complexes, réelles ou double précision ; on pourra à ce sujet se reporter à la demande de brevet déposée conjointement avec la présente demande, sous le numéro 84 12 799 . Cette unité 37 se compose essentiellement d'une unité arithmétique et logique standard 40 munie d'entrées pour opérande A et B, d'une entrée pour retenue RE et d'une entrée pour code de commande K pour recevoir des codes alu définissant l'opération à exécuter par l'unité 40. Le résultat de l'opération apparaît à La sortie SALU et des informations pour un registre de statut 44 apparaissent à une sortie ST.Pour opérer seLon les différents modes on a prévu un organe de gestion des codes de commande 45 de l'unité 40 qui fournit, outre les codes "a lu", la valeur à appliquer à l'entrée RE. Un organe de gestion de statut 50 fournit les informations au registre 44 en fonction des indications disponibles à La sortie ST. Différentes informations RST sont dérivées de ce registre 44. Les organes 45 et 50 reçoivent outre les- informations provenant de la ligne BUSI une information MOD déterminant le mode d'opération (simple précision (SP), complexe tCX) et double précision (DP) ; cette information est élaborée par un décodeur de mode 52 connecté sur la ligne BUSI ; le mode est déclaré par une instruction préalable décrite ci-après et l'on reste dans ce mode tant qu'une autre instruction n'en a pas décidé autrement. Les instructions proviennent d'un registre d'instructions 54 connecté en sortie d'une memoire-programme 56. Cette mémoire-programme est adressée par un compteur-programme 58 progressant normalement au rythme d'un signal HII. Le contenu du compteur-programme 58 peut être chargé ou sauvegardé par un circuit séquenceur 62. Conformément à l'invention, il est prévu, pour transformer les connexions entre les mémoires 10 et 20 et respectivement les entrées Rx et Ry de L'organe 10 en lignes communes BUSX et BUSY, des moyens de connexions constitués par exemple par des registres de sortie supplémentaires 61 et 62 pour connecter la sortie de la mémoire 10 sur la ligne BUSY et la sortie de la mémoire 20 sur la ligne BUSX. En outre, la ligne BUSX peut être connectée à l'entrée A de l'unité 40 par l'intermédiaire d'un multiplexeur 70 mis dans une première position et d'une unité de décalage 72 (mieux connue sous la dénomination anglosaxonne Barrel Shifter). De même, la ligne BUSY est aussi connectée à l'entrée B de l'unité 40 par l'intermédiaire d'un multiplexeur 74 mis dans une première position. La sortie de l'unité 37 est reliée à l'entrée d'un ensemble 77 d'accumulateurs 77A et 77B, à L'entrée d'une mémoire à file 79 (mémoire FIFO ou le premier mot entré est le premier mot sorti) et aussi à une entrée d'un multiplexeur 80 à plusieurs entrées g c'est à la sortie de ce multiplexeur qu'est reliée la ligne BUSZ ; les autres entrées de ce multiplexeur sont reliées respectivement à la sortie du registre 44, à la sortie de la mémoire 79 et à la sortie de l'ensemble de registres 77. Il est à nqter une liaison qui réunit la sortie de l'ensemble de registres 77 à l'entrée B de l'unité 40 par l'intermédiaire du multiplexeur 74 mis dans sa deuxième position.Une horloge 85 règle le cadencement des opérations du processeur et fournit notamment le signal HII et différents signaux de phase #0, 1, 2, 3 (0-3). La figure 2 montre la structure des unités d'adressage 35 et 36 ; ces unités ont déjà été décrites du moins pour certaines particularités dans la demande de brevet déposée au nom de la demanderesse sous te numéro 84 03 813 à la date du 13 mars 1984. L'unité d'adressage 35,36 fournit sur sa sortie 90 un code d'adresse pour la mémoire 10 ou 20. Ce code provient de l'un des registres 95, 96 ou 97 via un multiplexeur 100 et un registre de type patch 105. La sortie du multiplexeur 100 est reliée à l'une des entrées d'un additionneur 110 recevant sur son autre entrée une valeur a (en pratique, A = - 1 ou O ou + 1) ; la sortie de cet additionneur est reliée à l'entrée E4 d'un multiplexeur à quatre entrées 140 ; La première entrée El de ce multiplexeur 140 est reliée à la sortie S d'un multiplexeur 144 dont les entrées El et E2 sont communes avec celles d'un multiplexeur 146. La deuxième entrée E2 est reliée à La ligne BUSI et la troisième entrée E3 à la ligne BUSZ.Lorsqu'on utilise l'adressage cyclique comme décrit dans la demande de brevet précitée on se sert d'un comparateur 148 pour comparer le contenu du registre 95 fournissant alors l'adresse pour la mémoire 10 (20) avec ceux des registres 96 et 97 prévus pour contenir respectivement les adresses minimum et maximum. En dehors de l'adressage cyclique iL est possible d'incrémenter ou de décrérnenter Les registres 96 et 97 dont Les contenus servent alors de code d'adresse pour La mémoire 10 (20). Pour cela le multiplexeur 100 est pourvu d'entrées dont trois parmi quatre sont reliées aux sorties de ces registres 95, 96 et 97. La quatrième est reliée à la ligne BUSI pour l'adressage direct. Un ensemble d'amplificateurs à trois états portant la référence 150 permet de transmettre le code d'adresse à la sortie du registre 105 sur la ligne BUSZ. Un circuit de commande 155 fournit à partir des signaux issus de la ligne BUSI et du signal CMP du comparateur 148 différents signaux de commande : SVG, LMAX, LMIN, LAD, C3, C3, MUX1, MUX2, MUX3, MUX4 et # ; ces signaux LMAX, LMIN et LAD sont respectivement les commandes de chargement des registres 97, 96 et 95.Les signaux C3 et C3 sont les commandes des multiplexeurs 146 et 144 ; les signaux MUX1, MUX2 les signaux de commande du multiplexeur 140 et les signaux MUX3 et MUX4, les signaux de commande du multiplexeur 100. Le signal SVG est la commande à l'état haute impédance des amplificateurs de l'ensemble 150. Il va de soi que le circuit 155 n'est pas tout à fait identique selon que l'on a affaire aux unités d'adressage 35 et 36. Le circuit 155 doit reconnaStre l'instruction qui lui est affectée. On rappelle dans ce qui suit ce que l'on appelle l'adressage cyclique. C'est-à-dire que, par de simples instructions d 'incrémentation # de pointeur de mémoires on passe de la valeur d'adresse maximum ADM à la valeur d'adresse minimum ADm soit séquentiellement : ADm, ADm + # ,... ADM ADM, ADm, ADm + A... ou de la valeur d'adresse minimum ADm à la valeur d'adresse maximum AMD soit séquentiellement : ADM, ADM - A,... ADm + #, ADm, ADM, ADM - A. A peut avoir les valeurs typiques : O, 1, La figure 3 représente le circuit séquenceur 62 qui a été décrit en partie dans la demande de brevet français déposée au nom de la demanderesse sous le numéro 83 21 104 à la date du 30 décembre 1983. Ce circuit séquenceur est bien adapté pour effectuer les parties de programme bouclées c' est-à-dire comprenant N fois l'exécution d'une séquence de i instructions, J1, J2,... Ji. Pour cette exécution, le circuit séquenceur 62 comprend un compteur d'instructions de séquences 225 pour fournir un signal ZCBI indiquant la fin de la séquence d'instructions J1, J2, ... Ji ; ce compteur 225 s'incrémente sur des signaux DCBI2 ayant la même cadence que L'apparition des instructions. Le circuit 62 comporte aussi un premier registre 230 pour contenir l'adresse de la première instruction J1, et pour la fournir par l'intermédiaire d'un multiplexeur 232 au compteur-programme 58 à l'apparition du signal de fin de séquence ZCBI et un compteur de boucLe 235 déclenché au début de ladite partie de programme, s'incrémentant sur des siganux DCBR afin de compter Le nombre d'exécutions et prévu pour fournir un signal ZCBR indiquant la fin de partie de programme afin de passer à la suite du programme instruction.Pour recharger te compteur 225 à chaque début de séquence on a prévu un registre 242 destiné à contenir le nombre "i" correspondant au nombre d'instructions que comporte La séquence. Le multiplexeur 232 permet de connecter d'autres registres pour contenir l'adresse d'un code-programme : les registres 236 et 237 ; une position est aussi prévue pour connecter la ligne BUSI. Un signal à deux bits SCA appliqué à ce multiplexeur permet d'aiguiller un de ces registres ou la Ligne BUSI sur te compteurprogramme 58. Il faut rappeler ---- que l'organe de multiplication fonctionne en pipe-line et que le résultat d'une opération de muLtiplication déclenchée par une instruction ne sera rendu disponible que deux instructions plus tard et cela sans empêcher l'exécution d'autres instructions. Afin de faciliter les opérations d'initialisation de boucle et de s'adapter au fonctionnement en pipe-line, on a prévu des mesures pour retarder l'exécution de la boucle après une déclaration d'une instruction de boucle JB. Pour cela le circuit séquenceur 62 comporte un compteur de délai 250 destiné à contenir un nombre "D" correspondant au nombre d'instructions à exécuter avant de commencer la boucle. Ce compteur 250,qui se décrémente au rythme de signaux DDEL, fournit un signal ZDEL correspondant au passage à zéro pour déclencher le début d'exécution de la boucle. Tout comme le registre 242 et le compteur 235, ce compteur de délai 250 est chargé par l'instruction JB transmise par la ligne BUSI à 32 bits.Les bits 20 à 23 seront chargés dans le registre 242 ; les bits 24 à 31 dans le registre 235 via un multiplexeur 252 et Les bits 17 à 19 dans le registre 255. Le multiplexeur 252 commandé par un signal CMBR est prévu pour charger le registre 235 soit à partir du bus BUSI, soit à partir du bus de données BUSZs Cette particularité procure l'avantage que le nombre N d'exécutions peut résulter d'un calcul effectué par le processeur. Un circuit LATCH 260 coopérant avec un ensemble d'amplificateurs à trois états portant la référence 262 permet de transférer le contenu du compteur-programme 58 vers l'une des mémoires 10 ou 20. Le registre 236 est destiné à enregistrer l'adresse de L'instruction où un sous-programme est déclaré. Le registre 237 est un registre pour permettre de remettre en phase le code d'adresse provenant de la ligne BUSZ en cas de branchement ; on dit dans ce cas branchement calculé". Lorsque le code d'adresse provient de la ligne BUSI on est alors dans le cas de -branchement immédiat".Un circuit de commande de séquencement 270 fournit outre les signaux précités DCBI2, DCBR, SCA, DDEL et CMBR les signaux LCBI1, LCBR, LCBL, LCBI2, LBRC, LSP, LRAB et LVH qui sont les signaux de commande de chargement des registres ou compteurs 242, 235, 250, 225, 237, 236, 230 et 260 respectivement et également le signal SVH pour mettre l'ensemble 262 à l'état passant ou non. Ces signaux sont élaborés à partir des informations provenant de la Ligne BUSI, des informations RST et des signaux ZCBI, ZCBR, ZDEL et d'un signal HII fixant le rythme d'apparition des instructions ; c'est ce signaL qui incrémente normalement le compteur 58. Les figures 4 et 5 suivantes montrent comment fonctionne ce circuit 62 dans le cas où un branchement immédiat ou calculé doit etre exécuté. L'instant "tbO" indiqué sur la figure 4 représente I1 instant d'apparition où le compteur-programme 58 contient L'adresse d'une instruction In impliquant un branchement à une adresse BRA. A t'instant tb1, l'instruction In se trouve dans le registre 54 ; cette instruction est décodée en tant que telle puis, à l'instant tb2,le signal LVH devient actif et le contenu du compteur-programme qui est à cet instant l'adresse de l'instruction In+1 est enregistré dans le registre 260. Puis, à l'instant tb3e le contenu du registre de statut qui conditionne le branchement devient valide.Si le branchement doit avoir lieu Le signal LCP devient actif et l'adresse de branchement, transmise dans ce cas de branchement immédiat, est transférée de la ligne BUSI via le multiplexeur 232 dans le compteur-programme à l'instant tb4. A l'instant tb5, le compteurprogramme 58 est incrémenté d'une unité de sorte que son contenu est BRA+1. Ainsi on voit que dans un cycle d'instructions TC le contenu du compteur-programme (58) est modifié et L'adresse de L'instruction In+1 est remplacée par l'adresse BRA. L'instant tb10 porté sur la figure 5 indique L'apparition de l'adresse BRC d'une instruction Jn impliquant un branchement calculé ; cette adresse est contenue dans le compteur-programme 58. L'adresse du branchement provient de la Ligne BUSZ sur LaquelLe Les informations ne sont disponibles que durant des laps de temps TTD Entre ces laps de temps, on se trouve à l'état de précharge. A l'instant tb11 l'instruction Jn se trouve dans le registre 54, puis à l'instant tb13 L'information RST est disponible ; si le branchement est demandé, Le signal LCP devient actif à l'instant tub14 survenant à L'intérieur d'un laps de temps TTD où l'adresse BRC est disponibLe ; auparavant à l'instant tb12 te contenu du compteur-programme 58 , AD(Jn), a été sauvegardé dans Le registre 260. Depuis l'instant tb14 te contenu du compteurprogramme est BRC de sorte qu'au cycle prochain TC son contenu est incrémenté d'une unité. Une particularité intéressante de l'invention est que la ligne BUSX est connectée à la sortie d'une mémoire morte 300 via son registre de sortie 301. Cette mémoire contient différentes constantes utiles pour des opérations de filtrages. Cette mémoire est adressée par une unité d'adressage 303 qui fournit aussi des codes d'adresses sur une ligne BUSAD pour des circuits extérieurs 305 connectés aux Lignes BUSX, BUSY et BUSZ comme cela est décrit dans une demande de brevet déposée conjointement à ceLle-ci, sous le numéro 84 12 800. Cette unité 303 est décrite en détail à La figure 6. Cette unité comporte tout d'abord un multiplexeur d'entrée 400 à trois entrées ; deux de ces entrées sont reliées respectivement aux lignes BUSZ et BUSI et la troisième à la sortie d'un additionneur 401. La sortie de ce multiplexeur est reliée à quatre registres 405, 406, 407 et 408 faisant office de pointeurs de mémoires. Les registres 405 et 406 sont plutôt destinés à l'adressage de la mémoire 300 et sont des registres à 9 bits par exemple, tandis que les registres 407 et 408 sont affectés par l'intermédiaire de la ligne BUSD à l'adressage extérieur. Ces différents registres peuvent être incrémentés ou décrémentés de a au moyen de L'additionneur 401 qui, sur une entrée, reçoit la valeur fl et sur l'autre entrée reçoit par L'intermédiaire d'un multiplexeur 410 le code de l'un des registres 405'à 407. Le code de l'adresse sélectionnée par le multiplexeur est enregistré dans un registre de type LATCH 415. Ce code d'adresse peut aussi provenir directement de la ligne BUSI ; pour cela, cette ligne est connectée à une entrée du multiplexeur 410. Le code provenant de 415 est transmis, tel quel, à la mémoire 300 et n'a aucune influence sur celle-ci, si elle n'est pas impliquée dans une opération ; elle reste alors inactive.Un ensemble d'amplificateurs à trois états 420 est intercalé entre la sortie du registre 415 et la ligne BUSAD. On a prévu aussi un dernier multiplexeur 422 dont chaque entrée est connectée à la sortie des registres 405 à 408 et dont la sortie est reliée à la ligne BUSZ par un ensemble d'amplificateurs à trois états 425. Ceci permet de transférer le contenu de ces registres dans, notamment, la mémoire 10 ou 20. Les différents registres 405 à 408 sont munis respectivement de commandes de chargement LCM, LCm, LDM et LDm. Les multiplexeurs 400, 410 et 422 sont positionnés au moyen d'informations CCE, DDM et CCM. Les commandes à l'état passant ou à l'état haute impédance des ensembles 420 et 425 portent les références SAD et SBZ. Ces différents signaux SBZ, CAGE, LCM, LCm, LDM, LDm, CCM, DDM, LCD, SAD et A sont élaborés par un circuit de commande 450 à partir des informations transmises par la ligne BUSI et des signaux d'horloge 0-3. On notera aussi la présence d'un registre RT 510 (figure 1) qui interconnecte la ligne BUSX et la ligne BUSZ ; ce registre peut être aussi bien une source de données et une destination pour la ligne BUSX que pour la ligne BUSY. Un registre 520 connecté sur quelques fils de la ligne BUSI permet d'appliquer une constante numérique sur la ligne BUSY. On donne à la figure 7 la structure des instructions du processeur de l'invention. Ces instructions formées de 32 bits sont de plusieurs types définis par un préambule TYP. Le tableau 1 donne la nature de ces différents types. Tableau 1 COOE MNEMO TYP TECHNIQUE SIGNIFICATION a 100 OPIN OPERATION SUR OPERANDES INDIRECRTES b 100 OPOI OPERATION SUR OPERANDES DIRECTES c 1010 SVR SAUVEGAROE DE REGISTRES d 10110 OPIM OPERATION SUR OPERANDES IMMEDIATS e 10111 DECAL OPERATION DE DECALAGE f 010 SRI BRANCHEMENT IMMEDIAT g 0110 BRC BRANCHEMENT CALCULE h 11 INI INITIALISATION Pour faciliter l'exposé et avant de décrire plus en détail les instructions, on donne ci-dessous les codes mnémotechniques les plus utilisés pour la description des instructions SRCY : source de la ligne BUSY SRCX : source de la ligne BUSX SA : l'entrée A de l'unité 40 SB : l'entree B de l'unité 40 DSTALU : destination de la sortie de l'unité 40 SRCZ : source de la Ligne BUSZ CRXY : commande de multiplication 30 AC : incrémentation (-1, 0,-+1) du pointeur de la mémoire 300 AY : incrémentation (-1, O, +1) du pointeur de La mémoire 20 AX : incrémentation (-1, O, +1) du pointeur de la mémoire 10 RT : possibilité de charger Le registre 510 (RT) à partir de la ligne BUSZ DSTZ : destination de la Ligne BUSZ CODALU : opération. effectuée par ltuniti 37 voir tableau 2 ci-dessous TAF : destination de La sortie de l'unité 40 (soit sur La mémoire 79 soit sur le registre 77) COND : on considère la valeur dercrtains signauxnotamment mais pas excLusivement ceux issus du registre 44 TABLEAU 2 ,ia 83 L oo oo \ / o mm nm Dmm mmm \ / Q ~ ~ ~1 ~ ~ ~ ~ ~ ~ \ / O C WX . wus LEs \ / t~ .-n c c ê lec c rC rC m m \ / o LO , 1 > o W K \/ Q o; &commat; Q / \ O &num; D \ / \ s(1) -o mm Dm mmm mmm I' ro a, rc ec zt: Xc ec c rc m s: m LLLL ~ ~ ~ ~ ~ ~ ~ ~ -O 1 s w~ a E u &commat;o W - c o E E E E E E tI t &verbar; , 0 e mm lww I ++I++*-++ c, mt X C O E ~ E E W E | E E E s E E E E . ~ ax X , ~ a X g ç g 9 . . t , , Q 8 -= FI a , ro so maX|mlD Dm m Dm f 1 11 1 E L ] t & | L o o vo ooc ta,, acra a c ec c rc c .a m m l I~I 1 L o n m o O 4 | o O O . { ua 8 Q D B e c ,met 10 | t t n D . O E X X D,Q Q' . . o g l ICj4 44md > - m B 8 -Cma Q H oi E OO $ E LE t m m D mlD m m m m m | 0 = | o c c l c 8 c c ze c o nl x) El a:omum cooo D~D I o I o I o O -ol > O eL o ~ m m o W o z a: c Z E ~ ~ L I I L I I a: a) Instruction OPIN Cette instruction se décompose en plusieurs champs. L'échange XRT défini par L'éLément binaire 2 indique si le registre 510 doit être chargé ou non à partir de la ligne BUSX. SRCY : la source de la ligne BUSY peut être soit La sortie de la mémoire 10 adressée par Le registre 130 (figure 2) soit la sortie de la mémoire 20 adressée par le registre 130 soit aussi La sortie de la mémoire 20 adressée par le registre 135. SRCX : la source de la ligne BUSX peut être : -la sortie de la mémoire 300 adressée par la registre 405 -la sortie de la mémoire 300 adressée par le registre 406 -la sortie de la mémoire 10 adressée par 96 -la sortie de la mémoire 10 adressée par 97 -la sortie de la mémoire 20 adressée par 96 -le registre RT 510. SA : L'entrée A peut être retire soit à lacsortie de L'organe 30, soit sur ta ligne BUSX. SB : l'entrée B peut être reliée soit à la ligne BUSY soit à La sortie du registre 77 (registre ACC). CODALU : cf tabLeau 2 sauf les codes DLD, DAD, DLG et ROD DSIALU : cette sortie peut : -ne pas être connectée -être connectée sur la mémoire FIFO 79 -être connectée sur l'accumulateur 77A -être connectée sur l'accumulateur 775 SRCZ : cette source peut être : - la sortie de l'unité 37 - la sortie de la mémoire FIFO 79 - la sortie de l'accumulateur 77A - la sortie de l'accumulateur 77B - le registre 510 - le registre 44 CRXV : on commande L'organe de multiplication soit on charge ou L'une ou l'autre ou les deux entrées Rx et Ry par les valeurs disponibles sur les lignes BUSX et BUSY ; on peut aussi n'effectuer aucun chargement. AXLAYoAC: : incrémentation des pointeurs des mémoires 10, 20 et 300. DSTZ: la destination de la ligne BUSZ peut être - la mémoire 10 adressée par 96 - la mémoire 10 adressée par 97 - la mémoire 20 adressée par 96 - la mémoire 20 adressée par 97 Il peut ne pas y avoir de destination du tout. ZRT : on charge ou non le registre 510. b) Instruction OPDI champs SRCY : mémoire 10 adressée par 96 mémoire 20 adressée par 97 mémoire 20 adressée par 96 champs SRCX : mémoire 300 mémoire 10 mémoire 20 registre RT (44) autre dispositif extérieur (305) Champs SRCZ : sortie de L'unité 37 sortie de la mémoire FIFO 70 Cham2sSB : ligne BUSY sortie de 77A champs CODALU : : cf Tableau 2 Chames TAF : la sortie de L'unité 37 est chargée soit : - a l'entrée de la mémoire 79 soit - à L'entrée de l'accumulateur 77A Chames ADR : adresse pour la source de La ligne BUSX Chames DSTZ :toutes les mémoires 10, 20 et 300 adressées par l'un ou l'autre des pointeurs déjà cités et en outre il est possible de se connecter directement sur ces derniers. c) Instruction SVR SRCZ : tous les registres 96 et 97, et 405 à 408 des mémoires 10, 20 et 300, La sortie de L'unité 37 de l'accumulateur 77A de la mémoire FIFO et aussi les registres 235, 242 et 250 (figure 3). CODUAL : un seul est permis, celui qui ne correspond à aucune opération (NOP) ADR : donne le code d'adresse de la mémoire où est connectée la ligne BUSZ DSTZ : mémoire 10 mémoire 20 dispositif extérieur 305 pas de destination ZRT : cf ci-dessus d) Instruction OPIN SRCX : mémoire 300 adressée par 405 mémoire 300 adressée par 406 mémoire 10 adressée par 96 mémoire 10 adressée par 97 mémoire 20 adressée par 96 ASSB :=cf ci-dessus CODALU : cf tableau TAF scf ci-dessus CNST : est la constante qu'on appLique à la ligne BUSY par l'intermédiaire du registre 520 (figure 1). En CX et DP la même constante est appliquée pour les parties réelLes et imaginaires. e) Instruction DECAL SRCX : sortie de la mémoire 300 adressée par le champs ADR sortie de La mémoire 10 adressée par le champs ADR sortie de la mémoire 20 adressée par le champs ADR ou alors le dispositif extérieur 305 SA : cf ci-dessus CQDALU :les seules instructions permises sont DLD, DAD, DLG, et ROD TAF . cf ci-dessus ADR : c'est le champ. d'adressage pour la mémoire sélectionnée par SRCX DEC : c'est le code de décalage c'est à dire le nombre de décalage que L'on désire pour les codes DLD, DAD, DLG, et ROD. (0-15). f) Instruction BRI SAB : donne l'endroit du l'adresse de branchement il y a deux possibilités soit L'adresse est donnèe dans le champ ADR soit elle est contenue dans le circuit 62. V/F : détermine si le test effectué sur COND doit être vrai ou faux CQND : désigne le bit à tester par exemple différents signaux et notamment des valeurs provenant du registre 44 (valeur de la retenue réel le, imaginaire, signe réel, imaginaire, débordement...) ADR : donne L'adresse envisagée ci-dessus AX, ZRT : déjà indiqués DSTZ : mémoire 10 et 20 adressée par 96 et 97 et autres circuits extérieurs. g) Instruction BRC V/F COND : identiques à L'instruction BRI SAR : donne la possibiLité de charger le contenu du Compteur-programme 58 dans un registre au circuit 62 SRCZ : sortie de la mémoire 79, de L'accumulateur 77A, 77B au même registre RT (510) AX, DSTZL ZRT : identiques au cas de L'instruction BRI. h) Instruction INI DSTL : donne la destination de la constante L7...LO donnée dans le champs CNSTL. Cette destination peut être les pointeurs d'adresse de la mémoire morte 300 ou le circuit extérieur 305 ou les pointeurs 96 ou 97 de La mémoire 20. DSTK : donne La destination de la constante KO à K11 donnée dans Le champ CNSTK cette destination peut être : Les pointeurs 96 et 97 ces mémoires 10, 20, et 300 et aussi les registres 242 et 235 (figure 3) pris en bloc MOD : donne le mode de calcul de processeur soit en simpLe précision,-'en complexe, en double précision ADQ : provoque une inversion du drenier bit d'adresse en mode complexe et en mode double précision ACY. donne la possibilité de se mettre en adressage cyclique CNSTL : donne La valeur de la constance CNSiK : donne la va Leur de la constante k les éléments binaires 120 à I23 donne la valeur pour la registre 242 et les éLéments 124 à I31 la valeur pour Le registres 235 au cas où ces registres sont choisis comme destination. On se propose dans ce qui suit de décrire quelques exempLes qui mettent en valeur les caractéristiques du processeur de l'invention. Ces exemples constituent en fait des sous-programmes exécutabLes en temps réel. Premier exemple de programmation On se propose de calculer la fonction FT1 effectuée par un filtre transversal opérant sur des signaux réels avec des coefficients fixés soit : Les échantillons Y Yn ; sont stockés dans la mémoire 20 aux adresses ADR(MAX) à ADR (MIN), c'est-à-dire que ces échantillons occupent tout un espace d'adresses et qu'il sera possible de les adresser par adressage cyclique comme décrit ci-dessus. Les coefficients ci sont disposés dans la mémoire morte 300 aux adresses ADR (CO) à ADR (CN). Le résultat, c'est-à-dire L'évaLuation de la fonction FT1 se trouve à la fin du calcul dans l'accumulateur 77 . Les instructions régissant ce programme sont représentées aux figures 8a et 8b. Sur ces figures, les références RAXO, RAX1, RAVI, RAY1, RACO, RAC1 représentent les contenus des registres 96 et 97 de l'unité 35 , les contenus des registres 96 et 97 de L'unité 36 et Les contenus des registres 406 et 407 respectivement et les références RAMX, RAMY et RAMC les données à la sortie des mémoires 10 et 20. Le programme commence par l'instruction JO, cette instruction étant du type INI. On charge d'abord les registres pointeurs RAYO et RACO des va Leurs respectives de ADR (MIN) et ADR (CO) ; le bit n0 11 égal à 1 indique que l'on se met en adressage cyclique. Le mode déclaré est le mode simple précision SP. L'instruction JF1 est aussi une instruction de type INI, on charge alors Le pointeur RAVI de la valeur ADR (MAX) et L'on fixe ainsi avec ces deux premières instructions les bornes d'adressage pour l'adressage cyclique. Aux instructions JF2 et JF3 on initialise le pointeur courant de RAMY , c'est-à-dire Le registre 95 de L'unité 36 : pour ceLa on utiLise des instructions de type OPDI. A l'instruction JF2 la valeur que L'on doit affecter au pointeur courant est située à une adresse ADRESS de La mémoire 10 et cette valeur est transférée à La sortie SALU. L'entrée d'opérande A pour cette instruction est destination de la Ligne BUSX et, à l'instruction JF3 Le contenu de la sortie SALU est transféré dans Le pointeur courant, I1 instruction JF4 met l'accumulateur à "0".Pour ceLa la Ligne BUSY est mise en relation avec ta Ligne BUSI par L'intermédiaire du registre tampon 520 ; le multiplexeur 74 est dans La position 2 et le code ALU est tel que Le nombre appliqué à L'entrée d'opérande B est transmis à ta sortie de L'unité 37 et, de pLus, L'accumuLateur 77A est activé pour enregistrer La valeur "0" provoquée par L'instruction JF4. Par L'instruction JF5 on vient charger les registres DEL, CBI et CBR (registres 250, 242 et 235 figure 3) par les valeurs respectives 1, 1, N, ce qui prépare La boucLe de caLcul de La somme exprimant La vaLeur FT1.Par L'instruction JF6 Le processus de muLtipLication est démarré, ce qui est indiqué par X'Y'. La ligne BUSX est connectée à la sortie de la mémoire morte 300 et la ligne BUSY à la sortie de la mémoire 20. les entrées Rx et Ry de l'organe de multiplication reçoivent ainsi la valeur YN et la valeur CO dont les adresses sont données respectivement par les pointeurs d'adresses de la mémoire 20 et la mémoire 300. L'entrée de L'opérande A peut être branchée sur la sortie de l'organe de multiplication ce qu'indique la lettre paubit et l'entrée B à la sortie de l'accumulateur ACCA ; comme le code ALU demandé est Le code NOP ceci ne va pas modifier le contenu de l'accumulateur ACCA d'autant plus que l'on demande (I 15 - I 16) que la sortie de L'unité 40 ne soit pas branchée; les autres bits (I 17 I 18 - I 19) indiquent que la source de la ligne BUSZ n'a pas à être branchée , les éléments I 20 et I 21 indique le chargement effectif des opérandes sur l'organe de multiplication, ce qui est symbolisé par X' et Y'. Les éléments 122 et I23 montrent que le pointeur 95 de Irunité 36 doit se décrémenter d'une unité et le pointeur 406 doit s'incrémenter d'une unité.L'instruction JF7 a le même contenu que L'instruction JF6 ; mais c'est à La fin de l'éxecution de cette instruction qu'apparait à la sortie de L'organe 30 le résultat de la multiplication Lancée par L'instruction JF6. De plus le processus de boucle automatique entre en fonctionnement. L'instruction JF8 va donc être exécutée "N" fois elle ne diffère que de L'instruction JF7 que par le code ALU : APB qui effectue la somme du registre ACCA avec Le résultat des multiplications. Les instructions JF9 et JF10sont des instructions qui vident le pipe-line c'est à dire que l'-on attend le résultat des opérations de multiplication déclenchée par la dernière instruction @FB de la boucLe. La valeur FT1 se trouve alors dans L'accumulateur et peut par une autre instruction qui connecte La ligne BUSZ, être transférée dans une mémoire au gré du programmeur ; cependant, il faut auparavant sauvegarder le code d'adresse du pointeur de La mémoire 20. Ceci est effectué par l'instruction JFlî du type SVR qui range le contenu de ce pointeur à L'adresse ADRESSE de la mémoire 10 au moyen de la ligne BUSZ. deuxième exempLe de programmation On se propose de calculer la fonction FT2 effectuée par un filtre transversal dont Les coefficients sont corrigés selon l'algorithme du gradient IL convient de noter que les coefficients H1 et H2 ne participent pas et peuvent être considérés comme égaux à "0". Les échantillons XN ; sont stockés dans la mémoire 10 aux adresses ADR (MAX) à ADR (MIN) on utilise ici encore l'adressage cyclique), les coefficients H. dans la mémoire 10 aux adresses ADR (HO) à ADR (HN), La valeur ER est stockée dans le registre RT (510). On explique tout d'abord L'exécution de ce programme dans le mode simpLe précision. La grandeur FT2 se trouve à la fin de ce programme dans L'accumulateur 77 L'instruction JF20 est une instruction de type INI ; elle permet, d'une part, de mettre le processeur en mode de calcul simple précision (SP) et à partir de ce moment il n'y a pas à se préoccuper de la nature des grandeurs et d'autre part, de charger les registres de boucles 250 (DEL), 235 (CBR) et 242 (CBI) ; ici les valeurs à emmagasiner sont respectivement 2, 4 et (N -2)/2. Dans l'instruction JF21 de type OPIN, on démarre la première multiplication c'est-à-dire ER.X1 X1 étant rangé à l'adresse ADR (MIN) valeur préalablement contenue dans le registre 96 de l'unité 35 ; le chargement des entrées de l'organe de multiplication 30 est indiqué par X', Y' ; l'incrémentation du pointeur de la mémoire 10 est indiquée par + 1 aux bits I26 et 127. Dans l'instruction JF22 on recommence une autre multiplication avec l'échantillon suivant ; on effectue donc : ER.X2 Ici on incrémente le pointeur de sorte que l'échantillon X3 est adressé maintenant. A l'instruction JF23 commencent les instructions de boucle. La multiplication déclenchée ici est : XN j.Hj+3 i = 0, N-3 Hi étant défini par l'adresse indiquée par le pointeur de la mémoire 20. Cependant, on effectue une addition (code ALU = APB) entre le résultat de la multiplication effectuée deux instructions auparavant et la valeur Hi ; pour cela, les entrées de L'ALU sont connectées, pour l'une, à la sortie de l'organe de multiplication 30 ce qui est indiqué par la lettre P et, pour L'autre, à la ligne BUSY ; ainsi à la première exécution de la boucle on obtient : ER.X1 + HN résultat qui est rangé dans la mémoire 79 (FIFO). A L'instruction JF24 on exécute pratiquement les mêmes opérations sur les échantillons suivants. Cependant, le pointeur de la mémoire 10 est décrémenté d'une unité, ce qui est noté - 1 dans le champ AX. A l'instruction JF25 on exécute une multiplication entre Le contenu du registre RT et L'échantillon à la sortie de la mémoire 10. L'unité ALU exécute une addition (code ALU = APB) entre le contenu de l'accumulateur 77 préaLablement mis à zéro avant cette boucle et Le signal de sortie de l'organe de multiplication 30. Dans la première exécution de la boucle on effectue HN.X3 alors qu'à la sortie de la mémoire FIFO se trouve maintenant la quantité HN + ER.X1 qui est mise dans la mémoire 20, c'est-à-dire que l'échantillon HN a été changé. L'instruction J F26 effectue le même travail sur l'échantillon HN-1 mais ici Le pointeur de La mémoire 10 est décrémenté. Les autres instructions représentent la fin du programme qui est la sortie du "pipe-line" ; cette fin est composée des instructions JF27, JF28, JF29 et JF30 ; Les instructions sont semblables aux instructions JF23 à JF26 sauf qu'il n'y a pas de multiplication à considérer et que seuL Le pointeur de La mémoire 10 doit être incrémenté à L'instruction JF27 et décrémenté à L'instruction JF28, et que le pointeur de la mémoire 20 doit être incrémenté à L'instruction JF29. On peut exécuter ce programme avec le mode complexe (CX) ; pour cela on modifie L'instruction JF2O , on remplace SP par CX, Le code ALU dans les instructions JF23, JF27 et JF28 est remplacé par *ADDC. Troisièffle exemple de programmation On se propose de simuler une cellule biquad. Une cellule biquad est, on le rappelle un filtre dont la structure est montrée à la figure 10. Si Si(n) est Le signal d'entrée à L'instant d'échantillonnage "n", on appelle Sout(n) le signal de sortie à ce même instant ; le signal Si(n) est appliqué à un additionneur 500 dont la sortie est reliée à l'entrée d'un autre additionneur 501 où le signal Sout(n) apparait à la sortie. Un premier organe de retard 505 suivant un retard égal à la période d'échantillonnage est connecté à la sortie de l'additionneur 500.La sortie de cet organe 505 est reliée à l'une des entrées de l'additionneur 500 par l'intermédiaire d'un réseau multipliant le signal de sortie D1 de 505 par "- b1", à l'une des entrées de l'additionneur 501 par l'intermédiaire d'un réseau multipliant le signal de sortie de 505 par "+d1" et enfin à L'entrée d'un deuxième organe de retard 510 amenant Lui aussi un retard égal à La période d'échantillonnage. Le signal de sortie D2 de cet organe 510 est appliqué à une entrée de l'additionneur 500 après multiplication par "-b2" et à une entrée de L'additionneur 501 après multiplication par + d2". La figure 11 montre comment sont implantés les différents coefficients. Dans la mémoire 10 Dl et D2 sont situés dans des adresses croissantes respectives A10 et A10+1 et -bî, -b2, d2 et dl dans des adresses croissantes respectives A300, A300+1, A300+2, A300+3. Pour ce filtre, Les coefficients sont enregistrés dans ta mémoire 300 adressée par le pointeur 406 ce qui est indiqué par RACO et les valeurs D1 et D2 dans la mémoire 10 adressée par le pointeur 96 (RAXO). A l'instruction JF30 on charge le registre RT par la donnée indiquée par RAXO. A l'instruction JF31 on démarre la multiplication entre -b1 et D1 et on incrémente les pointeurs. A L'instruction JF32 on démarre la multiplication entre les coefficients suivants c'est-à-dire -b2 et DZ. A L'instruction JF33, Le résultat de la muLtipLication Lancée à L'instruction JF31 est disponibLe ; ce résuLtat est additionné au contenu de L'accumulateur ; on lance aussi une nouvelle multiplication et Le contenu du registre RT est mis dans La mémoire 10 à L'adresse RAXO. A L'instruction JF34 on continue Le processus d'accumulation et le contenu du registre est mis dans te registre RT ; on lance aussi une muLtipLication. Les instructions JF35 et JF36 sont Les instructions de fin de "pipe-iine" et continuent le processus d'accumulation. REVENDICATIONS : 1. Processeur de signal destiné plus particulièrement à effectuer des opérations de filtrage adaptatif, processeur comportant une unité arithmétique et logique munie d'une première entrée d'opérande et d'une deuxième entrée d'opérande, prévue pour coopérer avec un accumulateur, un organe de multiplication muni d'une première entrée d'opérande et d'une deuxième entrée d'opérande, au moins deux mémoires vives munies d'accès de données, une première ligne pour connecter l'accès de données de l'une des mémoires vives à la première entrée d'opérande de l'organe de multiplication, une deuxième ligne pour connecter l'accès de données de l'autre mémoire à la deuxième entrée de l'organe de multiplication, une troisième ligne pour transférer les données de la sortie de L'unité arithmétique et logique vers lesdites mémoires vives, et un organe séquenceur pour commander le fonctionnement du processeur en fonction d'instructions transmises par une ligne commune d'instructions provenant d'une mémoire-programme, caractérisé en ce qu'il est prévu pour transformer la première ligne en ligne commune des premiers moyens de connexion pour la connecter, en outre, sur L'accès de données de la deuxième mémoire et sur L'entrée de l'unité arithmétique et logique et pour transformer la deuxième ligne en ligne commune des deuxièmes moyens de connexion pour La connecter, en outre, sur les accès de données de la première mémoire et sur l'entrée de L'unité arithmétique et logique. Z. Processeur de signal selon la revendication 1 caractérisé en ce qu'il est prévu un registre connectant une des première ou deuxième Ligne commune à la troisième ligne commune Le contenu de ce registre constituant une source ou une destination de donnée pour Les deux Lignes qui y sont connectées. 3. Processeur de signal selon l'une des revendications 1 ou 2 caractérisé en ce qu'il est prévu un registre de constante constituant une destination de données pour La ligne commune d'instruction BUS et une source de données pour La première ou la deuxième Ligne (BUSX ou BUSY). 4. Processeur de signal seLon L'une des revendications 1 à 3 caractérisé en ce qu'il comporte une mémoire morte dont la sortie de donnée est connectée å La première ou La deuxième ligne commune (BUSX ou BUSY). 5. Processeur de signal seLon L'une des revendications 1 à 4 caractérisé en ce qu'en une seule instruction on peut définir une source et une destination de données à chacune des trois Lignes communes (BUSX, BUSY,-ou BUSZ). 6. Processeur de signaL selon L'une des revendications 1 à 4 caractérisé en ce qu'une seule instruction-on peut commander une multiplication à L'organe de muLtipLication et définir une source et une destination de données à chacune des trois lignes communes (BUSX, BUSY, ou BUSZ).