// or more if there were outstanding memory transactions.
input[FRAME_HEIGHT_BITS-1:0]line_unfinished_src,// number of the current (unfinished ) line, in the source (sensor) channel (RELATIVE TO FRAME, NOT WINDOW?)
input[LAST_FRAME_BITS-1:0]frame_number_src,// current frame number (for multi-frame ranges) in the source (sensor) channel
inputframe_done_src,// single-cycle pulse when the full frame (window) was transferred to/from DDR3 memory
...
...
@@ -77,7 +80,8 @@ module cmprs_frame_sync#(
input[FRAME_HEIGHT_BITS-1:0]line_unfinished,// number of the current (unfinished ) line in this (compressor) channel
input[LAST_FRAME_BITS-1:0]frame_number,// current frame number (for multi-frame ranges) in this (compressor channel
inputframes_in_sync,// frame number in destination memory channel is valid for bonded mode
inputframe_done,// input - single-cycle pulse when the full frame (window) was transferred to/from DDR3 memory
inputframe_done,// input - single-cycle pulse when the full frame (window) was transferred to/from DDR3 memory\
inputlast_mb_started,// @ xclk - last mb started running, safe to assume memory channel is done
outputregsuspend,// suspend reading data for this channel - waiting for the source data
inputstuffer_running,// @xclk2x stuffer is running/flushing
...
...
@@ -115,6 +119,7 @@ module cmprs_frame_sync#(
regcmprs_en_d;
regsuspend_end;// suspend at the end of the current frame until frame number changes
// or more if there were outstanding memory transactions.
input[4*FRAME_HEIGHT_BITS-1:0]line_unfinished_src,// number of the current (unfinished ) line, in the source (sensor) channel (RELATIVE TO FRAME, NOT WINDOW?)
input[4*LAST_FRAME_BITS-1:0]frame_number_src,// current frame number (for multi-frame ranges) in the source (sensor) channel
input[3:0]frame_done_src,// single-cycle pulse when the full frame (window) was transferred to/from DDR3 memory
// or more if there were outstanding memory transactions.
input[FRAME_HEIGHT_BITS-1:0]line_unfinished_src,// number of the current (unfinished ) line, in the source (sensor) channel (RELATIVE TO FRAME, NOT WINDOW?)
input[LAST_FRAME_BITS-1:0]frame_number_src,// current frame number (for multi-frame ranges) in the source (sensor) channel
inputframe_done_src,// single-cycle pulse when the full frame (window) was transferred to/from DDR3 memory
...
...
@@ -582,7 +585,8 @@ module jp_channel#(
.rst(!cmprs_en_mclk),
.src_clk(mclk),
.dst_clk(hclk),
.in_pulse(frame_start_dst),
// .in_pulse (frame_start_dst),
.in_pulse(frame_start_conf),
.out_pulse(dbg_frame_start_hclk),
.busy());
...
...
@@ -725,7 +729,8 @@ module jp_channel#(
.color_sat_we(set_color_saturation_w),// input - write color saturation values
.coring_we(set_coring_w),// input - write color saturation values
.di(cmd_data),// input[31:0] - 32-bit data to write to control register (24LSB are used)
.frame_start(frame_start_dst),// input @mclk
// .frame_start (frame_start_dst), // input @mclk
.frame_start(frame_start_conf),// input @mclk
.frame_start_xclk(frame_start_xclk),// output re-clocked, parameters are copied during this pulse
.cmprs_en_mclk(cmprs_en_mclk),// output
.cmprs_en_extend(cmprs_en_extend),// input
...
...
@@ -796,6 +801,8 @@ module jp_channel#(
.frame_start_dst(frame_start_dst),// output reg @mclk - trigger receive (tiled) memory channel (it will take care of
// single/repetitive modes itself this output either follows vsync_late (reclocks it)
// or generated in non-bonded mode (compress from memory once)
parameterMCONTR_LINTILE_SKIP_LATE=12,// skip actual R/W operation when it is too late, advance pointers
parameterMCONTR_LINTILE_COPY_FRAME=13,// copy frame number from the master channel (single event, not a persistent mode)
parameterMCONTR_LINTILE_ABORT_LATE=14,// abort frame if not finished by the new frame sync (wait pending memory)
parameterMCNTRL_SCANLINE_DLY_WIDTH=12,// delay start pulse by 1..64 mclk
parameterMCNTRL_SCANLINE_DLY_DEFAULT=63// initial delay value for start pulse
...
...
@@ -343,6 +344,7 @@ module mcntrl393 #(
input[3:0]cmprs_frame_start_dst,// @mclk - trigger receive (tiledc) memory channel (it will take care of single/repetitive
// these output either follows vsync_late (reclocks it) or generated in non-bonded mode
// (compress from memory)
output[3:0]cmprs_frame_start_conf,// @mclk lags by 1 from cmprs_frame_start_dst, more if there are outstanding memory transactions
output[4*FRAME_HEIGHT_BITS-1:0]cmprs_line_unfinished_src,// number of the current (unfinished ) line, in the source (sensor) channel (RELATIVE TO FRAME, NOT WINDOW?)
output[4*LAST_FRAME_BITS-1:0]cmprs_frame_number_src,// current frame number (for multi-frame ranges) in the source (sensor) channel
output[3:0]cmprs_frame_done_src,// single-cycle pulse when the full frame (window) was transferred to/from DDR3 memory
dw.append(("disable_need",vrlg.MCONTR_LINTILE_DIS_NEED,1,0,"disable 'need' generation, only 'want' (compressor channels)"))
dw.append(("skip_too_late",vrlg.MCONTR_LINTILE_SKIP_LATE,1,0,"Skip over missed blocks to preserve frame structure (increment pointers)"))
dw.append(("copy_frame",vrlg.MCONTR_LINTILE_COPY_FRAME,1,0,"Copy frame number from the master (sensor) channel. Combine with reset_frame to reset bjuffer"))
dw.append(("abort_late",vrlg.MCONTR_LINTILE_ABORT_LATE,1,0,"abort frame if not finished by the new frame sync (wait pending memory transfers)"))