第2章 回路シミュレータを用いたK-COMの設計

 2.1 回路シミュレータについて
 2.2 Circuit Makerの使用法について
 2.3 論理回路によるK-COMの設計
  2.3.1 使用パーツの動作確認
  2.3.2 K-COMのパーツ分割
  2.3.3 クロックジェネレータ
  2.3.4 ALUおよびアキュームレータ
  2.3.5 プログラムカウンタおよび命令レジスタ
  2.3.6 メモリおよびI/Oポート
  2.3.7 コントローラ
 2.4 K-COMの全回路
 2.5 制御ROMの内容

目次へ


第2章 回路シミュレータを用いたK-COMの設計

 まずはじめに,論理回路を用いてK-COMの設計を行う.計算機工学の講義で,組み合わせ論理回路や順序回路については既に学んでいる.これらの知識を組み合わせて,K-COMが設計できる.しかし,K-COMの論理回路は論理集積回路(TTLなど)を用いても数十個必要で実際に設計した回路を手配線で実装することは難しい.本テキストでは,Windows環境で動作する回路シミュレータを用いて,K-COMの回路設計について順に説明する.

トップへ


2.1 回路シミュレータについて

 ここで説明に用いる回路シミュレータは,「Circuit Maker Ver.6 forStudent」である.これは,学生の学習用で個人のコンピュータでの使用に限り無償公開されており,次のURLよりダウンロードできる.

http://www.circuitmaker.com/downloads/student.htm

 無償公開版は,回路のマクロ化ができない,使用素子数が50個までに制限されているなど製品版と比べると機能が一部制限されているが,本テキストの演習内容について自習するにはこれらの制限は問題にならない.

トップへ


2.2 Circuit Makerの使用法について

 ダウンロードしたCircuitMakerを指示通りインストールした後,起動すると図2−1のような画面が現れる.


図2−1 Circuit Maker起動画面

おもな使用ツールは以下の通りである.
@モード選択
 モード選択ボタンで,図のようにロジックモードに合わせる.(他にはアナログシミュレーションモードがあるが,今回は使用しない.)
Aシミュレーション
 このボタンでシミュレーションを開始,または終了する.
B論理値表示ボタン
 このボタンを押すとシミュレーション時に論理値に応じて配線の色が変わる.(1のとき赤,0のとき青で配線が表示される)
Cデバイス選択ツール
 このボタンを押すと,使用するデバイスを一覧表の中から選択して,画面上に置ける.
D選択ツール
 画面上に配置されたデバイス,または配線を選択する.
E配線ツール
 画面上のデバイスを配線する時に用いる.
Fテキストツール
 画面上にテキストを配置する.

 ロジックシミュレーションモードに設定した後,画面上のデバイス選択ツールで使用するデバイスを配置する.ボタンを押すと図2−2のようなウインドウが表示される.図左のMajorDevice Classの中から例えばDigitalFunctionを選択すると,機能ごとに分類されたデバイスが表示される.DeviceSymbolには,TTLまたはCMOS論理ICの規格品が表示されるようになっているので,これらの中から必要な部品を選択し,下のPlaceボタンで画面上に配置する.


図2−2 デバイス選択画面

 よく使用するデバイスはあらかじめホットキーに登録されているので,図2−3のように,DeviceメニューからHotkeyを選択し,一覧の中からデバイスを選んでも良い.


図2−3 ホットキーの使用

 デバイスの例を図2−4に示す.電源,グランド,論理値表示用LED,論理値出力用スイッチ,16進キー,16進ディスプレイ,個別論理素子,機能論理素子,ROMなどのデバイスを配置してある.これらを,画面下のように配線し,画面上のシミュレーションボタンを押すとシミュレーションを開始する.今の場合,NOT,OR,AND素子の入力に応じた出力がLEDに表示されているのが分かる. 


図2−4 デバイスと接続例

 作成したK-COMの動作確認時の画面の例を図2−5に示す.配線の色によって,論理値が確認できることが分かる.
 

 
図2−5 動作確認時の画面例

トップへ


2.3 論理回路によるK-COMの設計

2.3.1 使用パーツの動作確認
 まず始めに,K-COMの回路を構成するために使用する論理集積回路について動作確認を行う.パーツとして使用するのは表2-1のTTL-ICと,PROM,RAMである.以下に,各パーツの真理値表,動作確認回路例を示す.

表2−1 K-COM作成に使用する論理集積回路

 

(1)7474
 D-FFが2個入ったICで,入出力端子の添字で区別される.S,Rはそれぞれセット,リセット端子(負論理)で,Lレベルの時に出力がセットまたはリセットされる.S,R端子がHレベルのとき,D端子の入力をCPの立ち上がりで取り込む.CPがLレベルなら前の値を保持する.

 

