Line 96... |
Line 96... |
`define ADDRESS_FROM_IMM_32 4'd7 // move from {ir1[15:0], ir2[15:0]}
|
`define ADDRESS_FROM_IMM_32 4'd7 // move from {ir1[15:0], ir2[15:0]}
|
`define ADDRESS_FROM_PC_INDEX_OFFSET 4'd8 // move from pc+index+offset
|
`define ADDRESS_FROM_PC_INDEX_OFFSET 4'd8 // move from pc+index+offset
|
`define ADDRESS_FROM_TRAP 4'd9 // move trap {22'b0, trap[7:0], 2'b0}
|
`define ADDRESS_FROM_TRAP 4'd9 // move trap {22'b0, trap[7:0], 2'b0}
|
|
|
`define SIZE_IDLE 4'd0
|
`define SIZE_IDLE 4'd0
|
`define SIZE_BYTE 4'd1 // load byte: 2'b00
|
`define SIZE_BYTE 4'd1 // load byte: 3'b001
|
`define SIZE_WORD 4'd2 // load word: 2'b01
|
`define SIZE_WORD 4'd2 // load word: 3'b010
|
`define SIZE_LONG 4'd3 // load long: 2'b10
|
`define SIZE_LONG 4'd3 // load long: 3'b100
|
`define SIZE_1 4'd4 // SIZE.1: word ( ir[7:6] == 2'b00 ), long ( ir[7:6] == 2'b01 )
|
`define SIZE_1 4'd4 // SIZE.1: word ( ir[7:6] == 2'b00 ), long ( ir[7:6] == 2'b01 )
|
`define SIZE_1_PLUS 4'd5 // SIZE.1+: word ( ir[7:6] == 2'b10 ), long ( ir[7:6] == 2'b11 )
|
`define SIZE_1_PLUS 4'd5 // SIZE.1+: word ( ir[7:6] == 2'b10 ), long ( ir[7:6] == 2'b11 )
|
`define SIZE_2 4'd6 // SIZE.2: word ( ir[6] == 1'b0 ), long ( ir[6] == 1'b1 )
|
`define SIZE_2 4'd6 // SIZE.2: word ( ir[6] == 1'b0 ), long ( ir[6] == 1'b1 )
|
`define SIZE_3 4'd7 // SIZE.3: byte ( ir[7:6] == 2'b00 ), word ( ir[7:6] == 2'b01 ), long ( ir[7:6] == 2'b10 )
|
`define SIZE_3 4'd7 // SIZE.3: byte ( ir[7:6] == 2'b00 ), word ( ir[7:6] == 2'b01 ), long ( ir[7:6] == 2'b10 )
|
`define SIZE_4 4'd8 // SIZE.4: byte ( ir[13:12] == 2'b01 ), word( ir[13:12] == 2'b11 ), long ( ir[13:12] == 2'b10 )
|
`define SIZE_4 4'd8 // SIZE.4: byte ( ir[13:12] == 2'b01 ), word( ir[13:12] == 2'b11 ), long ( ir[13:12] == 2'b10 )
|
Line 1763... |
Line 1763... |
|
|
always @(posedge clock or negedge reset_n) begin
|
always @(posedge clock or negedge reset_n) begin
|
if(reset_n == 1'b0) begin
|
if(reset_n == 1'b0) begin
|
size <= 2'b00;
|
size <= 2'b00;
|
end
|
end
|
else begin
|
else if(size_control != `SIZE_IDLE) begin
|
// BYTE
|
// BYTE
|
size[0] <= (size_control == `SIZE_BYTE)
|
size[0] <= (size_control == `SIZE_BYTE)
|
| ((size_control == `SIZE_3) && (ir[7:6] == 2'b00))
|
| ((size_control == `SIZE_3) && (ir[7:6] == 2'b00))
|
| ((size_control == `SIZE_4) && (ir[13:12] == 2'b01))
|
| ((size_control == `SIZE_4) && (ir[13:12] == 2'b01))
|
| ((size_control == `SIZE_6) && (ir[5:3] != 3'b000));
|
| ((size_control == `SIZE_6) && (ir[5:3] != 3'b000));
|