原口/春プロ/第9回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[原口/春プロ]]
*第9回 バスと命令フェッチ回路[#zb32cbaf]
**バスとは [#w68589e7]
-CPU内部でのデータ転送を行うために用いる
-バスを用いることにより信号線の数を削減することができる
--→よって設計が容易になる
**バスの設計方法 [#bf97370a]
-マルチプレクサを用いる(P124リスト1)
-3ステート・バスを用いる(リスト2)
**命令フェッチ [#u74c32c8]
-FETCHA,FETCHB,EXECA,EXECBの状態に分かれる
-動作
|命令レジスタir0|CENTER:"|動作|
|上位8ビット|下位8ビット|~|
|0|0|IDLEに遷移|
|A(≠0)|0|A番地を読み出し、obuf0に出力|
|A|B(≠0)|A番地にBを書き込み|
**ram.v(初期化付) [#s6d7d571]
module ram(clk, load, addr, d, q);
parameter DWIDTH=16,AWIDTH=12, WORDS=4096;
input clk,load;
input [AWIDTH-1:0] addr;
input [DWIDTH-1:0] d;
output [DWIDTH-1:0] q;
reg [DWIDTH-1:0] q;
reg [DWIDTH-1:0] mem [WORDS-1:0];
always @(posedge clk)
begin
if(load) mem[addr] <= d;
q <= mem[addr];
end
integer i;
initial begin
for(i=0;i<WORDS;i=i+1)
mem[i]=0;
mem[0]=16'h1012;
mem[1]=16'h1134;
mem[2]=16'h1256;
mem[3]=16'h1378;
mem[4]=16'h1000;
mem[5]=16'h1100;
mem[6]=16'h1200;
mem[7]=16'h1300;
mem[8]=16'h0000;
end // initial begin
endmodule // ram
**fetch.v [#tbcd728c]
-ram.v,counter.v,state,vをincludeする
--ram.vはハンドアウト参照
終了行:
[[原口/春プロ]]
*第9回 バスと命令フェッチ回路[#zb32cbaf]
**バスとは [#w68589e7]
-CPU内部でのデータ転送を行うために用いる
-バスを用いることにより信号線の数を削減することができる
--→よって設計が容易になる
**バスの設計方法 [#bf97370a]
-マルチプレクサを用いる(P124リスト1)
-3ステート・バスを用いる(リスト2)
**命令フェッチ [#u74c32c8]
-FETCHA,FETCHB,EXECA,EXECBの状態に分かれる
-動作
|命令レジスタir0|CENTER:"|動作|
|上位8ビット|下位8ビット|~|
|0|0|IDLEに遷移|
|A(≠0)|0|A番地を読み出し、obuf0に出力|
|A|B(≠0)|A番地にBを書き込み|
**ram.v(初期化付) [#s6d7d571]
module ram(clk, load, addr, d, q);
parameter DWIDTH=16,AWIDTH=12, WORDS=4096;
input clk,load;
input [AWIDTH-1:0] addr;
input [DWIDTH-1:0] d;
output [DWIDTH-1:0] q;
reg [DWIDTH-1:0] q;
reg [DWIDTH-1:0] mem [WORDS-1:0];
always @(posedge clk)
begin
if(load) mem[addr] <= d;
q <= mem[addr];
end
integer i;
initial begin
for(i=0;i<WORDS;i=i+1)
mem[i]=0;
mem[0]=16'h1012;
mem[1]=16'h1134;
mem[2]=16'h1256;
mem[3]=16'h1378;
mem[4]=16'h1000;
mem[5]=16'h1100;
mem[6]=16'h1200;
mem[7]=16'h1300;
mem[8]=16'h0000;
end // initial begin
endmodule // ram
**fetch.v [#tbcd728c]
-ram.v,counter.v,state,vをincludeする
--ram.vはハンドアウト参照
ページ名: