📄 control.v
字号:
module control(din, clk, rst, arload, pcload, pcinc, drload, acload, acinc, irload, alusel, membus, pcbus, drbus, read);
input [1:0] din;
input clk, rst;
output arload, pcload, pcinc, drload, acload, acinc, irload, alusel, membus, pcbus, drbus, read;
wire clr, inc, ld;
wire [3:0] cnt;
reg [3:0] counter_out;
reg fetch1, fetch2, fetch3, add1, add2, and1, and2, jmp1, inc1;
assign arload=fetch1 || fetch3;
assign pcload=jmp1;
assign pcinc=fetch2;
assign drload= fetch2 || and1 || add1;
assign acload=add2 || and2;
assign acinc=inc1;
assign irload= fetch3;
assign alusel=and2;
assign membus=fetch2 || and1 || add1;
assign pcbus=fetch1;
assign drbus=fetch3 || and2 || add2 || jmp1;
assign read= fetch2 || add1 || and1;
assign ld=fetch3;
assign inc=fetch1||fetch2 ||add1||and1;
assign clr=and2||add2||inc1||jmp1;
assign cnt={1'b1, din[1:0],1'b0};
always @(posedge clk or posedge rst)
begin
if(rst)
/*begin
arload=0; pcload=0; pcinc=0; drload=0;
acload=0; acinc=0; irload=0; alusel=0;
membus=0; pcbus=0; drbus=0; read=0;
end
*/
begin
fetch1=0;
fetch2=0;
fetch3=0;
add1=0;
add2=0;
and1=0;
and2=0;
jmp1=0;
inc1=0;
counter_out=0;
end
if(clr)
counter_out=0;
if(ld)
counter_out=cnt;
else if(inc)
counter_out=counter_out+1;
case(counter_out)
0: begin
fetch1=1;
fetch2=0;
fetch3=0;
add1=0;
add2=0;
and1=0;
and2=0;
jmp1=0;
inc1=0;
end
1: begin
fetch2=1;
fetch1=0;
fetch3=0;
add1=0;
add2=0;
and1=0;
and2=0;
jmp1=0;
inc1=0;
end
2: begin
fetch3=1;
fetch1=0;
fetch2=0;
add1=0;
add2=0;
and1=0;
and2=0;
jmp1=0;
inc1=0;
end
8: begin
add1=1;
fetch1=0;
fetch2=0;
fetch3=0;
add2=0;
and1=0;
and2=0;
jmp1=0;
inc1=0;
end
9: begin
add2=1;
fetch1=0;
fetch2=0;
fetch3=0;
add1=0;
and1=0;
jmp1=0;
inc1=0;
end
10: begin
and1=1;
fetch1=0;
fetch2=0;
fetch3=0;
add1=0;
add2=0;
and2=0;
jmp1=0;
inc1=0;
end
11: begin
and2=1;
fetch1=0;
fetch2=0;
fetch3=0;
add1=0;
add2=0;
and1=0;
jmp1=0;
inc1=0;
end
12: begin
jmp1=1;
fetch1=0;
fetch2=0;
fetch3=0;
add1=0;
add2=0;
and1=0;
and2=0;
inc1=0;
end
14: begin
inc1=1;
fetch1=0;
fetch2=0;
fetch3=0;
add1=0;
add2=0;
and1=0;
and2=0;
jmp1=0;
end
/*default: begin
fetch1=1;
fetch2=0;
fetch3=0;
add1=0;
add2=0;
and1=0;
and2=0;
jmp1=0;
inc1=0;
end
*/
endcase
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -