ミニゲーム: 論理回路シミュレータ
「論理回路シミュレータ」は、入力ソース・ゲート・出力ノードをキャンバス上に配置し、リアルタイムで論理値の伝播を検証できる学習・検証向けツールです。 配線やフリップフロップなどの状態を可視化しながら、逐次/組み合わせ回路の動作を確認できます。
画面構成
- ヘッダー
- セッションEXPと経過シミュレーション時間のチップが常に更新されます。 「▶ 再開 / ⏸ 停止」「⏭ ステップ」ボタンとステップ幅入力、キャンバス初期化、ツール解除の各ボタンもここに配置されています。 ステップ幅は1〜10,000msの範囲で数値入力でき、シミュレーション制御ボタンは状態に応じて有効/無効が切り替わります。
- ツールバー
- 部品ライブラリがカテゴリ別にまとまり、アイコン・名称・説明を確認しながら配置ツールを選択できます。選択中のツールはハイライト表示され、ガイド文に配線方法や削除ショートカットが表示されます。
- キャンバス
- グリッド背景のボードに部品を配置します。部品はドラッグで移動でき、ポート間はクリック操作のみで配線可能です。出力ポートを選ぶと点線のプレビューが表示され、入力ポートを確定するとワイヤが生成されます。配線はSVGで描画され、信号がHIGHのとき緑色に強調されます。
- インスペクタ
- 選択中の部品のID、I/O数、伝播遅延目安、最新の入出力状態(2進表示)に加えて、配線本数(ファンイン/ファンアウト)や内部状態などを表示します。最大4入力・単一出力の部品には真理値表が自動生成されます。常時表示のヒントには配線削除方法などが記載されています。
- フッター
- シミュレーション活用のヒントが表示されます。
基本操作
- ツールバーで配置したい部品を選択し、キャンバスの空きスペースをクリックすると部品が生成されます。
- 部品ヘッダーをドラッグすると位置を調整できます。配置時は自動的にボード内に収まります。
- 出力ポートをクリックすると配線元が仮接続状態(ポートが黄色、プレビュー配線が青色破線)になり、続けて接続したい入力ポートをクリックすると配線が生成されます。入力ポートをAlt+クリックすると、その入力に繋がっている配線を一括で解除できます。
- 配線そのものをクリックして削除することも可能です。
- 部品をクリックすると選択状態になり、Delete / Backspaceキーで削除できます。Escキーでツール選択や未確定の配線を解除でき、空クリックで選択も解除できます。
入力は1ポートにつき1本のみ有効で、新しい配線を張ると既存の入力配線は自動的に置き換えられます。
シミュレーション制御
- シミュレーションは初期状態で自動再生されます。「⏸ 停止」でポーズし、「▶ 再開」で再びリアルタイム評価が行われます。ポーズ中も操作ごとに即座に再評価がスケジュールされます。
- 「⏭ ステップ」は停止状態で押すと、指定したミリ秒分の時間を即時に進め、クロックなどの時間依存部品を手動で追いかけられます。実行中はステップボタンが自動的に無効化されます。
- ステップ幅入力を変更すると値は1〜10,000msの範囲にクランプされ、常に最新値が入力欄に反映されます。
- クロック入力は個別に周期スライダー(120〜2000ms)を持ち、経過時間に応じて自動でHIGH/LOWが反転します。設定値はインスペクタにも表示されます。
- 配線・部品追加やトグル操作でセッションEXPが加算され、ヘッダーのチップに表示されます。経過時間チップはシミュレーション時間(手動ステップ含む)の合計をミリ秒で示します。
インスペクタと真理値表
部品を選択すると、インスペクタにラベル・最新入出力(2進表示)・ファンイン/ファンアウトの本数・伝播遅延目安が表示されます。
クロックには周期、シーケンシャル部品には内部状態や直前クロックなどの追加情報が表示されます。
伝播遅延は定義済みの部品のみ表示され、追加情報は各部品のinspect
実装に基づいて変化します。
真理値表は、1〜4入力かつ単一出力でtruth
関数が定義されている部品(例: AND/OR/XOR、2:1 MUXなど)に自動生成されます。
行ごとに入力パターンが2進数で並び、出力の結果が0/1で示されます。
部品ライブラリ
入力
- トグル入力(0入力/1出力): ボタンを押すたびにHIGH/LOWを反転。操作時にXPを獲得し、ステータスチップに現在値が表示されます。
- クロック(0入力/1出力): 周期スライダーで120〜2000msを設定。経過時間に応じて自動でHIGH/LOWを反転。
- 定数1 / 定数0(0入力/1出力): 常にHIGHまたはLOWを出力する固定ソース。
ゲート(組み合わせ論理)
- バッファ(1入力/1出力): 入力をそのまま通過。伝播遅延目安1.0ns。
- NOT(1入力/1出力): 入力を反転。伝播遅延目安1.4ns。
- AND / NAND(2入力/1出力): ANDは全入力がHIGHで出力HIGH、NANDはその反転。遅延目安2.6ns/3.0ns。
- OR / NOR(2入力/1出力): ORはいずれかHIGHで出力HIGH、NORはその反転。遅延目安2.4ns/2.8ns。
- XOR / XNOR(2入力/1出力): XORはHIGH数が奇数でHIGH、XNORはその反転。遅延目安3.8ns/3.9ns。
配線・信号分配
- スプリッタ(1入力/2出力): 単一入力をそのまま2出力に複製します。ステータスチップには2出力のビット列がまとめて表示されます。
複合部品
- 2:1 MUX(3入力/1出力): SELがLOWでIN0、HIGHでIN1を出力。真理値表も自動生成されます。
- 2-4デコーダ(2入力/4出力): 2ビット入力をワンホットの4出力に展開。出力は順に00,01,10,11に対応します。
シーケンシャル部品
- Dフリップフロップ(D, CLK, RESET / Q, Q̅): 立ち上がりクロックでDをラッチし、RESETがHIGHのときは強制的に0に戻ります。内部状態と前回クロックがインスペクタに表示され、コンポーネント内のインジケータもQ/Q̅を示します。
- SRラッチ(S, R / Q, Q̅): NOR構成の基本ラッチ。SとRを同時にHIGHにすると不定状態となり、ステータスチップとインジケータが警告を表示します。
- Tフリップフロップ(T, CLK, RESET / Q, Q̅): 立ち上がりクロック時にTがHIGHなら出力を反転し、RESETで0に戻ります。直前クロックもインスペクタで確認できます。
計測・出力
- プローブ(1入力/0出力): 入力の最新値をステータスチップとインジケータで表示する計測ノード。
- LED(1入力/0出力): 入力がHIGHのとき点灯する出力部品。インスペクタにもON/OFFが反映されます。
活用のヒント
- 配線はクリック1回で削除できるため、回路の再配線やトラブルシューティングが容易です。Alt+入力クリックで一括解除する方法も覚えておくと便利です。
- 真理値表機能を活用すると、ゲートの動作確認やラボ演習用の資料作成が容易になります。スクリーンショットなどで共有する際にも役立ちます。
- シーケンシャル回路のデバッグ時は、シミュレーションを停止しステップ実行でクロックの立ち上がりを追うと状態遷移を確実に確認できます。
- ポートには番号付きのツールチップが表示されるため、複雑な配線時でも入出力番号を迷わずに確認できます。