Commit 1c50ea54 authored by Andrey Filippov's avatar Andrey Filippov
Browse files

adding control for lwir sensor

parent 37190574
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1891,7 +1891,7 @@ class X393ExportC(object):
        dw.append(("in_busy",                8, 1,0,  "Frame segments are waited for or received to FIFO"))
        dw.append(("in_busy",                8, 1,0,  "Frame segments are waited for or received to FIFO"))
        dw.append(("out_busy",               9, 1,0,  "received frame is being transferred to video memory"))
        dw.append(("out_busy",               9, 1,0,  "received frame is being transferred to video memory"))
        dw.append(("crc_err",               10, 1,0,  "At least 1 CRC error happened since reset by command bit"))
        dw.append(("crc_err",               10, 1,0,  "At least 1 CRC error happened since reset by command bit"))
        dw.append(("fake in",               11, 1,0,  "Just to keep hardware"))
        dw.append(("fake_in",               11, 1,0,  "Just to keep hardware"))
        dw.append(("senspgmin",             24, 1,0,  "senspgm pin state (0 means non-FPGA SFE is present)"))
        dw.append(("senspgmin",             24, 1,0,  "senspgm pin state (0 means non-FPGA SFE is present)"))
        dw.append(("busy",                  25, 1,0,  "in_busy OR out_busy"))
        dw.append(("busy",                  25, 1,0,  "in_busy OR out_busy"))
        dw.append(("seq_num",               26, 6,0,  "Sequence number"))
        dw.append(("seq_num",               26, 6,0,  "Sequence number"))
+8 −5
Original line number Original line Diff line number Diff line
@@ -130,11 +130,13 @@ FRAME_START_ADDRESS_INC = 0x80000
#SENSOR_INTERFACE_HISPI =    "HISPI"
#SENSOR_INTERFACE_HISPI =    "HISPI"
# for now - single sensor type per interface
# for now - single sensor type per interface
SENSOR_INTERFACES={x393_sensor.SENSOR_INTERFACE_PARALLEL: {"mv":2800, "freq":24.0,   "iface":"2V5_LVDS"},
SENSOR_INTERFACES={x393_sensor.SENSOR_INTERFACE_PARALLEL: {"mv":2800, "freq":24.0,   "iface":"2V5_LVDS"},
                   x393_sensor.SENSOR_INTERFACE_HISPI:    {"mv":1820, "freq":24.444, "iface":"1V8_LVDS"}}
                   x393_sensor.SENSOR_INTERFACE_HISPI:    {"mv":1820, "freq":24.444, "iface":"1V8_LVDS"},
                   x393_sensor.SENSOR_INTERFACE_LWIR:     {"mv":2800, "freq":24.0,   "iface":"2V5_LVDS"}}
#                   x393_sensor.SENSOR_INTERFACE_HISPI:    {"mv":2500, "freq":24.444, "iface":"1V8_LVDS"}}
#                   x393_sensor.SENSOR_INTERFACE_HISPI:    {"mv":2500, "freq":24.444, "iface":"1V8_LVDS"}}


SENSOR_DEFAULTS= { x393_sensor.SENSOR_INTERFACE_PARALLEL: {"width":2592, "height":1944, "top":0, "left":0, "slave":0x48, "i2c_delay":100, "bayer":3},
SENSOR_DEFAULTS= { x393_sensor.SENSOR_INTERFACE_PARALLEL: {"width":2592, "height":1944, "top":0, "left":0, "slave":0x48, "i2c_delay":100, "bayer":3},
                   x393_sensor.SENSOR_INTERFACE_HISPI:   {"width":4384, "height":3288, "top":0, "left":0, "slave":0x10, "i2c_delay":100, "bayer":2}}
                   x393_sensor.SENSOR_INTERFACE_HISPI:    {"width":4384, "height":3288, "top":0, "left":0, "slave":0x10, "i2c_delay":100, "bayer":2},
                   x393_sensor.SENSOR_INTERFACE_LWIR:     {"width":160,  "height":120,  "top":0, "left":0, "slave":0x2a, "i2c_delay":100, "bayer":2}}


#SENSOR_DEFAULTS_SIMULATION= {x393_sensor.SENSOR_INTERFACE_PARALLEL: {"width":2592, "height":1944, "top":0, "left":0, "slave":0x48, "i2c_delay":100, "bayer":3},
#SENSOR_DEFAULTS_SIMULATION= {x393_sensor.SENSOR_INTERFACE_PARALLEL: {"width":2592, "height":1944, "top":0, "left":0, "slave":0x48, "i2c_delay":100, "bayer":3},
#                             x393_sensor.SENSOR_INTERFACE_HISPI:   {"width":4384, "height":3288, "top":0, "left":0, "slave":0x10, "i2c_delay":100, "bayer":2}}
#                             x393_sensor.SENSOR_INTERFACE_HISPI:   {"width":4384, "height":3288, "top":0, "left":0, "slave":0x10, "i2c_delay":100, "bayer":2}}
@@ -173,6 +175,7 @@ class X393SensCmprs(object):
                    SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_HISPI]["height"]=    vrlg.WOI_HEIGHT + 4
                    SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_HISPI]["height"]=    vrlg.WOI_HEIGHT + 4
                    SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_HISPI]["top"]=       0
                    SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_HISPI]["top"]=       0
                    SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_HISPI]["left"]=      0
                    SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_HISPI]["left"]=      0
                    # do not update LWIR defaults !!!
                    if nomargins:
                    if nomargins:
                        SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_PARALLEL]["width"]=  vrlg.WOI_WIDTH + 0 # 4
                        SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_PARALLEL]["width"]=  vrlg.WOI_WIDTH + 0 # 4
                        SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_PARALLEL]["height"]= vrlg.WOI_HEIGHT + 0
                        SENSOR_DEFAULTS[x393_sensor.SENSOR_INTERFACE_PARALLEL]["height"]= vrlg.WOI_HEIGHT + 0
