Line 2... |
Line 2... |
//
|
//
|
// This file is part of the M32632 project
|
// This file is part of the M32632 project
|
// http://opencores.org/project,m32632
|
// http://opencores.org/project,m32632
|
//
|
//
|
// Filename: STEUER_MISC.v
|
// Filename: STEUER_MISC.v
|
// Version: 1.1 bug fix
|
// Version: 2.0
|
// History: 1.0 first release of 30 Mai 2015
|
// History: 1.0 first release of 30 Mai 2015
|
// Date: 21 January 2016
|
// Date: 14 August 2016
|
//
|
//
|
// Copyright (C) 2016 Udo Moeller
|
// Copyright (C) 2016 Udo Moeller
|
//
|
//
|
// This source file may be used and distributed without
|
// This source file may be used and distributed without
|
// restriction provided that this copyright statement is not
|
// restriction provided that this copyright statement is not
|
Line 210... |
Line 210... |
reg [31:0] pc_adduse;
|
reg [31:0] pc_adduse;
|
reg [31:0] pc_ic_reg;
|
reg [31:0] pc_ic_reg;
|
reg [31:0] fpu_trap_pc;
|
reg [31:0] fpu_trap_pc;
|
reg IC_USER;
|
reg IC_USER;
|
|
|
wire [31:0] branch,pc_jump,next_pc,pc_icache_i;
|
wire [31:0] branch,pc_jump,pc_icache_i;
|
|
|
assign PC_SAVE = pc_adduse + {29'h0,USED};
|
assign PC_SAVE = pc_adduse + {29'h0,USED};
|
assign branch = PC_ARCHI + DISP;
|
assign branch = PC_ARCHI + DISP;
|
|
|
assign pc_jump = LOAD_PC ? PC_NEW : branch;
|
assign pc_jump = LOAD_PC ? PC_NEW : branch;
|
|
|
assign next_pc = NEW ? pc_jump : PC_SAVE; // Only at NEW is the DISP correct !
|
|
|
|
always @(posedge BCLK or negedge BRESET)
|
always @(posedge BCLK or negedge BRESET)
|
if (!BRESET) pc_adduse <= 32'h0;
|
if (!BRESET) pc_adduse <= 32'h0;
|
else
|
else
|
pc_adduse <= next_pc;
|
pc_adduse <= NEW ? pc_jump : PC_SAVE; // Only at NEW is the DISP correct !
|
|
|
// The Architectur - PC : Address mode "Programm Memory"-relativ
|
// The Architectur - PC : Address mode "Programm Memory"-relativ
|
// no BRESET because NEXT_PCA is immediately valid
|
// no BRESET because NEXT_PCA is immediately valid
|
always @(posedge BCLK)
|
always @(posedge BCLK)
|
if (FPU_TRAP) PC_ARCHI <= fpu_trap_pc; // go back !
|
if (FPU_TRAP) PC_ARCHI <= fpu_trap_pc; // go back !
|
Line 273... |
Line 271... |
output VALID;
|
output VALID;
|
|
|
reg [7:1] filter;
|
reg [7:1] filter;
|
wire [7:0] mdat_0;
|
wire [7:0] mdat_0;
|
wire [3:0] mdat_1;
|
wire [3:0] mdat_1;
|
wire [1:0] mdat_2;
|
|
|
|
always @(IPOS or DIN)
|
always @(IPOS or DIN)
|
case (IPOS)
|
case (IPOS)
|
3'd0 : filter = DIN[7:1];
|
3'd0 : filter = DIN[7:1];
|
3'd1 : filter = {DIN[7:2],1'b0};
|
3'd1 : filter = {DIN[7:2],1'b0};
|
Line 291... |
Line 288... |
|
|
assign mdat_0 = INIT ? DIN : {filter,1'b0};
|
assign mdat_0 = INIT ? DIN : {filter,1'b0};
|
assign OPOS[2] = (mdat_0[3:0] == 4'h0);
|
assign OPOS[2] = (mdat_0[3:0] == 4'h0);
|
assign mdat_1 = OPOS[2] ? mdat_0[7:4] : mdat_0[3:0];
|
assign mdat_1 = OPOS[2] ? mdat_0[7:4] : mdat_0[3:0];
|
assign OPOS[1] = (mdat_1[1:0] == 2'b00);
|
assign OPOS[1] = (mdat_1[1:0] == 2'b00);
|
assign mdat_2 = OPOS[1] ? mdat_1[3:2] : mdat_1[1:0];
|
assign OPOS[0] = ~((mdat_1[2:1] == 2'b10) | mdat_1[0]);
|
assign OPOS[0] = ~mdat_2[0];
|
assign VALID = (mdat_1 != 4'b0000);
|
assign VALID = (mdat_2 != 2'b00);
|
|
|
|
endmodule
|
endmodule
|
|
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
//
|
//
|
Line 495... |
Line 491... |
parameter op_adr = {3'bx1x,8'h49};
|
parameter op_adr = {3'bx1x,8'h49};
|
parameter op_addl = {3'b01x,8'hB0};
|
parameter op_addl = {3'b01x,8'hB0};
|
parameter op_addf = {3'b11x,8'hB0};
|
parameter op_addf = {3'b11x,8'hB0};
|
parameter op_mull = {3'b01x,8'hBC};
|
parameter op_mull = {3'b01x,8'hBC};
|
parameter op_mulf = {3'b11x,8'hBC};
|
parameter op_mulf = {3'b11x,8'hBC};
|
parameter op_truf = {3'b101,8'h9A}; // TRUNCFW for SCALBF
|
|
parameter op_trul = {3'b001,8'h9A}; // TRUNCLW for SCALBL
|
|
parameter op_stpr = {3'b11x,8'h54}; // Special-Op for String opcodes
|
parameter op_stpr = {3'b11x,8'h54}; // Special-Op for String opcodes
|
parameter op_lsh = {3'b011,8'h65}; // EXT : shift to right : DOUBLE !
|
parameter op_lsh = {3'b011,8'h65}; // EXT : shift to right : DOUBLE !
|
parameter op_msk = {3'b011,8'h80}; // reuse of EXT Opcode at INS !
|
parameter op_msk = {3'b011,8'h80}; // reuse of EXT Opcode at INS !
|
parameter op_mul = {3'b011,8'h78}; // INDEX
|
parameter op_mul = {3'b011,8'h78}; // INDEX
|
parameter op_rwv = {3'bx1x,8'hE0}; // RDVAL+WRVAL
|
parameter op_rwv = {3'bx1x,8'hE0}; // RDVAL+WRVAL
|
|
|
always @(OPREG) // whether the Opcode is valid is decided in DECODER !
|
always @(OPREG) // whether the Opcode is valid is decided in DECODER !
|
casex (OPREG[13:0])
|
casex (OPREG[13:0])
|
14'bxx_xxxx_1111_1110 : op_code = {2'b01,OPREG[11:10],OPREG[8]}; // DOT/POLY/SCALB
|
14'bxx_xxxx_1111_1110 : op_code = {3'b011,OPREG[10],OPREG[8]}; // DOT/POLY
|
14'b00_0xxx_0000_1110 : op_code = 5'b1_0000; // MOVS/CMPS
|
14'b00_0xxx_0000_1110 : op_code = 5'b1_0000; // MOVS/CMPS
|
14'b00_11xx_0000_1110 : op_code = 5'b1_0000; // SKPS
|
14'b00_11xx_0000_1110 : op_code = 5'b1_0000; // SKPS
|
14'b00_0xxx_1100_1110 : op_code = 5'b1_0001; // MOVM/CMPM
|
14'b00_0xxx_1100_1110 : op_code = 5'b1_0001; // MOVM/CMPM
|
14'bxx_xx10_0111_11xx : op_code = 5'b1_0010; // JUMP/JSR
|
14'bxx_xx10_0111_11xx : op_code = 5'b1_0010; // JUMP/JSR
|
14'bxx_x111_0111_11xx : op_code = 5'b1_0011; // CASE
|
14'bxx_x111_0111_11xx : op_code = 5'b1_0011; // CASE
|
Line 552... |
Line 546... |
endcase
|
endcase
|
|
|
assign get8b_d = (PHRD2 == 4'hB) ? 4'hC : 4'h0; // Special case 8B Immeadiate, is used in State 58
|
assign get8b_d = (PHRD2 == 4'hB) ? 4'hC : 4'h0; // Special case 8B Immeadiate, is used in State 58
|
|
|
assign src_1l = {SRC_1[6:1],1'b0};
|
assign src_1l = {SRC_1[6:1],1'b0};
|
assign src_2l = {SRC_2[6:1],~SRC_2[0]}; // needed only for DEI/MEI
|
assign src_2l = {SRC_2[6:1],~SRC_2[0]}; // used only for DEI and MEI
|
assign dest_2 = SRC_2[5:0];
|
assign dest_2 = SRC_2[5:0];
|
|
|
assign phchk = {7'b0101_010,size_dw}; // Phase 54 or 55
|
assign phchk = {7'b0101_010,size_dw}; // Phase 54 or 55
|
|
|
assign op_kust = {1'bx,OPERA[9:8],8'h7A}; // Special-Opcode for MOVM/CMPM
|
assign op_kust = {1'bx,OPERA[9:8],8'h7A}; // Special-Opcode for MOVM/CMPM
|
assign op_bwd = {1'bx,OPERA[9:8],8'h45}; // for CASE and Bit opcodes
|
assign op_bwd = {1'bx,OPERA[9:8],8'h45}; // for CASE and Bit opcodes
|
|
|
assign re_wr = {EXR22[18:17],4'b0101,4'h0, 9'h003}; // REUSE Address : Write of rmw , top 2 Bits contain size
|
assign re_wr = {EXR22[18:17],4'b0101,4'h0, 9'h003}; // REUSE Address : Write of rmw , top 2 Bits contain size
|
|
|
always @(posedge BCLK) if (PHASE_0) ext_tos <= (OPREG[18:14] == 5'h17); // if TOS
|
always @(posedge BCLK) if (PHASE_0) ext_tos <= (OPREG[18:14] == 5'h17); // TOS Address mode
|
assign rexwr = {EXR22[18:17],4'b0101,4'h0, ext_tos, 8'h03}; // REUSE Addresse : Write von rmw , only for EXT and EXTS !
|
assign rexwr = {EXR22[18:17],4'b0101,4'h0, ext_tos, 8'h03}; // REUSE Address : Write of rmw , only for EXT and EXTS
|
|
|
always @(posedge BCLK) tbit_flag <= ~OPERA[1]; // due to Timing ...
|
always @(posedge BCLK) tbit_flag <= ~OPERA[1]; // due to Timing ...
|
always @(posedge BCLK) size_dw <= OPERA[9];
|
always @(posedge BCLK) size_dw <= OPERA[9];
|
|
|
always @(posedge BCLK) if (PHASE_0) chkreg <= {3'b000,OPREG[13:11]}; // for CHECK
|
always @(posedge BCLK) if (PHASE_0) chkreg <= {3'b000,OPREG[13:11]}; // for CHECK
|
Line 792... |
Line 786... |
state_55 = dont_care;
|
state_55 = dont_care;
|
state_58 = dont_care;
|
state_58 = dont_care;
|
state_59 = dont_care;
|
state_59 = dont_care;
|
state_5A = dont_care;
|
state_5A = dont_care;
|
end
|
end
|
5'b01_000 : // SCALBL : RMW critical !
|
|
begin
|
|
STATE_0 = ACCA[3] ? // _M...
|
|
{ ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
|
: { addr_nop,8'h54, SRC_1, src_1l,1'b1,temp_h,op_trul, 2'b11,2'b00,4'h0 };
|
|
state_50 = ACCA[3] ? // _M...
|
|
{ ADRD1, phsrc1,IRRW1, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
|
: { addr_nop,8'h54, SRC_1, src_1l,1'b1,temp_h,op_trul, 2'b11,2'b00,4'h0 };
|
|
state_53 = { addr_nop,8'h55, imme, src_x, 1'b1,temp_h,op_mov, 2'b00,2'b00,get8b_s };
|
|
state_54 = ACCA[1] ?
|
|
{ ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_trul, 2'b00,2'b00,NXRW2 }
|
|
: { addr_nop,8'h5A, src_x, src_x, 1'b0,temp_h,op_trul, 2'b00,2'b00,4'h0 };
|
|
state_55 = { addr_nop,8'h54, rtmph, imme, 1'b1,temp_h,op_trul, 2'b11,2'b00,4'h0 }; // 2. half of external SRC1
|
|
state_58 = { addr_nop,8'h59, rtmph, imme, 1'b0,dest_2,OPERA, 2'b01,2'b00,4'h0 };
|
|
state_59 = { addr_nop,8'h1F, src_x, (ACCA[1] ? imme : src_2l),
|
|
~ACCA[1],dest_2,OPERA, 2'b10,2'b00,4'h0 };
|
|
state_5A = { addr_nop,8'h59, rtmph, SRC_2, 1'b0,dest_2,OPERA, 2'b01,2'b00,4'h0 }; // empty cycle for TRUNC => TEMP !
|
|
end
|
|
5'b01_001 : // SCALBF : RMW critical !
|
|
begin
|
|
STATE_0 = ACCA[3] ? // _M...
|
|
{ ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
|
: { addr_nop,8'h54, SRC_1, src_x, 1'b1,temp_h,op_truf, 2'b00,2'b00,4'h0 };
|
|
state_50 = ACCA[3] ? // _M...
|
|
{ ADRD1, phsrc1,IRRW1, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
|
: { addr_nop,8'h54, SRC_1, src_x, 1'b1,temp_h,op_truf, 2'b00,2'b00,4'h0 };
|
|
state_53 = { addr_nop,8'h54, imme, src_x, 1'b1,temp_h,op_truf, 2'b00,2'b00,4'h0 };
|
|
state_54 = ACCA[1] ?
|
|
{ ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 }
|
|
: { addr_nop,8'h1F, rtmph, SRC_2, 1'b1,dest_2,OPERA, 2'b11,2'b00,4'h0 };
|
|
state_55 = dont_care;
|
|
state_58 = { addr_nop,8'h1F, rtmph, imme, 1'b0,dest_x,OPERA, 2'b11,2'b00,4'h0 };
|
|
state_59 = dont_care;
|
|
state_5A = dont_care;
|
|
end
|
|
5'b01_100 : // POLYL
|
5'b01_100 : // POLYL
|
begin
|
begin
|
STATE_0 = ACCA[3] ? // _M...
|
STATE_0 = ACCA[3] ? // _M...
|
{ ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
{ ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
: { addr_nop,8'h54, SRC_1, F0_h, 1'b0,temp_h,op_mull, 2'b01,2'b00,4'h0 };
|
: { addr_nop,8'h54, SRC_1, F0_h, 1'b0,temp_h,op_mull, 2'b01,2'b00,4'h0 };
|
Line 848... |
Line 807... |
end
|
end
|
5'b01_101 : // POLYF
|
5'b01_101 : // POLYF
|
begin
|
begin
|
STATE_0 = ACCA[3] ? // _M...
|
STATE_0 = ACCA[3] ? // _M...
|
{ ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
{ ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
: { addr_nop,8'h54, SRC_1, F0, 1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 };
|
: { addr_nop,8'h55, SRC_1, F0, 1'b0,dest_x,op_mulf, 2'b11,2'b00,4'h0 };
|
state_50 = ACCA[3] ? // _M...
|
state_50 = ACCA[3] ? // _M...
|
{ ADRD1, phsrc1,IRRW1, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
{ ADRD1, phsrc1,IRRW1, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
: { addr_nop,8'h54, SRC_1, F0, 1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 };
|
: { addr_nop,8'h55, SRC_1, F0, 1'b0,dest_x,op_mulf, 2'b11,2'b00,4'h0 };
|
state_53 = { addr_nop,8'h54, imme, F0, 1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 };
|
state_53 = { addr_nop,8'h55, imme, F0, 1'b0,dest_x,op_mulf, 2'b11,2'b00,4'h0 };
|
state_54 = ACCA[1] ?
|
state_54 = ACCA[1] ?
|
{ ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 }
|
{ ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 }
|
: { addr_nop,8'h00, rtmph, SRC_2, 1'b1,w_F0 ,op_addf, 2'b00,2'b00,4'h0 };
|
: { addr_nop,8'h6E, rtmph, SRC_2, 1'b0,dest_x,op_addf, 2'b11,2'b00,4'h0 };
|
state_55 = dont_care;
|
state_55 = { addr_nop,8'h54, src_x, src_x, 1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 };
|
state_58 = { addr_nop,8'h00, rtmph, imme, 1'b1,w_F0 ,op_addf, 2'b00,2'b00,4'h0 };
|
state_58 = { addr_nop,8'h6E, rtmph, imme, 1'b0,dest_x,op_addf, 2'b11,2'b00,4'h0 };
|
state_59 = dont_care;
|
state_59 = dont_care;
|
state_5A = dont_care;
|
state_5A = dont_care;
|
end
|
end
|
5'b01_110 : // DOTL
|
5'b01_110 : // DOTL
|
begin
|
begin
|
Line 885... |
Line 844... |
state_5A = { addr_nop,8'h61, rtmph, F0_h, 1'b0,temp_h,op_mull, 2'b01,2'b00,4'h0 };
|
state_5A = { addr_nop,8'h61, rtmph, F0_h, 1'b0,temp_h,op_mull, 2'b01,2'b00,4'h0 };
|
end
|
end
|
5'b01_111 : // DOTF
|
5'b01_111 : // DOTF
|
begin
|
begin
|
STATE_0 = (~ACCA[3] & ~ACCA[1]) ? // _R.R.
|
STATE_0 = (~ACCA[3] & ~ACCA[1]) ? // _R.R.
|
{ addr_nop,8'h63, SRC_1 ,SRC_2 ,1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 } // opera = MULF
|
{ addr_nop,8'h63, SRC_1 ,SRC_2 ,1'b0,dest_x,op_mulf, 2'b11,2'b00,4'h0 } // opera = MULF
|
: ( ACCA[3] ? // _M...
|
: ( ACCA[3] ? // _M...
|
{ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
{ADRD1, phsrc1,src_x, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
: {ADRD2, phsrc2,src_x, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 } );
|
: {ADRD2, phsrc2,src_x, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 } );
|
state_50 = ACCA[3] ? // _M...
|
state_50 = ACCA[3] ? // _M...
|
{ ADRD1, phsrc1,IRRW1, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
{ ADRD1, phsrc1,IRRW1, REGA1, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRD1 }
|
: { ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 };
|
: { ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 };
|
state_53 = ACCA[1] ? // _..M.
|
state_53 = ACCA[1] ? // _..M.
|
{ addr_nop,8'h55, imme, src_x, 1'b1,temp_h,op_mov, 2'b00,2'b00,4'h0 }
|
{ addr_nop,8'h55, imme, src_x, 1'b1,temp_h,op_mov, 2'b00,2'b00,4'h0 }
|
: { addr_nop,8'h63, imme, SRC_2 ,1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 };
|
: { addr_nop,8'h63, imme, SRC_2 ,1'b0,dest_x,op_mulf, 2'b11,2'b00,4'h0 };
|
state_54 = dont_care;
|
state_54 = dont_care;
|
state_55 = { ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 };
|
state_55 = { ADRD2, phsrc2,IRRW2, REGA2, 1'b0,dest_x,op_mov, 2'b00,2'b00,NXRW2 };
|
state_58 = { addr_nop,8'h63, (ACCA[3] ? rtmph : SRC_1), //_M...
|
state_58 = { addr_nop,8'h63, (ACCA[3] ? rtmph : SRC_1), //_M...
|
imme, 1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 };
|
imme, 1'b0,dest_x,op_mulf, 2'b11,2'b00,4'h0 };
|
state_59 = dont_care;
|
state_59 = dont_care;
|
state_5A = dont_care;
|
state_5A = dont_care;
|
end
|
end
|
default
|
default
|
begin
|
begin
|
Line 940... |
Line 899... |
always @(*)
|
always @(*)
|
casex (PHASE)
|
casex (PHASE)
|
4'h0 : STATE_GROUP_60 = { addr_nop,8'h00, src_x, src_x, 1'b1,chkreg,op_adr, 2'b00,2'b00,4'h0 }; // for INDEX
|
4'h0 : STATE_GROUP_60 = { addr_nop,8'h00, src_x, src_x, 1'b1,chkreg,op_adr, 2'b00,2'b00,4'h0 }; // for INDEX
|
4'h1 : STATE_GROUP_60 = { addr_nop,8'h62, rtmpl, F0, 1'b1,w_F0_h,op_addl, 2'b10,2'b00,4'h0 }; // for DOTL
|
4'h1 : STATE_GROUP_60 = { addr_nop,8'h62, rtmpl, F0, 1'b1,w_F0_h,op_addl, 2'b10,2'b00,4'h0 }; // for DOTL
|
4'h2 : STATE_GROUP_60 = { addr_nop,8'h00, src_x, src_x, 1'b0,w_F0_h,op_addl, 2'b00,2'b00,4'h0 }; // for DOTL & POLYL !
|
4'h2 : STATE_GROUP_60 = { addr_nop,8'h00, src_x, src_x, 1'b0,w_F0_h,op_addl, 2'b00,2'b00,4'h0 }; // for DOTL & POLYL !
|
4'h3 : STATE_GROUP_60 = { addr_nop,8'h00, rtmph, F0, 1'b1,w_F0, op_addf, 2'b00,2'b00,4'h0 }; // for DOTF
|
4'h3 : STATE_GROUP_60 = { addr_nop,8'h6F, src_x, src_x, 1'b1,temp_h,op_mulf, 2'b00,2'b00,4'h0 }; // for DOTF
|
|
4'hF : STATE_GROUP_60 = { addr_nop,8'h6E, rtmph, F0, 1'b0,dest_x,op_addf, 2'b11,2'b00,4'h0 };
|
|
4'hE : STATE_GROUP_60 = { addr_nop,8'h00, src_x, src_x, 1'b1,w_F0, op_addf, 2'b00,2'b00,4'h0 }; // for DOTF & POLYF
|
4'h4 : STATE_GROUP_60 = ACCA[1] ? // ..M.
|
4'h4 : STATE_GROUP_60 = ACCA[1] ? // ..M.
|
{ ADRD2, phsrc2,IRRW2, REGA2, 1'b0,temp_h,op_mull, 2'b00,2'b00,NXRW2 }
|
{ ADRD2, phsrc2,IRRW2, REGA2, 1'b0,temp_h,op_mull, 2'b00,2'b00,NXRW2 }
|
: { addr_nop,8'h59, SRC_2, rtmph, 1'b0,temp_h,op_addl, 2'b01,2'b00,4'h0 }; // for POLYL
|
: { addr_nop,8'h59, SRC_2, rtmph, 1'b0,temp_h,op_addl, 2'b01,2'b00,4'h0 }; // for POLYL
|
4'h5 : STATE_GROUP_60 = { addr_nop,8'h59, src_x, src_x, 1'b1,temp_l,op_kust, 2'b00,2'b00,4'h0 }; // for MOVM/CMPM
|
4'h5 : STATE_GROUP_60 = { addr_nop,8'h59, src_x, src_x, 1'b1,temp_l,op_kust, 2'b00,2'b00,4'h0 }; // for MOVM/CMPM
|
4'h6 : STATE_GROUP_60 = { addr_nop,8'h01, rtmph, src_x, 1'b0,dest_x,op_mov, 2'b00,2'b00,4'h0 }; // for JUMP/JSR/CASE
|
4'h6 : STATE_GROUP_60 = { addr_nop,8'h01, rtmph, src_x, 1'b0,dest_x,op_mov, 2'b00,2'b00,4'h0 }; // for JUMP/JSR/CASE
|