Accéder au contenu principal

Détecteur de transitions de Pulses


Presentation générale

Fréquemment, il nous est intéressant,  en électronique embarqué, de pouvoir identifier les transitions logiques des pulses. En effet, que ce soit pour détecter une transition d'un pulse, de son état bas vers son état haut ou inversement. Cette détection nous permet alors de pouvoir déclencher d'autres traitements derrière, comme par exemple, déclencher l'acquisition numérique d'un signal. Un comportement similaire aux options de déclenchement (trigger) des oscilloscopes. En effet, lors que nous utilisons les oscilloscopes, souvent, on définit la manière dont l'oscilloscope fait l'acquisition du signal mis en entrée en renseignant une détection soit sur le front montant, descendant ou les deux. En fonction de ces types de détections, différents détecteurs de bords on vu le jour.

  1. Détection par front montant 
  2. Détection par front descendant
  3. Détection par les deux fronts
Voici une brève description de chacun de ces différents types de détections de pulses:

Détection de pulses par son front montant
La détection de pulses à travers son front montant permet de détecter ou déclencher une acquisition dès lors que nous détectons une transition, de ce pulse, de son état bas (0 logique) vers son état haut (1 logique).

Détection de pulses par son front descendant
La détection de pulses à travers son front descendant permet de détecter ou déclencher une acquisition dès lors que nous détectons une transition de l'état haut (1 logique) vers l'état bas (0 logique) du pulse mis en entrée.

Détection de pulses par ses deux fronts
Quant à ce dernière type de détection, elle se forme à partir des deux précédents. En effet, cette détection, détecte le passage à la fois  de l'état haut vers le bas logique  et de l'état bas vers haut logique de tout pulse mis en entrée afin de déclencher une acquisition quelconque. Un de cas pratiques pour ce type de détection et la mesure de la largeur de pulses d'entrée puisque on déclenche une acquisition tantôt au front montant quant au front descendant nous permettant ainsi de compter le temps écoule entre les deux déclenchements successifs.


Détecteurs de fronts (Exemples)
Nous avons vu précédemment l'intérêt d'utiliser les détecteurs de fronts. Dans cette section, nous allons nous intéresser  en profondeur au fonctionnement réel de ces détecteurs, à travers différents cas pratiques, schémas électroniques et leurs chronogrammes respectives. Nous verrons en générale trois méthodes, pour chacun des cas, de détection de fronts.

Détection de fronts avec de portes logiques 


  • Détection de fronts montants
La première méthode de détection, des fronts montants d'un pulse, c'est à travers de portes logiques. En effet, ici, nous utiliserons les fait que les portes logiques ne sont pas idéales et donc que les signaux mis en entrée ne se trouvent pas immédiatement à la sortie. En fait, des retards de propagation sont ajoutés par ces portes logiques. Donc, pour ce type de détection, nous allons tirer parti de ce délai de propagation de signal.

Prenons comme exemple le schéma suivant:
Figure 1 : Temps de réaction de portes logiques (Idéal vs Réel)


Nous avons en entrée (nœud A) un pulse de largeur égale à 100 ns et d'amplitude égale à 5 Volts et deux sorties différentes B_Idéal et B_Reel qui simulent respectivement une porte logique idéale et une porte logique réel.

Naïvement, en rajoutant la première porte inverseuse NON,  donnant en sortie B_Ideal, nous croirions que cette sortie réagirait aussitôt au  signal  d'entrée (A) mais c'est pas le cas. En réalité, les sorties de toutes les portes logiques ne réagissent pas immédiatement à l'entrée, elles ont un temps de propagation ,souvent spécifié dans leurs documentation technique, comme le montre la troisième courbe  v(B_Réel) de la figure 1.

Si nous prenions pour exemple la porte logique de référence SN74AHC1G04-Q1:
Figure 2 : Exemple de temps de réaction d'une porte logique

Nous voyons que son temps de propagation varie selon la tension d'alimentation appliquée. En effet, nous avons un temps max de 10.6 ns (nanosecondes)  lors qu'elle est alimentée à Vcc=3.3 V contre 7.5 ns à Vcc=5 V à la température ambiante de 25°C.  Par ailleurs, on note deux temps de propagation Tplh et Tphl. Ces deux temps correspondent respectivement au temps de propagation du bas-haut et haut-bas par rapport au signal d'entrée.

Sachant tout ça, nous pouvons alors s'en servir de ce phénomène de délai de propagation pour détecter les fronts du signal d'entrée. Si nous reprenions la figure précédente (Figure 1) avec seulement le signal d'entrée (A) et sa sortie  réel (B_Réel) comme le montre la figure 3:

Figure 3 : Réaction d'une porte logique Non réel

Nous pouvons constater que pendant un court instant, le signal A et le signal B_Reel sont tous deux au même niveau logique (logique 1). Nous pouvons alors, dans ce cas, rajouter une deuxième porte logique pour comparer ces deux signaux et déclencher un pulse lorsque les deux signaux sont à niveau haut logique. Le schéma proposé est alors le suivant:

Figure 4 : Schéma proposé pour détection des front montants de pulses

Après simulation, nous obtenons le chronogramme suivant:
Figure 5 :  Détection des fronts montant de pulses

Nous avons en rouge le signal mis en entrée (A), en vert le signal réel après inversion avec une porte logique NON et en bleu le pulse généré lors de la détection du front montant pulse (A). La largeur de ce dernière correspond au temps de propagation du port logique NON (spécifié dans le cahier de charge de toutes les portes logiques). Par ailleurs, V(edge_detect) en réalité est également légèrement retardé dû au temps de propagation de la porte Et logique, ce qui implique que si vous voulez générer un pulse qui se déclenche presque immédiatement ou de façon synchrone à la détection du front montant, au pulse mis en entrée, il va falloir choisir de portes logiques Et avec le temps de propagation le plus court possible.

  • Détection de fronts descendants
Pour la suite, nous proposons le schéma ci-dessous comme méthode de détection des fronts descendants  en utilisant des portes logiques. A l'instar du montage étudié ultérieurement, pour la détection des front montants, nous utiliserons le même schéma mais changerons le port Et logique contre un Non Ou logique.
Figure 6 : Schéma proposé pour détection de fronts descendants

Après simulation du schéma de la figure 6 , nous obtenons le chronogramme suivant:

Figure 7 : Détection de fronts descendants des pulses 

Nous avons en rouge le signal mis en entrée (A), en vert le signal réel après inversion avec une porte logique NON et en bleu le pulse généré lors de la détection du front descendant du pulse (A). La largeur de ce dernière correspond au temps de propagation de la porte logique  NON également comme pour le cas de détection du front montant. 

  • Détection de fronts montant et descendants
Finalement, comme vous vous en doutiez, la détection de deux pulses et ni plus ni moins que la combinaison de deux montages étudiés précédemment suivi d'une porte logique Ou comme le montre la figure 8 :

Figure 8 : Schéma proposé pour la détection des deux fronts


Nous avons A11, A14 et Q13 opérant  respectivement comme de portes Non Ou, Ou et Et logiques. Après simulation, nous observons le chronogramme suivant: 


Figure 9 : Détection de deux fronts 

Le montage déclenche de pulses au front montant et descendant du signal (A) mis en entrée comme souhaitée. Encore une fois, il faut se renseigner des valeurs de temps de propagations pour chacune de portes logiques pour que la largeur des pulses de détection, en sortie, fassent  la même largeur puisque pour détecter le front montant nous utilisons une porte Et logique et pour le front descendant une porte Ou logique.


Détection de fronts avec  un circuit dérivateur 

Une deuxième manière que nous pouvons utiliser pour détecter des transitions de fronts(passage du signal en entrée du niveau bas vers haut et inversement), c'est à travers un montage dérivateur. Ce montage se présente typiquement comme suit:

Figure 10 : Montage du dérivateur

Pour la simulation de ce montage, nous nous proposons de changer la constante de temps RC du montage et observer ses conséquences.


    Figure 11 : Signal en sortie du circuit dérivateur



Nous observons, pour ce module dérivateur, que plus sa constante de temps 5RC (5RC étant le temps min pour lequel la capacité C se charge à 100%)  est faible par rapport à largeur du pulse d'entrée, plus nous aurons de pulses très court. A l'inverse, plus cette constante de temps 5RC du montage est grande, plus le signal en sortie suit fidèlement le signal mis entrée. Ceci implique qu'à  l'utilisation d'un montage pareil, il faut dans un premier s'assurer que la constante de temps du montage à 5RC soit très faible par rapport à la largeur min du signal mis en entrée. Ceci permettra d'avoir de pulses raids peu import le pulse mis en entrée.

  • Détection de fronts montants
Nous constatons également qu'en sortie du module dérivateur, pour le cas où 5RC est très faible par rapport à la largeur du pulse en entrée, que le dérivateur génère un pulse positif au front montant du pulse d'entrée et un négatif au front descendant. Nous pouvons alors utiliser ce phénomène afin de détecter des transitions.

Pour ce premier cas où nous cherchons à déclencher un pulse au front montant du pulse d'entrée, nous placerons une diode permettant de laisser passer que le front montant et une résistance R=1k de pull down pour assurer le niveau bas logique et atténuer davantage le signal négatif comme le montre la figure 12:

Figure 12 : Montage du dérivateur limité

Sa simulation nous donne le résultat suivant:

Figure 13 : Chronogramme du dérivateur limité