図2−6 7474の動作確認回路例と真理値表

(2)74112
 JK-FFが2個入ったICで,SD,RDはそれぞれセット,リセット端子(負論理)である.CPの立ち下がりを検出して,JがHでKがLレベルの時に出力がHレベルに,JがLでKがHレベルの時に出力がLレベルになる.J,Kが共にHレベルの時に出力が反転する.


図2−7 74112の動作確認回路例と真理値表

(3)74139
 B,Aの2ビットの2進数に対して,Q0〜Q3の4通り振り分けを行うデコーダである.E端子がHレベルでは出力すべてがHになり,E端子がLレベルの時,B,Aにに応じてQ0からQ3のどれか1つがLレベルになる.



図2−8 74139の動作確認回路例と真理値表

(4)74173
 D-FFが4個入ったICで,MRはリセット,CPがクロック端子,D0〜D3が入力,Q0〜Q3が出力,E1,E2は入力のイネーブル端子,OE1,OE2は出力のイネーブル端子である.E1,E2,OE1,OE2,MRが全てLレベルの時,CPの立ち上がりを検出してDの入力が取り込まれ,Qに出力される.添え字0〜3に応じて4ビット分利用できる.MRがHレベルになればQがリセットされる.E1,E2のどちらか一方でもHレベルならば出力は変化せず,OE1,OE2のどちらか一方でもHなら出力はハイインピーダンス状態となる.

図2−9 74139の動作確認回路例と真理値表

(5)74175
 D-FFが4個入ったICで,MRはリセット,CPがクロック端子である.MRがHレベルの時,CPの立ち上がりを検出してDの入力が取り込まれ,Qに出力される.添え字0〜3に応じて4ビット分利用できる.


図2−10 74175の動作確認回路例と真理値表

(6)74181
 4ビットの算術論理演算ユニットである.selection信号に応じて,M=Hの時論理演算,M=Lの時算術演算を行う.多段接続で4×nビットの演算回路を構成できるように,算術演算時はキャリー信号Cnによって異なる算術演算を行う.ここでは,K-COMで使用する5通りの命令のみの真理値表を示す.



図2−11 74181の動作確認回路例と真理値表(K-COMに使用した部分のみ)

(7)74193
 4ビットのアップ・ダウンカウンタである.リセット信号MRがLレベルのとき,カウント動作を行い,CPUとCPDの立ち上がりでそれぞれアップカウント,ダウンカウントを行う.



図2−12 74193の動作確認回路例と真理値表

(8)74199

 8ビットのシフトレジスタである.K-COMではシフト機能は使っていない.MRがH,PEがL,CEがLレベルの時,JKに関わらずCPの立ち上がりを検出してD0〜D7のデータが記憶され,Q0〜Q7に出力される.

 



図2−13 74199の動作確認回路例と真理値表

(9)74245

 3ステートのトランシーバが8個並列に用意されている.CEがLレベルの時,S/RがLレベルならばB0〜B7のデータがA0〜A7に出力され,S/RがHレベルならばA0〜A7のデータがB0〜B7に出力される.CEがHレベルなら,A,B端子間は電気的に絶縁される.


図2−14 74245の動作確認回路例と真理値表

(10)PROM32

 アドレスがA0〜A4の5ビット,データがD0〜D7の8ビットをもつ32バイトのPROMである.CSがLレベルの時,アドレスに与えられるメモリ番地の内容が,データバスに出力される.CSがHレベルの時は,D0〜D7は電気的に絶縁される.

 


図2−15 PROM32の動作確認回路例と真理値表

(11)RAM1K
 アドレスがA0〜A9の10ビット,データがD0〜D7の8ビットをもつ1KバイトのRAMである.CSがLレベルの時,WEがLレベルならアドレスに与えられるメモリ番地に与えられたデータが記憶され,WEがHレベルならアドレスに与えられるメモリ番地の内容がデータとして出力される.CSがHレベルならば,D0〜D7は電気的に絶縁される.



図2−16 RAM1Kの動作確認回路例と真理値表

 

トップへ


2.3.2 K-COMのパーツ分割

 K-COMの回路構成は図2−17のようになっていた.全ての回路をいきなり作成して動作させるのは難しいので,機能ごとにパーツに分割して作成し,パーツ毎に動作の確認を行う.パーツは,
(1)クロックジェネレータ
(2)ALUおよびアキュームレータ
(3)プログラムカウンタおよび命令レジスタ
(4)メモリおよびI/Oポート
(5)コントローラ
のように5つに分割して,動作確認のための回路を付加したもの作成した.

 

