Brevet FR2725538A1 — publié le 19960412

DISPOSITIF DE COUPLAGE A AFFECTATION PROGRAMMABLE D'ESPACES MEMOIRE DISCONTINUS A FAIBLE GRANULARITE, ENTRE UN BUS D'EXTENSION ET UNE PLURALITE DE BUS LOCAUX. La présente invention concerne un dispositif de couplage entre un bus d'extension interconnectant une pluralité d'unités locales, et les bus locaux interconnectant les modules électroniques des unités locales. Elle s'applique notamment, mais non exclusivement, à l'interconnexion de plusieurs bacs renfermant chacun, un nombre limité de modules ou cartes d'instrumentation. Lorsqu'un module doit émettre un message vers un autre module, deux cas peuvent se présenter suivant que les deux modules se trouvent dans un même bac ou non. Dans le premier cas, le module émetteur présente sur le bus local l'adresse du module récepteur et les données qu'il souhaite lui envoyer. Si les deux modules ne se trouvent pas dans le même bac, le module émetteur doit tout d'abord envoyer son message et l'adresse du module destinataire vers un dispositif de couplage qui assure le transfert du message du bus local vers le bus d'extension, à destination du dispositif de couplage du bac dans lequel se trouve le module destinataire. Le dispositif de couplage du bac destinataire se charge ensuite du transfert du message du bus d'extension vers le bus local à destination du module destinataire. Pour pouvoir déterminer le bac destinataire d'un message, on a envisagé de réserver à l'adressage des bacs, certains bits du mot binaire représentant l'adresse des modules, le nombre de bits ainsi réservé dépendant du nombre de bacs interconnectés. Or, suivant les types de modules, la largeur des mots d'adresse est variable de 16 à 32 bits, les mots d'adresse véhiculés par le bus d'extension étant de 32 bits. Pour simplifier l'adressage des modules, on recopie l'adresse du bac figurant dans l'adresse du module sur les bits de poids fort du mot d'adresse 32 bits. Cependant, cette solution ne convient pas à tous les types de bus locaux, et notamment les bus de type VXI dont les adresses sont en 16 bits, les deux bits de poids fort étant fixés à 1, ce qui peut provoquer des interférences avec d'autres bus locaux et qui limite d'une manière importante le nombre de bacs susceptibles d'être interconnectés. Pour résoudre ce problème, on a envisagé des solutions spécifiques au type de bus VXI, mais elles tendent toutes à réserver un espace important d'adresses aux modules VXI, et donc à réduire l'espace adressable par les modules d'autres types. D'autres solutions visent à affecter des fenêtres de l'espace adressable à chaque type d'adressage à l'aide de registres. Il s'avère que plus la largeur des mots d'adresse est grande, plus la taille minimum d'une fenêtre est grande. Cette solution limite donc le nombre de modules susceptibles d'être interconnectés, et est inapplicable lorsque la répartition de l'espace mémoire adressable par le bus d'extension doit être effectuée de manière discontinue et avec une fine granularité. La présente invention a pour but de supprimer ces inconvénients. A cet effet, elle propose un dispositif de couplage entre un bus d'extension interconnectant une pluralité d'unités locales, et des bus locaux interconnectant dans les unités locales un nombre limité de modules fonctionnels, chaque module étant accessible par un champ d'adresses respectif prédéterminé, lesdits bus d'extension et locaux assurant le transfert de messages comprenant des données associées à l'adresse d'un module destinataire des données. Ce dispositif est caractérisé en ce qu'il comprend, pour chacune des unités locales, au moins une mémoire comportant une multiplicité de cases mémoire, chaque case mémoire étant associée à une fraction respective de l'espace adressable par le bus d'extension, et pouvant prendre l'une des trois valeurs suivantes - une première valeur indiquant que la fraction associée inclut le champ d'adresse d'un module de l'unité locale, - une seconde valeur indiquant que la fraction associée inclut le champ d'adresse d'un module d'une autre unité locale, et - une troisième valeur indiquant que la fraction associée n'inclut le champ d'adresse d'aucun desdits modules, ledit dispositif comprenant en outre pour chaque unité locale, des moyens pour transférer un message circulant sur le bus d'extension vers le bus local de l'unité locale si l'adresse du message appartient à une fraction associée à ladite première valeur dans ladite mémoire, et des moyens pour transférer un message circulant sur le bus local de l'unité locale vers le bus d'extension si l'adresse du message appartient à une fraction associée à ladite seconde valeur dans ladite mémoire. Un tel dispositif permet d'assurer le transfert de données entre deux modules quelconques qu'ils soient situés ou non dans la même unité locale. Le nombre de modules ainsi interconnectés n'est limité que par la capacité d'adressage des bus locaux et du bus d'extension et par la taille des mémoires définissant la répartition de l'espace adressable entre les modules. Par ailleurs, il permet de répartir de manière programmable l'espace adressable par les bus entre les différents modules de manière continue ou discontinue, c'est-à-dire que les fractions de l'espace adressable ainsi affectées aux différents modules d'une même unité locale ne sont pas nécessairement continues. Il convient de remarquer également que la taille des fractions de l'espace adressable par les bus ne dépend que de la taille desdites mémoires et de la taille de cet espace adressable. Pour obtenir une répartition plus fine de cet espace adressable, il suffit donc d'augmenter la taille de chacune desdites mémoires. Avantageusement, chacun des bus d'extension et locaux permet de transférer des mots d'adresse de tailles différentes, à chacun desquels est associée une information indiquant la taille du mot d'adresse transféré, chaque taille de mot d'adresse définissant un espace adressable distinct, chacune desdites mémoires étant divisée en autant de zones que de tailles de mots d'adresse pouvant circuler sur les bus d'extension et locaux, chaque case mémoire de chaque zone de chaque mémoire étant associée à une fraction respective de l'espace adressable correspondant à la zone de la mémoire. Si les unités locales raccordées au bus d'extension peuvent être adressées suivant trois espaces adressables, à savoir en 16 bits, en 24 bits et en 32 bits, un tel dispositif nécessite deux mémoires de 48 kilo bits chacune pour chaque unité locale. Une telle capacité permet de diviser chacun des trois espaces adressables en 16 000 fractions, ce qui permet d'obtenir une granularité assez fine, à savoir : 4 octets pour l'espace adressable en 16 bits, 1 kilo octets pour l'espace en 24 bits, et 256 kilo octets pour l'espace en 32 bits. Selon une particularité de l'invention, le dispositif comprend des moyens pour déterminer les valeurs à charger dans chacune de ces mémoires à partir des champs d'adresses respectifs d'accès à chacun des modules des unités locales interconnectées par le bus d'extension, et des moyens pour charger ces valeurs dans chaque mémoire par l'intermédiaire du bus d'extension. Grâce à cette disposition, on assure la cohérence du contenu des mémoires respectives des unités locales. Un mode de réalisation du dispositif selon l'invention sera décrit ci-après, à titre d'exemple non limitatif, avec référence aux dessins annexés dans lesquels La figure 1 montre le dispositif selon l'inven tion réparti dans un ensemble d'unités locales interconnectées par un bus d'extension ; et La figure 2 représente schématiquement le synop tique du dispositif selon l'invention. La figure 1 montre une pluralité d'unités locales ou bacs 11,12,13 interconnectés par un bus d'extension 1. Chaque bac 11,12,13 comprend un bus local 10, dit "fond de panier", auquel peut venir se raccorder un nombre limité de cartes électroniques 21 à 26, enfichables dans le bac. Pour assurer l'interconnexion entre le bus d'extension 1 et les bus locaux 10 respectifs des bacs, le dispositif selon l'invention comprend, dans chaque bac 11,12,13, un coupleur 20, par exemple conçu comme une carte enfichable dans le bac, pour venir se raccorder automatiquement au bus local 10 situé en fond de panier, chaque coupleur 20 comprenant par ailleurs des moyens de connexion avec le bus d'extension 1. Les bus d'extension 1 et locaux 10 sont bidirectionnels et permettent de transmettre des messages comprenant chacun des données associées à l'adresse d'un module destinataire, et des signaux de contrôle, les bus locaux 10 étant par exemple de type VME (norme IEEE) ou VXI (VME eXtender for Instrument). Les bacs peuvent comprendre une carte 21 jouant le rôle d'unité de calcul et de traitement local, capable de commander les autres cartes 22 à 26, qu'elles soient dans le même bac ou non, grâce aux coupleurs 20. Une telle architecture peut également comprendre un calculateur 15 raccordé au bus d'extension 1 par l'intermédiaire d'un coupleur adapté 28. Sur la figure 2, chaque coupleur 20 comprend deux mémoires 31,32, par exemple de type RAM, accessibles en écriture par un registre 33, et un circuit de contrôle et de sélection 35. Le coupleur 20 assure le transfert des messages du bus d'extension 1 vers le bus local au moyen d'une liaison parallèle 41 et d'un dispositif de commutation 44 commandé par la sortie des données 38 de la mémoire 31. D'une manière analogue le coupleur 20 assure le transfert des messages du bus local 10 vers le bus d'extension 1 grâce à une liaison parallèle 45 et un dispositif de commutation 46 commandé par la sortie des données 39 de la mémoire 32. Le circuit de contrôle et de sélection 35 comprend deux premières entrées sur lesquelles arrivent, par des liaisons parallèles 47,49, les signaux de contrôle et les adresses qui circulent respectivement sur le bus d'extension 1 et le bus local 10. En fonction de l'adresse et des signaux de contrôle reçus, ce circuit de contrôle 35 permet d'activer - soit un mode de transfert entre le bus d'extension 1 et le bus local 10, - soit une mode de transfert entre le bus local 10 et le bus d'extension 1, - soit un mode de chargement des mémoires 31,32, lors de l'initialisation du dispositif de couplage, - soit un mode de test pour déclencher les autotests des mémoires 31,32. A cet effet, le coupleur 20 comprend un automate de test 43 chargé d'assurer le séquencement de ces autotests. Cet automate de test 43 est connecté aux mémoires 31,32 par l'intermédiaire du circuit de contrôle 35 qui contrôle l'accès à ces mémoires respectivement à l'aide de dispositifs de commutation 65,66. Le circuit de contrôle 35 assure en outre la transmission sur requête du résultat de ces autotests sur le bus d'extension 1 vers un calculateur, tel que 15 ou 21. Les circuits de contrôle 35 des coupleurs 20 connectés au bus d'extension 1 sont en permanence à l'écoute des messages émis sur ce bus et sur le bus local 10 de leurs bacs respectifs. Ainsi, en mode de transfert, les 14 bits de poids fort de l'adresse circulant sur le bus d'extension 1 sont appliqués sur le port d'adresse de la mémoire 31 par l'intermédiaire d'un dispositif de commutation 61 commandé par le circuit de contrôle 35 qui déclenche en parallèle une lecture de cette mémoire. Lorsque l'adresse appliquée à la mémoire 31 correspond à un bit positionné à 1, le dispositif de commutation 44 se ferme, validant ainsi le transfert du bus d'extension 1 vers le bus local 10. De la même manière, les adresses circulant sur le bus local 10 sont appliqués à l'entrée 49 du circuit de contrôle 35, par l'intermédiaire d'un dispositif de commutation 62 commandé par le circuit de contrôle 35 qui applique les 14 bits de poids fort de l'adresse et les signaux de contrôle sur le port d'adresse de la mémoire 32. Si l'adresse appliquée à l'entrée de cette mémoire 32 correspond à un bit positionné à 1 dans celle-ci, le second dispositif de commutation 46 se ferme, validant ainsi le transfert des données, de l'adresse et des signaux de contrôle du bus local 10 vers le bus d'extension 1. Bien entendu les dispositifs de commutation 44,46 répondent aux spécifications des protocoles de communication, respectivement du bus local 10 et du bus d'extension, notamment en ce qui concerne les procédures de prise du bus pour émettre le message qu'il reçoivent en entrée, le circuit de contrôle 35 assurant la gestion des conflits pouvant survenir lors de demandes de transfert simultanées entre le bus d'extension 1 et le bus local 10. En mode de chargement des mémoires 31,32, les données à charger arrivent par le bus d'extension 1 sous la forme d'une succession de messages comprenant chacun une adresse, par exemple sur 16 bits, et une donnée sur 16 bits, cette adresse correspondant à celle du registre 33 dans l'espace adressable par le bus d'extension 1. Lorsque le coupleur détecte cette adresse sur le bus 1, il déclenche le transfert de la donnée associée du bus d'extension 1 vers le registre 33. Cette donnée est constituée d'une valeur sur 2 bits et d'un mot de 14 bits indiquant l'adresse d'écriture dans les mémoires 31,32.Le chargement de ce registre 33 déclenche la fermeture de deux interrupteurs 63,64, et l'ouverture des autres interrupteurs 61,62,65,66 au niveau du circuit de contrôle 35, qui valident l'application de l'adresse d'écriture sur les ports d'adresse des deux mémoires 31,32 et l'écriture de la valeur de ces deux bits respectivement dans celles-ci à l'adresse d'écriture. Si le bit de la mémoire 31 ou 32 situé à l'adresse définie par les 14 bits de poids fort du mot d'adresse circulant sur le bus, est par exemple positionné à 1, le transfert du message correspondant doit être validé. Si, à une adresse donnée, les valeurs respectives des bits dans les deux mémoires 31,32 sont toutes deux égales à 0, cela signifie que la fraction de l'espace adressable correspondante est soit non affectée, soit réservée à une communication à l'intérieur d'un bac. Par ailleurs, si ces deux bits sont tous deux égaux à 1, on se trouve en présence d'une combinaison interdite, car cela signifierait que le message incluant l'adresse correspondante devrait être transmis vers le bus local s'il se trouve sur le bus d'extension 1, et vers ce dernier s'il se trouve sur le bus local 10. Dans l'exemple représenté, les cartes électroniques 21 à 26 sont de différents types et présentent soit des adresses en 16 bits, soit en 24 bits, soit en 32 bits, et deux des signaux de contrôle transitant sur les bus 1 et 10 indiquent la taille du mot d'adresse associé, 16, 24 ou 32 bits. On se trouve donc en présence de trois espaces distincts adressables par le bus d'extension 1. Pour exploiter cette caractéristique, les deux mémoires 31,32 sont chacune divisées en trois zones de taille égale 51,52,53, respectivement 54,55,56, chaque zone définissant la répartition d'un espace adressable respectif entre les différentes cartes ou modules interconnectés par les bus locaux 10 et le bus d'extension 1. En mode de transfert entre les deux bus 1,10, les signaux de contrôle indiquant la taille de l'adresse à transférer sont appliqués sur le port d'adressage des mémoires 31,32 de manière à pouvoir sélectionner, l'une ou l'autre zone 51 à 53, ou 54 à 56, affectée à un espace adressable. Par ailleurs, en mode de chargement des mémoires 31,32, on utilise trois registres R16, R24, R32, chacun comprenant par exemple 16 bits, 14 bits servant à indiquer l'adresse d'un bit dans chacune des zones des mémoires 31,32 et 2 bits indiquant la valeur de ce bit dans ces deux mémoires. La sélection de l'un de ces registres est effectuée par l'adresse contenue dans le message de chargement, chaque registre étant repéré par une adresse distincte. Comme 14 bits permettent d'adresser 16 kilo bits, les deux mémoires 31,32 doivent avoir une capacité d'au moins 16 kilo bits pour chaque espace adressable, soit 48 kilo bits. Avec une telle capacité, on peut effectuer une répartition relativement fine des trois espaces adressables. Ainsi, l'espace adressable en 16 bits peut être réparti entre les différents modules 21 à 26 avec une granularité de 4 octets, l'espace en 24 bits avec une granularité de 1 kilo octets, et l'espace en 32 bits avec une granularité de 256 kilo octets, ce qui est amplement suffisant pour la plupart des applications. Pour réduire cette granularité, il suffirait d'augmenter la taille des mémoires 31,32, et d'étendre en conséquence celle des registres R16, R24 et R32. Ainsi, par exemple si l'on multiplie par 4 la taille des mémoires 31,32, on divise par 4 les granularités respectives dans les trois espaces adressables. Pour effectuer le chargement des mémoires 31,32 des coupleurs 20 de chaque bac 11,12,13, il suffit de fournir par exemple au calculateur central 15, toutes les adresses de tous les modules ou cartes électroniques qui lui sont raccordés par l'intermédiaire des bus 1 et 10. Le calcula teur 15 élabore à l'aide d'un programme approprié, le contenu de chacune des mémoires 31,32 de chaque bac 11,12,13, et en effectue le transfert via le bus d'extension 10. Le calculateur 15 peut ainsi vérifier durant l'élaboration du contenu des différentes mémoires 31,32 qu'aucune adresse d'un même espace adressable est affectée à deux modules différents. Etant donné que le routage des messages circulant sur les bus d'extension 1 et locaux 10 est déterminé par le contenu des mémoires 31,32 dans chaque coupleur 20, il est nécessaire de vérifier le bon fonctionnement de ces mémoires. C'est pourquoi chaque coupleur 20 comprend un automate 43 de séquencement de test qui effectue des séquences successives d'écriture et de lecture dans ces mémoires. Les coupleurs 20 peuvent être réalisés simplement avec deux mémoires de 48 kilo bits, le circuit logique 35 étant réalisé à l'aide d'ASICs ou de composants de type CPLD (Complex Programmable Logic Device). REVENDICATIONS 1. Dispositif de couplage entre un bus d'extension (1) interconnectant une pluralité d'unités locales (11,12,13), et des bus locaux (10) interconnectant dans les unités locales (11,12,13) un nombre limité de modules fonctionnels (21 à 26), chaque module (21 à 26) étant accessible par un champ d'adresses respectif prédéterminé, lesdits bus d'extension (1) et locaux assurant le transfert de messages comprenant des données associées à l'adresse d'un module (21 à 26) destinataire des données, caractérisé en ce qu'il comprend, pour chacune des unités locales (11,12,13), au moins une mémoire (31,32) comportant une multiplicité de cases mémoire, chaque case mémoire étant associée à une fraction respective de l'espace adressable par le bus d'extension (1), et pouvant prendre l'une des trois valeurs suivantes - une première valeur indiquant que la fraction associée inclut le champ d'adresse d'un module (21 à 26) de l'unité locale (11,12,13), - une seconde valeur indiquant que la fraction associée inclut le champ d'adresse d'un module (21 à 26) d'une autre unité locale (11,12,13), et - une troisième valeur indiquant que la fraction associée n'inclut le champ d'adresse d'aucun desdits modules (21 à 26), ledit dispositif comprenant en outre pour chaque unité locale (11,12,13), des moyens (41,44) pour transférer un message circulant sur le bus d'extension (1) vers le bus local (10) de l'unité locale (11,12,13) si l'adresse du message appartient à une fraction associée à ladite première valeur dans ladite mémoire (31,32), et des moyens (45,46) pour transférer un message circulant sur le bus local (10) de l'unité locale (11,12,13) vers le bus d'extension (1) si l'adresse du message appartient à une fraction associée à ladite seconde valeur dans ladite mémoire (31,32). 2. Dispositif selon la revendication 1, caractérisé en ce que les bits de poids fort de l'adresse figurant dans un message à transférer déterminent l'adresse de la case mémoire à lire dans la mémoire (31,32) pour valider ou non le transfert du message. 3. Dispositif selon la revendication 1 ou 2, caractérisé en ce qu'il comprend, pour chacune des unités locales (11,12,13), deux mémoires (31,32) comportant une multiplicité de cases mémoire, chaque case mémoire étant associée à une fraction respective de l'espace adressable par le bus d'extension (1), chaque case mémoire de la première mémoire (31) pouvant prendre deux valeurs suivant que la fraction associée inclut ou non le champ d'adresse d'un module (21 à 26) de l'unité locale (11,12,13), chaque case mémoire de la seconde mémoire (32) pouvant prendre deux valeurs suivant que la fraction associée inclut ou non le champ d'adresse d'un module (21 à 26) d'une autre unité locale (11,12,13). 4. Dispositif selon la revendication 3, caractérisé en ce qu'il comprend, pour chacune des unités locales (11,12,13), deux dispositifs de commutation (44,46) assurant le transfert des messages circulant respectivement sur le bus d'extension (1) vers le bus local (10) et inversement, ces dispositifs de commutation (44,46) pouvant prendre lors du transfert d'un message, un état ouvert ou fermé en fonction de la valeur mémorisée respectivement dans la première (31) et dans la seconde mémoire (32) à la case mémoire déterminée par l'adresse contenue dans le message. 5. Dispositif selon l'une des revendications précédentes, caractérisé en ce qu'il comprend, pour chacune des unités locales (11,12,13), un circuit de contrôle et de sélection (35) raccordé aux bus d'extension (1) et local (10), conçu pour sélectionner en fonction des signaux transitant sur ces bus, l'un des modes suivants - un mode de transfert d'un message entre le bus d'exten sion (1) et le bus local (10), - un mode de transfert d'un message entre le bus local (10) et le bus d'extension (1), - un mode de chargement desdites mémoires (31,32), et - un mode de test pour tester le bon fonctionnement desdites mémoires (31,32). 6. Dispositif selon l'une des revendications précédentes, caractérisé en ce qu'il comprend au moins un registre de chargement (33) desdites mémoires (31,32), dans lequel sont inscrits l'adresse de la case mémoire à charger et les valeurs à mémoriser dans les deux mémoires (31,32) à ladite adresse, ces informations étant transmises par le bus d'extension (1). 7. Dispositif selon l'une des revendications précédentes, caractérisé en ce que les messages à transmettre d'un bus à l'autre comprennent chacun un mot d'adresse de taille variable et une information indiquant la taille du mot d'adresse, chaque taille de mot d'adresse définissant un espace adressable distinct, chacune desdites mémoires (31,32) étant divisée en autant de zones (51 à 56) que de tailles de mots d'adresse pouvant circuler sur les bus d'extension (1) et locaux (10), chaque case mémoire de chaque zone (51 à 56) de chaque mémoire (31,32) étant associée à une fraction respective de l'espace adressable correspondant à la zone (51 à 56) de la mémoire (31,32), ladite information permettant de déterminer la zone (51 à 56) desdites mémoires (31,32) dans laquelle se trouve la case mémoire associée au mot d'adresse. 8. Dispositif selon la revendication 6 ou 7, caractérisé en ce qu'il comprend autant de registres de chargement (R16,R24,R32) que de zones (51 à 56) dans chaque mémoire (31,32). 9. Dispositif selon l'une des revendications précédentes, caractérisé en ce qu'il comprend un calculateur central (15) dans lequel sont introduits tous les champs d'adresses d'accès aux modules (21 à 26) des unités locales (11,12,13) interconnectées par le bus d'extension (1), ce calculateur (15) étant conçu pour élaborer à partir desdits champs d'adresses, les informations permettant le chargement de chacune desdites mémoires (31,32) dans chacune des unités locales (11,12,13), et pour envoyer ces informations auxdites mémoires (31,32) par l'intermédiaire du bus d'extension (1). 10. Dispositif selon l'une des revendications 7 à 9, caractérisé en ce que la taille des mots d'adresse pouvant circuler sur les bus (1,10) peut être de 16, 24 ou 32 bits, chacune desdites mémoires (31,32) étant divisée en trois zones (51 à 56), une case mémoire desdites mémoires (31,32) étant sélectionnée par ladite information indiquant la taille du mot d'adresse et par les 14 bits de poids fort du mot d'adresse.