L'ajout de la diode D5 permet de limiter énormément la valeur négative en sortie. Ce signal peut ensuite aller vers un buffer ou un trigger de schmitt  pour le donner l'allure d'un vrai signal carrée. Voici ci-dessous  (figure 14) un exemple simple où le signal est mis dans un buffer (mise en cascade de deux portes logiques inverseuses):

Figure 14 : Dérivateur + Buffer

Nous remarquons suite à la simulation de ce montage avec un buffer en sortie  que les pulses sont bien plus courts que ceux obtenus précédemment avec que  les portes logiques.

  • Détection de fronts descendants
Comme pour la détection de fronts montants avec le montage dérivateur, nous utiliserons un circuit en aval du circuit dérivateur qui déclenchera un pulse à chaque fois que le signal négatif généré par le dérivateur est détecte.

Figure 15 : Montage dérivateur pour la détection de fronts descendants

Sa simulation résulte au chronogramme suivant:

Figure 16 : Chronogramme de détection de fronts descendants avec un dérivateur

Malgré la détection des fronts descendants, il est clair que ce montage n'est pas très fiable et nécessite un peu plus de connaissance en matière d'électronique. De plus, le mauvais choix de la résistance R7 peut augmenter l'amplitude des pulses sur le front montant et fausser la détection. Une possible amélioration serait de rajouter un buffer logique en aval de cette résistance R7.  

Détection de fronts avec un circuit intégrateur

La dernière méthode que nous verrons, sur cette article, de détection de transition de fronts c'est à travers un montage intégrateur. Ce montage se présente typiquement comme suit:

Figure 17: Montage d'un intégrateur 

Pour la simulation de ce montage, nous nous proposons de changer la constante de temps RC du montage et observer ses conséquences.


Figure 18: Chronogramme obtenu du montage intégrateur pour différentes constante de temps


Contrairement au montage dérivateur, ici, nous observons que plus la constante de temps 5RC est faible par rapport à largeur du pulse d'entrée, plus notre signal en sortie suit fidèlement le signal mis entrée. Ceci implique qu'à  l'utilisation d'un montage pareil, il faut dans un premier s'assurer que la constante de temps du montage à 5RC soit très faible par rapport à la largeur max du signal mis en entrée.

  • Détection de fronts montants
Afin d'utiliser le montage intégrateur pour faire de la détection des fronts  montants, nous chercherons dans un premier temps d'utiliser un montage dont la constante de temps légèrement moins de temps à se charger pour avoir un comportement similaire au cas Ton=5RC, suite à ça, nous pourrons utiliser de portes logiques pour rendre le signal déclenché pour stable, comme le montre la figure 19


Figure 19: schéma proposé pour la détection de fronts montants avec intégrateur

Suite à la simulation de ce montage de la figure 19, nous obtenons le chronogramme suivant:

Figure 20: Chronogramme de détection des fronts montants avec intégrateur


Ce schéma proposé nous donne de pulses de détection plus courts par rapport aux précédents.

  • Détection de fronts descendants
Dans le cas de la détection de fronts descendants, nous utiliserons également la même logique. Cependant, nous changerons la porte logique A15 d'un Et logique vers un Ou logique comme le montre la figure 21.

Figure 21: Schéma proposé pour la détection des fronts descendants avec intégrateur 

Après simulation de ce montage, nous obtenons le chronogramme suivant:

Figure 22: Chronogramme de la détection de fronts descendants avec intégrateur 


  • Détection de fronts montant et descendants
Finalement, pour conclure cette suite de méthodes de détection, le dernier schéma proposé pour détecter les deux fronts montants et descendants d'un pulse et le suivant:


Figure 23:Schéma proposé pour la détection de deux fronts d'un pulse 

Après simulation de ce dernier montage, nous obtenons le chronogramme suivant:


Figure 24: Chronogramme de la détection de fronts avec intégrateur 

Nous remarquons alors que ce dernier montage est très simple et pratique dans le cas où on s'intéresse à détecter à la fois les transitions montantes et descendantes d'un pulse quelconque.

Conclusion
En conclusion, nous avons examiné diverses méthodes pour détecter la transition de front d'un pulse, en analysant plusieurs montages. Les schémas utilisant uniquement des portes logiques sont à privilégier car ils sont fiables, stables et nécessitent peu de composants, contrairement aux méthodes utilisant des intégrateurs et dérivateurs. Bien que ces dernières produisent des pulses similaires à ceux de Dirac, elles sont compliquées à mettre en œuvre et demandent un nombre important de composants et de logique. Pour approcher les performances des montages à intégrateurs et dérivateurs avec des portes logiques, il suffit de choisir des portes NON avec des temps de propagation les plus courts possibles.

Bibliographie

https://ltwiki.org/LTspiceHelp/LTspiceHelp/A_Special_functions_.htm







Commentaires