• Aucun résultat trouvé

2.3 Concepts de base des circuits asynchrones

2.3.5 Le langage CHP

Dans ce paragraphe, nous allons exposer brièvement le langage CHP utilisé pour décrire des circuits asynchrones QDI afin de permettre la compréhension du code CHP qui est présent dans le reste du manuscrit.

2.3.5.1 Types de données

Les types existant en CHP peuvent être regroupés en types non signés (MR,DR,NATURAL,BIT et

BOOLEAN) ou en types signés (SMR,SDR, etINTEGER). En fait, le type de base estMR[B][L][D]

ou SMR[B][L][D], les autres types étant des alias pour aider le développeur. Avec cette notation, B

indique la base,Lla longueur du type (ou nombre de digits) etDla dimension du vecteur. SiDn’est pas renseigné, on suppose qu’il vaut1, de même pourL. AinsiMR[B]est équivalent àMR[B][1][1].

MR[B] : codage multi rail de base B Ce type représente un nombre entre 0 etB −1. Chaque fil représente une des valeurs possibles entre0etB−1. Seulement un fil peut être à1à chaque instant.

DR: codage double rail Ce type est équivalent à un typeMR[2][1][1].

BIT: type binaire Ce type est équivalent à un typeDRdonc à un typeMR[2][1][1].

SR: codage simple rail Ce type est équivalent à un typeMR[1][1][1]. Il permet de faire des synchro-nisation entre des éléments communicants. Il ne transmet aucune information mais permet d’acquitter un évènement.

BOOLEAN: type booléen Ce type est équivalent à un typeMR[2][1][1].

NATURAL[MAX]: codage d’un nombre naturel de 0 à MAX Ce type est transformé à la compilation en un typeMR[2][⌈log2(MAX+ 1)⌉][1]

SMR[B] : codage multi rail signé de base B Ce type représente un entier signé dont la valeur est comprise entre⌊−B/2⌋et⌊B/2−1⌋. Seulement un fil peut être à1à chaque instant.

SDR: codage double rail Ce type est équivalent à un typeSMR[2][1][1].

INTEGER[MAX]: codage d’un nombre entier signé de -MAX-1 à MAX Ce type est transformé à la compilation en un typeSMR[2][⌈log2(MAX+ 1) + 1⌉][1]

2.3.5.2 Littéraux

Les littéraux, ou constantes entières, sont notés en CHP avec la syntaxe suivante :

2.3.5.3 Opérateurs

Le CHP définit les opérateurs de comparaison traditionnels tels que =, /=, <, >, <=, >=, les opérateurs logiques AND, NAND, OR, NOR, XOR, XNOR, NOT, l’affectation :=, les opé-rateurs arithmétiques +, -, *, /, MOD, ABS, les opérateurs de décalage SRL, SRA, SLL, SLA, ROTL, ROTR, et les opérateurs sur les canaux de communications?, !,#définis plus loin.

2.3.5.4 Instructions

On note “ ;” l’opérateur de séquence et “,” l’opérateur parallèle. Ainsi I1;I2 signifie que I2 sera exécuté quandI1sera terminé etI1, I2signifie que les deux instructions peuvent être exécutées en même temps.

Structure de contrôle Les structres de contrôle en CHP sont représentées par des commandes gardées dont la syntaxe est la suivante :

[ <garde> => <commandes> (LOOP|BREAK) ] ;

<garde> étant une expression booléenne et <commandes> une suite d’instructions. La structure

LOOPpermet de revenir au début la structure de contrôle lorsque la suite d’instructions est exécutée, permettant de faire une boucle. La structureBREAK, au contraire, sort de cette structure de contrôle pour exécuter l’instruction suivante.

Cette structure de contrôle peut être étendue aux instructions de choix dont la syntaxe est la suivante.

{@}@ [

<commandes gardées> (BREAK | LOOP) <commandes gardées> (BREAK | LOOP) { <commandes gardées> (BREAK | LOOP) } ];

Le choix peut être déterministe (@) ou indéterministe (@@). Dans un choix déterministe, au plus une garde doit être vraie lors de l’évaluation. Dans le cas d’un choix indéterministe, si plusieurs gardes sont vraies en même temps, un tirage aléatoire est réalisé.

Opération sur les ports et les canaux Il y a trois opérateurs sur les canaux : envoie (!), réception (?) et la “probe” (#), dont les syntaxes sont les suivantes :

C ?x ; - - pour recevoir une donnée et la sauver dans la variable x

C ! ; - - pour émettre un acquittement

C !x ; - - pour envoyer une donnée

C# - - retournevraisi une donnée est en attente sur le port

C# <expression> ; - - pour lire une donnée sans l’acquitter

2.3.5.5 Exemple

L’exemple montré figure 2.11 décrit un arbitre entre les ports d’entréein1etin2donnant l’accès à une ressource partagée connectée surout1.

COMPONENT a r b i t r e _ S R _ 2 PORT ( i n 1 : IN DI SR; i n 2 : IN DI SR; o u t 1: OUT DI SR ) BEGIN PROCESS a r b i t r e _ S R _ 2 PORT ( i n 1 : IN DI SR; i n 2 : IN DI SR; o u t 1: OUT DI SR) BEGIN @@ [ i n 1# => o u t 1! ; i n 1? ; LOOP i n 2# => o u t 1! ; i n 2? ; LOOP ] ; END; END;

FIG. 2.11 – Exemple de code CHP d’un arbitre.

2.4 Conclusion

Les problèmes liés à l’horloge dans la conception de circuits synchrones de plus en plus complexes suggèrent de se tourner vers la nouvelle approche de la conception de circuits asynchrones. Contraire-ment au mécanisme d’horloge globale utilisé dans les circuits synchrones, la synchronisation dans les circuits asynchrones est effectuée localement grâce à une signalisation bidirectionnelle entre tous les éléments du circuit. Cette signalisation est implantée via des canaux de communications utilisant un pro-tocole et un codage de données spécifiques. De nombreux types de circuits asynchrones existent : ils sont classés en fonction des hypothèses temporelles émises.

Comme nous l’avons vu, les circuits quasi-insensibles aux délais sont des circuits asynchrones très robustes qui peuvent être alimentés sur une large plage de tension. Ils sont donc la cible idéale pour des techniques de réduction de la consommation telles que l’adaptation dynamique en tension présentée au chapitre 5. De plus, la faible consommation pic de courant des circuits asynchrones permet aux systèmes

fonctionnant sur batterie d’augmenter leur durée de vie. Enfin, la signalisation locale entre les blocs permet aux circuits asynchrones d’avoir une très faible activité électrique, donc une faible consommation d’énergie, de se mettre en veille à tous les niveaux de granularité, et de se réveiller instantanément. Par conséquent, ce type de logique possède un grand intérêt pour les systèmes embarqués, et en particulier pour les systèmes ultra faible consommation que sont les nœuds composant les réseaux de capteurs sans fil.

Chapitre

3

Architecture générale et consommation

typique

3.1 Architecture matérielle

Cette section a pour but de montrer les grandeurs typiques de la consommation des différentes parties qui peuvent être présentes dans les nœuds des réseaux de capteurs sans fil. Le schéma d’une architecture typique de réseaux de capteurs sans fil est présenté figure 3.1.