# Circuit intégré 4017

Le circuit intégré 4017$^,$ fait partie de la série des circuits intégrés 4000 utilisant la technologie CMOS.
Le circuit intégré 4017 est un compteur décimal de type Johnson à 5 étages. Il possède 3 entrées (horloge, validation et Remise à Zéro) et dix sorties (Q0 à Q9). Une seule des sorties peut être active à un instant donné. Les sorties sont activées séquentiellement (c'est-à-dire l'une après l'autre) à chaque coup d'horloge. Une sortie additionnelle CO permet de chaîner les circuits les uns derrière les autres afin d'augmenter le nombre total de sorties.

## Description
### Les entrées

Ce compteur possède 3 entrées :
* Un signal d'horloge (CLK) pour incrémenter le compteur.
* Un signal de validation (EN) pour autoriser ou non le comptage.
* Un signal de remise à zéro (MR) pour réinitialiser le compteur.
Remarque : L'attribution des broches pour les signaux d'horloge et de validation peut être permutée. Voir les modes de fonctionnement.

### Les sorties

Ce compteur possède 11 sorties :
* Les signaux de sorties Q0 à Q9 (x10). Ces sorties sont actives au niveau haut (1)
* Un signal de chaînage (CO). Ce signal est à "1" lorsque l'une des sorties Q0 à Q4 est à "1" et à "0" lorsque l'une sorties Q5 à Q9 est à "1".

### Modes de fonctionnement

Il y a 2 modes de fonctionnement possible :
* Incrémentation du compteur sur front montant (mode par défaut).
* Incrémentation du compteur sur front descendant.
Dans le cas d'un front montant, la broche 13 sert de validation (EN). Un niveau bas (0) autorise le comptage tandis qu'un niveau haut (1) bloque le comptage. Un front montant sur la broche 14 (CLK) incrémente le compteur lorsque le signal est validé.
Dans le cas d'un front descendant, le rôle des broches 13 et 14 est inversé. La broche 14 sert de validation (EN). Un niveau haut (1) autorise le comptage tandis qu'un niveau bas (0) bloque le comptage. Un front descendant sur la broche 13 (CLK) incrémente le compteur lorsque le signal est validé.

## Liste des signaux

| Type | Désignation | Broche | Nom | Nom(s) alternatif(s) | Origine du nom |
| Alimentation | Alimentation + | 16 | Vdd | - | - |
| Alimentation | Alimentation - | 8 | Gnd | Vss | Ground (Masse) |
| Entrée | Validation (0) / Horloge ↓ | 13 | EN / CLK | CP1, CLOCK INHIBIT, CLOCK ENABLE | Enable (Validation) |
| Entrée | Horloge ↑ / Validation (1) | 14 | CLK / EN | CP0, CLOCK | Clock (Horloge) |
| Entrée | Remise à zéro | 15 | MR | RESET | Master Reset (Remise à zéro) |
| Sortie | Sortie n°1 | 3 | Q0 | - | - |
| Sortie | Sortie n°2 | 2 | Q1 | - | - |
| Sortie | Sortie n°3 | 4 | Q2 | - | - |
| Sortie | Sortie n°4 | 7 | Q3 | - | - |
| Sortie | Sortie n°5 | 10 | Q4 | - | - |
| Sortie | Sortie n°6 | 1 | Q5 | - | - |
| Sortie | Sortie n°7 | 5 | Q6 | - | - |
| Sortie | Sortie n°8 | 6 | Q7 | - | - |
| Sortie | Sortie n°9 | 9 | Q8 | - | - |
| Sortie | Sortie n°10 | 11 | Q9 | - | - |
| Sortie | Chaînage | 12 | CO | Q5-9, CARRY OUT, Cout | Carry Out |
Légende :
* Type : Définition du type de signal (Alimentation, Entrée ou Sortie)
* Désignation : Nom complet du signal
* Broche : numéro de la broche du signal (de 1 à 16)
* Nom : Nom abrégé du signal que l'on retrouve dans les fiches techniques
* Nom(s) alternatif(s) : Liste des synonymes. Le nom peut varier en fonction des fiches techniques.
* Origine du nom : Correspondance des noms abrégés des signaux et traduction.

## Table de vérité

Mode opératoire :
| MR | CLK | EN/ | Opération | Sortie sélectionnée |
| H | x | x | Remise à zéro (Q0 = CO = H; Q1 to Q9 = L) | Q0 |
| L | H | ↓ | Incrémentation du compteur (sur front descendant) | Qn+1 |
| L | ↑ | L | Incrémentation du compteur (sur front montant) | Qn+1 |
| L | L | x | Aucun changement | Qn |
| L | x | H | Aucun changement | Qn |
| L | H | ↑ | Aucun changement | Qn |
| L | ↓ | L | Aucun changement | Qn |
Légende :
* H = Niveau logique haut (1). De l'Anglais "High"
* L = Niveau logique bas (0). De l'Anglais "Low"
* X = Non défini.
* ↑ = Transition sur Front Montant.
* ↓ = Transition sur Front Descendant.

## Fonctionnement en détail

Le circuit est décomposé en 2 blocs :
* 1 Compteur de Johnson à 5 étages
* 1 Décodeur
Le compteur de Johnson est composé de 5 bascules de type D en série. Pour chaque bascule, la sortie Q attaque l'entrée "Data" de la bascule suivante exceptée pour la dernière (On reboucle via Q sur la première bascule. Ceci a pour effet de remplir successivement de "1" les sorties des bascules puis de les "vider" lors du train d'impulsions sur l'entrée d'horloge CLK.
Il en résulte 10 combinaisons possibles de "0" et de "1" sur les 5 sorties du compteur.
Un décodeur permet l'activation d'une sortie pour chaque combinaison, l'ensemble réalise donc bien un compteur décimal.

### Table de vérité

Compteur Johnson 5 étages et Décodeur :
| Entrée | Compteur Johnson (sorties) | Compteur Johnson (sorties) | Compteur Johnson (sorties) | Compteur Johnson (sorties) | Compteur Johnson (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) | Décodeur (sorties) |
| Impulsion | FF1_Q | FF2_Q | FF3_Q | FF4_Q | FF5_Q | Q0 | Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 | Q8 | Q9 | CO |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 3 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 4 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
| 5 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 6 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 7 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 8 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 9 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
On considère que le compteur est actif (signal EN validé) et que le RESET est inactif (signal MR = "0")

### Equations

Le décodage des 10 combinaisons est particulièrement simple, on utilise une seule porte NOR par sortie Q.
La sortie Q0 est active lorsque les 2 sorties FF1_Q et FF5_Q sont à "0".
Les sorties Q1 à Q4 et Q6 à Q9 sont actives lorsque l'on décode 2 bits consécutifs de valeur différente. Exemple : Q1 = FF1_Q . FF2_Q.
La sortie Q5 est active lorsque les 2 sorties FF1_Q et FF5_Q sont à "1".
* Liste des équations des sorties Qn :
$Q0={\overline {FF1_{Q}}}.{\overline {FF5_{Q}}}$
$Q1=FF1_{Q}.{\overline {FF2_{Q}}}$
$Q2=FF2_{Q}.{\overline {FF3_{Q}}}$
$Q3=FF3_{Q}.{\overline {FF4_{Q}}}$
$Q4=FF4_{Q}.{\overline {FF5_{Q}}}$
$Q5=FF1_{Q}.FF5_{Q}$
$Q6={\overline {FF1_{Q}}}.FF2_{Q}$
$Q7={\overline {FF2_{Q}}}.FF3_{Q}$
$Q8={\overline {FF3_{Q}}}.FF4_{Q}$
$Q9={\overline {FF4_{Q}}}.FF5_{Q}$
* Equation de la sortie CO/ :
${\overline {CO}}={\overline {FF5_{Q}}}$

## Boîtier(s)

* DIP 16
* SO 16
* TSSOP 16