Commit fe0f5941 authored by Andrey Filippov's avatar Andrey Filippov
Browse files

Made separate control for sesnort histograms, channel enable and bit width

parent 35cce7c8
Loading
Loading
Loading
Loading
+8 −5
Original line number Original line Diff line number Diff line
@@ -355,11 +355,14 @@
    parameter SENSOR_CTRL_RADDR =         0, // relative to SENSOR_GROUP_ADDR
    parameter SENSOR_CTRL_RADDR =         0, // relative to SENSOR_GROUP_ADDR
    parameter SENSOR_CTRL_ADDR_MASK =    'h7ff, //
    parameter SENSOR_CTRL_ADDR_MASK =    'h7ff, //
        // bits of the SENSOR mode register
        // bits of the SENSOR mode register
        parameter SENSOR_MODE_WIDTH =     10,
        parameter SENSOR_HIST_EN_BITS =    0,  // 0..3 1 - enable histogram modules, disable after processing the started frame
        parameter SENSOR_HIST_EN_BITS =    0,  // 0..3 1 - enable histogram modules, disable after processing the started frame
        parameter SENSOR_HIST_NRST_BITS =  4,  // 0 - immediately reset all histogram modules
        parameter SENSOR_HIST_NRST_BITS =  4,  // 0 - immediately reset all histogram modules
        parameter SENSOR_CHN_EN_BIT =      8,  // 1 - this enable channel
        parameter SENSOR_HIST_BITS_SET  =  8,  // 1 - set bits 0..7 (en and nrst)
        parameter SENSOR_16BIT_BIT =       9, // 0 - 8 bpp mode, 1 - 16 bpp (bypass gamma). Gamma-processed data is still used for histograms
        parameter SENSOR_CHN_EN_BIT =      9,  // 1 - this enable channel
        parameter SENSOR_CHN_EN_BIT_SET = 10,  // set SENSOR_CHN_EN_BIT bit
        parameter SENSOR_16BIT_BIT =      11,  // 0 - 8 bpp mode, 1 - 16 bpp (bypass gamma). Gamma-processed data is still used for histograms
        parameter SENSOR_16BIT_BIT_SET =  12,  // set 8/16 bit mode
//        parameter SENSOR_MODE_WIDTH =     13,


    parameter SENSI2C_CTRL_RADDR =        2, // 302..'h303
    parameter SENSI2C_CTRL_RADDR =        2, // 302..'h303
    parameter SENSI2C_CTRL_MASK =     'h7fe,
    parameter SENSI2C_CTRL_MASK =     'h7fe,
+1 −1
Original line number Original line Diff line number Diff line
@@ -244,7 +244,7 @@ module mcntrl_tiled_rw#(
    reg                     [4:0] frame_start_r; // increased length to have time from line_unfinished to suspend (external)
    reg                     [4:0] frame_start_r; // increased length to have time from line_unfinished to suspend (external)
//    reg                           rst_frame_num_d;
//    reg                           rst_frame_num_d;
    
    
    reg        [MAX_TILE_WIDTH:0] tile_cols;  // full number of columns in a tile
    reg        [MAX_TILE_WIDTH:0] tile_cols;  // full number of columns in a tile (in bursts?)
//    reg       [MAX_TILE_HEIGHT:0] tile_rows;  // full number of rows in a tile
//    reg       [MAX_TILE_HEIGHT:0] tile_rows;  // full number of rows in a tile
//    reg     [MAX_TILE_HEIGHT-1:0] tile_rows;  // full number of rows in a tile
//    reg     [MAX_TILE_HEIGHT-1:0] tile_rows;  // full number of rows in a tile
    reg       [MAX_TILE_HEIGHT:0] tile_rows;  // full number of rows in a tile
    reg       [MAX_TILE_HEIGHT:0] tile_rows;  // full number of rows in a tile
