parameter SELECTION_MODE_AND_PARTITIONS = 0, PARTITIONS_2_MODE_1_WAIT = 1, PARTITIONS_2_MODE_1_AUX = 2, PARTITIONS_2_MODE_1_A = 3, PARTITIONS_2_MODE_1_B = 4, PARTITIONS_2_MODE_2_WAIT = 5, PARTITIONS_2_MODE_2_AUX = 6, PARTITIONS_2_MODE_2_A = 7, PARTITIONS_2_MODE_2_B = 8, PARTITIONS_2_MODE_3_WAIT = 9, PARTITIONS_2_MODE_3_AUX = 10, PARTITIONS_2_MODE_3_A = 11, PARTITIONS_2_MODE_3_B = 12, PARTITIONS_8_MODE_1_AUX = 13, PARTITIONS_8_MODE_1 = 14, PARTITIONS_8_MODE_1_WAIT = 15, PARTITIONS_8_MODE_2_AUX = 16, PARTITIONS_8_MODE_2 = 17, PARTITIONS_8_MODE_2_WAIT = 18, PARTITIONS_8_MODE_3_AUX = 19, PARTITIONS_8_MODE_3 = 20, PARTITIONS_8_MODE_3_WAIT = 21; reg[5:0] state, next; enum { SELECTION_MODE_AND_PARTITIONS, PARTITIONS_2_MODE_1_WAIT, PARTITIONS_2_MODE_1_AUX, PARTITIONS_2_MODE_1_A, PARTITIONS_2_MODE_1_B, PARTITIONS_2_MODE_2_WAIT, PARTITIONS_2_MODE_2_AUX, PARTITIONS_2_MODE_2_A, PARTITIONS_2_MODE_2_B, PARTITIONS_2_MODE_3_WAIT, PARTITIONS_2_MODE_3_AUX, PARTITIONS_2_MODE_3_A, PARTITIONS_2_MODE_3_B, PARTITIONS_8_MODE_1_AUX, PARTITIONS_8_MODE_1, PARTITIONS_8_MODE_1_WAIT, PARTITIONS_8_MODE_2_AUX, PARTITIONS_8_MODE_2, PARTITIONS_8_MODE_2_WAIT, PARTITIONS_8_MODE_3_AUX, PARTITIONS_8_MODE_3, PARTITIONS_8_MODE_3_WAIT} state , next; ------------------------------------------------------------------------------------------------------------------ module transmit_multichannel( input reset, clk, input request_request, input ac_transmit_mult_active, input logic [31:0] rb_in_mcr, input logic [31:0] rb_in_rcer0, input logic [31:0] rb_in_rcer1, input logic [31:0] rb_in_rcer2, input logic [31:0] rb_in_rcer3, input logic [31:0] rb_in_xcer0, input logic [31:0] rb_in_xcer1, input logic [31:0] rb_in_xcer2, input logic [31:0] rb_in_xcer3, input logic [31:0] dynamic_rb_in_mcr, input logic [31:0] dynamic_rb_in_xcer0, input logic [31:0] dynamic_rb_in_xcer1, input logic [31:0] dynamic_rb_in_xcer2, input logic [31:0] dynamic_rb_in_xcer3, input logic [31:0] dynamic_rb_in_rcer0, input logic [31:0] dynamic_rb_in_rcer1, input logic [31:0] dynamic_rb_in_rcer2, input logic [31:0] dynamic_rb_in_rcer3, output logic [31:0] mult_out_unmasked_channel1, output logic [31:0] mult_out_unmasked_channel2, output logic [31:0] mult_out_unmasked_channel3, output logic [31:0] mult_out_unmasked_channel4, output logic [31:0] mult_out_enabled_channel1, output logic [31:0] mult_out_enabled_channel2, output logic [31:0] mult_out_enabled_channel3, output logic [31:0] mult_out_enabled_channel4, output logic mult_out_ready ); //State machine parameter SELECTION_MODE_AND_PARTITIONS = 0, PARTITIONS_2_MODE_1_WAIT = 1, PARTITIONS_2_MODE_1_AUX = 2, PARTITIONS_2_MODE_1_A = 3, PARTITIONS_2_MODE_1_B = 4, PARTITIONS_2_MODE_2_WAIT = 5, PARTITIONS_2_MODE_2_AUX = 6, PARTITIONS_2_MODE_2_A = 7, PARTITIONS_2_MODE_2_B = 8, PARTITIONS_2_MODE_3_WAIT = 9, PARTITIONS_2_MODE_3_AUX = 10, PARTITIONS_2_MODE_3_A = 11, PARTITIONS_2_MODE_3_B = 12, PARTITIONS_8_MODE_1_AUX = 13, PARTITIONS_8_MODE_1 = 14, PARTITIONS_8_MODE_1_WAIT = 15, PARTITIONS_8_MODE_2_AUX = 16, PARTITIONS_8_MODE_2 = 17, PARTITIONS_8_MODE_2_WAIT = 18, PARTITIONS_8_MODE_3_AUX = 19, PARTITIONS_8_MODE_3 = 20, PARTITIONS_8_MODE_3_WAIT = 21; reg[5:0] state, next; logic out_ready; logic [31:0] out_unmasked_channel1; logic [31:0] out_unmasked_channel2; logic [31:0] out_unmasked_channel3; logic [31:0] out_unmasked_channel4; logic [31:0] out_enabled_channel1; logic [31:0] out_enabled_channel2; logic [31:0] out_enabled_channel3; logic [31:0] out_enabled_channel4; ///////////////////////////////////////////////////////////////////////// always_comb begin case(state) SELECTION_MODE_AND_PARTITIONS: begin if(ac_transmit_mult_active == 1 && rb_in_mcr[25] == 0 && rb_in_mcr[17:16] == 1) begin //2 Partitions Mode 1 XMCME <= rb_in_mcr[25]; XMCM <= rb_in_mcr[17:16]; if (request_request == 1) begin next <= PARTITIONS_2_MODE_1_A; end else begin next <= PARTITIONS_2_MODE_1_AUX; end end else if(ac_transmit_mult_active == 1 && rb_in_mcr[25] == 0 && rb_in_mcr[17:16] == 2) begin // 2 Partitions Mode 2 XMCME <= rb_in_mcr[25]; XMCM <= rb_in_mcr[17:16]; if (request_request == 1) begin next <= PARTITIONS_2_MODE_2_A; end else begin next <= PARTITIONS_2_MODE_2_AUX; end end else if(ac_transmit_mult_active == 1 && rb_in_mcr[25] == 0 && rb_in_mcr[17:16] == 3) begin // 2 Partitions Mode 3 XMCME <= rb_in_mcr[25]; XMCM <= rb_in_mcr[17:16]; if (request_request == 1) begin next <= PARTITIONS_2_MODE_3_A; end else begin next <= PARTITIONS_2_MODE_3_AUX; end end else if(ac_transmit_mult_active == 1 && rb_in_mcr[25] == 1 && rb_in_mcr[17:16] == 1) begin // 8 Partitions Mode 1 XMCME <= rb_in_mcr[25]; XMCM <= rb_in_mcr[17:16]; if (request_request == 1) begin next <= PARTITIONS_8_MODE_1; end else begin next <= PARTITIONS_8_MODE_1_AUX; end end else if(ac_transmit_mult_active == 1 && rb_in_mcr[25] == 1 && rb_in_mcr[17:16] == 2) begin // 8 Partitions Mode 2 XMCME <= rb_in_mcr[25]; XMCM <= rb_in_mcr[17:16]; if (request_request == 1) begin next <= PARTITIONS_8_MODE_2; end else begin next <= PARTITIONS_8_MODE_2_AUX; end end else if(ac_transmit_mult_active == 1 && rb_in_mcr[25] == 1 && rb_in_mcr[17:16] == 3 && rb_in_mcr[9] == 1) begin // 8 Partitions Mode 3 XMCME <= rb_in_mcr[25]; XMCM <= rb_in_mcr[17:16]; RMCME <= rb_in_mcr[9]; if (request_request == 1) begin next <= PARTITIONS_8_MODE_3; end else begin next <= PARTITIONS_8_MODE_3_AUX; end end else begin next <= SELECTION_MODE_AND_PARTITIONS; end end // ---------------------------------------------------------------- // NORMAL MODE 1 // ---------------------------------------------------------------- PARTITIONS_2_MODE_1_A: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_1_B; end else begin next <= PARTITIONS_2_MODE_1_WAIT; end end end PARTITIONS_2_MODE_1_B: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_1_A; end else begin next <= PARTITIONS_2_MODE_1_WAIT; end end end PARTITIONS_2_MODE_1_WAIT: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin if(dynamic_rb_in_mcr[20:18] % 2 == 1) begin //XCBLK <= dynamic_rb_in_mcr[20:18]; next <= PARTITIONS_2_MODE_1_A; end else begin next <= PARTITIONS_2_MODE_1_B; end end else begin next <= PARTITIONS_2_MODE_1_WAIT; end end end PARTITIONS_2_MODE_1_AUX: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_1_A; end else begin next <= PARTITIONS_2_MODE_1_AUX; end end end // ---------------------------------------------------------------- // NORMAL MODE 2 // ---------------------------------------------------------------- PARTITIONS_2_MODE_2_A: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_2_B; end else begin next <= PARTITIONS_2_MODE_2_WAIT; end end end PARTITIONS_2_MODE_2_B: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_2_A; end else begin next <= PARTITIONS_2_MODE_2_WAIT; end end end PARTITIONS_2_MODE_2_WAIT: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin if(dynamic_rb_in_mcr[20:18] % 2 == 1) begin //XCBLK <= dynamic_rb_in_mcr[20:18]; next <= PARTITIONS_2_MODE_2_A; end else begin next <= PARTITIONS_2_MODE_2_B; end end else begin next <= PARTITIONS_2_MODE_2_WAIT; end end end PARTITIONS_2_MODE_2_AUX: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_2_A; end else begin next <= PARTITIONS_2_MODE_2_AUX; end end end // ---------------------------------------------------------------- // NORMAL MODE 3 // ---------------------------------------------------------------- PARTITIONS_2_MODE_3_A: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_3_B; end else begin next <= PARTITIONS_2_MODE_3_WAIT; end end end PARTITIONS_2_MODE_3_B: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_3_A; end else begin next <= PARTITIONS_2_MODE_3_WAIT; end end end PARTITIONS_2_MODE_3_WAIT: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin if(dynamic_rb_in_mcr[4:2] % 2 == 1) begin //RCBLK <= dynamic_rb_in_mcr[4:2]; next <= PARTITIONS_2_MODE_3_A; end else begin next <= PARTITIONS_2_MODE_3_B; end end else begin next <= PARTITIONS_2_MODE_3_WAIT; end end end PARTITIONS_2_MODE_3_AUX: begin if(ac_transmit_mult_active == 0) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request == 1) begin next <= PARTITIONS_2_MODE_3_A; end else begin next <= PARTITIONS_2_MODE_3_AUX; end end end // ---------------------------------------------------------------- // ENHANCED MODE 1 // ---------------------------------------------------------------- PARTITIONS_8_MODE_1: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_1; end else begin next <= PARTITIONS_8_MODE_1_WAIT; end end end PARTITIONS_8_MODE_1_AUX: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_1; end else begin next <= PARTITIONS_8_MODE_1_WAIT; end end end PARTITIONS_8_MODE_1_WAIT: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_1; end else begin next <= PARTITIONS_8_MODE_1_WAIT; end end end // ---------------------------------------------------------------- // ENHANCED MODE 2 // ---------------------------------------------------------------- PARTITIONS_8_MODE_2: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_2; end else begin next <= PARTITIONS_8_MODE_2_WAIT; end end end PARTITIONS_8_MODE_2_AUX: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_2; end else begin next <= PARTITIONS_8_MODE_2_WAIT; end end end PARTITIONS_8_MODE_2_WAIT: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_2; end else begin next <= PARTITIONS_8_MODE_2_WAIT; end end end // ---------------------------------------------------------------- // ENHANCED MODE 3 // ---------------------------------------------------------------- PARTITIONS_8_MODE_3: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_3; end else begin next <= PARTITIONS_8_MODE_2_WAIT; end end end PARTITIONS_8_MODE_3_AUX: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_3; end else begin next <= PARTITIONS_8_MODE_3_WAIT; end end end PARTITIONS_8_MODE_2_WAIT: begin if(!ac_transmit_mult_active) begin next <= SELECTION_MODE_AND_PARTITIONS; end else begin if(request_request) begin next <= PARTITIONS_8_MODE_3; end else begin next <= PARTITIONS_8_MODE_3_WAIT; end end end default: begin next <= SELECTION_MODE_AND_PARTITIONS; end endcase end always_ff @(posedge clk, posedge reset) begin if(reset == 1) begin state <= SELECTION_MODE_AND_PARTITIONS; end else begin state <= next; case(state) SELECTION_MODE_AND_PARTITIONS: begin mult_out_ready <= 0; mult_out_unmasked_channel1[31:0] <= 0; mult_out_unmasked_channel2[31:0] <= 0; mult_out_unmasked_channel3[31:0] <= 0; mult_out_unmasked_channel4[31:0] <= 0; mult_out_enabled_channel1[31:0] <= 0; mult_out_enabled_channel2[31:0] <= 0; mult_out_enabled_channel3[31:0] <= 0; mult_out_enabled_channel4[31:0] <= 0; end // ---------------------------------------------------------------- // NORMAL MODE 1 // ---------------------------------------------------------------- PARTITIONS_2_MODE_1_AUX: begin mult_out_ready <= 0; mult_out_unmasked_channel1[31:0] <= 0; mult_out_unmasked_channel2[31:0] <= 0; mult_out_unmasked_channel3[31:0] <= 0; mult_out_unmasked_channel4[31:0] <= 0; mult_out_enabled_channel1[31:0] <= 0; mult_out_enabled_channel2[31:0] <= 0; mult_out_enabled_channel3[31:0] <= 0; mult_out_enabled_channel4[31:0] <= 0; end PARTITIONS_2_MODE_1_A: begin case(dynamic_rb_in_mcr[22:21])// XPABLK <= dynamic_rb_in_mcr[22:21]; 0: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 1: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 2: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 3: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end endcase end PARTITIONS_2_MODE_1_B: begin case(dynamic_rb_in_mcr[24:23]) // XPBBLK <= dynamic_rb_in_mcr[24:23]; 0: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 1: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 2: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 3: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end endcase end PARTITIONS_2_MODE_1_WAIT: begin mult_out_ready <= out_ready ; mult_out_unmasked_channel1[31:0] <= out_unmasked_channel1[31:0]; mult_out_unmasked_channel2[31:0] <= out_unmasked_channel2[31:0]; mult_out_unmasked_channel3[31:0] <= out_unmasked_channel3[31:0]; mult_out_unmasked_channel4[31:0] <= out_unmasked_channel4[31:0]; mult_out_enabled_channel1[31:0] <= out_enabled_channel1[31:0]; mult_out_enabled_channel2[31:0] <= out_enabled_channel2[31:0]; mult_out_enabled_channel3[31:0] <= out_enabled_channel3[31:0]; mult_out_enabled_channel4[31:0] <= out_enabled_channel4[31:0]; end // ---------------------------------------------------------------- // NORMAL MODE 2 // ---------------------------------------------------------------- PARTITIONS_2_MODE_2_AUX: begin mult_out_ready <= 0; mult_out_unmasked_channel1[31:0] <= 0; mult_out_unmasked_channel2[31:0] <= 0; mult_out_unmasked_channel3[31:0] <= 0; mult_out_unmasked_channel4[31:0] <= 0; mult_out_enabled_channel1[31:0] <= 0; mult_out_enabled_channel2[31:0] <= 0; mult_out_enabled_channel3[31:0] <= 0; mult_out_enabled_channel4[31:0] <= 0; end PARTITIONS_2_MODE_2_A: begin case(dynamic_rb_in_mcr[22:21]) // XPABLK <= dynamic_rb_in_mcr[22:21] 0: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 1: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 2: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 3: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end endcase end PARTITIONS_2_MODE_2_B: begin case(dynamic_rb_in_mcr[24:23]) // XPBBLK <= dynamic_rb_in_mcr[24:23]; 0: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 1: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 2: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 3: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end endcase end PARTITIONS_2_MODE_2_WAIT: begin mult_out_ready <= out_ready ; mult_out_unmasked_channel1[31:0] <= out_unmasked_channel1[31:0]; mult_out_unmasked_channel2[31:0] <= out_unmasked_channel2[31:0]; mult_out_unmasked_channel3[31:0] <= out_unmasked_channel3[31:0]; mult_out_unmasked_channel4[31:0] <= out_unmasked_channel4[31:0]; mult_out_enabled_channel1[31:0] <= out_enabled_channel1[31:0]; mult_out_enabled_channel2[31:0] <= out_enabled_channel2[31:0]; mult_out_enabled_channel3[31:0] <= out_enabled_channel3[31:0]; mult_out_enabled_channel4[31:0] <= out_enabled_channel4[31:0]; end // ---------------------------------------------------------------- // NORMAL MODE 3 // ---------------------------------------------------------------- PARTITIONS_2_MODE_3_AUX: begin mult_out_ready <= 0; mult_out_unmasked_channel1[31:0] <= 0; mult_out_unmasked_channel2[31:0] <= 0; mult_out_unmasked_channel3[31:0] <= 0; mult_out_unmasked_channel4[31:0] <= 0; mult_out_enabled_channel1[31:0] <= 0; mult_out_enabled_channel2[31:0] <= 0; mult_out_enabled_channel3[31:0] <= 0; mult_out_enabled_channel4[31:0] <= 0; end PARTITIONS_2_MODE_3_A: begin case(dynamic_rb_in_mcr[6:5])// RPABLK <= dynamic_rb_in_mcr[6:5]; 0: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel1[15:0] <= dynamic_rb_in_rcer0[15:0];//RCEA <= dynamic_rb_in_rcer0[15:0]; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 1: begin mult_out_ready <= 1; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel2[15:0] <= dynamic_rb_in_rcer0[15:0];//RCEA <= dynamic_rb_in_rcer0[15:0]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 2: begin mult_out_ready <= 1; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel4[15:0] <= 0; mult_out_enabled_channel3[15:0] <= dynamic_rb_in_rcer0[15:0];//RCEA <= dynamic_rb_in_rcer0[15:0]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel4[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 3: begin mult_out_ready <= 1; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer0[15:0]; //XCEA <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel1[15:0] <= 0; mult_out_unmasked_channel2[15:0] <= 0; mult_out_unmasked_channel3[15:0] <= 0; mult_out_enabled_channel4[15:0] <= dynamic_rb_in_rcer0[15:0];//RCEA <= dynamic_rb_in_rcer0[15:0]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel3[15:0] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end endcase end PARTITIONS_2_MODE_3_B: begin case(dynamic_rb_in_mcr[8:7]) //RPBBLK <= dynamic_rb_in_mcr[8:7]; 0: begin mult_out_ready <= 1; mult_out_unmasked_channel1[31:16] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel2[31:16] <= 0; mult_out_unmasked_channel3[31:16] <= 0; mult_out_unmasked_channel4[31:16] <= 0; mult_out_enabled_channel1[31:16] <= dynamic_rb_in_rcer0[31:16];//RCEB <= dynamic_rb_in_rcer0[31:16]; mult_out_enabled_channel2[31:16] <= 0; mult_out_enabled_channel3[31:16] <= 0; mult_out_enabled_channel4[31:16] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 1: begin mult_out_ready <= 1; mult_out_unmasked_channel2[31:16] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel1[31:16] <= 0; mult_out_unmasked_channel3[31:16] <= 0; mult_out_unmasked_channel4[31:16] <= 0; mult_out_enabled_channel2[31:16] <= dynamic_rb_in_rcer0[31:16];//RCEB <= dynamic_rb_in_rcer0[31:16]; mult_out_enabled_channel1[31:16] <= 0; mult_out_enabled_channel3[31:16] <= 0; mult_out_enabled_channel4[31:16] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 2: begin mult_out_ready <= 1; mult_out_unmasked_channel3[31:16] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel1[31:16] <= 0; mult_out_unmasked_channel2[31:16] <= 0; mult_out_unmasked_channel4[31:16] <= 0; mult_out_enabled_channel3[31:16] <= dynamic_rb_in_rcer0[31:16];//RCEB <= dynamic_rb_in_rcer0[31:16]; mult_out_enabled_channel1[31:16] <= 0; mult_out_enabled_channel2[31:16] <= 0; mult_out_enabled_channel4[31:16] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end 3: begin mult_out_ready <= 1; mult_out_unmasked_channel4[31:16] <= dynamic_rb_in_xcer0[31:16]; //XCEB <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel1[31:16] <= 0; mult_out_unmasked_channel2[31:16] <= 0; mult_out_unmasked_channel3[31:16] <= 0; mult_out_enabled_channel4[31:16] <= dynamic_rb_in_rcer0[31:16];//RCEB <= dynamic_rb_in_rcer0[31:16]; mult_out_enabled_channel1[31:16] <= 0; mult_out_enabled_channel2[31:16] <= 0; mult_out_enabled_channel3[31:16] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end endcase end PARTITIONS_2_MODE_3_WAIT: begin mult_out_ready <= out_ready ; mult_out_unmasked_channel1[31:0] <= out_unmasked_channel1[31:0]; mult_out_unmasked_channel2[31:0] <= out_unmasked_channel2[31:0]; mult_out_unmasked_channel3[31:0] <= out_unmasked_channel3[31:0]; mult_out_unmasked_channel4[31:0] <= out_unmasked_channel4[31:0]; mult_out_enabled_channel1[31:0] <= out_enabled_channel1[31:0]; mult_out_enabled_channel2[31:0] <= out_enabled_channel2[31:0]; mult_out_enabled_channel3[31:0] <= out_enabled_channel3[31:0]; mult_out_enabled_channel4[31:0] <= out_enabled_channel4[31:0]; end // ---------------------------------------------------------------- // ENHANCED MODE 1 // ---------------------------------------------------------------- PARTITIONS_8_MODE_1_AUX: begin mult_out_ready <= 0; mult_out_unmasked_channel1[31:0] <= 0; mult_out_unmasked_channel2[31:0] <= 0; mult_out_unmasked_channel3[31:0] <= 0; mult_out_unmasked_channel4[31:0] <= 0; mult_out_enabled_channel1[31:0] <= 0; mult_out_enabled_channel2[31:0] <= 0; mult_out_enabled_channel3[31:0] <= 0; mult_out_enabled_channel4[31:0] <= 0; end PARTITIONS_8_MODE_1: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[15:0];// XBlock0 <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel1[31:16] <= dynamic_rb_in_xcer0[31:16];// XBlock0 <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer1[15:0];// XBlock1 <= dynamic_rb_in_xcer1[15:0]; mult_out_unmasked_channel2[31:16] <= dynamic_rb_in_xcer1[31:16];// XBlock1 <= dynamic_rb_in_xcer1[31:16]; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer2[15:0];// XBlock2 <= dynamic_rb_in_xcer2[15:0]; mult_out_unmasked_channel3[31:16] <= dynamic_rb_in_xcer2[31:16];// XBlock2 <= dynamic_rb_in_xcer2[31:16]; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer3[15:0];// XBlock3 <= dynamic_rb_in_xcer3[15:0]; mult_out_unmasked_channel4[31:16] <= dynamic_rb_in_xcer3[31:16];// XBlock3 <= dynamic_rb_in_xcer3[31:16]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel1[31:16] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel2[31:16] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel3[31:16] <= 0; mult_out_enabled_channel4[15:0] <= 0; mult_out_enabled_channel4[31:16] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end PARTITIONS_8_MODE_1_WAIT: begin mult_out_ready <= out_ready ; mult_out_unmasked_channel1[31:0] <= out_unmasked_channel1[31:0]; mult_out_unmasked_channel2[31:0] <= out_unmasked_channel2[31:0]; mult_out_unmasked_channel3[31:0] <= out_unmasked_channel3[31:0]; mult_out_unmasked_channel4[31:0] <= out_unmasked_channel4[31:0]; mult_out_enabled_channel1[31:0] <= out_enabled_channel1[31:0]; mult_out_enabled_channel2[31:0] <= out_enabled_channel2[31:0]; mult_out_enabled_channel3[31:0] <= out_enabled_channel3[31:0]; mult_out_enabled_channel4[31:0] <= out_enabled_channel4[31:0]; end // ---------------------------------------------------------------- // ENHANCED MODE 2 // ---------------------------------------------------------------- PARTITIONS_8_MODE_2_AUX: begin mult_out_ready <= 0; mult_out_unmasked_channel1[31:0] <= 0; mult_out_unmasked_channel2[31:0] <= 0; mult_out_unmasked_channel3[31:0] <= 0; mult_out_unmasked_channel4[31:0] <= 0; mult_out_enabled_channel1[31:0] <= 0; mult_out_enabled_channel2[31:0] <= 0; mult_out_enabled_channel3[31:0] <= 0; mult_out_enabled_channel4[31:0] <= 0; end PARTITIONS_8_MODE_2: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[15:0];// XBlock0 <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel1[31:16] <= dynamic_rb_in_xcer0[31:16];// XBlock0 <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer1[15:0];// XBlock1 <= dynamic_rb_in_xcer1[15:0]; mult_out_unmasked_channel2[31:16] <= dynamic_rb_in_xcer1[31:16];// XBlock1 <= dynamic_rb_in_xcer1[31:16]; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer2[15:0];// XBlock2 <= dynamic_rb_in_xcer2[15:0]; mult_out_unmasked_channel3[31:16] <= dynamic_rb_in_xcer2[31:16];// XBlock2 <= dynamic_rb_in_xcer2[31:16]; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer3[15:0];// XBlock3 <= dynamic_rb_in_xcer3[15:0]; mult_out_unmasked_channel4[31:16] <= dynamic_rb_in_xcer3[31:16];// XBlock3 <= dynamic_rb_in_xcer3[31:16]; mult_out_enabled_channel1[15:0] <= 0; mult_out_enabled_channel1[31:16] <= 0; mult_out_enabled_channel2[15:0] <= 0; mult_out_enabled_channel2[31:16] <= 0; mult_out_enabled_channel3[15:0] <= 0; mult_out_enabled_channel3[31:16] <= 0; mult_out_enabled_channel4[15:0] <= 0; mult_out_enabled_channel4[31:16] <= 0; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end PARTITIONS_8_MODE_2_WAIT: begin mult_out_ready <= out_ready ; mult_out_unmasked_channel1[31:0] <= out_unmasked_channel1[31:0]; mult_out_unmasked_channel2[31:0] <= out_unmasked_channel2[31:0]; mult_out_unmasked_channel3[31:0] <= out_unmasked_channel3[31:0]; mult_out_unmasked_channel4[31:0] <= out_unmasked_channel4[31:0]; mult_out_enabled_channel1[31:0] <= out_enabled_channel1[31:0]; mult_out_enabled_channel2[31:0] <= out_enabled_channel2[31:0]; mult_out_enabled_channel3[31:0] <= out_enabled_channel3[31:0]; mult_out_enabled_channel4[31:0] <= out_enabled_channel4[31:0]; end // ---------------------------------------------------------------- // ENHANCED MODE 3 // ---------------------------------------------------------------- PARTITIONS_8_MODE_3_AUX: begin mult_out_ready <= 0; mult_out_unmasked_channel1[31:0] <= 0; mult_out_unmasked_channel2[31:0] <= 0; mult_out_unmasked_channel3[31:0] <= 0; mult_out_unmasked_channel4[31:0] <= 0; mult_out_enabled_channel1[31:0] <= 0; mult_out_enabled_channel2[31:0] <= 0; mult_out_enabled_channel3[31:0] <= 0; mult_out_enabled_channel4[31:0] <= 0; end PARTITIONS_8_MODE_3: begin mult_out_ready <= 1; mult_out_unmasked_channel1[15:0] <= dynamic_rb_in_xcer0[15:0];// XBlock0 <= dynamic_rb_in_xcer0[15:0]; mult_out_unmasked_channel1[31:16] <= dynamic_rb_in_xcer0[31:16];// XBlock0 <= dynamic_rb_in_xcer0[31:16]; mult_out_unmasked_channel2[15:0] <= dynamic_rb_in_xcer1[15:0];// XBlock1 <= dynamic_rb_in_xcer1[15:0]; mult_out_unmasked_channel2[31:16] <= dynamic_rb_in_xcer1[31:16];// XBlock1 <= dynamic_rb_in_xcer1[31:16]; mult_out_unmasked_channel3[15:0] <= dynamic_rb_in_xcer2[15:0];// XBlock2 <= dynamic_rb_in_xcer2[15:0]; mult_out_unmasked_channel3[31:16] <= dynamic_rb_in_xcer2[31:16];// XBlock2 <= dynamic_rb_in_xcer2[31:16]; mult_out_unmasked_channel4[15:0] <= dynamic_rb_in_xcer3[15:0];// XBlock3 <= dynamic_rb_in_xcer3[15:0]; mult_out_unmasked_channel4[31:16] <= dynamic_rb_in_xcer3[31:16];// XBlock3 <= dynamic_rb_in_xcer3[31:16]; mult_out_enabled_channel1[15:0] <= dynamic_rb_in_rcer0[15:0];// RBlock0 <= dynamic_rb_in_rcer0[15:0]; mult_out_enabled_channel1[31:16] <= dynamic_rb_in_rcer0[31:16];// RBlock0 <= dynamic_rb_in_rcer0[31:16]; mult_out_enabled_channel2[15:0] <= dynamic_rb_in_rcer1[15:0];// RBlock1 <= dynamic_rb_in_rcer1[15:0]; mult_out_enabled_channel2[31:16] <= dynamic_rb_in_rcer1[31:16];// RBlock1 <= dynamic_rb_in_rcer1[31:16]; mult_out_enabled_channel3[15:0] <= dynamic_rb_in_rcer2[15:0];// RBlock2 <= dynamic_rb_in_rcer2[15:0]; mult_out_enabled_channel3[31:16] <= dynamic_rb_in_rcer2[31:16];// RBlock2 <= dynamic_rb_in_rcer2[31:16]; mult_out_enabled_channel4[15:0] <= dynamic_rb_in_rcer3[15:0];// RBlock3 <= dynamic_rb_in_rcer3[15:0]; mult_out_enabled_channel4[31:16] <= dynamic_rb_in_rcer3[31:16];// RBlock3 <= dynamic_rb_in_rcer3[31:16]; out_ready <= mult_out_ready; out_unmasked_channel1[31:0] <= mult_out_unmasked_channel1[31:0]; out_unmasked_channel2[31:0] <= mult_out_unmasked_channel2[31:0]; out_unmasked_channel3[31:0] <= mult_out_unmasked_channel3[31:0]; out_unmasked_channel4[31:0] <= mult_out_unmasked_channel4[31:0]; out_enabled_channel1[31:0] <= mult_out_enabled_channel1[31:0]; out_enabled_channel2[31:0] <= mult_out_enabled_channel2[31:0]; out_enabled_channel3[31:0] <= mult_out_enabled_channel3[31:0]; out_enabled_channel4[31:0] <= mult_out_enabled_channel4[31:0]; end PARTITIONS_8_MODE_3_WAIT: begin mult_out_ready <= out_ready ; mult_out_unmasked_channel1[31:0] <= out_unmasked_channel1[31:0]; mult_out_unmasked_channel2[31:0] <= out_unmasked_channel2[31:0]; mult_out_unmasked_channel3[31:0] <= out_unmasked_channel3[31:0]; mult_out_unmasked_channel4[31:0] <= out_unmasked_channel4[31:0]; mult_out_enabled_channel1[31:0] <= out_enabled_channel1[31:0]; mult_out_enabled_channel2[31:0] <= out_enabled_channel2[31:0]; mult_out_enabled_channel3[31:0] <= out_enabled_channel3[31:0]; mult_out_enabled_channel4[31:0] <= out_enabled_channel4[31:0]; end endcase end end endmodule // //rb_in_mcr Fields // XMCME <= rb_in_mcr[25]; // XPBBLK <= rb_in_mcr[24:23]; // XPABLK <= rb_in_mcr[22:21]; // XCBLK <= rb_in_mcr[20:18]; // XMCM <= rb_in_mcr[17:16]; // RMCME <= rb_in_mcr[9]; // RPBBLK <= rb_in_mcr[8:7]; // RPABLK <= rb_in_mcr[6:5]; // RCBLK <= rb_in_mcr[4:2]; // RMCM <= rb_in_mcr[0]; // // //XCER Fields // XCEB <= rb_in_xcer0[31:16]; // XCEA <= rb_in_xcer0[15:0]; // // //RCER Fields // RCEB <= rb_in_rcer0[31:16]; // RCEA <= rb_in_rcer0[15:0]; // // //XCERn Fields. // XBlock0 <= rb_in_xcer0[15:0]; // XBlock1 <= rb_in_xcer0[31:16]; // // XBlock2 <= rb_in_xcer1[15:0]; // XBlock3 <= rb_in_xcer1[31:16]; // // XBlock4 <= rb_in_xcer2[15:0]; // XBlock5 <= rb_in_xcer2[31:16]; // // XBlock6 <= rb_in_xcer3[15:0]; // XBlock7 <= rb_in_xcer3[31:16]; // // //RCERn Fields. // RBlock0 <= rb_in_rcer0[15:0]; // RBlock1 <= rb_in_rcer0[31:16]; // // RBlock2 <= rb_in_rcer1[15:0]; // RBlock3 <= rb_in_rcer1[31:16]; // // RBlock4 <= rb_in_rcer2[15:0]; // RBlock5 <= rb_in_rcer2[31:16]; // // RBlock6 <= rb_in_rcer3[15:0]; // RBlock7 <= rb_in_rcer3[31:16]; // //MCR Fields // XMCME <= dynamic_rb_in_mcr[25]; // XPBBLK <= dynamic_rb_in_mcr[24:23]; // XPABLK <= dynamic_rb_in_mcr[22:21]; // XCBLK <= dynamic_rb_in_mcr[20:18]; // XMCM <= dynamic_rb_in_mcr[17:16]; // RMCME <= dynamic_rb_in_mcr[9]; // RPBBLK <= dynamic_rb_in_mcr[8:7]; // RPABLK <= dynamic_rb_in_mcr[6:5]; // RCBLK <= dynamic_rb_in_mcr[4:2]; // RMCM <= dynamic_rb_in_mcr[0]; // // //XCER Fields // XCEB <= dynamic_rb_in_xcer0[31:16]; // XCEA <= dynamic_rb_in_xcer0[15:0]; // // //RCER Fields // RCEB <= dynamic_rb_in_rcer0[31:16]; // RCEA <= dynamic_rb_in_rcer0[15:0]; // // //XCERn Fields. // XBlock0 <= dynamic_rb_in_xcer0[15:0]; // XBlock1 <= dynamic_rb_in_xcer0[31:16]; // // XBlock2 <= dynamic_rb_in_xcer1[15:0]; // XBlock3 <= dynamic_rb_in_xcer1[31:16]; // // XBlock4 <= dynamic_rb_in_xcer2[15:0]; // XBlock5 <= dynamic_rb_in_xcer2[31:16]; // // XBlock6 <= dynamic_rb_in_xcer3[15:0]; // XBlock7 <= dynamic_rb_in_xcer3[31:16]; // // //RCERn Fields. // RBlock0 <= dynamic_rb_in_rcer0[15:0]; // RBlock1 <= dynamic_rb_in_rcer0[31:16]; // // RBlock2 <= dynamic_rb_in_rcer1[15:0]; // RBlock3 <= dynamic_rb_in_rcer1[31:16]; // // RBlock4 <= dynamic_rb_in_rcer2[15:0]; // RBlock5 <= dynamic_rb_in_rcer2[31:16]; // // RBlock6 <= dynamic_rb_in_rcer3[15:0]; // RBlock7 <= dynamic_rb_in_rcer3[31:16];