8ビットALUの設計と実装


マイクロプロセッサのALUを設計・実装してみましょう。まず設計する ALU の 仕様を明確にする必要があります。例題としてKITEマイクロプロセッサのALU を取り上げます。KITEマイクロプロセッサは16ビットマイクロプロセッサなの で、ALUは16ビット長ですが、動作確認を簡略化するため8ビット長ALU として設計します。

KITEマイクロプロセッサのALUの仕様は、以下に挙げる演算機能を備え ておく必要があります。

算術系命令
演算種類 動作 備考
加算(ADD) 被演算数 + 演算数 算術的な加算を行います。またインデクスアドレッシングにおけるアドレス計算の際にも使用されます。
デクリメント(DEC) 被演算数 − 1 デクリメント命令や、スタックポインタ変更に使用します。
インクリメント(INC) 被演算数 + 1 インクリメント命令や、スタックポインタ変更に使用します。
減算(SUB) 被演算数 − 演算数 算術的な減算を行います

論理系命令
演算種類 動作 備考
論理和(OR) 被演算数 or 演算数 論理な和(or)を取ります。
排他的論理和(XOR) 被演算数 xor 演算数 排他的な論理和(xor)を取ります。
論理積(AND) 被演算数 and 演算数 論理な積(and)を取ります。
論理否定(NOT) not 被演算数 1の補数を取ります。

シフト系命令
演算種類 動作 備考
算術右シフト(ASR) 被演算数/2 算術的な1ビットの右シフトをします。意味的には2で割ったことになります。
算術左シフト(ASL) 被演算数×2 算術的な1ビットの左シフトをします。意味的には2をかけたことになります。
論理右シフト(LSR) (被演算数/2)&0x7fff 論理的な1ビットの右シフトをします。
論理左シフト(LSL) 被演算数×2 論理的な1ビットの左シフトをします。結果は算術左シフトと同じ結果に なりますが、フラグの変化が算術左シフトとは異なります。
右回転(ROR) 被演算数の1ビット右回転  
左回転(ROL) 被演算数の1ビット左回転  
バイトスワップ(SWP) 上位バイトと下位バイトの交換 バイト単位の操作を行えるよう設けられた命令です。ここでは8ビットALUとするため、ニブル(4ビット)で交換できるように考えます。

特別な演算機能
演算種類 動作 備考
パス(PAS) 被演算数 演算的には意味がありません。しかし、3バス構成のプロセッサでは、レ ジスタ間データ転送命令などにおいて使用されます。1バス構成のプロセッサでは 必要ない機能です。


ALUを以下の手順で設計・シミュレーションします。

では、 ALUの入出力定義 についてみていきます。


| Back | CAD Home |

My mail address is kuga@cs.kumamoto-u.ac.jp .
Last modified on