+14 −8
Original line number Original line Diff line number Diff line
@@ -128,6 +128,7 @@ CLK_STATUS_REG_ADDR__TYPE = str
MCONTR_TOP_16BIT_STATUS_CNTRL__TYPE = str
MCONTR_TOP_16BIT_STATUS_CNTRL__TYPE = str
HIST_SAXI_ADDR_MASK = int
HIST_SAXI_ADDR_MASK = int
CONTROL_RBACK_ADDR_MASK = int
CONTROL_RBACK_ADDR_MASK = int
SENSOR_CHN_EN_BIT_SET__RAW = str
CMPRS_CBIT_QBANK__TYPE = str
CMPRS_CBIT_QBANK__TYPE = str
CLKOUT_DIV_PCLK__RAW = str
CLKOUT_DIV_PCLK__RAW = str
SENS_GAMMA_CTRL__RAW = str
SENS_GAMMA_CTRL__RAW = str
@@ -313,7 +314,7 @@ MULTICLK_MULT = int
SENS_LENS_POST_SCALE_MASK = int
SENS_LENS_POST_SCALE_MASK = int
MEMCLK_PERIOD = float
MEMCLK_PERIOD = float
BUF_IPCLK2X_SENS1__RAW = str
BUF_IPCLK2X_SENS1__RAW = str
SENSOR_MODE_WIDTH__RAW = str
HISTOGRAM_WIDTH__RAW = str
SENS_LENS_FAT0_OUT_MASK = int
SENS_LENS_FAT0_OUT_MASK = int
SENS_SYNC_MULT__TYPE = str
SENS_SYNC_MULT__TYPE = str
NUM_CYCLES_27__RAW = str
NUM_CYCLES_27__RAW = str
@@ -439,7 +440,7 @@ MULT_SAXI_CNTRL_STATUS__TYPE = str
CMPRS_FRMT_MBRM1_BITS__RAW = str
CMPRS_FRMT_MBRM1_BITS__RAW = str
SCANLINE_EXTRA_PAGES = int
SCANLINE_EXTRA_PAGES = int
LD_DLY_LANE1_ODELAY__RAW = str
LD_DLY_LANE1_ODELAY__RAW = str
LOGGER_CONF_EN_BITS__RAW = str
SENSOR_CHN_EN_BIT_SET__TYPE = str
SENS_CTRL_IGNORE_EMBED__TYPE = str
SENS_CTRL_IGNORE_EMBED__TYPE = str
SENS_LENS_FAT0_IN_MASK__TYPE = str
SENS_LENS_FAT0_IN_MASK__TYPE = str
RSEL = int
RSEL = int
@@ -561,6 +562,7 @@ SENSOR_FIFO_DELAY__RAW = str
DLY_SET = int
DLY_SET = int
CMDFRAMESEQ_CTRL__TYPE = str
CMDFRAMESEQ_CTRL__TYPE = str
HISPI_FIFO_DEPTH__RAW = str
HISPI_FIFO_DEPTH__RAW = str
SENSOR_HIST_BITS_SET__RAW = str
NUM_CYCLES_12 = int
NUM_CYCLES_12 = int
MCNTRL_SCANLINE_FRAME_PAGE_RESET__TYPE = str
MCNTRL_SCANLINE_FRAME_PAGE_RESET__TYPE = str
MCNTRL_TILED_CHN2_ADDR__TYPE = str
MCNTRL_TILED_CHN2_ADDR__TYPE = str
@@ -591,6 +593,7 @@ NUM_CYCLES_16 = int
NUM_CYCLES_15 = int
NUM_CYCLES_15 = int
NUM_CYCLES_21__TYPE = str
NUM_CYCLES_21__TYPE = str
CMPRS_CBIT_BAYER = int
CMPRS_CBIT_BAYER = int
LOGGER_CONF_EN_BITS__RAW = str
SLEW_CLK__TYPE = str
SLEW_CLK__TYPE = str
MCONTR_PHY_0BIT_DLY_SET = int
MCONTR_PHY_0BIT_DLY_SET = int
HISPI_DIFF_TERM__TYPE = str
HISPI_DIFF_TERM__TYPE = str
@@ -631,6 +634,7 @@ RTC_ADDR = int
MCLK_PHASE__RAW = str
MCLK_PHASE__RAW = str
SENSIO_RADDR__TYPE = str
SENSIO_RADDR__TYPE = str
CLKFBOUT_MULT_PCLK__TYPE = str
CLKFBOUT_MULT_PCLK__TYPE = str
VERBOSE__TYPE = str
CLK_ADDR__TYPE = str
CLK_ADDR__TYPE = str
CMPRS_FORMAT = int
CMPRS_FORMAT = int
SENSIO_STATUS_REG_REL = int
SENSIO_STATUS_REG_REL = int
@@ -999,7 +1003,7 @@ HISTOGRAM_ADDR_MASK = int
MCONTR_BUF2_RD_ADDR__RAW = str
MCONTR_BUF2_RD_ADDR__RAW = str
MCONTR_TOP_16BIT_ADDR_MASK__RAW = str
MCONTR_TOP_16BIT_ADDR_MASK__RAW = str
MULTICLK_DIV_DLYREF__RAW = str
MULTICLK_DIV_DLYREF__RAW = str
VERBOSE__TYPE = str
MCNTRL_PS_EN_RST__RAW = str
BUF_CLK1X_PCLK__TYPE = str
BUF_CLK1X_PCLK__TYPE = str
MULT_SAXI_BSLOG1__RAW = str
MULT_SAXI_BSLOG1__RAW = str
CLKFBOUT_MULT_PCLK__RAW = str
CLKFBOUT_MULT_PCLK__RAW = str
@@ -1227,7 +1231,6 @@ PXD_IBUF_LOW_PWR__RAW = str
PXD_DRIVE = int
PXD_DRIVE = int
MULT_SAXI_BSLOG2__RAW = str
MULT_SAXI_BSLOG2__RAW = str
CLK_CNTRL__TYPE = str
CLK_CNTRL__TYPE = str
HISTOGRAM_WIDTH__RAW = str
GPIO_MASK__RAW = str
GPIO_MASK__RAW = str
DFLT_REFRESH_ADDR__TYPE = str
DFLT_REFRESH_ADDR__TYPE = str
SENS_GAMMA_MODE_REPET__TYPE = str
SENS_GAMMA_MODE_REPET__TYPE = str
@@ -1298,7 +1301,6 @@ FFCLK1_IOSTANDARD__RAW = str
CMD_DONE_BIT__TYPE = str
CMD_DONE_BIT__TYPE = str
SENSOR_DATA_WIDTH__TYPE = str
SENSOR_DATA_WIDTH__TYPE = str
SENS_LENS_SCALES__RAW = str
SENS_LENS_SCALES__RAW = str
SENSOR_MODE_WIDTH = int
RTC_BITC_PREDIV__RAW = str
RTC_BITC_PREDIV__RAW = str
CMPRS_CORING_BITS__TYPE = str
CMPRS_CORING_BITS__TYPE = str
STATUS_DEPTH__TYPE = str
STATUS_DEPTH__TYPE = str
@@ -1531,7 +1533,6 @@ MULT_SAXI_IRQLEN_MASK__TYPE = str
PICKLE__TYPE = str
PICKLE__TYPE = str
SENSI2C_TBL_NBWR__RAW = str
SENSI2C_TBL_NBWR__RAW = str
TABLE_FOCUS_INDEX__RAW = str
TABLE_FOCUS_INDEX__RAW = str
SENSOR_MODE_WIDTH__TYPE = str
MCONTR_LINTILE_WRITE__RAW = str
MCONTR_LINTILE_WRITE__RAW = str
MCNTRL_TILED_CHN2_ADDR__RAW = str
MCNTRL_TILED_CHN2_ADDR__RAW = str
CMPRS_CONTROL_REG__TYPE = str
CMPRS_CONTROL_REG__TYPE = str
@@ -1678,6 +1679,7 @@ HIST_SAXI_MODE_ADDR_MASK__RAW = str
FFCLK1_IBUF_LOW_PWR__TYPE = str
FFCLK1_IBUF_LOW_PWR__TYPE = str
SENSOR12BITS_NVLO__TYPE = str
SENSOR12BITS_NVLO__TYPE = str
MCONTR_LINTILE_EXTRAPG__TYPE = str
MCONTR_LINTILE_EXTRAPG__TYPE = str
CAMSYNC_SNDEN_BIT__TYPE = str
NUM_CYCLES_06__TYPE = str
NUM_CYCLES_06__TYPE = str
SCANLINE_STARTX__RAW = str
SCANLINE_STARTX__RAW = str
SLEW_DQS__RAW = str
SLEW_DQS__RAW = str
@@ -1695,6 +1697,7 @@ CLK_PHASE__TYPE = str
SENSOR_16BIT_BIT = int
SENSOR_16BIT_BIT = int
SENSIO_DELAYS__TYPE = str
SENSIO_DELAYS__TYPE = str
SENS_CTRL_EXT_CLK__RAW = str
SENS_CTRL_EXT_CLK__RAW = str
SENSOR_CHN_EN_BIT_SET = int
WOI_HEIGHT = int
WOI_HEIGHT = int
LOGGER_PAGE_GPS__TYPE = str
LOGGER_PAGE_GPS__TYPE = str
T_REFI = int
T_REFI = int
@@ -1721,7 +1724,7 @@ SENSI2C_CMD_SOFT_SDA = int
SENSI2C_CMD_TAND = int
SENSI2C_CMD_TAND = int
CMPRS_AFIMUX_SA_LEN = int
CMPRS_AFIMUX_SA_LEN = int
SENS_CTRL_QUADRANTS_EN__TYPE = str
SENS_CTRL_QUADRANTS_EN__TYPE = str
MCNTRL_PS_EN_RST__RAW = str
SENSOR_16BIT_BIT_SET__RAW = str
HISPI_IFD_DELAY_VALUE__TYPE = str
HISPI_IFD_DELAY_VALUE__TYPE = str
CMPRS_CBIT_BAYER_BITS__RAW = str
CMPRS_CBIT_BAYER_BITS__RAW = str
MULTICLK_BUF_AXIHP__TYPE = str
MULTICLK_BUF_AXIHP__TYPE = str
@@ -1816,6 +1819,7 @@ MCONTR_PHY_16BIT_ADDR__RAW = str
SENS_CTRL_MRST__RAW = str
SENS_CTRL_MRST__RAW = str
SENS_GAMMA_HEIGHT2__TYPE = str
SENS_GAMMA_HEIGHT2__TYPE = str
IPCLK2X_PHASE__TYPE = str
IPCLK2X_PHASE__TYPE = str
SENSOR_HIST_BITS_SET = int
MCNTRL_SCANLINE_CHN1_ADDR = int
MCNTRL_SCANLINE_CHN1_ADDR = int
MULT_SAXI_HALF_BRAM_IN = int
MULT_SAXI_HALF_BRAM_IN = int
CMDFRAMESEQ_ADDR_INC__RAW = str
CMDFRAMESEQ_ADDR_INC__RAW = str
@@ -1835,7 +1839,7 @@ CMPRS_GROUP_ADDR__RAW = str
SENS_LENS_AX__RAW = str
SENS_LENS_AX__RAW = str
CMPRS_JP4DIFF__RAW = str
CMPRS_JP4DIFF__RAW = str
SENS_SS_MODE__RAW = str
SENS_SS_MODE__RAW = str
CAMSYNC_SNDEN_BIT__TYPE = str
SENSOR_16BIT_BIT_SET__TYPE = str
DEBUG_CMD_LATENCY__RAW = str
DEBUG_CMD_LATENCY__RAW = str
CMPRS_CBIT_CMODE__TYPE = str
CMPRS_CBIT_CMODE__TYPE = str
LOGGER_STATUS_MASK = int
LOGGER_STATUS_MASK = int
@@ -2080,6 +2084,7 @@ CMPRS_MONO16 = int
REF_JITTER1 = float
REF_JITTER1 = float
SENSI2C_TBL_DLY = int
SENSI2C_TBL_DLY = int
SENSIO_STATUS__RAW = str
SENSIO_STATUS__RAW = str
SENSOR_16BIT_BIT_SET = int
MCONTR_LINTILE_DIS_NEED = int
MCONTR_LINTILE_DIS_NEED = int
SENS_LENS_BX_MASK = int
SENS_LENS_BX_MASK = int
HISPI_FIFO_START__RAW = str
HISPI_FIFO_START__RAW = str
@@ -2150,6 +2155,7 @@ MCONTR_PHY_0BIT_DLY_SET__RAW = str
NUM_CYCLES_11__RAW = str
NUM_CYCLES_11__RAW = str
FFCLK1_CAPACITANCE__RAW = str
FFCLK1_CAPACITANCE__RAW = str
SENSI2C_DRIVE__RAW = str
SENSI2C_DRIVE__RAW = str
SENSOR_HIST_BITS_SET__TYPE = str
CMPRS_CBIT_CMODE_MONO1__TYPE = str
CMPRS_CBIT_CMODE_MONO1__TYPE = str
SENS_LENS_C = int
SENS_LENS_C = int
SENSOR_CTRL_ADDR_MASK__RAW = str
SENSOR_CTRL_ADDR_MASK__RAW = str
+4 −2
Original line number Original line Diff line number Diff line
@@ -147,7 +147,7 @@ class X393ExportC(object):
        txt += '    #define PARS_FRAMES       16             ///< Number of frames in a sequencer     TODO:// move it here from <elphel/c313a.h>\n'
        txt += '    #define PARS_FRAMES       16             ///< Number of frames in a sequencer     TODO:// move it here from <elphel/c313a.h>\n'
        txt += '    #define PARS_FRAMES_MASK (PARS_FRAMES-1) ///< Maximal frame number (15 for NC393) TODO:// move it here from <elphel/c313a.h>\n'
        txt += '    #define PARS_FRAMES_MASK (PARS_FRAMES-1) ///< Maximal frame number (15 for NC393) TODO:// move it here from <elphel/c313a.h>\n'
        txt += '#endif\n'
        txt += '#endif\n'
        txt += 'typedef enum {DIRECT,ABSOLUTE,RELATIVE} x393cmd_t; ///< How to apply command - directly or through the command sequencer\n'
        txt += 'typedef enum {DIRECT,ABSOLUTE,RELATIVE,ASAP} x393cmd_t; ///< How to apply command - directly or through the command sequencer\n'
        txt += """// IRQ commands applicable to several targets
        txt += """// IRQ commands applicable to several targets
