SFL演習問題/第7回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[SFL演習問題]]
*アキュムレータマシンの設計その1 [#ca159802]
簡単なアキュムレータマシンを作成する。
----
#contents
**ダウンロード [#b0f1addc]
&ref(ex07.tar.gz);
**目的 [#a5128489]
-CPU設計入門。
**仕様 [#r106b279]
-8ビットの命令を入力する。
--inst<7:4>はオペランドとしてAND, OR, ADD, SUB命令をサポートする。各命令の対応表は次の通り。
|AND|0x0|
|OR|0x1|
|ADD|0x2|
|SUB|0x3|
--inst<3:0>は4ビットの即値データとして扱う。
-内部に4ビットレジスタ(アキュムレータ)を持ち、演算結果を累積させる。
-clear信号がアサートされたとき、アキュムレータの値を0にする。
-ALUの入力の一方は常にアキュムレータを入力させ、もう一方には4ビットの即値データ(inst<3:0>)を入力させる。
-ファイル名はacc4.sflとする。
%d AND 0x0
%d OR 0x1
%d ADD 0x2
%d SUB 0x3
declare alu4 {
/* 内容を記述 */
}
module acc4 {
input inst<8>;
output acc_out<4>;
instrin clear;
instrin do;
/* 以下に内容を記述 */
}
**手順 [#bccd26ff]
+演算結果を累積させる4ビットレジスタ(アキュムレータ)を定義。
+4ビットALUを定義。
+命令データinstをデコードして、ALUと接続する。
+アキュムレータの値をacc_outに出力させる。
**シミュレーション [#de70c37f]
-次のファイルを同じディレクトリに置いたことを確認し、
--Makefile
--addsub4.sfl
--alu4.sfl
--acc4.sfl
--inst_data
--asm2sec/ (inst_dataを読み込んでacc4.simを出力する簡易コンパイラ)
---Makefile
---asm2sec.c
% make sim
-回路が正しければ以下のような出力を得ます。
inst: acc_out:0000
inst:00100001 acc_out:0001
inst:00100100 acc_out:0101
inst:00000011 acc_out:0001
inst:00011010 acc_out:1011
inst:00110011 acc_out:1000
**発展問題 [#eb43f5d7]
-inst_dataを自由に改変してシミュレーションしてみましょう。
--命令はAND, OR, ADD, SUBに対応しています。
--即値命令は10進数表現で0〜15までを指定可能。
-記述例:
add 4
sub 2
and 10
or 2
**設計例 [#z0f7f11e]
&ref(ex07_answer.tar.gz);
終了行:
[[SFL演習問題]]
*アキュムレータマシンの設計その1 [#ca159802]
簡単なアキュムレータマシンを作成する。
----
#contents
**ダウンロード [#b0f1addc]
&ref(ex07.tar.gz);
**目的 [#a5128489]
-CPU設計入門。
**仕様 [#r106b279]
-8ビットの命令を入力する。
--inst<7:4>はオペランドとしてAND, OR, ADD, SUB命令をサポートする。各命令の対応表は次の通り。
|AND|0x0|
|OR|0x1|
|ADD|0x2|
|SUB|0x3|
--inst<3:0>は4ビットの即値データとして扱う。
-内部に4ビットレジスタ(アキュムレータ)を持ち、演算結果を累積させる。
-clear信号がアサートされたとき、アキュムレータの値を0にする。
-ALUの入力の一方は常にアキュムレータを入力させ、もう一方には4ビットの即値データ(inst<3:0>)を入力させる。
-ファイル名はacc4.sflとする。
%d AND 0x0
%d OR 0x1
%d ADD 0x2
%d SUB 0x3
declare alu4 {
/* 内容を記述 */
}
module acc4 {
input inst<8>;
output acc_out<4>;
instrin clear;
instrin do;
/* 以下に内容を記述 */
}
**手順 [#bccd26ff]
+演算結果を累積させる4ビットレジスタ(アキュムレータ)を定義。
+4ビットALUを定義。
+命令データinstをデコードして、ALUと接続する。
+アキュムレータの値をacc_outに出力させる。
**シミュレーション [#de70c37f]
-次のファイルを同じディレクトリに置いたことを確認し、
--Makefile
--addsub4.sfl
--alu4.sfl
--acc4.sfl
--inst_data
--asm2sec/ (inst_dataを読み込んでacc4.simを出力する簡易コンパイラ)
---Makefile
---asm2sec.c
% make sim
-回路が正しければ以下のような出力を得ます。
inst: acc_out:0000
inst:00100001 acc_out:0001
inst:00100100 acc_out:0101
inst:00000011 acc_out:0001
inst:00011010 acc_out:1011
inst:00110011 acc_out:1000
**発展問題 [#eb43f5d7]
-inst_dataを自由に改変してシミュレーションしてみましょう。
--命令はAND, OR, ADD, SUBに対応しています。
--即値命令は10進数表現で0〜15までを指定可能。
-記述例:
add 4
sub 2
and 10
or 2
**設計例 [#z0f7f11e]
&ref(ex07_answer.tar.gz);
ページ名: