?? it51_alu.v
字號:
Do_A_RRC <= 1'b0 ;
Do_A_DEC <= 1'b0 ;
Do_A_RL <= 1'b0 ;
Do_A_ADD <= 1'b0 ;
Do_A_RLC <= 1'b0 ;
Do_A_ORL <= 1'b0 ;
Do_A_ANL <= 1'b0 ;
Do_A_XRL <= 1'b0 ;
Do_A_MOV <= 1'b0 ;
Do_A_DIV <= 1'b0 ;
Do_A_SUBB <= 1'b0 ;
Do_A_MUL <= 1'b0 ;
Do_A_CJNE <= 1'b0 ;
Do_A_SWAP <= 1'b0 ;
Do_A_XCH <= 1'b0 ;
Do_A_DA <= 1'b0 ;
Do_A_XCHD <= 1'b0 ;
Do_A_CLR <= 1'b0 ;
Do_A_CPL <= 1'b0 ;
Do_A_Imm <= 1'b0 ;
if (OpCode[3:0] == 4'b0100)
begin
Do_A_Imm <= 1'b1 ;
end
if (OpCode == 8'b00000011)
begin
// 00000011 1 RR A
Do_A_RR <= 1'b1 ;
end
if (OpCode == 8'b00000100)
begin
// 00000100 1 INC A
Do_A_INC <= 1'b1 ;
end
if (OpCode == 8'b00010011)
begin
// 00010011 1 RRC A
Do_A_RRC <= 1'b1 ;
end
if (OpCode == 8'b00010100)
begin
// 00010100 1 DEC A
Do_A_DEC <= 1'b1 ;
end
if (OpCode == 8'b00100011)
begin
// 00100011 1 RL A
Do_A_RL <= 1'b1 ;
end
// 030714 >>>
if (OpCode == 8'b00100100 | OpCode == 8'b00100101 | OpCode[7:3] == 5'b00101)
begin
// 00100100 2 ADD A,#data
// 00100101 2 ADD A,data addr
// 00101rrr 1 ADD A,Rn
Do_A_ADD <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0010011 & ~PCPause)
begin
// 0010011i 1 ADD A,@Ri
Do_A_ADD <= 1'b1 ;
end
// <<<
if (OpCode == 8'b00110011)
begin
// 00110011 1 RLC A
Do_A_RLC <= 1'b1 ;
end
// 030714 >>>
if (OpCode == 8'b00110100 | OpCode == 8'b00110101 | OpCode[7:3] == 5'b00111)
begin
// 00110100 2 ADDC A,#data
// 00110101 2 ADDC A,data addr
// 0011011i 1 ADDC A,@Ri
// 00111rrr 1 ADDC A,Rn
Do_A_ADD <= 1'b1 ;
Do_A_Carry <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0011011 & ~PCPause)
begin
// 0011011i 1 ADDC A,@Ri
Do_A_ADD <= 1'b1 ;
Do_A_Carry <= 1'b1 ;
end
// <<<
// 030714 >>>
if (OpCode == 8'b01000100 | OpCode == 8'b01000101 | OpCode[7:3] == 5'b01001)
begin
// 01000100 2 ORL A,#data
// 01000101 2 ORL A,data addr
// 01001rrr 1 ORL A,Rn
Do_A_ORL <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0100011 & ~PCPause)
begin
// 0100011i 1 ORL A,@Ri
Do_A_ORL <= 1'b1 ;
end
// <<<
// 030714 >>>
if (OpCode == 8'b01010100 | OpCode == 8'b01010101 | OpCode[7:3] == 5'b01011)
begin
// 01010100 2 ANL A,#data
// 01010101 2 ANL A,data addr
// 01011rrr 1 ANL A,Rn
Do_A_ANL <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0101011 & ~PCPause)
begin
// 0101011i 1 ANL A,@Ri
Do_A_ANL <= 1'b1 ;
end
// <<<
// 030714 >>>
if (OpCode == 8'b01100100 | OpCode == 8'b01100101 | OpCode[7:3] == 5'b01101)
begin
// 01100100 2 XRL A,#data
// 01100101 2 XRL A,data addr
// 01101rrr 1 XRL A,Rn
Do_A_XRL <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0110011 & ~PCPause)
begin
// 0110011i 1 XRL A,@Ri
Do_A_XRL <= 1'b1 ;
end
// <<<
// 030714 >>>
if (OpCode == 8'b01110100 | OpCode == 8'b11100101 | OpCode[7:3] == 5'b11101)
begin
// 01110100 2 MOV A,#data
// 10000011 1 MOVC A,@A+PC -- Not handled here
// 10010011 1 MOVC A,@A+DPTR -- Not handled here
// 11100000 1 MOVX A,@DPTR
// 1110001i 1 MOVX A,@Ri
// 11100101 2 MOV A,data addr
// 11101rrr 1 MOV A,Rn
Do_A_MOV <= 1'b1 ;
end
if (OpCode[7:1] == 7'b1110011 & ~PCPause)
begin
// 1110011i 1 MOV A,@Ri
Do_A_MOV <= 1'b1 ;
end
// <<<
if (OpCode == 8'b10000100)
begin
// 10000100 1 DIV AB
Do_A_DIV <= 1'b1 ;
end
// 030714 >>>
if (OpCode == 8'b10010100 | OpCode == 8'b10010101 | OpCode[7:3] == 5'b10011)
begin
// 10010100 2 SUBB A,#data
// 10010101 2 SUBB A,data addr
// 10011rrr 1 SUBB A,Rn
Do_A_SUBB <= 1'b1 ;
Do_A_Carry <= 1'b1 ;
end
if (OpCode[7:1] == 7'b1001011 & ~PCPause)
begin
// 1001011i 1 SUBB A,@Ri
Do_A_SUBB <= 1'b1 ;
Do_A_Carry <= 1'b1 ;
end
// <<<
if (OpCode == 8'b10100100)
begin
// 10100100 1 MUL AB
Do_A_MUL <= 1'b1 ;
end
if (OpCode[7:1] == 7'b1011010)
begin
// 10110100 3 CJNE A,#data,code addr
// 10110101 3 CJNE A,data addr,code addr
Do_A_SUBB <= 1'b1 ;
Do_A_CJNE <= 1'b1 ;
end
if (OpCode == 8'b11000100)
begin
// 11000100 1 SWAP A
Do_A_SWAP <= 1'b1 ;
end
// 030714 >>>
if (OpCode == 8'b11000101 | OpCode[7:3] == 5'b11001)
begin
// 11000101 2 XCH A,data addr
// 11001rrr 1 XCH A,Rn
Do_A_XCH <= 1'b1 ;
end
if (OpCode[7:1] == 7'b1100011 & ~PCPause)
begin
// 1100011i 1 XCH A,@Ri
Do_A_XCH <= 1'b1 ;
end
// <<<
if (OpCode == 8'b11010100)
begin
// 11010100 1 DA A
Do_A_DA <= 1'b1 ;
end
// 030714 >>>
if (OpCode[7:1] == 7'b1101011 & ~PCPause)
begin
// 1101011i 1 XCHD A,@Ri
Do_A_XCHD <= 1'b1 ;
end
// <<<
if (OpCode == 8'b11100100)
begin
// 11100100 1 CLR A
Do_A_CLR <= 1'b1 ;
end
if (OpCode == 8'b11110100)
begin
// 11110100 1 CPL A
Do_A_CPL <= 1'b1 ;
end
// IDCPBL Operations
Do_I_Imm <= 1'b0 ;
Do_I_INC <= 1'b0 ;
Do_I_DEC <= 1'b0 ;
Do_I_ORL <= 1'b0 ;
Do_I_ANL <= 1'b0 ;
Do_I_XRL <= 1'b0 ;
Do_I_MOV <= 1'b0 ;
Do_I_MOVD <= 1'b0 ;
Do_I_CJNE <= 1'b0 ;
IA_d <= IA ;
MOV_Op <= OpCode[7:4] ;
if (OpCode[3:0] == 4'b0011)
begin
Do_I_Imm <= 1'b1 ;
end
// 030714 >>>
if (OpCode == 8'b00000101 | OpCode[7:1] == 7'b0000011 | OpCode[7:3] == 5'b00001)
begin
// 00000101 2 INC data addr
// 0000011i 1 INC @Ri
// 00001rrr 1 INC Rn
Do_I_INC <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0000011 & ~PCPause)
begin
// 0000011i 1 INC @Ri
Do_I_INC <= 1'b1 ;
end
// <<<
// 030714 >>>
if (OpCode == 8'b00010101 | OpCode[7:3] == 5'b00011 | OpCode[7:3] == 5'b11011 | OpCode == 8'b11010101)
begin
// 00010101 2 DEC data addr
// 00011rrr 1 DEC Rn
// 11011rrr 2 DJNZ Rn,code addr
// 11010101 3 DJNZ data addr, code addr
Do_I_DEC <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0001011 & ~PCPause)
begin
// 0001011i 1 DEC @Ri
Do_I_DEC <= 1'b1 ;
end
// <<<
if (OpCode[7:1] == 7'b0100001)
begin
// 01000010 2 ORL data addr,A
// 01000011 3 ORL data addr,#data
Do_I_ORL <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0101001)
begin
// 01010010 2 ANL data addr,A
// 01010011 3 ANL data addr,#data
Do_I_ANL <= 1'b1 ;
end
if (OpCode[7:1] == 7'b0110001)
begin
// 01100010 2 XRL data addr,A
// 01100011 3 XRL data addr,#data
Do_I_XRL <= 1'b1 ;
end
if (OpCode == 8'b01110101 | OpCode[7:1] == 7'b0111011 | OpCode[7:3] == 5'b01111 | OpCode[7:1] == 7'b1000011 | OpCode[7:3] == 5'b10001 | OpCode == 8'b10010000 | OpCode[7:1] == 7'b1010011 | OpCode[7:3] == 5'b10101 | OpCode == 8'b11110000 | OpCode[7:1] == 7'b1111001 | OpCode == 8'b11110101 | OpCode[7:1] == 7'b1111011 | OpCode[7:3] == 5'b11111 | (OpCode[7:5] == 3'b110 & OpCode[3:0] == 4'b0000))
begin
// 01110101 3 MOV data addr,#data
// 0111011i 2 MOV @Ri,#data
// 01111rrr 2 MOV Rn,#data
// 1000011i 2 MOV data addr,@Ri
// 10001rrr 2 MOV data addr,Rn
// 10010000 3 MOV DPTR,#data -- Not handled here
// 1010011i 2 MOV @Ri,data addr
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -