論理回路シミュレーター

論理ゲートやDフリップフロップを並べて配線し、入力スイッチを切り替えながら、信号がどう伝わるかをその場で確かめられます。半加算器、全加算器、SRラッチ、2ビットカウンタなどの例を読み込めて、クロックのない回路では真理値表も自動で作ります。

論理回路シミュレーター

「部品」から追加し、ドラッグで動かします。出力ピンをタップしてから入力ピンをタップすると配線でき、入力スイッチはタップで0と1が切り替わります。部品や配線を選んで「選んだものを消す」を押すと削除できます。

真理値表

基本の論理ゲートと真理値表

ANDはすべての入力が1のときだけ1、ORはどれか1つでも1なら1を出し、NOTは0と1を反転します。NANDとNORはANDとORの出力を反転したもので、XORは2つの入力が異なるときに1、XNORは等しいときに1を出します。入力を2つと出力を1つ置き、間にゲートを1つつなぐと、真理値表が自動で作られます。入力がn個なら組み合わせは2ⁿ通りで、2入力なら4行、6入力なら64行です。ゲートを差し替えて表を見比べると、NANDはANDの、XNORはXORの出力をちょうど反転した表になっていることが分かります。「2入力マルチプレクサ」の例では、選択信号Cが0のときは入力Aが、1のときは入力Bが出力Xに現れ、ゲートの組み合わせでデータの通り道を切り替えられることを確かめられます。

半加算器・全加算器と桁上げのしくみ

1ビットのAとBを足すと、和は A XOR B、桁上げは A AND B になります。1 + 1 は2進数で10なので、和が0、桁上げが1です。「半加算器」の例(Xが和、Yが桁上げ)を読み込み、AとBを切り替えて確かめてください。下の桁からの桁上げCinも合わせて足すのが全加算器で、半加算器2つとORゲート1つで作れ、和は A⊕B⊕Cin、桁上げは AB + Cin(A⊕B) です。「全加算器」の例(Cが下の桁からの桁上げCin、Xが和、Yが桁上げ)の真理値表を見ると、3つの入力のうち1の数が奇数なら和が1、2つ以上なら桁上げが1で、1 + 1 + 1 = 11(2進数)も確かめられます。半加算器の桁上げを全加算器のCinにつなげば2ビットの加算器になり、入力が4つなので16行の真理値表で答えを確かめられます。

NANDとNORは万能ゲート

NANDの2つの入力を同じ信号につなぐとNOTになり、NANDのあとにNOTを付ければANDになります。ド・モルガンの定理から、入力をそれぞれ反転してNANDに入れるとORになるので、NANDだけであらゆる論理回路を作れます。「NANDだけでつくるXOR」の例は4個のNANDでできていて、1個目の出力 N1 = NAND(A, B) を、NAND(A, N1) と NAND(B, N1) の両方に入れ、その2つの出力を最後のNANDでまとめています。真理値表がXORと同じになることを確かめてください。NORも同じく万能ゲートで、同じつなぎ方のNANDをすべてNORに置き換えて作ると、今度はXNORになります。CMOSでは2入力NANDは4個のトランジスタで作れ、ANDより少なくて済むため、実際の論理回路でもNANDやNORがよく使われます。

組み合わせ回路と順序回路、NORでつくるSRラッチ

加算器やマルチプレクサは、出力が今の入力だけで決まる組み合わせ回路です。出力を入力に戻すフィードバックがあると、過去の入力を覚える順序回路になります。「SRラッチ(NOR)」の例(Aが S、Bが R、Xが Q、Yがその反転)では、2つのNORの出力を、それぞれ相手のNORの入力に戻しています。S = 1 にするとQが1に、R = 1 にするとQが0になり、どちらも0に戻すと直前の状態をそのまま保ちます。S = R = 1 ではQと、その反転のはずのもう一方の出力がどちらも0になり、2つの出力が互いに反転しているというラッチの前提がくずれるので、禁止入力とされます。このシミュレーターではスイッチを1つずつ切り替えるので、最後まで1にしていた入力で結果が決まりますが、実際の回路で2つを同時に0に戻すと、どちらに落ち着くか定まらず、発振したりメタステーブルになったりすることがあります。

Dフリップフロップと2ビットカウンタ

