7/2 課題(論理回路シミュレータ) 


使い方を学ぶ

Webブラウザ上で動く論理回路シミュレータSimcirJSを用いて,条件を満たす回路を作成します.

まずは,論理回路シミュレータ SimcirJS の使い方にしたがって,NAND素子の動作をトグルスイッチとLEDで確かめるところまで進みます.

A. 参考のページの Usage のところに更に詳しい使い方が書かれています.とりあえず,以下は論理回路シミュレータ SimcirJS の使い方に書かれていないのでためしてみてください.

次の図のような1ビット全加算器を作ってみます.(教科書では排他的論理和 (exclusive or) の素子を XOR という名前としていますが,この回路シミュレータでは EOR という名前が使われています.同様に教科書の EQ という素子は,ENOR という名前になっています.)

この動作が以下の真理値表と一致していることを確かめます.
xycinscout
00000
00110
01010
01101
10010
10101
11001
11111
この論理回路シミュレータには,1ビット半加算器 HalfAdderという部品が用意されているので,それを使うと以下のように作ることができます.HalfAdderをダブルクリックしてみると,元の回路と同一であることがわかります.

更には,この論理回路シミュレータには,1ビット全加算器 FullAdderという部品が用意されているので,以下のように作っても構いません.

他の部品もダブルクリックして中身を確認したうえで,解答の際に自由に使って構いません.. 

ToggleスイッチやLEDの部品のラベルをx0や,r0などの名前に置き換えるのならば,In, Outの部品を使わなくても構いません.ただし,入出力のラベル(x0, r0など)は必ず使ってください.


課題

(1), (2)のうちのどちらかを選んで,回路を完成させ,真理値表,説明を加えて提出してください(オプション課題にも解答する人は(1),(2)の両方に解答しても構いません).

(1)2ビット加減算器

(注) 受講者から指摘がありましたが,加算器として使ったときには,3ビットの2の補数(-4 <= x <= 3)では表せない範囲の数になることがあります.加算器として使う時は,結果を3ビットの正の数の2進表現を得るものとしてください.

真理値表(空いているところを埋めた表を作成して提出します)

s=0の時
x1x0y1y0r2r1r0説明
00000+0
00010+1
00100+2
00110+3
01001+0
01011+1
01101+2
01111+3
10002+0
10012+1
10102+2
10112+3
11003+0
11013+1
11103+2
11113+3
s=1の時
x1x0y1y0r2r1r0説明
00000-0
00010-1
00100-2
00110-3
01001-0
01011-1
01101-2
01111-3
10002-0
10012-1
10102-2
10112-3
11003-0
11013-1
11103-2
11113-3

回路

まずは,以下の図のように部品を配置してから(部品のラベルをIn, Outからs, x0, y0等付け替えるのを忘れないようにしてください),灰色部分を埋めていきます(入力,出力のラベルの順番は入れ替えても構いませんが,このシミュレータではこの順番にすると作りやすいと思います).

ヒント

教科書8.11の加減算器を参考にします.この回路シミュレータでは,1ビットの全加算器をFullAdderという名前で使えるのでそれを使うと少ない部品数で実現できます.

教科書8.11の加減算器では最上位ビットのcoutに何も繋いでいませんが,この課題では3ビットの2の補数表現で結果を得るために,最上位ビットのcoutも使います.最上位ビットのcoutは,加算器(s=0)の時はr2そのものになり,減算器(s=1)の時はNOT(r2)になるので,
scoutr2
000
011
101
110
となるように,これまでも何度も出てきた部品を1つ使ってcoutとsからr2 を作り出します.

(注) ToggleスイッチやLEDの部品のラベルをx0や,r0などの名前に置き換えるのならば,In, Outの部品を使わなくても構いません.ただし,入出力のラベル(x0, r0など)は必ず使ってください.


(2)2ビット乗算器

真理値表(空いているところを埋めた表を作成して提出します)

x1x0y1y0r3r2r1r0説明
00000 x 0
00010 x 1
00100 x 2
00110 x 3
01001 x 0
01011 x 1
01101 x 2
01111 x 3
10002 x 0
10012 x 1
10102 x 2
10112 x 3
11003 x 0
11013 x 1
11103 x 2
11113 x 3

回路

まずは,以下の図のように部品を配置してから(部品のラベルをIn, Outからx0, y0等付け替えるのを忘れないようにしてください),灰色部分を埋めていきます(入力,出力のラベルの順番は入れ替えても構いませんが,このシミュレータではこの順番にすると作りやすいと思います).

ヒント

nビットの乗算器はnビットの加減算器と比べると複雑な回路になりますが,2ビットならかなり単純な回路になります.

1ビットの数(すなわち0か1) xと yの積rを求める真理値表は以下のようになります.
xyr説明
0000 x 0
0100 x 1
1001 x 0
1111 x 1
これは,ANDの回路で実現できます.筆算の掛算の要領で,

x0 * y0 + 2 * (x0 * y1 + x1 * y0) + 4 * x1 * y1 = r0 + 2 * r1 + 4 * r2 + 8 * r3
となるように繰り上がりを計算していきます.この回路シミュレータでは,1ビットの半加算器をHalfAdderという名前で使えるのでそれを使うと少ない部品数で実現できます.

オプション課題

時間が余っている人は,(1), (2)の両方を解答したうえで,このシミュレータを使って複雑な面白い回路(教科書に出てきていないもの)を作って同じような形式で解答して構いません. いくつかの例をあげます.

提出方法

ミュレータ上で完成させた回路の画面キャプチャと,それが正しく動くことを確かめるための真理値表,100文字以上の説明を含んだ文書を作成します(図や表が表現できれば Microsoft ワード, Google ドキュメント,Latex等なんでも構いません).それを PDF 形式で出力した上で,そのPDFファイルを1つ提出します.PDFファイルのファイル名は 「学生証番号.pdf」という名前(例 J4-130395.pdf) にしてください.

画面のキャプチャ方法は環境によるのでサポートできませんが,難しいようならばスマートフォン等で,画面を撮影したものを貼っても構いません.macを使う場合は,ハイパーワークブック「21.4 スクリーンショット」が参考になります .

mac用のMicrosoft WordでPDF形式のファイルを作成するには,メニューから「ファイル」->「名前をつけて保存」とした上で,ファイル形式「PDF」を選んだ上で,「エクスポート」を押します.Google DocumentsでPDF形式のファイルを作成するには,「ファイル」->「ダウンロード」->「PDFドキュメント(.pdf)」を選びます.毎年,1-2名は Microsoft Word で保存した拡張子 .docx のファイルをファイルの拡張子を .pdf に変更して提出する人がいますが,ファイルの名前だけでなく,中身をPDF形式で出力する必要があります.


提出期限

7月16日(木) 23:59.期限を過ぎたものは試験実施まで6割を上限に採点します.