• Aucun résultat trouvé

Chapitre 2 : LES ARCHITECTURES MULTIPROCESSEUR MONOPUCE : DE LA

4. Les outils de conception utilisés dans le flot de conception des SoCs

4.2 Environnement Simulink

Simulink est basé sur l’environnement Matlab. C’est l’un des outils le plus

populaire utilisé pour la modélisation et la simulation des systèmes. La première version

était réalisée en 1989 pour la conception et l’analyse des systèmes de contrôle.

Aujourd’hui, cet outil est utilisé pour modéliser et simuler des applications appartenant à

différents domaines (traitement de signal, système mécanique, électronique) dans un

environnement temps réel. Simulink fourni une interface graphique pour la modélisation

des systèmes dynamiques sous forme de schémas blocs, ainsi qu’une machine

d’exécution permettant la simulation de ces modèles.

Ce logiciel offre de nombreuses fonctionnalités :

- une approche reposant sur les signaux,

- un grand nombre de modèles prédéfinis, sous forme de composants intégrés

dans des boites à outils,

- un langage de programmation spécifique qui permet de définir de nouveaux

composants,

- enfin, la possibilité d’encapsuler des modèles les uns dans les autres

4.2.1 La communication entre les blocs de Simulink

Les communications entre les blocs d’un système décrit sous Simulink sont modélisées

par des arcs orientés. Un arc assure la connexion entre un bloc émetteur et plusieurs blocs

récepteurs. Cet arc réalise une fonction de transmission des données qui peuvent être une

valeur ou un vecteur de taille défini. Un système Simulink peut utiliser l’environnement

Matlab dans sa modélisation. Il peut alors communiquer des données à l’espace de travail

de Matlab. L’échange de données entre Simulink et l’espace de travail Matlab peut se

faire à l’aide de variables communes ou par l’intermédiaire des fichiers Matlab.

4.2.2 Moteur de simulation du modèle fonctionnel

L’environnement d’exécution dépend de la nature du solutionneur utilisé dans

Simulink. Cet environnement permet l’échange des différentes valeurs de sorties entre les

différents blocs. Deux phases d’exécution sont nécessaires pour réaliser cet échange : la

phase d’initialisation et la phase d’exécution. La phase d’initialisation est faite pour tous

les blocs en même temps et leur exécution suit un algorithme dépendant du solutionneur

utilisé. Elle comprend les actions suivantes:

- Evaluation des expressions des paramètres des blocs.

- Mise à plat de la hiérarchie des modèles.

- Détermination de l’ordre de la mise à jour des blocs (phase de tri).

- Détermination des attributs des signaux et vérification de la concordance entre

signaux.

- Détermination du temps d’échantillonnage pour les blocs n’ayant pas cette

spécification.

- Allocation et initialisation de la mémoire utilisée pour sauvegarder les états et

les sorties de chaque bloc.

La phase d’exécution comprend les actions suivantes :

- Le calcul successif des états et des sorties du système à des intervalles, du

début de la simulation à sa fin.

Phase d’initialisation

Phase d’initialisation

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Calcul des sorties

Calcul des sorties

Mise à jour des états discrets

Mise à jour des états discrets

Calcul des derivées

Calcul des derivées

Calcul des sorties

Calcul des sorties

Calcul des dérivativées

Calcul des dérivativées

Localisation « Zero crossing »

Localisation « Zero crossing »

Remise à zéro: Etape finale Intégration (temps mineur) E ta p e d e S im u la ti o n Phase d’initialisation Phase d’initialisation

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Mise à jour des états discrets

Mise à jour des états discrets

Calcul des sorties

Calcul des sorties

E ta p e d e S im u la ti o n Remise à zéro: Etape finale Phase d’initialisation Phase d’initialisation

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Calcul des sorties

Calcul des sorties

Mise à jour des états discrets

Mise à jour des états discrets

Calcul des derivées

Calcul des derivées

Calcul des sorties

Calcul des sorties

Calcul des dérivativées

Calcul des dérivativées

Localisation « Zero crossing »

Localisation « Zero crossing »

Remise à zéro: Etape finale Intégration (temps mineur) E ta p e d e S im u la ti o n Phase d’initialisation Phase d’initialisation

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Calcul du temps des bloques ayant un temps d’échantillonnage variable

Mise à jour des états discrets

Mise à jour des états discrets

Calcul des sorties

Calcul des sorties

E ta p e d e S im u la ti o n Remise à zéro: Etape finale

Figure 3.12: Ordonnanceur de Simulink Figure 3.13: Ordonnanceur du modèle

fonctionnel adopté dans Simulink

La Figure 3.12 représente l’ordonnanceur générique de l’environnement Simulink.

Cependant, la Figure 3.13 illustre un cas particulier d’usage de cet ordonnanceur

correspondant au modèle fonctionnel adopté dans notre travail. Dans la description

fonctionnelle choisie, la hiérarchie n’est pas supposée utilisée. En effet, le concept de la

hiérarchie sera défini dans un autre niveau d’abstraction et une sémantique précise lui

sera attribuée. Nous modélisons dans ce travail uniquement les systèmes numériques.

Donc les systèmes continus ne sont pas considérés dans cette spécification fonctionnelle.

Pour la première phase d’exécution du modèle Simulink (l’initialisation), le temps

d’échantillonnage est supposé discret. Le pas d’échantillonnage n’est pas variable comme

dans le cas des systèmes continus. Ainsi, un solutionneur discret est utilisé le ‘solver :

fixed-step, discret’. Le calcul du temps d’avancement dans la phase d’exécution est

invariable. De plus, le calcul des dérivées n’est pas exécuté par l’ordonnanceur de ce

modèle parce que un solutionneur discret à pas fixe est utilisé.

4.2.3 Horloge de synchronisation du modèle fonctionnel

La plupart des blocs prédéfinis de la librairie de Simulink et les blocs définis par

l’utilisateur possèdent un paramètre de configuration appelé temps d’échantillonnage

(Sample time). Ce paramètre détermine l’horloge à laquelle le bloc est sensible. Ce

paramètre peut être défini comme étant égal à la valeur ‘-1’. Cette valeur signifie que le

bloc hérite la même horloge du bloc précédent, c'est-à-dire le bloc qui lui fournit les

données. Si tous les blocs du système fonctionnent au même pas d’échantillonnage alors

le système est mono fréquence (mono-rate). Cependant, dans le cas où les blocs

fonctionnent à des horloges différentes, le système est multi fréquence (multi-rate). Dans

notre modèle fonctionnel, nous supposons utiliser le système mono fréquence donc le

paramètre du temps d’échantillonnage est fixé à ‘-1’ pour les blocs prédéfinis et

‘inherited sample time’ pour les blocs définis par l’utilisateur. Le modèle fonctionnel,

dans ce cas est sensible à une horloge abstraite qui synchronise le fonctionnement du

système.

Documents relatifs