Compteur modulo 16

Un article de Wikipedia.

(Différences entre les versions)
(Résultats)
Version actuelle (28 mars 2009 à 08:51) (modifier) (défaire)
(Résultats)
 
(32 révisions intermédiaires masquées)
Ligne 37 : Ligne 37 :
=== 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 ====
==== 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;"|'''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 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 ====
-
== Résultats ==
+
<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>&#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 ==
 +
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