図2−17 K-COMの回路構成

トップへ


2.3.3 クロックジェネレータ

 K-COMは,レジスタ,メモリ,ALU等の回路間で,クロックに同期したデータ転送を行うことによって動作している.基本クロックだけでデータ転送を確実に行うことは不可能であるため,次のようなクロック発生回路を作成した.基本クロック(GeneralClock)を分周して2倍周期とし,両者を半周期ずらしたクロックである選択クロック(SelectClock)とトリガクロック(TriggerClock)の2つを生成した.この様子を図2−18に示す.選択クロックの立ち下がりを検出して,データの転送元と転送先を選択した後,トリガクロックの立ち上がりを検出して,データの転送を行う.選択クロックを立ち上がり検出としなかったのは,作成に用いた論理ICの信号の規格が立ち下がり検出となっていたためである.


図2−18 クロックとデータ転送の様子

 作成した回路図を図2−19に示す.74LS112はJK-FFを2個収納した論理ICで,これをT-FFとして用いて,基本クロックおよび反転した基本クロックを与えて,選択クロックとトリガクロックを生成している.図の左側の74LS175はD-FF4個を収納した論理ICで,このうち2個を用いてプログラムカウンタのカウントアップとジャンプ時の飛び先読み込みのための信号を生成する回路を構成している.プログラムカウンタに用いた論理ICの転送入力は,立ち上がりのみを検出するようにはなっていなかったため,選択クロックの立ち下がりで信号の不具合を生じた.そのため,プログラムカウンタの転送入力は,トリガクロックの立ち上がりで動作し,選択クロックの立ち下がりの影響を受けないD-FFの出力信号を用いた.



図2−19 クロック発生回路

トップへ


2.3.4 ALUおよびアキュームレータ

 動作確認用周辺回路を含むALU(算術論理演算装置)の回路構成を図2−20に示す.図左側の縦に8本並列に並んでいるのがデータバスで,すぐ横に配置されているのがアキュームレータに用いた8ビットレジスタである.これは8ビットシフトレジスタである74199というTTLを用いた.縦に2個配置されている74LS181は4ビットALUの論理ICで,A3-A0の4ビットとB3-B0の4ビットの演算結果がF3-F0に出力される.また,足し算の桁上がり結果等がCn+1に出力される.これを2個用いて8ビットの演算回路を構成した.
 演算の種類は,S3からS1までと,Cn,Mの入力により制御される.命令レジスタの上位3ビットから演算の種類が決定されるので,16進キーの3ビットを用いて命令レジスタからの入力を想定し,それに応じた制御出力をPROMにより生成した.ALU制御ROMの設計について表2−2に示す.命令レジスタの値がPROMのアドレスとして与えられ,PROMの出力データの各ビットがALUの制御線に接続されている.ただし,D7に対応するビットは未使用である.PROMの内容はCircuitMakerの画面上でPROMにカーソルを合わせて右クリックで内容表示を選択して確認できる.ADD,SUB,NANDおよび左SHIFT命令は実現できたが,74LS181の規格上,右シフトは本回路では実現できなかった.また,STORE命令実行時はアキュームレータのデータがALUを素通りしてラッチされ,メモリに読み込まれるように設計されている.
 ALUの演算結果は横向きに配置されている74199によりラッチ(保持)され,そのタイミングがトリガクロックにより与えられる.その出力は,74LS245のトライステートバッファを介してデータバスに接続されている.データバスの左側には,バスに信号を与える16進キー2個がトライステートバッファを介して接続されている.データバスでは双方向にデータがやりとりされるので,レジスタまたはメモリの2ヶ所から同時にデータが出力されないように,出力信号はトライステートバッファを介して接続されなければならず,なおかつ,出力はどちらか一方のみが選択されなければならない.
 演算結果において,桁上がりが生じた場合とゼロの値に成った場合は,Cn+4(反転)キャリー信号と8入力NORにより検出され,それぞれキャリーフラグとゼロフラグとしてD-FF(74LS173)2個に記憶される.STORE命令時はACCのデータをALUを素通りさせてメモリへ書き込むが,この際フラグの状態が変化しないように,D-FFの入力を制御している.



図2−20 ALUの回路構成

 

表2−2 ALU演算制御ROMの設計

トップへ


2.3.5 プログラムカウンタおよび命令レジスタ

 プログラムカウンタと命令レジスタはジャンプ命令実行時にデータの転送が行われることから双方を合わせてテスト回路を構成したものを図2−21に示す.プログラムカウンタは,ロード機能を持った5ビットのバイナリーカウンタと考えられるので,4ビットのバイナリーカウンタである74LS193を2個用いて5ビット分のみをカウントアップに用い,6ビット目の変化によりリセットをかける構造とした.ロード信号として,命令レジスタの下位5ビットを接続してある.メモリの番地指定を行うアドレスバスは,フェッチサイクル時にはプログラムカウンタより,実行サイクル時は命令レジスタの下位5ビットより与えられるので,トライステートバッファ(74LS245)により両者を排他的に選択するようになっている.コントローラからの制御信号によりプログラムカウンタのカウントアップ信号や,ジャンプ命令実行時のアドレスのロードが行われる.HALT命令は命令レジスタの全ビットが1になったどうかを8入力NANDでハード的に検出するようにしている.



図2−21 プログラムカウンタおよび命令レジスタ

トップへ


2.3.6 メモリおよびI/Oポート

 メモリの回路構成を図2−22に示す.メモリは,アドレスバス5ビットによりデコードされる32バイトのアドレス00H〜1FHうち00H〜1CHまでをRAMにより実現し,1EHを入力ポートとし,1FHを出力ポートとしてメモリにマッピングした.入力ポートは16進キー入力をトライステートバッファを介して接続し,出力ポートは16進ディスプレイを接続したレジスタで実現した.メモリ領域,入力ポート,および出力ポートの区別は,それぞれの論理ICのCS信号またはCE信号(チップセレクトまたはチップイネーブル)にデコーダ(74LS139)出力を接続することにより行った.RAMにはWEという入力端子があるが,これはWRITE(書き込み)あるいはREAD(読み出し)の選択信号である.RAMの内容もPROMと同様にCircuitMakerの画面上でRAMを右クリックして書き込むことができる.



図2−22 メモリの回路構成

トップへ


2.3.7 コントローラ

 K-COMのフェッチサイクルは2サイクル固定で,実行サイクルは命令によって1サイクルまたは2サイクルとなっている.両者合わせると最高4サイクルの順序回路となり,このようすを図2−23に示す.


図2−23 コントローラの状態遷移

 そこで,状態(S0〜S3)の遷移をD-FFの2ビットを用いて表した順序回路を図2−24の様に作成した.実行サイクルが何サイクルになるかは命令の種類のみによって決まりフラグの値に関係しない.現在の状態と命令レジスタの内容によって状態遷移を決定できるので図上に横置きに配置したD-FFとPROMにより作成した.この状態遷移制御ROMの設計については表2−3に示す通りである.
 D-FFの出力が現在の状態に対応するので,デコーダ(74LS139)を用いてフェッチサイクルに1個,実行サイクルに各2個,計3個のPROMを選択するようにした.PROMにはそれぞれのサイクルの時のデバイス選択信号が記録されている.フェッチサイクルは無条件で順に2サイクル進むのでD-FFの下位1ビットがPROMに入力され,また実行サイクル時は,命令レジスタ上位3ビットからなる命令選択信号とキャリーおよびゼロフラグによる条件ジャンプの有無の信号の合わせて5ビットにより異なる状態が与えられるので,アドレスバス信号5ビットのそれぞれ信号を加えてある.

 


図2−24 コントローラの回路図


表2−3 状態遷移ROMの設計

 表2−4はフェッチサイクル時の制御ROMの設計である.フェッチサイクルは状態S0,S1であり,PROMのアドレス0,1をそれぞれの状態に対応させ,その時の8本の制御信号をPROMのデータとして出力させる.

表2−4 フェッチサイクル時の制御ROMの設計

  同様に,実行サイクル時の制御ROMの設計についても表2−5に示す.状態S2と状態S3における制御信号はそれぞれ別のPROMから出力される.

表2−5 実行サイクル時の制御ROMの設計

 

トップへ


2.4 K-COMの全回路

 これまで説明したパーツを統合したものが図2−25に示すK-COMの全回路図である.各パーツからテスト回路を取り去って結合した結果,K-COMはちょうど50素子で作成できた.動作プログラムはRAMに直接書き込む.RAMにカーソルを合わせて右クリックで内容変更用のウインドウが表示されるので,機械語プログラムを書き込む.クロックを操作することにより動作の検証が行える.



図2−25 K-COMの全回路図

トップへ


2.5 制御ROMの内容

 表2−2から表2−5に示した制御ROMの設計の結果,作成されたALUおよびコントローラに用いた制御ROMの全アドレスの内容について表2−6と表2−7にそれぞれに示す.

表2−6 ALUの演算制御ROM(U24)

表2−7 コントローラ制御ROM(U4, U12, U20, U21)

トップへ