バイナリデコーダの出力数とアドレス範囲を計算
バイナリデコーダは、nビットの入力コードを複数の出力線のうち1本の有効な選択へ変換します。この計算ツールは基本式 m = 2^n を適用し、各選択肢をシステム上の両端を含むアドレス範囲に対応付けます。入力線またはアドレス線の本数と、必要に応じてデバイスに割り当てる先頭アドレスをご入力ください。デコーダ表記、出力数、一意に選択できるアドレス数、および範囲の10進数・16進数の両端をご確認いただけます。
無料で実行
入力線の本数からデコーダの出力数を求めます
n本のバイナリ入力は、それぞれの線が独立した2状態を持つため、2^n通りのビットパターンを表せます。デコーダは各パターンに1本の出力を割り当てるので、理想的なフルデコーダには m = 2^n 本の出力が必要です。たとえば入力が3本なら000から111までを表し、選択可能な出力は8本となるため、3対8デコーダと呼ばれます。4本なら16通りとなり、4対16デコーダです。input_linesに入力線、アドレス線、または選択線の本数をご入力ください。結果ではoutput_linesとunique_addressesが同じ値になり、一般的なデコーダ表記も表示されます。この計算では、組み合わせを意図的に省く部分デコーダではなく、完全なバイナリデコーダを想定しています。通常、イネーブル端子は組み合わせ数を増やしません。イネーブル端子はデバイスを動作させるかを制御し、n本の選択入力が2^n本のうちどの出力を選ぶかを決定します。
一意に選択されるアドレス範囲を確認します
アドレスデコード方式では、各出力でレジスタ、メモリ位置、周辺機器、または下位ブロックを1つ選択できます。したがって、出力位置が下位アドレスビットの組み合わせに対応する場合、n入力デコーダは連続する2^n個のアドレスを一意に選択できます。base_addressはブロックの先頭位置です。両端を含むため、末尾位置は base_address + 2^n - 1 となります。たとえば、10進数の4096を基点とする4入力デコーダは16個のアドレス、つまり4096から4111、または0x1000から0x100Fまでを扱います。結果には範囲が両端を含むことを明記し、1ずれの誤りを防ぐため10進数と16進数の両方を示します。基点を省略するとゼロが使用され、標準範囲は0から2^n - 1です。実際の回路では、基点を確定してミラーアドレスを防ぐため、必要な上位アドレスビットもデコードしてください。
計算結果を実際のハードウェアへ適用します
デコーダICを選ぶ場合、真理値表を作る場合、または一定数のアドレス線から得られるチップセレクト信号の本数を判断する場合に、出力数をご利用ください。メモリマップの文書化や、隣接する割り当ての重複確認にはアドレス範囲が役立ちます。ベースアドレスはシステム内のブロック配置と一致させます。ブロックサイズに整列すると、範囲全体で上位ビットが一定になるため便利です。この計算ツールは、演習や特殊な割り当ても扱えるよう、任意の非負の基点を受け付けます。入力線は1本から52本までで、すべての結果をJavaScriptが正確に表せる整数範囲に保ちます。末尾アドレスがその範囲を超える場合はリクエストを拒否します。この数学的な結果には、電気的極性、伝搬遅延、ファンアウト、イネーブル動作、アクティブHigh・Lowは含まれません。これらは部品のデータシートをご確認ください。また、実際のシステム領域を予約するものではありません。自動化したAPI利用は1リクエスト当たり$0.002です。
活用例
デコーダの規模を選定します
利用可能な選択線の本数から、論理設計に必要なone-hot出力の正確な本数を求めます。
周辺機器マップを設計します
指定したベースアドレスに置く周辺機器ブロックについて、両端を含む10進数・16進数の範囲を計算します。
デジタル論理の課題を確認します
n対mのデコーダ表記、出力数、対応する範囲を、1ずれの誤りなく検算します。
よくある質問
n本入力のデコーダには出力が何本ありますか?
完全なバイナリデコーダには2^n本の出力があり、nビット入力の各組み合わせに1本ずつ対応します。
末尾アドレスが基点 + 2^n - 1 になるのはなぜですか?
範囲が両端を含むためです。先頭アドレスが2^n個のうち1個を使うので、最後のオフセットは2^n - 1です。
イネーブル入力もデコーダの入力線に数えますか?
いいえ。nには独立したバイナリ選択入力またはアドレス入力をご使用ください。イネーブル端子は動作を制御しますが、通常の選択肢を増やしません。
ベースアドレスを16進数で入力できますか?
入力仕様では非負の10進整数を受け付けます。結果では各端点を10進数と16進数の両方で表示します。
APIリクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。計算は決定的で、ブラウザでも無料で実行していただけます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/elec/decoder-outputs \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input_lines":4}'const res = await fetch("https://api.kit.forhosting.com/elec/decoder-outputs", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input_lines": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/decoder-outputs",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input_lines": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/decoder-outputs", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input_lines":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input_lines":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/decoder-outputs", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"input_lines": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.decoder_outputs",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |