Compteur modulo 16

Un article de Wikipedia.

(Différences entre les versions)
(Compteur modulo 16)
Version actuelle (28 mars 2009 à 08:51) (modifier) (défaire)
(Résultats)
 
(43 révisions intermédiaires masquées)
Ligne 1 : Ligne 1 :
= Compteur modulo 16 =
= Compteur modulo 16 =
== But ==
== But ==
-
Réaliser un compteur modulo 16 sous forme électronique.
+
Déterminer les composants logiques d'un compteur modulo 16.
== Introduction ==
== Introduction ==
Ligne 21 : Ligne 21 :
|}
|}
-
=== Table des états d'une bascule JK ===
+
=== Table des transitions d'une bascule JK ===
-
Sa table des états déduites de sa table de vérité est :
+
Sa table des transitions déduites de sa table de vérité est :
{| align="center" border="1" cellpadding="5" cellspacing="0"
{| align="center" border="1" cellpadding="5" cellspacing="0"
|-
|-
Ligne 35 : Ligne 35 :
||1||1||x||0
||1||1||x||0
|}
|}
 +
=== Compteur modulo 16 ===
=== Compteur modulo 16 ===
-
Un compteur modulo 16 utilise 4 bascules JK.
+
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 :
Les états d'un compteur modulo 16 ainsi que les états de bascules JK sont les suivants :
{| 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;"|'''Etiquette'''||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'''
+
|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 78 : 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 ====
 +
La matrice de référence des états du compteur :
 +
 +
{| align="center" 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"|3||align="center"|2
 +
|-
 +
!01
 +
|align="center"|4||align="center"|5||align="center"|7||align="center"|6
 +
|-
 +
!11
 +
|align="center"|12||align="center"|13||align="center"|15||align="center"|14
 +
|-
 +
!10
 +
|align="center"|8||align="center"|9||align="center"|11||align="center"|10
 +
|}
 +
==== Réduction des fonctions J et K ====
 +
 +
<table align="center">
 +
<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"|1||align="center"|x||align="center"|x||align="center"|1
 +
|-
 +
!01
 +
|align="center"|1||align="center"|x||align="center"|x||align="center"|1
 +
|-
 +
!11
 +
|align="center"|1||align="center"|x||align="center"|x||align="center"|1
 +
|-
 +
!10
 +
|align="center"|1||align="center"|x||align="center"|x||align="center"|1
 +
|}
 +
</td>
 +
<td>'''J<sub>a</sub> = 1'''</td><td>&#160;</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>&#160;</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>&#160;</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>&#160;</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 ==
== 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 :

JKQ+
00Q
010
101
11/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 :

QQ+JK
000x
011x
10x1
11x0

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 :

EtatQQ+dcba
dcbadcbaJKJKJKJK
0000000010x0x0x1x
1000100100x0x1xx1
2001000110x0xx01x
3001101000x1xx1x1
4010001010xx00x1x
5010101100xx01xx1
6011001110xx0x01x
7011110001xx1x1x1
810001001x00x0x1x
910011010x00x1xx1
1010101011x00xx01x
1110111100x01xx1x1
1211001101x0x00x1x
1311011110x0x01xx1
1411101111x0x0x01x
1511110000x1x1x1x1

Matrice de référence

La matrice de référence des états du compteur :

QdQc\QbQa00011110
00 0132
01 4576
11 12131514
10 891110

Réduction des fonctions J et K

QdQc\QbQa00011110
00 1xx1
01 1xx1
11 1xx1
10 1xx1
Ja = 1 
QdQc\QbQa00011110
00 x11x
01 x11x
11 x11x
10 x11x
Ka = 1
QdQc\QbQa00011110
00 01xx
01 01xx
11 01xx
10 01xx
Jb = Qa 
QdQc\QbQa00011110
00 xx10
01 xx10
11 xx10
10 xx10
Kb = Qa
QdQc\QbQa00011110
00 0010
01 xxxx
11 xxxx
10 0010
Jc = QaQb 
QdQc\QbQa00011110
00 xxxx
01 0010
11 0010
10 xxxx
Kc = QaQb
QdQc\QbQa00011110
00 0000
01 0010
11 xxxx
10 xxxx
Jd = QaQbQc 
QdQc\QbQa00011110
00 xxxx
01 xxxx
11 0010
10 0000
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