Calculateur d'états compteur Johnson
Quatre bascules montées en compteur Johnson donnent 8 états uniques, soit le double du nombre d'étages. Indiquez le nombre d'étages pour obtenir ce chiffre, celui d'un compteur en anneau simple et, jusqu'à 53 étages, celui d'un compteur binaire. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Étages
- 4
- États uniques
- 8
- États du compteur en anneau
- 4
- Module
- 8
- États du compteur binaire
- 16
Un compteur Johnson, aussi appelé compteur annulaire tordu ou compteur de Möbius, est un circuit séquentiel de type registre à décalage dans lequel la sortie inversée de la dernière bascule alimente le premier étage. Contrairement à un compteur binaire libre qui peut parcourir 2 puissance n codes avec n bascules, ou à un compteur en anneau simple qui ne cycle que n motifs one-hot, la topologie Johnson parcourt systématiquement exactement 2n états distincts avant de se répéter. Concepteurs numériques, étudiants et programmeurs FPGA ont besoin de ce chiffre 2n immédiatement pour dimensionner un module, choisir un décodeur ou comparer des styles de compteurs sur une fiche technique. Ce calculateur accepte le nombre d'étages de bascules et renvoie le nombre d'états uniques avec la formule du manuel, plus le décompte anneau simple en parallèle et, lorsqu'il est exact, la taille du compteur binaire pour le même nombre d'étages.
Qu'est-ce qu'un compteur Johnson annulaire tordu et pourquoi 2n états
Partez de n bascules D câblées en registre à décalage : à chaque front d'horloge le bit de l'étage i passe à l'étage i plus un. Dans un compteur en anneau simple, la sortie non inversée du dernier étage revient à l'entrée du premier, de sorte qu'un un (ou un zéro) circulant produit un cycle de longueur n—la séquence classique one-hot ou one-cold. Un compteur Johnson tord cette rétroaction : le complément du dernier étage pilote le premier.
Cette inversion double le parcours dans le graphe d'états. Depuis un reset à zéro, la machine enchaîne n motifs montants qui remplissent des uns depuis une extrémité, puis n motifs descendants qui les effacent, pour une orbite fermée de longueur 2n sans codes intermédiaires invalides si l'on part d'une graine légale. Tout code légal est un bloc contigu de uns suivi de zéros ou de zéros suivi de uns vu comme décalage circulaire de la chaîne tordue—il existe exactement 2n de ces chaînes pour une largeur n.
C'est pourquoi le nombre d'états uniques d'un compteur Johnson est toujours le double du nombre d'étages, indépendamment de la fréquence d'horloge ou du nœud technologique. Les concepteurs utilisent ce module 2n pour des horloges divide-by-2n, des générateurs décade ou multiphase avec n égal à cinq (dix états), et des contrôleurs de séquence à faible coût logique qui décodent avec une poignée de portes à deux entrées plutôt qu'un arbre décodeur binaire complet.
Cas d’usage
Contrôles en cours et laboratoire
Les étudiants saisissent le nombre n d'étages de bascules et vérifient qu'un compteur Johnson annulaire tordu a exactement 2n états uniques avant de comparer avec les compteurs anneau (n) et binaires (2^n).
Notation automatique d'examens et LMS
Notez les questions de logique numérique sur le module du compteur Johnson avec un oracle déterministe 2n plutôt qu'une simulation complète de bascules.
Dimensionnement FPGA et conception de séquences
Choisissez n de sorte que 2n corresponde au rapport de division ou au nombre de pas multiphase requis avant d'écrire le HDL pour la chaîne de décalage et le décodeur.
Questions fréquentes
Combien d'états uniques un compteur Johnson possède-t-il ?
Un compteur Johnson (anneau tordu) avec n étages de bascules a exactement 2n états uniques.
En quoi un compteur Johnson diffère-t-il d'un compteur en anneau ?
Un compteur en anneau simple réinjecte le dernier étage sans inversion et a n états uniques. Un compteur Johnson inverse cette rétroaction et a 2n états uniques.
Combien de bascules faut-il pour un compteur Johnson diviseur par 10 ?
Cinq. Un compteur Johnson à 5 étages parcourt 10 états avant de se répéter : c'est le montage décimal courant des compteurs de décades et des générateurs d'ondes multiphases.
Quelle séquence un compteur Johnson parcourt-il ?
Après une remise à zéro, il se remplit de uns depuis une extrémité, un étage par coup d'horloge, puis les efface de la même façon. On obtient n motifs montants et n descendants, et chaque code valide est un bloc de uns accolé à un bloc de zéros.
Pourquoi un compteur Johnson est-il facile à décoder ?
Comme ses états suivent ce motif en blocs, chacun se reconnaît avec quelques portes à deux entrées au lieu d'un arbre décodeur binaire complet. La logique reste ainsi peu coûteuse dans les séquenceurs et les diviseurs d'horloge par 2n.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/elec/johnson-counter \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"stages":4}'const res = await fetch("https://api.kit.forhosting.com/elec/johnson-counter", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"stages": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/johnson-counter",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"stages": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/johnson-counter", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"stages":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"stages":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/johnson-counter", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"stages": 4
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.johnson_counter",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Contrat d'entrée, champs de réponse et règles de validation
Exemple : stages égal à quatre donne huit états Johnson uniques, quatre d'anneau et seize binaires. Exemple : stages égal à cinq donne dix états uniques—l'arrangement Johnson décade courant pour compteurs décade et générateurs multiphase. Envoyez un corps JSON avec un champ obligatoire : stages, un entier positif n de un à dix mille. Les chaînes numériques sont acceptées ; les alias n, flip_flops, flipflops, stages_n, ff et count pointent vers le même paramètre pour que clients SDK et widgets de formulaire restent souples. stages manquant, valeurs non finies, non entières, zéro, négatives ou au-dessus du plafond échouent avec invalid_input et ne sont pas facturés. En succès le corps répète stages, indique unique_states comme deux fois stages, ring_counter_states comme stages pour la comparaison non tordue, et modulus égal à unique_states afin que le vocabulaire de diviseur de fréquence soit à un champ. La chaîne formula réaffirme unique_states égal à deux fois stages pour l'affichage à côté du nombre. Lorsque stages vaut au plus cinquante-trois, binary_counter_states est aussi renvoyé comme deux puissance stages afin de contraster la capacité linéaire Johnson avec la binaire exponentielle via des entiers IEEE exacts ; pour un n plus grand ce champ de comparaison est omis plutôt qu'arrondi ou mis à null, selon la règle de la plateforme selon laquelle les sorties optionnelles disparaissent au lieu de porter null.
Où une API d'états du compteur Johnson apporte de la valeur
Les notes de cours et manuels de laboratoire demandent le nombre d'états uniques d'un compteur Johnson à quatre ou cinq bits ; les tuteurs ont besoin d'un oracle déterministe qui répond toujours 2n sans confondre anneau, Johnson et binaire. Les architectes FPGA et ASIC esquissent des modules—huit, dix, douze, seize—avant d'engager des LUT ou cellules standard, et un calculateur à un champ est plus rapide qu'un testbench HDL pour une simple vérification de théorie de comptage. Une validation échouée ne consomme pas le solde. Les générateurs d'examens et plugins LMS appellent un petit endpoint parse pour noter des réponses libres sans simulateur de circuit. L'implémentation étant pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant. Gardez stages petit et entier, figez unique_states dans les tests, et vous obtiendrez des réponses reproductibles pour devoirs, tableaux de fiche technique et workers en bordure sans déployer votre propre simulateur de logique séquentielle.
Questions techniques
Quelle entrée le calculateur exige-t-il ?
Un entier positif stages de 1 à 10000 (alias : n, flip_flops, flipflops, stages_n, ff, count). Non-entiers, zéro, négatifs ou valeurs manquantes renvoient invalid_input.
Pourquoi binary_counter_states manque-t-il parfois ?
Il n'est inclus que lorsque stages ≤ 53 afin que 2^stages soit un entier sûr exact. Pour un n plus grand le champ optionnel est omis plutôt qu'approximé ou mis à null.
Combien coûte le calculateur d'états du compteur Johnson ?
L'outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.