@@ -1540,9 +1543,9 @@ class X393SensCmprs(object):
        if histogram_top is None:
        if histogram_top is None:
            histogram_top = 0
            histogram_top = 0
        if histogram_width_m1 is None:
        if histogram_width_m1 is None:
            histogram_width_m1 = window_width - 33
            histogram_width_m1 = window_width - 1 # 33
        if histogram_height_m1 is None:
        if histogram_height_m1 is None:
            histogram_height_m1 = window_height - 1145
            histogram_height_m1 = window_height - 1 # 1145


        self.specify_phys_memory(circbuf_chn_size = circbuf_chn_size)
        self.specify_phys_memory(circbuf_chn_size = circbuf_chn_size)
        """
        """
+46 −37
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@ import subprocess
#import x393_sens_cmprs
#import x393_sens_cmprs
SENSOR_INTERFACE_PARALLEL = "PAR12"
SENSOR_INTERFACE_PARALLEL = "PAR12"
SENSOR_INTERFACE_HISPI =    "HISPI"
SENSOR_INTERFACE_HISPI =    "HISPI"
SENSOR_INTERFACE_LWIR =     "LWIR"


class X393Sensor(object):
class X393Sensor(object):
    DRY_MODE= True # True
    DRY_MODE= True # True
@@ -74,8 +75,11 @@ class X393Sensor(object):
        @return "PAR12" or "HISPI"
        @return "PAR12" or "HISPI"
        """
        """
        if  self.DRY_MODE is True:
        if  self.DRY_MODE is True:
            print ("===== Running in dry mode, using parallel sensor======")
            return SENSOR_INTERFACE_PARALLEL
            return SENSOR_INTERFACE_PARALLEL
        return (SENSOR_INTERFACE_PARALLEL, SENSOR_INTERFACE_HISPI)[self.x393_axi_tasks.read_status(address=0xfe)] # "PAR12" , "HISPI"
        sens_type = (SENSOR_INTERFACE_PARALLEL, SENSOR_INTERFACE_HISPI,SENSOR_INTERFACE_LWIR)[self.x393_axi_tasks.read_status(address=0xfe)] # "PAR12" , "HISPI"
        print ("===== Sensor type read from FPGA = >>> %s <<< ======"%(sens_type))
        return sens_type


    def program_status_sensor_i2c( self,
    def program_status_sensor_i2c( self,
                                   num_sensor,
                                   num_sensor,
@@ -155,7 +159,7 @@ class X393Sensor(object):
                    address=(vrlg.SENSI2C_STATUS_REG_BASE + num_sensor * vrlg.SENSI2C_STATUS_REG_INC + vrlg.SENSIO_STATUS_REG_REL))
                    address=(vrlg.SENSI2C_STATUS_REG_BASE + num_sensor * vrlg.SENSI2C_STATUS_REG_INC + vrlg.SENSIO_STATUS_REG_REL))


    def print_status_sensor_io (self,
    def print_status_sensor_io (self,
                                num_sensor="All"):
                                num_sensor="All", sensorType = SENSOR_INTERFACE_PARALLEL):
        """
        """
        Print sensor_io status word (no sync)
        Print sensor_io status word (no sync)
        @param num_sensor - number of the sensor port (0..3)
        @param num_sensor - number of the sensor port (0..3)
@@ -164,12 +168,17 @@ class X393Sensor(object):
            if (num_sensor == all) or (num_sensor[0].upper() == "A"): #all is a built-in function
            if (num_sensor == all) or (num_sensor[0].upper() == "A"): #all is a built-in function
                for num_sensor in range(4):
                for num_sensor in range(4):
                    print ("\n ==== Sensor %d"%(num_sensor))
                    print ("\n ==== Sensor %d"%(num_sensor))
                    self.print_status_sensor_io (num_sensor = num_sensor)
                    self.print_status_sensor_io (num_sensor = num_sensor, sensorType = sensorType)
                return
                return
        except:
        except:
            pass
            pass
        status= self.get_status_sensor_io(num_sensor)
        status= self.get_status_sensor_io(num_sensor)
        print ("print_status_sensor_io(%d):"%(num_sensor))
        print ("print_status_sensor_io(%d):"%(num_sensor))
        
        if (sensorType == SENSOR_INTERFACE_LWIR):
            pass
            
        else:    
#last_in_line_1cyc_mclk, dout_valid_1cyc_mclk
#last_in_line_1cyc_mclk, dout_valid_1cyc_mclk
            """
            """
            print ("   last_in_line_1cyc_mclk = %d"%((status>>23) & 1))
            print ("   last_in_line_1cyc_mclk = %d"%((status>>23) & 1))
+4 −1
Original line number Original line Diff line number Diff line
@@ -101,7 +101,10 @@ module status_read#(
    initial begin
    initial begin
        ram [DATA_2DEPTH]   = FPGA_VERSION;
        ram [DATA_2DEPTH]   = FPGA_VERSION;
`ifdef HISPI
`ifdef HISPI
        ram [DATA_2DEPTH-1] = 1; //0 - parallel sensor, 1 - HiSPi sensor 
        ram [DATA_2DEPTH-1] = 1; //0 - parallel sensor, 1 - HiSPi sensor, 2 - LWIR 160x120 sensor
`elsif LWIR
        ram [DATA_2DEPTH-1] = 2; //0 - parallel sensor, 1 - HiSPi sensor, 2 - LWIR 160x120 sensor
        
`endif         
`endif         
    end
    end
    always @ (posedge axi_clk) begin
    always @ (posedge axi_clk) begin