La méthode a été
donnée dans le sujet avec l'exemple fourni. L'analyse
est plus difficile à matérialiser par des
blocs logiques.
La méthode (rappel) :
A chaque front sur clk, on regarde
l'état du comparateur. S'il indique 0, on est
inférieur : on garde la valeur précédente. Sinon
on retire le précédent poids ajouté. On
connaît les poids à ajouter en fonction du numéro
du front d'horloge. Il faut un compteur modulo N évoluant
en binaire naturel. Les poids sont respectivement 128, 64, 32, 16,
8, 4, 2 et 1. Les opérations sont décrites par un
algorithme exécuté sur chaque front d'horloge.
L'analyse :
L'algorithme :
A chaque front montant de l'horloge
CLK
si STC est à 1
mettre le compteur à 0
mettre EOC à 0
sinon
si EOC est égal à 0
incrémenter le compteur
cas où le compteur
vaut 0 : mettre 128 dans N
vaut 1 : si COMP est égal à
1
retirer 128 à N
ajouter 64 à N
vaut 2 : si COMP est égal à
1
retirer 64 à N
ajouter 32 à N
vaut 3 : si COMP est égal à
1
retirer 32 à N
ajouter 16 à N
vaut 4 : si COMP est égal à
1
retirer 16 à N
ajouter 8 à N
vaut 5 : si COMP est égal à
1
retirer 8 à N
ajouter 4 à N
vaut 6 : si COMP est égal à
1
retirer 4 à N
ajouter 2 à N
vaut 7 : si COMP est égal à
1
retirer 2 à N
ajouter 1 à N
vaut 8 : si COMP est égal à
1
retirer 1 à N
positionner EOC à 1
Des variantes sont possibles :
- plutôt que de réaliser éventuellement
un retrait et systématiquement un ajout de la 1/2
valeur, on ajoute ou on retire la 1/2 valeur
en fonction du test : ajouter,
- en remarquant que cette méthode
permet de positionner un bit à chaque front, on
peut simplifier (diminution du nombre
de lignes) par l'usage d'un tableau et par les opérateurs
de décalage. On évite ainsi la série
de « SI » et « CAS OU ».
Ceci n'implique pas un programme plus efficace, ni une solution
plus performante : le compilateur génère un
fichier qui programme le composant logique afin de réaliser
le comportement décrit.
Le temps de conversion :
Systématiquement, en 9
fronts actifs d'horloge, on a trouvé la valeur. Le temps de
conversion moyen a été raccourci. Il est devenu
indépendant de la valeur à convertir. Il faut n+1 fois la
période de l'horloge pour obtenir une résolution n bits.
Avec une autre stratégie de commande
du séquenceur, on a amélioré les performances
de notre CAN.