最初のページ 戻る 次へ 最後のページ

wire pcsel;

wire [7:0] mpxpcout,nextpc;

・・・

 assign pcsel = (ir[23:20]==`B) & ( !ir[19] & !ir[18] | ir[19] & flag[1] | ir[18] & flag[0] ) ;

 mux2to1_8bit mpxpc( .sel( pcsel ), .d0(8'b1), .d1(ir[7:0]), .y(mpxpcout));

 adder8 nextAddress( .a(pc), .b(mpxpcout), .c(dmy), .s(nextpc));

mux2to1_8bit mpx1(...

adder8 dataAddress1(...

mux4to1_8bit mpx2(...

mux2to1_8bit mpx3(...

adder8 dataAddress2(...

mux2to1_1bit mpxc(...

 alu8 alu(.cmd(alucmd), .a(acc), .b(alub), .c(aluc), .carry(cz), .f(aluout) );

・・・

task

endtask

上の方で宣言

組合せ論理回路として記述

レジスタの値が変化するとpcsel,mpxpcout,nextpcは直ちに変化する

宣言のすぐあと

(task 〜 endtaskの前)

!ir[19] & !ir[18] | ir[19] & flag[1] | ir[18] & flag[0]

B A m

無条件分岐

B C m

B Z m

Zフラグ

Cフラグ

分岐条件