Compteur modulo 16
Un article de Wikipedia.
(Différences entre les versions)
(→Résultats) |
(→Résultats) |
||
(32 révisions intermédiaires masquées) | |||
Ligne 37 : | Ligne 37 : | ||
=== Compteur modulo 16 === | === Compteur modulo 16 === | ||
- | Un compteur modulo 16 | + | Un compteur modulo 16 nécessite 4 bascules JK. |
==== Etats du compteur ==== | ==== Etats du compteur ==== | ||
Ligne 44 : | Ligne 44 : | ||
{| align="center" cellpadding="5" cellspacing="0" | {| align="center" cellpadding="5" cellspacing="0" | ||
|- | |- | ||
- | |rowspan="2" style="border-right:1px solid grey;border-bottom:1px solid grey;"|''' | + | |rowspan="2" style="border-right:1px solid grey;border-bottom:1px solid grey;"|'''Etat'''||colspan="4" align="center"|'''Q'''||colspan="4" align="center" style="border-left:1px solid grey;"|'''Q<sup>+</sup>'''||colspan="2" align="center" style="border-left:1px solid grey;"|'''d'''||colspan="2" align="center" style="border-left:1px solid grey;"|'''c'''||colspan="2" align="center" style="border-left:1px solid grey;"|'''b'''||colspan="2" align="center" style="border-left:1px solid grey; border-right:1px solid grey;"|'''a''' |
|- | |- | ||
|style="border-bottom:1px solid grey;"|'''d'''||style="border-bottom:1px solid grey;"|'''c'''||style="border-bottom:1px solid grey;"|'''b'''||style="border-bottom:1px solid grey;"|'''a'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''d'''||style="border-bottom:1px solid grey;"|'''c'''||style="border-bottom:1px solid grey;"|'''b'''||style="border-bottom:1px solid grey;"|'''a'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-bottom:1px solid grey;"|'''K'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-bottom:1px solid grey;"|'''K'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-bottom:1px solid grey;"|'''K'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-right:1px solid grey;border-bottom:1px solid grey;"|'''K''' | |style="border-bottom:1px solid grey;"|'''d'''||style="border-bottom:1px solid grey;"|'''c'''||style="border-bottom:1px solid grey;"|'''b'''||style="border-bottom:1px solid grey;"|'''a'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''d'''||style="border-bottom:1px solid grey;"|'''c'''||style="border-bottom:1px solid grey;"|'''b'''||style="border-bottom:1px solid grey;"|'''a'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-bottom:1px solid grey;"|'''K'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-bottom:1px solid grey;"|'''K'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-bottom:1px solid grey;"|'''K'''||style="border-left:1px solid grey;border-bottom:1px solid grey;"|'''J'''||style="border-right:1px solid grey;border-bottom:1px solid grey;"|'''K''' | ||
Ligne 80 : | Ligne 80 : | ||
|style="border-right:1px solid grey;border-bottom:1px solid grey;"|'''15'''||style="border-bottom:1px solid grey;"|1||style="border-bottom:1px solid grey;"|1||style="border-bottom:1px solid grey;"|1||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|0||style="border-bottom:1px solid grey;"|0||style="border-bottom:1px solid grey;"|0||style="border-bottom:1px solid grey;"|0||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-right:1px solid grey;border-bottom:1px solid grey;"|1 | |style="border-right:1px solid grey;border-bottom:1px solid grey;"|'''15'''||style="border-bottom:1px solid grey;"|1||style="border-bottom:1px solid grey;"|1||style="border-bottom:1px solid grey;"|1||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|0||style="border-bottom:1px solid grey;"|0||style="border-bottom:1px solid grey;"|0||style="border-bottom:1px solid grey;"|0||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-bottom:1px solid grey;"|1||style="border-left:1px solid grey;border-bottom:1px solid grey;"|x||style="border-right:1px solid grey;border-bottom:1px solid grey;"|1 | ||
|} | |} | ||
+ | |||
==== Matrice de référence ==== | ==== Matrice de référence ==== | ||
La matrice de référence des états du compteur : | La matrice de référence des états du compteur : | ||
Ligne 101 : | Ligne 102 : | ||
==== Réduction des fonctions J et K ==== | ==== Réduction des fonctions J et K ==== | ||
- | = | + | <table align="center"> |
+ | <tr> | ||
+ | <td> | ||
{| border="1" cellpadding="5" cellspacing="0" | {| border="1" cellpadding="5" cellspacing="0" | ||
- | |+ '''J<sub>a</sub> = 1''' | ||
|- | |- | ||
!Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
Ligne 119 : | Ligne 121 : | ||
|align="center"|1||align="center"|x||align="center"|x||align="center"|1 | |align="center"|1||align="center"|x||align="center"|x||align="center"|1 | ||
|} | |} | ||
+ | </td> | ||
+ | <td>'''J<sub>a</sub> = 1'''</td><td> </td> | ||
+ | <td> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | |- | ||
+ | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
+ | |- | ||
+ | !00 | ||
+ | |align="center"|x||align="center"|1||align="center"|1||align="center"|x | ||
+ | |- | ||
+ | !01 | ||
+ | |align="center"|x||align="center"|1||align="center"|1||align="center"|x | ||
+ | |- | ||
+ | !11 | ||
+ | |align="center"|x||align="center"|1||align="center"|1||align="center"|x | ||
+ | |- | ||
+ | !10 | ||
+ | |align="center"|x||align="center"|1||align="center"|1||align="center"|x | ||
+ | |} | ||
+ | </td> | ||
+ | <td>'''K<sub>a</sub> = 1'''</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | |- | ||
+ | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
+ | |- | ||
+ | !00 | ||
+ | |align="center"|0||align="center"|1||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !01 | ||
+ | |align="center"|0||align="center"|1||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !11 | ||
+ | |align="center"|0||align="center"|1||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !10 | ||
+ | |align="center"|0||align="center"|1||align="center"|x||align="center"|x | ||
+ | |} | ||
+ | </td><td>'''J<sub>b</sub> = Q<sub>a</sub>'''</td><td> </td> | ||
+ | <td> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | |- | ||
+ | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
+ | |- | ||
+ | !00 | ||
+ | |align="center"|x||align="center"|x||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !01 | ||
+ | |align="center"|x||align="center"|x||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !11 | ||
+ | |align="center"|x||align="center"|x||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !10 | ||
+ | |align="center"|x||align="center"|x||align="center"|1||align="center"|0 | ||
+ | |} | ||
+ | </td><td>'''K<sub>b</sub> = Q<sub>a</sub>'''</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | |- | ||
+ | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
+ | |- | ||
+ | !00 | ||
+ | |align="center"|0||align="center"|0||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !01 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !11 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !10 | ||
+ | |align="center"|0||align="center"|0||align="center"|1||align="center"|0 | ||
+ | |} | ||
+ | </td><td>'''J<sub>c</sub> = Q<sub>a</sub>Q<sub>b</sub>'''</td><td> </td> | ||
+ | <td> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | |- | ||
+ | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
+ | |- | ||
+ | !00 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !01 | ||
+ | |align="center"|0||align="center"|0||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !11 | ||
+ | |align="center"|0||align="center"|0||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !10 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |} | ||
+ | </td><td>'''K<sub>c</sub> = Q<sub>a</sub>Q<sub>b</sub>'''</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | |- | ||
+ | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
+ | |- | ||
+ | !00 | ||
+ | |align="center"|0||align="center"|0||align="center"|0||align="center"|0 | ||
+ | |- | ||
+ | !01 | ||
+ | |align="center"|0||align="center"|0||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !11 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !10 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |} | ||
+ | </td><td>'''J<sub>d</sub> = Q<sub>a</sub>Q<sub>b</sub>Q<sub>c</sub>'''</td><td> </td> | ||
+ | <td> | ||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | |- | ||
+ | !Q<sub>d</sub>Q<sub>c</sub>\Q<sub>b</sub>Q<sub>a</sub>!!00!!01!!11!!10 | ||
+ | |- | ||
+ | !00 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !01 | ||
+ | |align="center"|x||align="center"|x||align="center"|x||align="center"|x | ||
+ | |- | ||
+ | !11 | ||
+ | |align="center"|0||align="center"|0||align="center"|1||align="center"|0 | ||
+ | |- | ||
+ | !10 | ||
+ | |align="center"|0||align="center"|0||align="center"|0||align="center"|0 | ||
+ | |} | ||
+ | </td><td>'''K<sub>d</sub> = Q<sub>a</sub>Q<sub>b</sub>Q<sub>c</sub>'''</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | == Résultats == | ||
+ | Les résultats de la réduction des fonctions J et K sont compréhensibles : | ||
+ | |||
+ | * Q<sub>a</sub> change de valeur à chaque impulsion d'horloge. Cela se réalise quand J = K = 1 d'après la table de vérité de la bascule JK, d'où J<sub>a</sub> = K<sub>a</sub> = 1. | ||
+ | * Q<sub>b</sub> change de valeur après la prochaine impulsion d'horloge seulement quand le bit inférieur (Q<sub>a</sub>) est à 1, sinon il conserve sa valeur. D'ou J<sub>b</sub> = K<sub>b</sub> = Q<sub>a</sub>. Lorsque Q<sub>a</sub> = 1, Q<sub>b</sub> change de valeur et lorsque Q<sub>a</sub> = 0, Q<sub>b</sub> conserve sa valeur (selon la table de vérité de la bascule JK lorsque J = K = 0). | ||
+ | * Q<sub>c</sub> change de valeur après la prochaine impulsion d'horloge seulement quand les deux bits inférieurs (Q<sub>a</sub> et Q<sub>b</sub>) sont à 1, sinon il conserve sa valeur. D'ou J<sub>c</sub> = K<sub>c</sub> = Q<sub>a</sub>Q<sub>b</sub>. | ||
+ | * Q<sub>d</sub> change de valeur après la prochaine impulsion d'horloge seulement quand les trois bits inférieurs (Q<sub>a</sub>, Q<sub>b</sub> et Q<sub>c</sub>) sont à 1, sinon il conserve sa valeur. D'ou J<sub>d</sub> = K<sub>d</sub> = Q<sub>a</sub>Q<sub>b</sub>Q<sub>c</sub>. | ||
+ | * Cela se généralise pour un compteur à n bascules JK : | ||
+ | ** J<sub>1</sub> = K<sub>1</sub> = 1. | ||
+ | ** J<sub>n</sub> = K<sub>n</sub> = Q<sub>1</sub>Q<sub>2</sub>...Q<sub>n-1</sub> pour n > 1 | ||
+ | |||
+ | <logicsim height="800" width="1000" circuit="Compteurmodulo16.lsim" start="true" /> | ||
== Conclusions == | == Conclusions == | ||
+ | Un compteur modulo 16 se réalise avec 4 bascules JK et 2 portes ET. | ||
== Ressources == | == Ressources == | ||
+ | * Fichiers pour [[Logiciel de simulation de circuits logiques|LogicSim]] du [[Media:Compteurmodulo16.zip|Compteur Modulo 16]] | ||
[[Category:Logique]] | [[Category:Logique]] | ||
[[Category:Electronique]] | [[Category:Electronique]] |
Version actuelle
Sommaire |
Compteur modulo 16
But
Déterminer les composants logiques d'un compteur modulo 16.
Introduction
La réalisation est centrée sur des bascules JK Master / Slave (voir Bascule JK sur Wikipedia).
Table de vérité d'une bascule JK
La table de vérité d'une bascule JK est :
J | K | Q+ |
---|---|---|
0 | 0 | Q |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | /Q (le complément de Q) |
Table des transitions d'une bascule JK
Sa table des transitions déduites de sa table de vérité est :
Q | Q+ | J | K |
---|---|---|---|
0 | 0 | 0 | x |
0 | 1 | 1 | x |
1 | 0 | x | 1 |
1 | 1 | x | 0 |
Compteur modulo 16
Un compteur modulo 16 nécessite 4 bascules JK.
Etats du compteur
Les états d'un compteur modulo 16 ainsi que les états de bascules JK sont les suivants :
Etat | Q | Q+ | d | c | b | a | ||||||||||
d | c | b | a | d | c | b | a | J | K | J | K | J | K | J | K | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | x | 0 | x | 0 | x | 1 | x |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | x | 0 | x | 1 | x | x | 1 |
2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | x | 0 | x | x | 0 | 1 | x |
3 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | x | 1 | x | x | 1 | x | 1 |
4 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | x | x | 0 | 0 | x | 1 | x |
5 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | x | x | 0 | 1 | x | x | 1 |
6 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | x | x | 0 | x | 0 | 1 | x |
7 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | x | x | 1 | x | 1 | x | 1 |
8 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | x | 0 | 0 | x | 0 | x | 1 | x |
9 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | x | 0 | 0 | x | 1 | x | x | 1 |
10 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | x | 0 | 0 | x | x | 0 | 1 | x |
11 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | x | 0 | 1 | x | x | 1 | x | 1 |
12 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | x | 0 | x | 0 | 0 | x | 1 | x |
13 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | x | 0 | x | 0 | 1 | x | x | 1 |
14 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | x | 0 | x | 0 | x | 0 | 1 | x |
15 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | x | 1 | x | 1 | x | 1 | x | 1 |
Matrice de référence
La matrice de référence des états du compteur :
QdQc\QbQa | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 0 | 1 | 3 | 2 |
01 | 4 | 5 | 7 | 6 |
11 | 12 | 13 | 15 | 14 |
10 | 8 | 9 | 11 | 10 |
Réduction des fonctions J et K
|
Ja = 1 |
|
Ka = 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||
| Jb = Qa |
| Kb = Qa | |||||||||||||||||||||||||||||||||||||||||||||||||||
| Jc = QaQb |
| Kc = QaQb | |||||||||||||||||||||||||||||||||||||||||||||||||||
| Jd = QaQbQc |
| Kd = QaQbQc |
Résultats
Les résultats de la réduction des fonctions J et K sont compréhensibles :
- Qa change de valeur à chaque impulsion d'horloge. Cela se réalise quand J = K = 1 d'après la table de vérité de la bascule JK, d'où Ja = Ka = 1.
- Qb change de valeur après la prochaine impulsion d'horloge seulement quand le bit inférieur (Qa) est à 1, sinon il conserve sa valeur. D'ou Jb = Kb = Qa. Lorsque Qa = 1, Qb change de valeur et lorsque Qa = 0, Qb conserve sa valeur (selon la table de vérité de la bascule JK lorsque J = K = 0).
- Qc change de valeur après la prochaine impulsion d'horloge seulement quand les deux bits inférieurs (Qa et Qb) sont à 1, sinon il conserve sa valeur. D'ou Jc = Kc = QaQb.
- Qd change de valeur après la prochaine impulsion d'horloge seulement quand les trois bits inférieurs (Qa, Qb et Qc) sont à 1, sinon il conserve sa valeur. D'ou Jd = Kd = QaQbQc.
- Cela se généralise pour un compteur à n bascules JK :
- J1 = K1 = 1.
- Jn = Kn = Q1Q2...Qn-1 pour n > 1
Conclusions
Un compteur modulo 16 se réalise avec 4 bascules JK et 2 portes ET.
Ressources
- Fichiers pour LogicSim du Compteur Modulo 16