ジョンソンカウンタ状態数
4個のフリップフロップでジョンソンカウンタを組むと、一意な状態は段数の2倍の8通りです。段数を入力すると、その状態数に加えて単純なリングカウンタの状態数と、53段までは2進カウンタの状態数も比較用に表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 段数
- 4
- 一意の状態
- 8
- リングカウンタの状態
- 4
- 絶対値
- 8
- バイナリカウンタの状態
- 16
ジョンソンカウンタ(ツイストリングカウンタ、メビウスカウンタとも呼ばれます)は、最終段フリップフロップの反転出力が初段に戻るシフトレジスタ型の順序回路です。n個のFFで2のn乗の符号を巡れる自由走行バイナリカウンタや、n通りのワンホットだけを回る単純リングカウンタとは異なり、ジョンソン構成はちょうど2n個の相異なる状態を系統的に巡ってから繰り返します。デジタル設計者、学生、FPGA開発者は、モジュラスの選定、デコーダの選択、データシート上のカウンタ方式比較の際、この2nという値を即座に必要とします。本計算機はフリップフロップ段数を受け取り、教科書どおりの公式による一意状態数に加え、単純リングの状態数、および(正確に表せる場合)同じ段数のバイナリカウンタ規模を返します。
ジョンソン・ツイストリングカウンタとは何か、なぜ状態数が2nか
n個のDフリップフロップをシフトレジスタとして配線します。各クロックエッジで段iのビットは段i+1へ移ります。単純リングカウンタでは最終段の非反転出力が初段入力へ戻り、循環する1(または0)が長さnの周期—古典的なワンホット/ワンコールド—を作ります。
ジョンソンカウンタはこのフィードバックをねじり、最終段の補数が初段を駆動します。その反転により状態グラフ上の経路が倍になります。クリアリセットから、片端から1を埋めるn個の上昇パターンのあと、それらを消すn個の下降パターンを辿り、合法シードから始めた場合は無効な中間符号なしで長さ2nの閉軌道となります。
合法符号はいずれも、ねじれた鎖の巡回シフトとして見たとき1の連続のあと0、または0の連続のあと1という形で、幅nではちょうど2n本あります。したがってジョンソンカウンタの一意状態数は常に段数の2倍であり、クロック周波数やプロセスノードには依存しません。
設計者はこのモジュラス2nを、divide-by-2nクロック、nが5(10状態)のデケード/多相ジェネレータ、フル二進デコーダ木ではなく少数の2入力ゲートで復号する低ロジックコストのシーケンス制御に用います。
活用例
教室・実験での検算
学生がフリップフロップ段数nを入力し、ジョンソン・ツイストリングがちょうど2n個の一意状態を持つことを、リング(n)およびバイナリ(2^n)と比較しながら確認します。
試験・LMSの自動採点
ジョンソンカウンタのモジュラスに関するディジタル論理の設問を、フルFFシミュレーションではなく決定論的な2nオラクルで採点します。
FPGAとシーケンス設計の寸法決め
分周比や多相ステップ数に2nが合うようnを選び、その後にシフト鎖とデコーダのHDLを書きます。
よくある質問
ジョンソンカウンタの一意状態はいくつですか?
n段のFFを持つジョンソン(ツイストリング)カウンタはちょうど2n個の一意状態を持ちます。
ジョンソンカウンタとリングカウンタの違いは?
単純リングは最終段を非反転で戻し、一意状態はn個です。ジョンソンはそのフィードバックを反転し、一意状態は2n個です。
10分周のジョンソンカウンタには何個のフリップフロップが必要ですか?
5個です。5段のジョンソンカウンタは10個の状態を巡ってから繰り返します。10進カウンタや多相波形発生器でよく使われる構成です。
ジョンソンカウンタはどのような順序で状態を巡りますか?
リセットでゼロにした後、クロックごとに1段ずつ一方の端から1で満たし、その後同じ順に0へ戻していきます。立ち上がりのパターンがn通り、立ち下がりがn通りで、有効な符号はどれも1の並びと0の並びが隣り合った形です。
ジョンソンカウンタの復号が簡単なのはなぜですか?
状態がこの単純なブロック状の形をとるため、完全な2進デコーダを使わなくても、2入力ゲートを数個使うだけで各状態を見分けられます。そのため順序制御回路や2n分周のクロックで論理の規模を小さく抑えられます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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)リクエスト例
{
"stages": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.johnson_counter",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
入力契約、応答フィールド、検証規則
より大きいnでは、丸めやnullではなく省略し、任意出力はnullを持たず消えるというプラットフォーム規則に従います。例:stagesが4ならジョンソン8、リング4、バイナリ16。例:stagesが5なら一意状態10—デケードカウンタや多相波形ジェネレータでよく使うデケード・ジョンソン配置です。必須フィールドは1つ、stagesです。1から10000までの正の整数nをJSONで送ります。stages欠落、非有限値、非整数、0、負数、上限超過はinvalid_inputで失敗し課金されません。成功時はstagesをエコーし、unique_statesをstagesの2倍、ring_counter_statesを非ツイスト比較用にstages、modulusをunique_statesと等しく返し、分周器の言い回しにもそのまま使えます。formula文字列は表示用にunique_statesがstagesの2倍であることを再掲します。stagesが53以下のときbinary_counter_statesとして2^stagesも返し、線形のジョンソン容量と指数のバイナリ容量を厳密なIEEE整数で対比できます。
ジョンソンカウンタ状態APIが役立つ場面
講義ノートや実験マニュアルは4ビット/5ビット・ジョンソンカウンタの一意状態数を問います。チューターにはリング・ジョンソン・バイナリを混同せず常に2nと答える決定論的オラクルが必要です。検証失敗は残高を消費しません。試験ジェネレータやLMSプラグインは小さなparseエンドポイントで自由記述を採点し、回路シミュレータを埋め込みません。FPGA/ASICアーキテクトはLUTやスタンダードセルを確定する前にモジュラス(8、10、12、16など)をスケッチし、計数理論の確認だけなら1フィールドの計算機の方がHDLテストベンチより速いです。実装は純粋parseのtier Aのため、成功した各呼び出しは公開の基本価格$0.002で、モデルトークンも外向きネットワークも使いません。stagesを小さく整数に保ち、テストでunique_statesを固定すれば、自前の順序論理シミュレータなしで課題、データシート表、エッジワーカー向けに再現可能な答えが得られます。
技術的な質問
計算機が必要とする入力は?
1から10000の正の整数stages(エイリアス:n、flip_flops、flipflops、stages_n、ff、count)。非整数、0、負数、欠落はinvalid_inputを返します。
binary_counter_statesが欠けるのはなぜですか?
2^stagesが厳密な安全整数となるよう、stages ≤ 53のときだけ含めます。より大きいnでは任意フィールドを近似やnullにせず省略します。
ジョンソンカウンタ状態計算機の料金は?
ブラウザツールは無料です。APIは成功した呼び出しごとに前払いKIT残高から$0.002です。無効入力は課金されません。