LOGIQUE PROGRAMMABLE EN VERILOG
Chapitre 1. Introduction
Chapitre 2. Traitement combinatoire et syntaxe du langage
Chapitre 3. L'usage de l'outil QUARTUS II
Chapitre 4. Description comportementale
Chapitre 5. Projets : énoncés
Chapitre 6. Projets : vers la solution
6.1. Gestion de feux de carrefour tricolores
6.2. Réalisation d'un compte-tours
6.3. Conversion analogique numérique à simple rampe numérique
6.4. Conversion analogique numérique à rampe avec suivi
6.5. Conversion analogique numérique à approximations successives
6.6. Radar de parking
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante

6.5. Conversion analogique numérique à approximations successives

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.

 
Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante