MYマイコンを作る(8)
    Comet2eのブロックの機能設計



 今まで考えたり検討したことを基にMYマイコンComet2eの回路設計を始めます。
 Comet2eの全回路を一度に考えられないので最初に制御方式を設計を、続いて個々を設計して纏めることにします。ここでは、制御方式の設計とブロックの機能の設計です。


◆制御方式の設計

 以下で検討した資料のPDFは、MYマイコンを作る(7)を参照ください。

●ステートマシンの設計

 MYマイコンを作る(7)で「Comet2eの制御方式は、ステートマシンによる制御」としました。では、どのようなステートマシンにしましょうか。
●ステートの制御

 MYマイコンComet2eのステートマシンは、7ビットのデコード方式です。では、どのようにステートを制御しましょうか。


◆ブロックの機能の設計
 主要なブロックの設計をします。
 次に、以下で検討した資料をPDFにして置きます。
 ・Comet2eブロック機能設計

●命令分岐コード用命令デコードブロック

 次表に、メモリから読み出した命令をデコードして I分岐コードを作成するパターンを示します。

 何故、こんなに手間のかかる事をするのでしょうか?
 スッキリとした構成にしてハードウエアを減らすためです。「今のLSIは、有余る程トランジスタを実装できるからハードウエアを減らすより、開発時間を短くしたい」と言われるでしょう。
 MYマイコン程度のハードウエア量ならそうです
 しかし、規模が大きくなったら?MYマイコンを多数組み込みたい場合は?
 それと、手順を統一するように整理しながら開発を進めると、見た目は違うものでも内部処理は同じと気付きスマートなものに仕上げることができます。MYマイコンでは、2語型順序操作の命令や1語型順序操作の命令が同じシーケンスで処理できるのも「整理」のたまものです。

 それでは、次表でI分岐コード作成方法を見てみましょう。
 まずは、「デコードする機械語命令の上位8ビット Xはデコード外」の項目です。命令の上位8ビットをデコードしてI分岐コードを作成するパターンを示しています。Xはデコードから外している記号です。





●ALUブロック

 次の図は、ALUの回路と制御信号作成の表です。

 最初は、ALUの回路です。ALUは、加算回路と論理演算回路とシフト回路から成り立ち、ステートマシンのALU演算制御 Sfに従って入力Aと入力Bのデータを演算してAluOutから出力します。


 次は、制御信号作成の手順です。
 上部の表は、IRにある命令を「デコードパターン」の項目の様にデコードしてALUを制御する信号を作る組合せを示しています。左下部の表は、上部の表をALU回路対応に順番を整理しています。

 そして、ALU回路とIRにある命令から作成した制御信号は、ステートマシンのALU演算制御 Sfに従って動作します。
 SfがA+Bを指示した場合、加算回路で加算動作を行います。





●AluAIn選択ブロック

 次の図は、ALUの入力Aに入力するデータを選択する回路と制御信号作成の表です。

 最初は、AluAIn選択の回路です。AluAIn選択の回路は、汎用レジスタを選択するマルチプレクサと選択制御信号作成回路から成り立ち、ステートマシンのALU_A入力選択 Saに従って汎用レジスタを選択して出力します。


 次は、選択制御信号作成の手順です。
 右上部の表は、IRにある命令のr1/rかxを選択して汎用レジスタ選択マルチプレクサを制御する SelA信号を作成します。x指定で指定値が000bの場合、0000hを選択する制御信号を作成します。

 そして、汎用レジスタを選択するマルチプレクサとIRにある命令から作成した選択制御信号は、ステートマシンのALU_A入力選択 Saに従って動作します。





●AluBIn選択ブロック

 次の図は、ALUの入力Bに入力するデータを選択する回路と制御信号作成の表です。

 最初は、AluBIn選択の回路です。AluBIn選択の回路は、レジスタを選択するマルチプレクサと選択制御信号作成回路から成り立ち、ステートマシンのALU_A入力選択 Sbに従ってレジスタを選択して出力します。
 AluBInには、多くのレジスタが接続しています。又、選択方法は、直接指定、命令のr部で指定、実効アドレスでの指定が有り複雑になっています。


 次は、選択制御信号作成の手順です。
 左下部の表は、ステートマシンのALU_B入力選択 Sb とALU_Bに入力するデータと一段目のマルチプレクサの出力信号の表です。
 一段目のマルチプレクサは、 Sb で直接指定するレジスタアドレスとIRにある命令のr2部で指定するレジスタアドレスを切り替えます。この出力は4ビットで、最上位の1ビットはレジスタの種類を示し、下位の3ビットはその中のアドレス示します。最上位の1ビットが0の場合は汎用レジスタを、1の場合はシステムレジスタを示します。

 右上部の表は、一段目のマルチプレクサの出力信号と実効アドレスからALUの入力Bに入力するデータを選択するマルチプレクサ制御信号 SelB で、出力は5ビットです。
 最上位の2ビットが00bの場合はシステムレジスタを示します。但し、5ビット共00000bの場合は、選択するレジスタが無いのでALUの入力Bには0000hが入力します。
 最上位の2ビットが01bの場合は汎用レジスタを示します。
 最上位の1ビットが1bの場合はIOポート‥の拡張レジスタを示します。

 そして、レジスタを選択するマルチプレクサとIRにある命令から作成した選択制御信号は、ステートマシンのALU_B入力選択 Sbに従って動作します。






ホームへ戻る