Dフリップフロップは、クロックが0から1に変わる立ち上がりの瞬間だけDの値を取り込んでQに出し、それ以外のときはDが変わってもQを保ちます。入力スイッチとクロックをDフリップフロップにつなぎ、クロックを止めてからDを切り替えてもQは変わらず、「1クロック進める」を押したときにはじめて取り込まれることを確かめてください。このツールのDフリップフロップにはQの出力しかないので、「2ビットカウンタ」の例では、QをNOTゲートで反転してDに戻しています。こうすると立ち上がりのたびにQが反転し、Qの周波数はクロックの1/2になります。上位ビットのフリップフロップには同じクロックを入れ、Dには Q1 XOR Q0 を入れています。上位ビットは下位ビットが1のときだけ反転するので、クロックの1/4の周波数で切り替わり、出力は(Y, X)= 00→01→10→11→00 と順に数えます。すべてのフリップフロップが同じクロックで動くので、同期式のカウンタです。

論理回路の問題を解く

1ビットの半加算器で、和(S)と桁上げ(C)を出力する論理として正しいものはどれか。

  1. A和はAND、桁上げはOR
  2. B和はNOR、桁上げはNAND
  3. C和はXOR、桁上げはAND
答えと解説を見る

正解:C. 和はXOR、桁上げはAND

1ビットのA、Bを足すと、和はA XOR B、桁上げはA AND Bです。例えば1+1は2進数で10なので和が0、桁上げが1です。下位からの桁上げも加える全加算器は、半加算器2つとORゲートで構成でき、和は A⊕B⊕Cin、桁上げは AB + Cin(A⊕B) になります。CPUの演算器(ALU)はこの全加算器を基本に、高速な桁上げ方式を組み合わせて作られています。

2入力NANDゲートの2つの入力をつないで1入力にしたときの働きはどれか。

  1. AAND
  2. BNOT(インバータ)
  3. CXOR
答えと解説を見る

正解:B. NOT(インバータ)

2つの入力に同じ値Aを入れると、出力は NOT(A AND A) = NOT A となり、インバータとして働きます。NANDだけでNOTを作れれば、AND = NANDの後にNOT、OR = 入力をそれぞれ反転してNAND(ド・モルガン)で作れるため、NANDだけで任意の論理回路を構成できます。NORも同様の万能ゲートです。ただし実際の回路では、入力を束ねると入力容量が増えるため、専用のインバータを使うほうが効率的です。

クロックが入るたびに出力が反転するTフリップフロップ1個の出力の周波数は、クロック周波数の何倍になるか。

  1. A2倍
  2. B1/2倍
  3. C1/4倍
答えと解説を見る

正解:B. 1/2倍

Tフリップフロップ(T = 1)はクロックのエッジごとに出力が反転するので、2クロックで1周期となり、周波数はクロックの1/2です。出力のデューティ比が正確に50%になるのも利点です。直列につなぐと1/4、1/8…の分周器やリップルカウンタになります。PLLの帰還回路でも分周器が使われ、例えば100 MHzの基準から分周比を変えて数GHzの周波数を合成します。

よくある質問

無料ですか?インストールは必要ですか?

無料で、登録もインストールも要りません。ブラウザだけで動き、パソコンでもスマートフォンでも使えます。スマートフォンでは、クリックの代わりにタップで操作します。

作った回路は保存したり、人に見せたりできますか?

回路は使っているブラウザに保存されるので、次に開いたときも続きから使えます。「共有用のURLをコピー」を押すと、回路の内容を含んだURLができ、それを開いた人も同じ回路を動かせます。授業の課題や、回路の説明に使えます。

「信号が落ち着きません」と表示されるのはなぜですか?

出力が反転して自分の入力に戻るループがあると、0と1が入れ替わり続けて値が決まらないためです。たとえばNOTゲートの出力を自分の入力につなぐと、1なら0、0なら1と変わり続けます。実際の回路では、奇数個のインバータを輪にすると、ゲートの遅延で決まる周期で発振し、リングオシレータとして使われます。SRラッチのように、ループを一周すると反転が打ち消される回路は、安定した状態に落ち着きます。

真理値表は何入力まで表示されますか?

入力が1〜6個(最大で2⁶ = 64行)で、出力が1個以上あり、クロック・フリップフロップ・ループ(SRラッチのようなフィードバック)を使っていない回路で表示されます。これらを含む回路は、出力が過去の状態にもよるため、入力だけの表では表せません。

ゲートの遅延(伝搬遅延)はシミュレーションされますか?

されません。入力が変わるたびに、信号が変わらなくなるまで論理値だけをくり返し計算しているので、ゲートの遅延やセットアップ時間・ホールド時間などのタイミングは表していません。そのため、経路ごとの遅延の差で一瞬だけ出るグリッチも現れません。タイミングまで確かめるには、遅延の情報を入れたゲートレベルシミュレーションや静的タイミング解析(STA)を使います。

関連する用語

真理値表 組み合わせ回路 順序回路 フリップフロップ 全加算器 マルチプレクサ ド・モルガンの定理 グリッチ メタステーブル

関連する計算ツール

半導体・電子回路・情報の計算ツール →