#define X393_IRQ_NOP     0 
#define X393_IRQ_NOP     0 
#define X393_IRQ_RESET   1
#define X393_IRQ_RESET   1
@@ -935,7 +935,6 @@ class X393ExportC(object):
            (("X393_CMPRS_CBIT_CMODE_JP4DIFFHDRDIV2","",vrlg.CMPRS_CBIT_CMODE_JP4DIFFHDRDIV2,0,None, None, "", "jp4,  4 blocks, differential, hdr,divide by 2")),
            (("X393_CMPRS_CBIT_CMODE_JP4DIFFHDRDIV2","",vrlg.CMPRS_CBIT_CMODE_JP4DIFFHDRDIV2,0,None, None, "", "jp4,  4 blocks, differential, hdr,divide by 2")),
            (("X393_CMPRS_CBIT_CMODE_MONO1",        "", vrlg.CMPRS_CBIT_CMODE_MONO1 ,       0, None, None, "", "Mono JPEG (not yet implemented)")),
            (("X393_CMPRS_CBIT_CMODE_MONO1",        "", vrlg.CMPRS_CBIT_CMODE_MONO1 ,       0, None, None, "", "Mono JPEG (not yet implemented)")),
            (("X393_CMPRS_CBIT_CMODE_MONO4",        "", vrlg.CMPRS_CBIT_CMODE_MONO4 ,       0, None, None, "", "Mono, 4 blocks (2x2 macroblocks)")),
            (("X393_CMPRS_CBIT_CMODE_MONO4",        "", vrlg.CMPRS_CBIT_CMODE_MONO4 ,       0, None, None, "", "Mono, 4 blocks (2x2 macroblocks)")),
            (("X393_CMPRS_CBIT_CMODE_JPEG18",       "", vrlg.CMPRS_CBIT_CMODE_JPEG18 ,      0, None, None, "", "Color 4:2:0")),


            (("X393_CMPRS_CBIT_FRAMES_SINGLE",      "", vrlg.CMPRS_CBIT_FRAMES_SINGLE ,     0, None, None, "", "Use single-frame buffer")),
            (("X393_CMPRS_CBIT_FRAMES_SINGLE",      "", vrlg.CMPRS_CBIT_FRAMES_SINGLE ,     0, None, None, "", "Use single-frame buffer")),
            (("X393_CMPRS_CBIT_FRAMES_MULTI",       "", 1 ,                                 0, None, None, "", "Use multi-frame buffer"))]        
            (("X393_CMPRS_CBIT_FRAMES_MULTI",       "", 1 ,                                 0, None, None, "", "Use multi-frame buffer"))]        
