stuff
This commit is contained in:
parent
224b73aaba
commit
c01ab62ed2
151
cpu/insdec.v
151
cpu/insdec.v
@ -1,69 +1,182 @@
|
||||
module ins_dec(ins,aload,bload,dsel,rload,opsel,jump);
|
||||
module ins_dec(ins,carry,zero,aload,bload,dsel,rfload,str,opsel,jump,hlt);
|
||||
input [3:0] ins;
|
||||
output aload,bload,dsel,rload,opsel,jump;
|
||||
input carry,zero;
|
||||
output aload,bload,dsel,rfload,str,opsel,jump,hlt;
|
||||
wire ins;
|
||||
reg aload,bload,dsel,rload,opsel,jump;
|
||||
reg aload,bload,dsel,rfload,opsel,str,jump,hlt;
|
||||
always @(*)
|
||||
if (ins==0) begin
|
||||
aload=1;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rload=0;
|
||||
rfload=0;
|
||||
str=0;
|
||||
opsel=0;
|
||||
jump=0;
|
||||
hlt=0;
|
||||
end else if (ins==1) begin
|
||||
bload=1;
|
||||
aload=0;
|
||||
bload=1;
|
||||
dsel=0;
|
||||
rload=0;
|
||||
rfload=0;
|
||||
str=0;
|
||||
opsel=0;
|
||||
jump=0;
|
||||
hlt=0;
|
||||
end else if (ins==2) begin
|
||||
aload=1;
|
||||
dsel=1;
|
||||
bload=0;
|
||||
rload=0;
|
||||
dsel=1;
|
||||
rfload=0;
|
||||
str=0;
|
||||
opsel=0;
|
||||
jump=0;
|
||||
hlt=0;
|
||||
end else if (ins==3) begin
|
||||
aload=0;
|
||||
bload=1;
|
||||
dsel=1;
|
||||
aload=0;
|
||||
rload=0;
|
||||
rfload=0;
|
||||
str=0;
|
||||
opsel=0;
|
||||
jump=0;
|
||||
jump=0;
|
||||
hlt=0;
|
||||
end else if (ins==4) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=1;
|
||||
str=0;
|
||||
opsel=0;
|
||||
jump=0;
|
||||
hlt=0;
|
||||
end else if (ins==5) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=1;
|
||||
str=0;
|
||||
opsel=1;
|
||||
jump=0;
|
||||
hlt=0;
|
||||
end else if (ins==6) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=0;
|
||||
str=1;
|
||||
opsel=0;
|
||||
jump=1;
|
||||
hlt=0;
|
||||
end else if (ins==7) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=0;
|
||||
str=1;
|
||||
opsel=0;
|
||||
jump=1;
|
||||
hlt=0;
|
||||
end else if (ins==8 && carry) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=0;
|
||||
str=1;
|
||||
opsel=0;
|
||||
jump=1;
|
||||
hlt=0;
|
||||
end else if (ins==9 && !carry) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=0;
|
||||
str=1;
|
||||
opsel=0;
|
||||
jump=1;
|
||||
end else if (ins==10 && zero) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=0;
|
||||
str=1;
|
||||
opsel=0;
|
||||
jump=1;
|
||||
hlt=0;
|
||||
end else if (ins==11 && !zero) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=0;
|
||||
str=1;
|
||||
opsel=0;
|
||||
jump=1;
|
||||
hlt=0;
|
||||
end else if (ins==12) begin
|
||||
aload=0;
|
||||
bload=0;
|
||||
dsel=0;
|
||||
rfload=0;
|
||||
str=1;
|
||||
opsel=0;
|
||||
jump=1;
|
||||
hlt=1;
|
||||
end else begin
|
||||
bload=0;
|
||||
dsel=0;
|
||||
aload=0;
|
||||
rload=0;
|
||||
rfload=0;
|
||||
str=0;
|
||||
opsel=0;
|
||||
jump=0;
|
||||
jump=0;
|
||||
hlt=0;
|
||||
end
|
||||
endmodule
|
||||
module insdec_tb();
|
||||
reg [3:0] ins;
|
||||
wire aload,bload,dsel,rload,opsel,jump;
|
||||
reg carry, zero;
|
||||
wire aload,bload,dsel,rfload,opsel,jump,hlt;
|
||||
ins_dec insdec(.ins (ins),
|
||||
.carry (carry),
|
||||
.zero (zero),
|
||||
.aload (aload),
|
||||
.bload (bload),
|
||||
.dsel (dsel),
|
||||
.rload (rload),
|
||||
.rfload (rfload),
|
||||
.opsel (opsel),
|
||||
.jump (jump)
|
||||
.jump (jump),
|
||||
.hlt (hlt)
|
||||
);
|
||||
initial begin
|
||||
$monitor("ins=%h,aload=%b,bload=%b,dsel=%b,rload=%b,opsel=%b,jump=%b",
|
||||
$monitor("ins=%h,carry=%b,zero=%b,aload=%b,bload=%b,dsel=%b,rfload=%b,opsel=%b,jump=%b,hlt=%b",
|
||||
ins,
|
||||
carry,
|
||||
zero,
|
||||
aload,
|
||||
bload,
|
||||
dsel,
|
||||
rload,
|
||||
rfload,
|
||||
opsel,
|
||||
jump);
|
||||
jump,
|
||||
hlt);
|
||||
ins=0;
|
||||
carry=0;
|
||||
zero=0;
|
||||
#1 ins=1;
|
||||
#1 ins=2;
|
||||
#1 ins=3;
|
||||
#1 ins=4;
|
||||
#1 ins=5;
|
||||
#1 ins=6;
|
||||
#1 ins=7;
|
||||
#1 ins=8;carry=1;
|
||||
#1 ins=8;carry=0;
|
||||
#1 ins=9;carry=1;
|
||||
#1 ins=9;carry=0;
|
||||
#1 ins=10;zero=1;
|
||||
#1 ins=10;zero=0;
|
||||
#1 ins=11;zero=1;
|
||||
#1 ins=11;zero=0;
|
||||
#1 ins=12;
|
||||
end
|
||||
endmodule
|
||||
|
Loading…
x
Reference in New Issue
Block a user