Pendule inverse

Plan:
Modèle de simulation & génération de code
- Différences Temporel
- optimisation et type de données
- blocks et fonctionnalités Simulink
Aspect Temporel:
Simulation
Modélisation en temps continue, transformé de Laplace dans le domaine p (ou s)
- Solver résout les équations différentielles
- Pas de contrainte temps réelle
- Résultat dépend du solveur ; pas de calcul variable.
Aspect Temporel:
Implémentation
Implémentation en temps discret avec un pas de calcul fixe
- pas de solveur
- Contrainte temps réel
- Single-Rate & Multi-Rate
- Single-Tasking & Multi-Tasking
Discrete times
Single-rate:
- Les blocks ont tous la même période d’exécution
(Même couleur)
Multi-Rate
- Les blocks peuvent avoir des périodes d’exécution différentes
(Schéma multicolore)
Modèle multi-rate

Charge CPU d’un modèle multi-rate single-tasking (@70 mips)

Charge CPU d’un modèle multi-rate single-tasking (@20 mips)

Single-Tasking
Single-Tasking: Dans le slot de temps, l’exécution de tous les blocks doit se terminer avant la fin du slot.
Multi-Tasking
Multi-Tasking: Préemption possible -> Monotonic Rate Scheduler
- La tâche la plus fréquente à la priorité maximale
- Préemptera une tache plus lente
- Beaucoup plus flexible
- Mode par défaut (voir options du solveur)
Charge CPU d’un modèle multi-rate single-tasking (@70 mips)

Charge CPU d’un modèle multi-rate single-tasking (@20 mips)

Tasking Conclusion
- Single-Tasking @ 20 MIPS -> Overload
- dispatcher la tache la plus lente sur plusieurs slots
- (option d’offset dans Time Step -> [.001 .005])
- Multi-Tasking @ 20 MIPS -> Ok
- Rate transfert block options
- Data Integrity
- Deterministic data transfert
Optimisation
type de données
- Virgule Fixe
- Virgule Flottante
Flotant
IEEE 754 | Single | Double |
---|
Format width | 32 | 64 |
Sign bit | 1 | 1 |
exponent width | 8 | 11 |
Precision width | 23+1 | 52+1 |
1st bit of the significand is always 1. Phantom bit
Custom 8 bit Floating point
Parameter | Single | Double | Custom |
---|
Format width | 32 | 64 | 8 |
Sign bit | 1 | 1 | 1 |
exponent width | 8 | 11 | 4 |
Precision width | 23+1 | 52+1 | 3+1 |
Script Matlab pour tester un flottant 8 bits
% 4 bit exponent (signed)
emin = -7; emax = 6;
% 3 bits significand
p = 3;
exps = 2.^[emin:emax];
vals = (2^p) + [0:(2^p-1)]; % significand with leading 1
TotalVal = vals'*exps;
% add denormalized values
8bitFloat = unique([TotalVal ; 2^emin * [0:(2^m-1)]']);
8bitFloat = unique(flipud(-TotalVal) ;TotalVal]); % with neg vals
Data-type

Datatype
- int8…uint23
- fixdt(1,16,15)
- Scaling is En15 (Exp neg)
- $$\rightarrow 2^-15$$
- fixdt(1,16)
- signed (1)
- 16 bit width
- Scaling is derived from min & max
Datatype

- fixdt(1,16,.01,0)
- Scaling is sfix16Sp01
- Slope point 01