output[COLADDR_NUMBER-4:0]xfer_col,// start memory column in 8-bursts
output[COLADDR_NUMBER-4:0]xfer_col,// start memory column in 8-bursts
output[NUM_XFER_BITS-1:0]xfer_num128,// number of 128-bit words to transfer (8*16 bits) - full bursts of 8 ( 0 - maximal length, 64)
output[NUM_XFER_BITS-1:0]xfer_num128,// number of 128-bit words to transfer (8*16 bits) - full bursts of 8 ( 0 - maximal length, 64)
outputxfer_partial,// partial tile (first of 2) , sequencer will not generate page_next at the end of block
inputxfer_done,// transfer to/from the buffer finished
inputxfer_done,// transfer to/from the buffer finished
outputxfer_reset_page// reset internal buffer page to zero
outputxfer_reset_page// reset internal buffer page to zero
// output [1:0] xfer_page // page number for transfer (goes to channel buffer memory-side adderss)
// output [1:0] xfer_page // page number for transfer (goes to channel buffer memory-side adderss)
...
@@ -96,14 +97,23 @@ module mcntrl_linear_rw #(
...
@@ -96,14 +97,23 @@ module mcntrl_linear_rw #(
reglast_in_row;
reglast_in_row;
reg[COLADDR_NUMBER-3:0]mem_page_left;// number of 8-bursts left in the pointed memory page
reg[COLADDR_NUMBER-3:0]mem_page_left;// number of 8-bursts left in the pointed memory page
reg[NUM_XFER_BITS:0]lim_by_xfer;// number of bursts left limited by the longest transfer (currently 64)
reg[NUM_XFER_BITS:0]lim_by_xfer;// number of bursts left limited by the longest transfer (currently 64)
// reg [MAX_TILE_WIDTH:0] lim_by_tile_width; // number of bursts left limited by the longest transfer (currently 64)
wire[COLADDR_NUMBER-3:0]remainder_in_xfer;//remainder_tile_width; // number of bursts postponed to the next partial tile (because of the page crossing) MSB-sign
regcontinued_xfer;//continued_tile; // this is a continued tile (caused by page crossing) - only once
reg[NUM_XFER_BITS-1:0]leftover;//[MAX_TILE_WIDTH-1:0] leftover_cols; // valid with continued_tile, number of columns left
reg[NUM_XFER_BITS:0]xfer_num128_r;// number of 128-bit words to transfer (8*16 bits) - full bursts of 8
reg[NUM_XFER_BITS:0]xfer_num128_r;// number of 128-bit words to transfer (8*16 bits) - full bursts of 8
// reg [NUM_XFER_BITS-1:0] xfer_num128_m1_r; // number of 128-bit words to transfer minus 1 (8*16 bits) - full bursts of 8
// reg [NUM_XFER_BITS-1:0] xfer_num128_m1_r; // number of 128-bit words to transfer minus 1 (8*16 bits) - full bursts of 8
wirepgm_param_w;// program one of the parameters, invalidate calculated results for PAR_MOD_LATENCY
wirepgm_param_w;// program one of the parameters, invalidate calculated results for PAR_MOD_LATENCY
reg[2:0]xfer_start_r;
reg[2:0]xfer_start_r;
reg[PAR_MOD_LATENCY-1:0]par_mod_r;
reg[PAR_MOD_LATENCY-1:0]par_mod_r;
reg[PAR_MOD_LATENCY-1:0]recalc_r;// 1-hot CE for re-calculating registers
wirecalc_valid;// calculated registers have valid values
wirecalc_valid;// calculated registers have valid values
wirechn_en;// enable requests by channle (continue ones in progress)
wirechn_en;// enable requests by channle (continue ones in progress)
wirechn_rst;// resets command, including fifo;
wirechn_rst;// resets command, including fifo;
regchn_rst_d;// delayed by 1 cycle do detect turning off