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フラグ
分岐条件