Procédé d'accès à un bus de transmission de données, dispositif et système correspondant.
1. Domaine de l'invention. La présente invention concerne le domaine de l'électronique et de l'informatique et plus particulièrement les bus à hautes performances déterministes.
2. Arrière plan technologique. Selon l'état de la technique, un bus local de processeur (ou PLB de l'anglais «Processor Local Bus ») décrit en regard de la figure 9 dans la demande de brevet US687905 déposé par la société International Business Machines Corporation comprend plusieurs esclaves et maîtres. Aussi, une priorité d'accès au bus est définie pour les maîtres. Dans le PLB, le maître qui a la plus petite priorité a accès au bus uniquement lorsque un autre maître ayant accès au bus le libère.
Cette technique présente l'inconvénient de ne pas garantir la bande passante et la latence pour chaque maître. Aussi, ce bus n'est pas adapté aux communications de bas niveau (notamment de type couche physique (ou PHY en abrégé) ou d'accès un canal de communication (ou MAC en abrégé de l'anglais « Media Access Control »). Il n'est pas non plus adapté à un partitionnement entre des ressources matérielles et logicielles.
3. Résumé de l'invention. L'invention a pour but de pallier ces inconvénients de l'art antérieur.
Plus particulièrement, l'invention a pour objectif de permettre un bus déterministe destiné à être relié à un périphérique maître principal de plus forte priorité et à des périphériques maîtres secondaires et donc de garantir un débit minimal et/ou une latence maximale pour un maître secondaire au bus, lorsque le maître principal utilise une faible fraction du temps disponible sur le bus.
A cet effet, l'invention propose un procédé d'accès à un bus destiné à être relié à un périphérique maître principal de plus forte priorité et à des périphériques maîtres secondaires, le bus étant adapté à la transmission de données à destination et/ou en provenance des périphériques. Selon l'invention, le procédé comprend :
- une étape d'autorisation d'accès au bus au périphérique maître principal lorsqu'il demande l'accès au bus ;
- une étape de sélection d'accès au bus à un des périphériques maîtres secondaires lorsque le périphérique maître principal ne demande pas l'accès au bus.
Selon une caractéristique préférée, l'étape de sélection comprend :
- une étape d'attribution d'un jeton tournant à chacun des périphériques maîtres secondaires, - une étape d'autorisation d'accès au bus au périphérique maître secondaire qui a le jeton, lorsqu'il demande l'accès au bus. Avantageusement, l'étape de sélection comprend une étape d'arbitrage pour l'accès au bus entre les périphériques maîtres secondaires lorsque le périphérique secondaire qui a le jeton ne demande pas l'accès au bus.
Selon d'autres caractéristiques, l'étape d'arbitrage comprend :
- une étape de sélection aléatoire d'un périphérique secondaire demandant l'accès au bus ;
- une étape de sélection du dernier périphérique secondaire ayant eu l'accès au bus qui demande l'accès au bus ;
- une étape de sélection du périphérique secondaire qui demande l'accès au bus et qui n'a pas eu accès au bus depuis le plus longtemps ; ou
- une étape de sélection du périphérique secondaire qui demande l'accès au bus depuis le plus longtemps.
Selon une caractéristique particulière, le procédé comprend une étape de sélection du type d'accès en écriture ou en lecture.
Selon une autre caractéristique particulière, le procédé comprend
- une étape d'autorisation d'accès au bus en lecture au périphérique maître principal lorsqu'il demande l'accès au bus en lecture ;
- une étape de sélection d'accès au bus en lecture à un des périphériques maîtres secondaires lorsque le périphérique maître principal ne demande pas l'accès au bus en lecture ; - une étape d'autorisation d'accès au bus en écriture au périphérique maître principal lorsqu'il demande l'accès au bus en écriture ; et
- une étape de sélection d'accès au bus en écriture à un des périphériques maîtres secondaires lorsque le périphérique maître principal ne demande pas l'accès au bus en écriture.
Selon une caractéristique avantageuse, le bus comprend au moins un périphérique esclave, le procédé comprenant un accès au bus en lecture et/ou en écriture à un périphérique autorisé pour transmettre des données à destination ou en provenance du ou au moins un des périphériques esclaves.
L'invention concerne également un dispositif d'accès à un bus destiné à être relié à un périphérique maître principal de plus forte priorité et à des périphériques maîtres secondaires, le bus étant adapté à la transmission de données entre les périphériques ; avantageusement, le dispositif comprend :
- des moyens d'autorisation d'accès au bus au périphérique maître principal lorsqu'il demande l'accès au bus ; et
- des moyens de sélection d'accès au bus à un des périphériques maîtres secondaires lorsque le périphérique maître principal ne demande pas l'accès au bus.
L'invention se rapporte aussi à un système qui comprend : - un bus ;
- un périphérique maître principal de plus forte priorité relié au bus ;
- des périphériques maîtres secondaires de même priorité et reliés au bus ; et - un dispositif d'accès au bus tel que précisé précédemment selon l'invention ; le bus étant adapté à la transmission de données entre les périphériques.
Avantageusement, le système comprend au moins un périphérique esclave relié au bus, le ou les périphériques esclaves ne pouvant pas demander l'accès au bus.
Selon une caractéristique particulière, le ou les périphériques sont des mémoires.
Avantageusement, le périphérique maître principal comprend un microprocesseur. Selon une caractéristique particulière, le périphérique maître principal comprend des moyens d'accès à un médium sans fil.
Selon une caractéristique préférée, le système comprend un composant qui comprend le bus et au moins un des périphériques maîtres secondaires et, éventuellement, le périphérique maître principal.
4. Liste des figures.
L'invention sera mieux comprise, et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux dessins annexés parmi lesquels :
- la figure 1 est un synoptique très schématique d'un système de communication selon un mode particulier de réalisation de l'invention ;
- la figure 2 représente schématiquement la structure en couches du système de la figure 1 ;
- la figure 3 détaille le système des figures 1 et 2 appliqué à un dispositif échangeant des données avec une couche d'accès au médium ;
- la figure 4 présente un bus mis en oeuvre dans le système de la figure 1 ;
- les figures 5 et 6 illustrent des chronogrammes lors d'échanges de données sur le bus de la figure 4 ;
- la figure 7 présente un algorithme d'accès au bus de la figure 4 ;
- les figures 8 et 9 présentent des exemples d'accès au bus de la figure 4 ; - les figures 10 et 1 1 illustrent des arbitres adaptés à gérer les accès sur le bus de la figure 4 ; et
- la figure 12 présente un maître connecté au bus de la figure 4.
5. Description détaillée de l'invention. La figure 1 présente schématiquement un système de communication 1 selon un mode particulier de réalisation de l'invention. Le système 1 comprend :
- un bus 10 ;
- un arbitre 13 gérant les accès au bus 10 ; - un maître périphérique principal 100 ayant la plus grande priorité pour accéder au bus 10 ;
- des maîtres périphériques secondaires 1 10 à 1 12 connectés au bus 10 ; et
- des esclaves 120 à 123.
Les maîtres 1 10 à 1 12 sont adaptés à initier des transferts de données en lecture et/ou écriture sur le bus 10. Ils ont une priorité moindre que le maître 100 pour accéder au bus. Avantageusement, le nombre de maîtres n'est pas limité et peut prendre une valeur quelconque (par exemple,
3, 10 ou 100). Plus le nombre de maîtres est élevé, plus les autorisations d'accès au bus doivent être gérées au mieux, le temps et la bande passante alloués à chacun des maîtres étant plus faibles en moyenne. L'invention permet notamment une fluidité dans les accès lorsque le nombre de maîtres est élevé.
Les esclaves 120 à 123 reçoivent et/ou transmettent des données sur le bus 10 et ne peuvent pas initier de transferts de données. D'une manière générale, selon l'invention, au moins un esclave est connecté au bus 10.
La figure 2 représente schématiquement la structure en couches du système 1. Plus précisément, le système 1 met en oeuvre au moins trois couches comprenant : - une couche physique ou PHY ;
- une couche de contrôle d'accès au médium ou MAC (de l'anglais « Media Access Control ») ; et
- une couche applicative.
Le médium est, par exemple, une couche de communication sans fil (par exemple infra-rouge, radio (notamment selon les normes WiFi,
IEEE802.1 1 , IEEE 802.16 et/ou IEEE 802.15) ou par courants porteurs) ou filaire. Le débit des données transférées peut notamment atteindre quelques centaines de Mégabits.
La figure 2 présente notamment une répartition entre les éléments matériels (ou composants électronique) et logiciels (ou « hardware/software partitioning » en anglais). Le système 1 comprend notamment :
- un coeur MAC 20 comprenant le bus 10, le coeur MAC étant relié à un médium de transmission de données (couche physique) et/ou à une couche applicative) ; - une unité centrale MAC ou MAC CPU (ou « Central Processing
Unit » en anglais) 22 ;
- une couche applicative 23 ; et
- une mémoire vive ou SDRAM 24 qui est reliée à la couche 23 via une liaison bidirectionnelle 28.
La couche physique 20 et la couche MAC sont reliées par une interface PHY-MAC 25 qui comprend : - une liaison bidirectionnelle 252 de contrôle entre la couche 20 et l'unité 22 ; et
- deux liaisons monodirectionnelles 250 et 251 de transmission de données entre la couche 20 et le coeur MAC 20.
La couche applicative 23 est reliée au coeur 20 et à l'unité 22 via respectivement le bus 10 (interface 26) pour la transmission de données et une liaison bidirectionnelle 270 de contrôle.
Le bus 10 est relié à plusieurs maîtres de même priorité (non représentés sur la figure 2), à au moins un esclave (non représenté sur la figure 2) et à l'unité 22 qui est le périphérique maître principal du bus avec une priorité plus forte que les autres maîtres, dit périphériques maîtres secondaires. Ainsi, l'unité 22 est prioritaire pour l'accès au bus 10 (contrairement à l'état de l'art où un CPU a une priorité plus faibles que des maîtres pour accéder à un bus).
La figure 3 détaille le système 1 appliqué à un dispositif échangeant des données avec la couche MAC.
Selon le système illustré en regard de la figure 3, le bus 10 dont les accès sont contrôlés par l'arbitre 13 relient :
- une interface 220 reliant le bus 10 à un bus 221 interne à l'unité 22, l'interface 220 et le bus 221 appartenant au MAC CPU 22 ;
- une mémoire esclave 30 ;
- deux unités de contrôle de la couche physique respectivement en émission 201 (relié à la liaison 251 ) et en réception 202 (reliée à la liaison 250); - deux unités DMA respectivement d'émission 321 et de réception 322 dans un codeur de sécurité 32 (chiffrant, par exemple, des données) ;
- deux unités DMA respectivement d'émission 31 1 et de réception 312 dans un décodeur de sécurité 31 (déchiffrant, par exemple, des données) ; et
- deux unités DMA respectivement d'émission 205 et de réception 203 reliés tous deux à une interface 204 maître d'un
bus d'application 33, les unités 203 et 205 ainsi que l'interface maître 204 appartenant à un module 206 d'interface avec l'application.
Le bus 221 est un bus de contrôle des autres unités du système (par exemple pour une initialisation). Il est mis en oeuvre, par exemple, sous forme de la partie dite APB d'un bus AMBA ®). Il est relié à liaison 252.
Les unités 201 à 205, le codeur 32 et le décodeur 31 appartiennent au coeur MAC 20
Le système dont un exemple est donné à titre illustratif en figure 3 comprend ainsi :
- un périphérique maître principal correspondant au MAC CPU 22 ;
- huit maîtres 201 à 205, 321 , 322, 31 1 , 312 de même priorité (correspondant par exemple aux maîtres 1 10 à 112 de la figure 1 ) ou périphériques maîtres secondaires ; et
- un esclave 30.
L'invention permet avantageusement un partitionnement entre des ressources matérielles et logicielles, ce partitionnement pouvant se faire suivant différentes configurations matérielles. En effet, selon un mode préféré de réalisation, un seul composant comprend le coeur MAC 20 est, par exemple, du type composant programmable (par exemple PGA (ou « Programmable Gâte Array »), PLD (ou « Programmable Logic Device »), composant dédié ou ASIC (de l'anglais « Application Spécifie Integrated Circuit » ou « circuit intégré pour application spécifique » en français) ou microcontrôleur. Ainsi, l'invention présente l'avantage d'un bus très compact reliant plusieurs maîtres à l'intérieur d'un composant. En effet, selon l'état de l'art, pour garantir un niveau d'efficacité de bus à l'intérieur d'un composant, le bus est divisé en sous-bus complets (avec données, adresses et contrôles) distincts, chacun des sous-bus étant affecté à un maître.
Selon une autre variante, le MAC CPU 22 et le coeur MAC 20 sont dans un même composant.
Selon encore une variante, le composant comprenant le coeur MAC 20 et, le cas échéant, le MAC CPU 22 comprend également la mémoire 30.
Selon d'autres variantes, le MAC CPU 22, les unités 201 et 202, le module 206, le codeur 32 et le décodeur 31 sont tous ou en partie dans des composants séparés.
Selon une variante de réalisation non représentée, le bus 10 est relié à deux mémoires esclaves. Bien entendu, le bus 10 peut être relié à plus d'esclaves.
La figure 4 présente le bus 10 avec quelques maîtres (l'unité 22 et le codeur 32) et esclave (la mémoire 30 et une autre mémoire 301 permettant de mieux visualiser les connexions partagées ou non). L'unité 22 (respectivement 32) est reliée à l'arbitre 13 dans le sens maître vers arbitre via :
- un bus d'adresses en écriture 400 (respectivement 410) (ou « address-write ») de 16 bits (ou 20 bits selon une variante) ;
- un bus de données en écriture 401 (respectivement 41 1 ) (ou « data-write ») de 32 bits (ou 16 ou 64 bits selon des variantes) ;
- une liaison de taille de données en écriture 402 (respectivement 412) (ou « size-write ») sur 2 bits ;
- une liaison de requête d'écriture 403 (respectivement 413) (ou « write-enable ») sur 1 bit ;
- un bus d'adresses en lecture 404 (respectivement 414) (ou « address-read ») de 16 bits (ou 20 bits selon une variante) ;
- une liaison de taille de données en lecture 405 (respectivement 415) (ou « size-write ») sur 2 bits ; et - une liaison de requête de lecture 406 (respectivement 416) (ou
« write-enable ») sur 1 bit.
L'unité 22 (respectivement 32) est reliée à l'arbitre 13 dans le sens arbitre vers périphérique maître secondaire, via:
- une liaison d'autorisation d'accès au bus 408 (respectivement 418) (ou « bus-grant ») ; et
- un bus de données en lecture 407 (ou « data-read ») de 32 bits (ou 16 ou 64 bits selon des variantes) partagé par tous les maîtres connectés au bus 13.
Selon le mode de réalisation décrit en regard de la figure 4, une liaison d'autorisation d'accès au bus relie un périphérique maître secondaire à l'arbitre 13 ; dans ce cas, un périphérique maître secondaire peut accéder
au bus en écriture et en lecture simultanément si le périphérique maître principal ne prend pas la main.
Selon une variante de l'invention, un périphérique maître peut également accéder au bus en écriture (respectivement en lecture) en même temps que le périphérique maître principal accède au bus en lecture
(respectivement en écriture), les types d'accès par le périphérique maître secondaire et le périphérique maître principal étant différents.
Selon une autre variante, deux liaisons d'autorisation d'accès au bus, respectivement en lecture 409 à 419 et en écriture 4010 à 41 10, relient un périphérique maître secondaire à l'arbitre 13. Dans ce cas, deux périphériques maîtres secondaires peuvent accéder au bus simultanément, l'un en écriture et l'autre en lecture. Cette variante présente l'avantage de clarifier les accès au bus et de permettre des accès plus rapides et/ou à plus fort débits. L'esclave 301 (respectivement 30) est relié à l'arbitre 13 dans le sens arbitre vers esclave via :
- un bus d'adresses en écriture 420 (ou « address-write ») partagé par tous les esclaves connectés au bus 13, de 16 bits (ou 20 bits selon une variante) ; - un bus de données en écriture 421 (ou « data-write ») partagé par tous les esclaves, de 32 bits (ou 16 ou 64 bits selon des variantes) ;
- une liaison de taille de données en écriture 423 (respectivement 433) (ou « size-write ») sur 2 bits ; - un bus d'adresses en lecture 422 (ou « address-read ») partagé par tous les esclaves, de 16 bits (ou 20 bits selon une variante) ;
- une liaison de taille de données en lecture 424 (respectivement 434) (ou « size-read ») sur 2 bits ; Les esclaves 30 et 301 sont reliés à l'arbitre 13 dans le sens esclave vers arbitre, via un bus de données en lecture 425 (respectivement 435) (ou « data-read ») de 32 bits (ou 16 ou 64 bits selon des variantes).
Les signaux de taille de données 402, 412, 405, 415, 423, 433, 424 et 434 permettent de définir plusieurs tailles de données véhiculées sur le bus 10. Ainsi, avec une taille de données codée sur 2 bits, trois valeurs prédéfinies de taille de données sont possibles, par exemple : 8, 16 et 32 bits. Selon une variante, le bus de données comprend plus que 32 bits (par
exemple 64 ou 128 bits), les valeurs prédéfinies sont alors choisies en fonction de la taille du bus (par exemple, pour un bus à 64 bits, quatre valeurs de taille de données, soit 8, 16, 32 et 64 bits, peuvent être prédéfinies). Ici, préférentiellement, les valeurs prédéfinies suivent une progression arithmétique de facteur 2 (une valeur prédéfinie étant égale au double de la précédente). Selon d'autres variantes, les valeurs prédéfinies ne suivent pas une progression arithmétique et peuvent être quelconques en restant inférieure ou égale à la taille du bus de données.
Selon une variante de réalisation, les données sont codées suivant une taille fixe et les signaux de tailles de données (et les liaisons correspondantes) sont omis.
L'arbitre 13 est, par exemple, mis en oeuvre sous forme de circuit électronique, de circuit programmable, d'ASIC ou de microcontrôleur ou microprocesseur. Le câblage du bus permet d'identifier le maître CPU de priorité la plus forte (ou périphérique maître principal), les maîtres de même priorité (ou périphériques maîtres secondaires) et les esclaves.
Le bus 10 comprend d'autres signaux tel que les signaux d'horloge (ou CLK) et de réinitialisation (ou reset) qui sont reliés à tous les périphériques connectés au bus et à l'arbitre 13. Le signal d'horloge n'est pas représenté sur les figures afin d'en assurer la lisibilité.
La figure 5 illustre un chronogramme lors d'échanges de données sur le bus 10 selon un mode de réalisation où des opérations de lecture et d'écriture de données peuvent être simultanées. Une opération de lecture et une opération d'écriture simultanées sont bien adaptées aux maîtres qui permettent ces opérations (par exemple, maîtres qui ont des accès directs à la mémoire ou DMA (de l'anglais « Direct Memory Access ») en émission et en réception appairés).
Tous les signaux sont synchrones d'un signal d'horloge 50. Sur un premier front montant d'horloge, les signaux d'adresse en écriture 51 sont activés en même temps que les données 52 pour le maître qui a reçu une autorisation d'accès via le signal correspondant « bus grant ». Ces signaux restent valides pendant un cycle d'horloge.
Simultanément, un maître demande (signal 53 « read-enable ») et obtient l'accès au bus sur un front montant du signal d'horloge 50. Les données correspondant (par exemple fournies par l'esclave) sont présentées au cycle d'horloge suivant (signal 55), un accès en lecture (signal 54) étant accordé par l'arbitre 13.
Selon une variante de réalisation de l'invention, le bus 10 est séparé en deux bus distincts qui fonctionnent respectivement en lecture et en écriture.
L'invention permet des débits élevés sur la couche physique. A titre illustratif, pour une horloge de bus cadencée à 40 MHz (pour une mise en oeuvre sous forme de FPGA), des débits sur la couche physique supérieurs à 100Mbit/s avec un bus de données de 32 bits. Le débit instantané en lecture et écriture peut atteindre 2,56 Gbit/s. Avec une mise en oeuvre sous forme d'ASIC, l'horloge peut être cadencée à des vitesses très supérieure (par exemple 80 MHz). Les débits sont alors augmentés proportionnellement. Pour un périphérique maître secondaire, la latence maximale pour accéder au bus (hors accès du maître principal) est égal au produit du nombre de périphériques maîtres secondaires par le nombre de coups d'horloge par cycle. La figure 6 illustre un chronogramme lors d'échanges de données sur le bus 10 selon une variante de réalisation de l'invention, les opérations de lecture et d'écriture se faisant séquentiellement et non simultanément.
Les éléments 51 et 52 sont communs aux figures 5 et 6 et portent les mêmes références. Ils ne sont donc pas décrits davantage. Le signal de lecture de données à une adresse spécifique 63 est mis en oeuvre uniquement lorsque le bus est libre en lecture.
Selon le mode de réalisation correspondant au chronogramme de la figure 6, l'arbitre du bus gère de façon décorrélée les accès en lecture et les accès en écriture. Les accès au bus se font alternativement en lecture et en écriture. Selon une variante de réalisation de l'invention, les accès en lecture et les accès en écriture ne se font pas alternativement et la priorité entre lecture et écriture est définie d'une manière quelconque, par exemple, aléatoire, ou au contraire suivant une loi prédéfinie, notamment selon l'ordre d'arrivée et/ou selon la priorité du périphérique maître secondaire demandant un accès au bus.
La figure 7 présente un algorithme d'accès au bus 10 (qui peut par exemple mis en oeuvre en VHDL lorsque l'arbitre est implémenté dans un composant programmable).
Au cours d'une étape d'initialisation 70 correspondant à une activation du signal reset, l'arbitre 13 est initialisé, les signaux de sorties sont inactivés et les registres internes (notamment un registre de maître courant) sont également initialisés. Ensuite, des cycles de lecture/écriture de données
sont mis en oeuvre. Ces cycles sont synchronisés sur le signal d'horloge, une boucle élémentaire dans l'organigramme correspondant à un cycle d'horloge.
La boucle élémentaire commence par un test 71 , au cours duquel l'arbitre 13 vérifie si l'unité centrale 22 souhaite un accès (signal write-enable ou read-enable activé). Dans l'affirmative, l'accès est donné à l'unité centrale 22 au cours d'une étape 72 par activation du signal 408.
Dans la négative, l'unité centrale 22 n'a pas demandé d'accès, et l'accès pourra être donné à un autre maître. L'arbitre 13 gère des cycles pour que chacun des maîtres secondaires de même priorité aient un accès équitable au bus 10. Aussi, l'arbitre 13 définit une séquence ordonnée parmi les périphériques maîtres secondaires. Ainsi, au cours d'une étape 73, il vérifie s'il a atteint la fin de la séquence. Si oui, au cours d'une étape 740, il réinitialise la séquence et considère le premier périphérique maître secondaire comme maître courant. Sinon, au cours d'une étape 741 , il passe au périphérique maître secondaire suivant dans la séquence qui devient le maître courant.
Selon un premier mode de réalisation de l'invention, la séquence ordonnée est fixe en étant définie une première fois de manière aléatoire ou en fonction des types de maîtres.
Selon une variante, la séquence ordonnée est modifiée aléatoirement au cours de l'étape 740. Ainsi, on peut obtenir un brassage des maîtres pour une plus grande équité. Selon une autre variante, la séquence ordonnée est modifiée au cours de l'étape 740 en fonction d'événements extérieurs (par exemple, en fonction d'une commande transmise par le maître principal ou un maître secondaire).
Ensuite, au cours d'une étape 75, l'arbitre 13 vérifie si le maître courant M a demandé un accès au bus. Dans l'affirmative, il donne l'accès au bus au maître courant au cours d'une étape 76. Dans la négative, il détermine un maître Mj parmi les maîtres qui ont demandé un accès au bus au cours d'une étape d'arbitrage 77 et lui donne accès au bus au cours d'une étape 78. L'étape d'arbitrage 77 permet notamment d'augmenter la bande passante lorsque le maître courant ne demande pas un accès au bus. Plusieurs stratégies d'arbitrage sont envisageables pour l'étape
77, notamment :
- une stratégie d'attribution aléatoire ;
- un accès donné au dernier maître ayant eu accès au bus ;
- un accès en fonction du numéro de priorité des maîtres (les maîtres étant connectés au bus en fonction de leur priorité, par exemple, dans une mise en oeuvre purement électronique, avec des broches affectées en fonction de la priorité respective des maîtres);
- un accès en fonction d'un ordre logique dépendant des accès précédent (par exemple, accès à un maître qui généralement demande l'accès suite à l'accès d'un autre maître donné) (l'ordre logique étant par exemple tabulé) ;
- un accès en fonction du type (lecture ou écriture) d'accès demandé, une priorité étant donnée à l'un des deux types d'accès ; et/ou
- un accès au premier périphérique qui a demandé un accès au bus.
L'algorithme correspond préférentiellement à une mise en oeuvre matérielle à l'aide de portes logiques. On peut résumer les signaux d'accès en écriture de la manière suivante :
- bus-grant(Mp) = write-enable(Mp) - bus-grant(M) = wήte-enable(Mp)). wήte-enable(M);
- bus-grant(Mj) = write-enable(Mp).wήte-enable(M). write-enable(Mj) où :
- Mp représente le maître principal (ici l'unité 22), M le maître courant et Mj le maître déterminé par une étape d'arbitrage ; et
- où bus-grant(X) représente le signal d'autorisation d'accès au bus pour un maître X, write-enable(X), le signal de demande d'accès au bus par un maître X et wήte-enable(X) le signal opposé (pouvant être obtenu à l'aide d'une porte inverseuse). L'opérateur « . » représente une multiplication logique et peut être mise en oeuvre à l'aide d'une porte ET.
L'étape 73 peut-être mise en oeuvre à l'aide d'un compteur. Les opérations ci-dessus sont synchronisées sur l'horloge. Les figures 8 et 9 présentent les accès successifs au bus 10. Plus précisément, la figure 8 correspond à une mise en oeuvre simplifiée ne prévoyant pas d'accès au bus lorsque ni le MAC CPU ni le maître courant ne demande le bus (II n'a pas d'étapes 77 et 78 dans ce cas).
La figure 9 présente les accès successifs au bus 10 selon l'algorithme présenté en regard de la figure 7 mettant en oeuvre une phase d'arbitrage lorsque ni le MAC CPU ni le maître courant ne demande le bus.
Selon la figure 8, on suppose que la séquence ordonnée est (2, 3, 4, 5, 6, 7).
Les éléments mentionnés dans la première ligne du tableau de la figure 8 représentent le maître courant en fonction du temps : des maîtres de même priorité sont numérotés avec un paramètre N prenant les valeurs 2 à
7. La première colonne représente les maîtres (le MAC CPU a un paramètre Λ/ égal a i ).
Au cours d'un premier cycle, le maître avec N valant 5 est le maître courant ne demande pas l'accès au bus.
Au cours d'un second cycle 80, le périphérique maître secondaire avec N valant 2 est le maître courant, il demande et obtient l'accès au bus en lecture (symbolisé par la lettre R).
Au cours d'un troisième cycle 81 , l'unité 22 demande l'accès en lecture et l'obtient, interdisant un accès en lecture pour le périphérique maître secondaire avec N valant 3.
Au cours des cycles suivants 82, 83, 84..., l'arbitre accorde la main à l'unité 22 en priorité ou, si l'unité 22 ne demande pas l'accès au bus, au maître courant (Λ/ prenant les valeurs successives de la séquence ordonnée (2, 3, 4, 5, 6, 7)) en écriture (symbolisé par la lettre W) ou en lecture.
On note qu'il peut y avoir un accès en écriture et un accès en lecture simultané par le maître courant et/ou l'unité 22 (certains maîtres mais non nécessairement tous supportent peuvent supporter des accès en lecture et en écriture). C'est le cas, par exemple, au cours d'un cycle 85, où l'unité
22 a accès au bus en écriture et un maître courant (N valant 6) a accès au bus en lecture (correspondant à la variante où un tel accès est possible). C'est également le cas, au cours d'un cycle 86, où le périphérique maître secondaire avec N valant 2 accède au bus à la fois en lecture et en écriture.
Selon la figure 9, on suppose que la séquence ordonnée est également est (2, 3, 4, 5, 6, 7).
Le tableau de la figure 9 comprend successivement les lignes suivantes :
- l'indication que le périphérique maître principal demande le bus avec le type d'accès requis écriture LVou lecture R ;
- la valeur du paramètre N correspondant aux périphériques maîtres secondaire demandant l'accès au bus en lecture ;
- la valeur du paramètre N correspondant aux périphériques maîtres secondaire demandant l'accès au bus en écriture ; - le périphérique maître secondaire sélectionné par l'arbitre lors de l'étape de sélection, le périphérique maître principal ne demandant pas l'accès au bus ;
- le périphérique maître ayant l'accès au bus en lecture ; et
- le périphérique maître ayant l'accès au bus en écriture Dans l'exemple donné ici, on suppose que si le périphérique maître principal demande la main, un périphérique maître secondaire ne peut pas avoir accès au bus.
Au cours d'un premier cycle 900, deux périphériques maîtres secondaires correspondant à N valant respectivement 2 et 6 demandent un accès en lecture. L'arbitre ayant sélectionné le maître avec N valant 2 lui donne donc l'accès au bus.
Au cours d'un second cycle 901 , la MAC CPU demande la main en lecture et l'obtient donc.
Au cours d'un troisième cycle 902, le maître sélectionné avec N valant 3 ne demande pas la main ; le maître avec N valant 6 étant le seul maître à demander l'accès au bus, au cours de l'étape d'arbitrage, il obtient l'accès au bus en lecture.
Au cours d'un quatrième cycle 903, le maître avec N valant 2 demande accès au bus à la fois en écriture et en écriture et obtient cet accès, le maître sélectionné avec N valant 4 ne demandant pas l'accès au bus.
Au cours d'un cinquième cycle 904, le maître principal et les périphériques maîtres secondaires avec N valant 7 et 5 demandent l'accès au bus. Le maître principal obtient donc l'accès au bus. Au cours d'un sixième cycle 905, le périphérique maître secondaire avec N valant 3 demande également l'accès au bus. L'arbitre sélectionne le maître avec N valant 5. Ce dernier obtient donc l'accès au bus.
Au cours d'un septième cycle 906, le maître sélectionné avec N valant 6 ne demandant pas l'accès au bus, l'arbitre, au cours d'une étape d'arbitrage entre les maîtres avec N valant 3 et 7 donne la main au périphérique avec N valant 7.
Ensuite au cours d'un cycle 907, le maître avec N valant 3 a accès au bus.
Puis, au cours des deux étapes suivantes 908 et 909, aucun maître ne demande le bus, ce dernier reste donc libre. Ainsi, la phase d'arbitrage permet d'utiliser les intervalles de temps (ou « time slots » en anglais) lorsque le maître principal et le maître secondaire ne demandent pas d'accès au bus.
La figure 10 illustre la structure de l'arbitre 13, les accès en lecture et les accès en écriture au bus étant décorrélés. L'arbitre 13 comprend :
- un module de sélection d'accès en écriture 131 ;
- un multiplexeur d'adresses en écriture 131 ;
- un multiplexeur de données en écriture 132 ;
- un multiplexeur de taille en écriture 133 ; - un module de sélection d'accès en lecture 134 ;
- un multiplexeur d'adresses en lecture 135 ;
- un multiplexeur de données en lecture 136 ;
- un multiplexeur de taille en lecture 137.
Le module de sélection d'accès 130 (respectivement 134) reçoit en entrées les signaux 403, 413 (respectivement 406, 416) de demande d'accès en écriture {write-enablé} en provenance des différents maîtres. Il met en oeuvre l'algorithme de la figure 7 pour donner l'accès à l'un des maîtres et active, le cas échéant :
- l'un des signaux d'autorisation d'accès (bus-grant) 4010 à 4110 (respectivement 409 à 419) associé au maître ayant reçu l'autorisation d'accès ; et
- un signal de commande 138 pilotant les multiplexeurs 131 à 133 (respectivement 135 à 137) en fonction du maître ayant reçu l'autorisation d'accès. Le multiplexeur d'adresses 131 (respectivement 135) reçoit les signaux d'adresses 400, 410 (respectivement 404, 414) en provenance des différents maîtres. Il présente en sortie les signaux d'adresse 420 (respectivement 422) en fonction du signal de commande 138 (respectivement 139) qu'il reçoit. Le multiplexeur d'adresses 132 génère également un signal de commande 1390 en fonction du périphérique (esclave) comprenant l'adresse sélectionnée.
Le multiplexeur de données 132 (respectivement 136) reçoit les signaux de données 401 , 41 1 (respectivement 425, 435) en provenance des différents esclaves. Il présente en sortie les signaux de données 421 (data- write) (respectivement 407 (data- read)) en fonction du signal de commande 138 (respectivement 1390) qu'il reçoit.
Selon une variante de l'invention, le bus n'accepte qu'un esclave adapté à fournir des données en lecture. Dans ce cas, le module 136 et le signal 1390 (et les moyens le générant) sont omis.
Le multiplexeur de taille 133 (respectivement 137) reçoit les signaux de taille 402, 412 (respectivement 404, 414) en provenance des différents maîtres. Il présente en sortie les signaux de taille 433
(respectivement 424) en fonction du signal de commande 138
(respectivement 139) qu'il reçoit.
La figure 1 1 illustre une structure d'un l'arbitre 14 selon une variante de réalisation de l'invention, correspondant à une mise en oeuvre où les accès en lecture et/ou en écriture sont autorisés pour le périphérique maître principal et/ou un seul périphérique maître secondaire durant un cycle donné.
L'arbitre 14 est similaire à l'arbitre à l'exception des modules 131 et 134 qui sont remplacés par un module de sélection d'adresses 140 unique, le bus ne pouvant pas supporter une écriture et une lecture simultanée. Chaque maître reçoit un signal d'autorisation d'accès en lecture/écriture 141 , 142 qui lui est dédié. Les autres éléments sont similaires, portent les mêmes références et ne sont pas décrits davantage. Le module 140 reçoit les signaux de demande d'autorisation d'accès au bus en écriture 403, 413 et en lecture 406, 416 des différents maîtres connectés au bus. Il génère :
- des signaux d'autorisation d'accès au bus 141 , 142 en fonction du maître déterminé par la mise en oeuvre de l'algorithme de la figure 7 et ;
- des signaux de commande 138 et 139 en fonction du maître ainsi déterminé et du ou des types d'accès (écriture ou lecture) demandés par le maître ainsi déterminé.
Bien entendu, l'invention ne se limite pas aux modes de réalisation décrits précédemment.
En particulier, l'invention est compatible avec des nombres et des fonctions de maîtres et/ou d'esclave différents de ceux décrits précédemment.
En outre, le nombre de bit de données, d'adresses, de taille des données transmis en parallèle sur le bus n'est pas figé et peut prendre d'autres valeurs que celles indiquées précédemment selon différents modes de réalisation de l'invention.
Les signaux indiquant la taille des données transmises simultanément sont omis lorsque la taille des données transmises est fixe. Par ailleurs, d'autres signaux que ceux décrits précédemment peuvent être présents sur le bus, selon et notamment :
- un signal de changement dynamique de l'ordre des périphériques maîtres secondaires dans les étapes d'arbitrages ; - un signal d'activation ou non de la mise en oeuvre d'un arbitrage si le périphérique maître secondaire sélectionné par l'arbitre pour accéder au bus ne demande pas l'accès ;
- un signal de changement dynamique de l'ordre de sélection d'accès au bus à un des périphériques maîtres secondaires lorsque le périphérique maître principal ne demande pas l'accès au bus.
Ces signaux peuvent notamment être mis en oeuvre par un CPU (de l'anglais « Central Process Unit » ou unité centrale de traitement).
L'invention permet une grande souplesse d'utilisation, facilite une reconfiguration d'un coeur de base pour une adaptation à une application particulière et/ou une couche physique spécifique et est bien adaptée à une conception modulaire. Ainsi, l'invention est également compatible avec une mise en oeuvre totalement électronique (sous forme de composants) ou, au contraire, en partie logicielle (par exemple dans le cas de « logiciels radio » (ou « software radio » en anglais pouvant être reconfiguré facilement en fonction du contexte). Par ailleurs, l'invention est applicable à de nombreux domaines, et notamment dans le domaine des communications filaires ou sans fil (notamment une interface avec une couche physique du type IEEE 802.16, IEEE802.15.3 (UWB)).