@@ -1898,8 +1897,11 @@ class X393ExportC(object):
        dw=[]
        dw=[]
        dw.append(("hist_en",          vrlg.SENSOR_HIST_EN_BITS,    4,15,  "Enable subchannel histogram modules (may be less than 4)"))
        dw.append(("hist_en",          vrlg.SENSOR_HIST_EN_BITS,    4,15,  "Enable subchannel histogram modules (may be less than 4)"))
        dw.append(("hist_nrst",        vrlg.SENSOR_HIST_NRST_BITS,  4,15,  "Reset off for histograms subchannels (may be less than 4)"))
        dw.append(("hist_nrst",        vrlg.SENSOR_HIST_NRST_BITS,  4,15,  "Reset off for histograms subchannels (may be less than 4)"))
        dw.append(("hist_set",         vrlg.SENSOR_HIST_BITS_SET,   1, 0,  "Apply values in hist_en and hist_nrst fields (0 - ignore)"))
        dw.append(("chn_en",           vrlg.SENSOR_CHN_EN_BIT,      1, 1,  "Enable this sensor channel"))
        dw.append(("chn_en",           vrlg.SENSOR_CHN_EN_BIT,      1, 1,  "Enable this sensor channel"))
        dw.append(("chn_en_set",       vrlg.SENSOR_CHN_EN_BIT_SET,  1, 1,  "Apply chn_en value (0 - ignore)"))
        dw.append(("bit16",            vrlg.SENSOR_16BIT_BIT,       1, 0,  "0 - 8 bpp mode, 1 - 16 bpp (bypass gamma). Gamma-processed data is still used for histograms"))
        dw.append(("bit16",            vrlg.SENSOR_16BIT_BIT,       1, 0,  "0 - 8 bpp mode, 1 - 16 bpp (bypass gamma). Gamma-processed data is still used for histograms"))
        dw.append(("bit16_set",        vrlg.SENSOR_16BIT_BIT_SET,   1, 0,  "Apply bit16 value (0 - ignore)"))
        return dw
        return dw


    def _enc_sens_sync_mult(self):
    def _enc_sens_sync_mult(self):
+1 −1
Original line number Original line Diff line number Diff line
@@ -1129,7 +1129,7 @@ class X393SensCmprs(object):
            tile_margin = 0 # 18x18 instead of 16x16
            tile_margin = 0 # 18x18 instead of 16x16
            tile_width =  4
            tile_width =  4
#            extra_pages = (0,1)[(compressor_left_margin % 16) != 0] # memory access block border does not cut macroblocks
#            extra_pages = (0,1)[(compressor_left_margin % 16) != 0] # memory access block border does not cut macroblocks
            extra_pages = 1 # just testing
            extra_pages = 1 # just testing, 0 should be OK  here
        tile_vstep = 16
        tile_vstep = 16
        tile_height = tile_vstep + tile_margin
        tile_height = tile_vstep + tile_margin


Loading