Loading cocotb/x393_cocotb_02.sav +94 −39 Original line number Diff line number Diff line [*] [*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI [*] Mon Sep 12 14:47:46 2016 [*] Wed Sep 14 19:28:33 2016 [*] [dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160912080538929.fst" [dumpfile_mtime] "Mon Sep 12 14:47:39 2016" [dumpfile_size] 92122479 [dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160914091637595.fst" [dumpfile_mtime] "Wed Sep 14 17:55:04 2016" [dumpfile_size] 377060747 [savefile] "/home/eyesis/git/x393-neon/cocotb/x393_cocotb_02.sav" [timestart] 95143150 [timestart] 43511100 [size] 1814 1171 [pos] 1936 23 *-13.913612 95182388 77654500 77716800 80133500 86987400 89448000 91674200 91801500 95195280 96480090 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 *-14.509074 43557388 77654500 77716800 80133500 86987400 89448000 91674200 91801500 95195280 96480090 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 [treeopen] x393_dut. [treeopen] x393_dut.ddr3_i.ddr3_i. [treeopen] x393_dut.simul_axi_master_wdata_i. [treeopen] x393_dut.simul_saxi_gp0_wr_i. [treeopen] x393_dut.x393_i. [treeopen] x393_dut.x393_i.cmd_mux_i. [treeopen] x393_dut.x393_i.compressor393_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0]. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_frame_sync_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macroblock_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_pixel_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_status_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1]. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.cmprs_frame_sync_i. Loading @@ -34,7 +36,6 @@ [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.cmprs_pixel_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.genblk3.cmprs_afi0_mux_i. [treeopen] x393_dut.x393_i.frame_sequencer_block[0]. [treeopen] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i. Loading Loading @@ -2503,7 +2504,7 @@ x393_dut.x393_i.frame_num[15:0] x393_dut.x393_i.frame_num_compressed[15:0] @1000200 -frames @800200 @c00200 -histgograms @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.en Loading Loading @@ -2531,7 +2532,7 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_hact @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_pxd_out[7:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.frame_num_seq[3:0] @800200 @c00200 -sens_histogram_0 @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_di[7:0] Loading Loading @@ -2683,18 +2684,8 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.we_even x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.we_odd [color] 3 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_data_differ [color] 2 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_addr_differ [color] 3 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_1c_in [color] 3 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_1c_out @200 - @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_rwaddr[8:0] @c00022 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_rwaddr_even[8:0] @28 Loading Loading @@ -2779,8 +2770,6 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_re_even x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_re_odd (0)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_re_even[2:0] (0)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_re_odd[2:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_do[31:0] Loading @@ -2789,25 +2778,11 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_xfer_done_mclk x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_xfer_busy @8022 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @200 -other channels @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @200 - Loading @@ -2816,14 +2791,14 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.data_out_b_w_odd[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.data_out_b_w_even[31:0] @29 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_even @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_even x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_odd x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_even_d x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_odd_d @1000200 @1401200 -sens_histogram_0 @1000200 -chn0 @c00200 -histogram_saxi Loading Loading @@ -2952,8 +2927,88 @@ x393_dut.simul_saxi_gp0_wr_i.waddr_i.next_fill[3:0] -waddr @1401200 -simul_saxi @1000200 -histgograms @800200 -tables_writes @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.mclk (2)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmd_a[2:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.set_tables_w @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmd_data[31:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_a_not_d @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_d[7:0] @c00022 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] @28 (0)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] (1)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] (2)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] (3)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_qe @1401200 -group_end @800200 -quantizer0 @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_ce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_qe x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_a_not_d @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_d[7:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.ta[22:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tdi[15:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twqe x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_a_not_d @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_d[7:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_ce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_qe @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.ta[22:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tdi[15:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twqe x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tsi[2:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.pre_start @800200 -cmprs_cmd_decode0 @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.frame_start x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.frame_start_xclk x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.cmprs_qpage_mclk[2:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.cmprs_qpage[2:0] @200 - @1000200 -cmprs_cmd_decode0 @800200 -quant_table @23 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.waddr[9:0] @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.data_in[15:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.we @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.raddr[9:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.ren x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.regen @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.data_out[15:0] @200 - @1000200 -quant_table -quantizer0 -tables_writes @200 - - Loading py393/x393_export_c.py +1 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,7 @@ class X393ExportC(object): txt += ' #define PARS_FRAMES 16 ///< Number of frames in a sequencer TODO:// move it here from <uapi/elphel/c313a.h>\n' txt += ' #define PARS_FRAMES_MASK (PARS_FRAMES-1) ///< Maximal frame number (15 for NC393) TODO:// move it here from <uapi/elphel/c313a.h>\n' txt += '#endif\n' txt += 'typedef enum {TABLE_TYPE_QUANT,TABLE_TYPE_CORING,TABLE_TYPE_FOCUS,TABLE_TYPE_HUFFMAN} x393cmprs_tables_t; ///< compressor table type\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 #define X393_IRQ_NOP 0 Loading py393/x393_jpeg.py +102 −2 Original line number Diff line number Diff line Loading @@ -1052,6 +1052,10 @@ cd /usr/local/verilog/; test_mcntrl.py @hargs-after specify_phys_memory specify_window r read_control_register 0x431 read_control_register 0x430 #reset write_cmd_frame_sequencer 0 1 2 0x600 0x5 #stop compressor ` write_cmd_frame_sequencer 0 1 4 0x600 0x4 #reset reset compressor (+2) Loading @@ -1059,7 +1063,7 @@ write_cmd_frame_sequencer 0 1 4 0x6c0 0x1c48 # reset reset compressor memo write_cmd_frame_sequencer 0 1 8 0x6c0 0x3d4b # enable run compressor memory (+2) write_cmd_frame_sequencer 0 1 8 0x600 0x7 # enable run compressor (+0) set_qtables all 0 80 set_rtc # maybe not needed as it can be set differently camsync_setup 0xf # sensor mask - use local timestamps) Loading Loading @@ -1087,7 +1091,7 @@ write_sensor_i2c 1 1 0 0x902d000d #exposure 0x797 (default) #write_sensor_i2c 1 1 0 0x90090797 #run compressors once (#1 - stop gracefully, 0 - reset, 2 - single, 3 - repetitive with sync to sensors) set_qtables 1l 0 80 set_qtables 1 0 80 compressor_control 1 3 jpeg_write "img.jpeg" 1 80 Loading Loading @@ -1791,6 +1795,102 @@ jpeg_sim_multi 4 #write_cmd_frame_sequencer 0 1 4 0x6c0 0x1c49 # stop compressor memory (+0) #write_cmd_frame_sequencer 0 1 6 0x6c0 0x3d4b # enable run compressor memory (+2) ################## Simulate Parallel 8 #################### ./py393/test_mcntrl.py @py393/cocoargs --simulated=localhost:7777 measure_all "*DI" setup_all_sensors True None 0xf set_sensor_io_ctl all None None 1 # Set ARO low - check if it is still needed? #just testing set_gpio_ports 1 # enable software gpio pins - just for testing. Also needed for legacy i2c! set_gpio_pins 0 1 # pin 0 low, pin 1 - high set_sensor_histogram_window 0 0 4 4 25 21 set_sensor_histogram_window 1 0 4 4 41 21 set_sensor_histogram_window 2 0 4 4 25 41 set_sensor_histogram_window 3 0 4 4 41 41 r read_control_register 0x430 read_control_register 0x431 write_cmd_frame_sequencer 0 1 2 0x600 0x48 # compressor q page = 1 // too late for frame 2 set_qtables 0 0 80 set_qtables 0 1 70 #irq coming, image not changing - yes write_cmd_frame_sequencer 0 1 1 0x686 0x280005 #save 4 more lines than sensor has write_cmd_frame_sequencer 0 1 1 0x680 0x5507 #enable abort #write_cmd_frame_sequencer 0 1 1 0x6c6 0x300006 #save 4 more lines that compressor has write_cmd_frame_sequencer 0 1 2 0x600 0x5 #stop compressor ` write_cmd_frame_sequencer 0 1 2 0x680 0x5405 # stop sensor memory (+0) // sensor memory should be controlled first, (9 commands write_cmd_frame_sequencer 0 1 2 0x6c0 0x5c49 # stop compressor memory (+0) write_cmd_frame_sequencer 0 1 3 0x686 0x240005 # correct lines write_cmd_frame_sequencer 0 1 3 0x680 0x5507 # run sensor memory (+1) Can not be 0 write_cmd_frame_sequencer 0 1 4 0x686 0x280005 #save 4 more lines than sensor has write_cmd_frame_sequencer 0 1 4 0x6c6 0x300006 #save more lines than compressor needs (sensor provides) write_cmd_frame_sequencer 0 1 4 0x6c0 0x7d4b # run compressor memory (+2) write_cmd_frame_sequencer 0 1 4 0x600 0x7 # run compressor (+0) write_cmd_frame_sequencer 0 1 1 0x600 0x48 # compressor q page = 1 write_cmd_frame_sequencer 0 1 4 0x600 0x40 # compressor q page = 0 read_control_register 0x431 read_control_register 0x430 #testing histograms write_control_register 0x409 0xc0 #sequencer test #ctrl_cmd_frame_sequencer <num_sensor> <reset=False> <start=False> <stop=False> ctrl_cmd_frame_sequencer 0 0 1 0 write_cmd_frame_sequencer 0 1 1 0x700 0x6 write_cmd_frame_sequencer 0 1 1 0x700 0x9 write_cmd_frame_sequencer 0 1 1 0x700 0xa0 write_cmd_frame_sequencer 0 1 1 0x700 0x50 write_cmd_frame_sequencer 0 0 3 0x700 0xa000 write_cmd_frame_sequencer 0 1 0 0x700 0x90 write_cmd_frame_sequencer 0 0 2 0x700 0xe00 write_cmd_frame_sequencer 0 0 3 0x700 0xa write_cmd_frame_sequencer 0 0 2 0x700 0x6 write_cmd_frame_sequencer 0 0 2 0x700 0x9 write_cmd_frame_sequencer 0 0 2 0x700 0x60 write_cmd_frame_sequencer 0 0 2 0x700 0x90 write_cmd_frame_sequencer 0 0 2 0x700 0x600 write_cmd_frame_sequencer 0 0 2 0x700 0x900 r read_status 0x21 r #set_sensor_io_dly_hispi all 0x48 0x68 0x68 0x68 0x68 #set_sensor_io_ctl all None None None None None 1 None # load all delays? compressor_control all None None None None None 2 compressor_interrupt_control all clr compressor_interrupt_control all en compressor_control all 3 r read_status 0x21 r jpeg_sim_multi 4 r read_status 0x21 r jpeg_sim_multi 3 r read_status 0x21 r write_cmd_frame_sequencer 0 1 1 0x686 0x240005 # correct lines write_cmd_frame_sequencer 0 1 1 0x6c6 0x200006 # correct lines write_cmd_frame_sequencer 0 1 1 0x680 0x5507 # run sensor memory, update frame#, reset buffers write_cmd_frame_sequencer 0 1 1 0x6c0 0x7d4b # run compressor memory write_cmd_frame_sequencer 0 1 1 0x600 0x7 # run compressor jpeg_sim_multi 4 jpeg_sim_multi 4 jpeg_sim_multi 4 ################## Serial #################### Loading py393/x393_sens_cmprs.py +6 −1 Original line number Diff line number Diff line Loading @@ -2256,7 +2256,12 @@ class X393SensCmprs(object): for j in range (merge_num): d |= data[2* i + j] << (j * (32 // merge_num)) data32.append(d) t_addr = (t_num << 24) + index* len(data32) ''' t_addr[23:0] is in BYTES (so *4) ''' t_addr = (t_num << 24) + index* len(data32) * 4 print("name: %s, merge_num=%d, t_num=%d, len(data32)=%d, index=%d, t_addr=0x%x"% (item['name'], merge_num, t_num, len(data32), index,t_addr)) self.x393_axi_tasks.write_control_register(reg_addr + 1, t_addr) for d in data32: self.x393_axi_tasks.write_control_register(reg_addr, d) Loading util_modules/table_ad_receive.v +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ * with at least one of the Free Software programs. */ `timescale 1ns/1ps // Table address is BYTE address module table_ad_receive #( parameter MODE_16_BITS = 1, parameter NUM_CHN = 1 Loading Loading
cocotb/x393_cocotb_02.sav +94 −39 Original line number Diff line number Diff line [*] [*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI [*] Mon Sep 12 14:47:46 2016 [*] Wed Sep 14 19:28:33 2016 [*] [dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160912080538929.fst" [dumpfile_mtime] "Mon Sep 12 14:47:39 2016" [dumpfile_size] 92122479 [dumpfile] "/home/eyesis/git/x393-neon/simulation/x393_dut-20160914091637595.fst" [dumpfile_mtime] "Wed Sep 14 17:55:04 2016" [dumpfile_size] 377060747 [savefile] "/home/eyesis/git/x393-neon/cocotb/x393_cocotb_02.sav" [timestart] 95143150 [timestart] 43511100 [size] 1814 1171 [pos] 1936 23 *-13.913612 95182388 77654500 77716800 80133500 86987400 89448000 91674200 91801500 95195280 96480090 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 *-14.509074 43557388 77654500 77716800 80133500 86987400 89448000 91674200 91801500 95195280 96480090 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 [treeopen] x393_dut. [treeopen] x393_dut.ddr3_i.ddr3_i. [treeopen] x393_dut.simul_axi_master_wdata_i. [treeopen] x393_dut.simul_saxi_gp0_wr_i. [treeopen] x393_dut.x393_i. [treeopen] x393_dut.x393_i.cmd_mux_i. [treeopen] x393_dut.x393_i.compressor393_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0]. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_frame_sync_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_macroblock_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_pixel_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_status_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1]. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[1].jp_channel_i.cmprs_frame_sync_i. Loading @@ -34,7 +36,6 @@ [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i. [treeopen] x393_dut.x393_i.compressor393_i.cmprs_channel_block[3].jp_channel_i.cmprs_pixel_buf_iface_i. [treeopen] x393_dut.x393_i.compressor393_i.genblk3.cmprs_afi0_mux_i. [treeopen] x393_dut.x393_i.frame_sequencer_block[0]. [treeopen] x393_dut.x393_i.frame_sequencer_block[0].cmd_frame_sequencer_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i. [treeopen] x393_dut.x393_i.mcntrl393_i.memctrl16_i.mcontr_sequencer_i. Loading Loading @@ -2503,7 +2504,7 @@ x393_dut.x393_i.frame_num[15:0] x393_dut.x393_i.frame_num_compressed[15:0] @1000200 -frames @800200 @c00200 -histgograms @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.en Loading Loading @@ -2531,7 +2532,7 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_hact @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.gamma_pxd_out[7:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.frame_num_seq[3:0] @800200 @c00200 -sens_histogram_0 @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_di[7:0] Loading Loading @@ -2683,18 +2684,8 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.we_even x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.we_odd [color] 3 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_data_differ [color] 2 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_addr_differ [color] 3 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_1c_in [color] 3 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_1c_out @200 - @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_rwaddr[8:0] @c00022 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_rwaddr_even[8:0] @28 Loading Loading @@ -2779,8 +2770,6 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_re_even x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_re_odd (0)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_re_even[2:0] (0)x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_re_odd[2:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_do[31:0] Loading @@ -2789,25 +2778,11 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_xfer_done_mclk x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.hist_xfer_busy @8022 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @200 -other channels @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[1].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[2].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_even[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.genblk1.sens_histogram_0_i.dbg_sum_odd[31:0] @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[3].sensor_channel_i.genblk1.sens_histogram_0_i.hist_dv @200 - Loading @@ -2816,14 +2791,14 @@ x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.se @22 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.data_out_b_w_odd[31:0] x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.data_out_b_w_even[31:0] @29 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_even @28 x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_even x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_odd x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_even_d x393_dut.x393_i.sensors393_i.sensor_channel_block[0].sensor_channel_i.genblk1.sens_histogram_0_i.genblk1.sens_hist_ram_snglclk_32_i.re_odd_d @1000200 @1401200 -sens_histogram_0 @1000200 -chn0 @c00200 -histogram_saxi Loading Loading @@ -2952,8 +2927,88 @@ x393_dut.simul_saxi_gp0_wr_i.waddr_i.next_fill[3:0] -waddr @1401200 -simul_saxi @1000200 -histgograms @800200 -tables_writes @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.mclk (2)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmd_a[2:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.set_tables_w @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmd_data[31:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_a_not_d @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_d[7:0] @c00022 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] @28 (0)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] (1)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] (2)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] (3)x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_sel[3:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.tser_qe @1401200 -group_end @800200 -quantizer0 @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_ce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_qe x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_a_not_d @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_d[7:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.ta[22:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tdi[15:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twqe x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_a_not_d @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_d[7:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_ce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tser_qe @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.ta[22:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tdi[15:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twce x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.twqe x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.tsi[2:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.pre_start @800200 -cmprs_cmd_decode0 @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.frame_start x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.frame_start_xclk x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.cmprs_qpage_mclk[2:0] x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.cmprs_cmd_decode_i.cmprs_qpage[2:0] @200 - @1000200 -cmprs_cmd_decode0 @800200 -quant_table @23 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.waddr[9:0] @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.data_in[15:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.we @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.raddr[9:0] @28 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.ren x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.regen @22 x393_dut.x393_i.compressor393_i.cmprs_channel_block[0].jp_channel_i.quantizer393_i.i_quant_table.data_out[15:0] @200 - @1000200 -quant_table -quantizer0 -tables_writes @200 - - Loading
py393/x393_export_c.py +1 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,7 @@ class X393ExportC(object): txt += ' #define PARS_FRAMES 16 ///< Number of frames in a sequencer TODO:// move it here from <uapi/elphel/c313a.h>\n' txt += ' #define PARS_FRAMES_MASK (PARS_FRAMES-1) ///< Maximal frame number (15 for NC393) TODO:// move it here from <uapi/elphel/c313a.h>\n' txt += '#endif\n' txt += 'typedef enum {TABLE_TYPE_QUANT,TABLE_TYPE_CORING,TABLE_TYPE_FOCUS,TABLE_TYPE_HUFFMAN} x393cmprs_tables_t; ///< compressor table type\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 #define X393_IRQ_NOP 0 Loading
py393/x393_jpeg.py +102 −2 Original line number Diff line number Diff line Loading @@ -1052,6 +1052,10 @@ cd /usr/local/verilog/; test_mcntrl.py @hargs-after specify_phys_memory specify_window r read_control_register 0x431 read_control_register 0x430 #reset write_cmd_frame_sequencer 0 1 2 0x600 0x5 #stop compressor ` write_cmd_frame_sequencer 0 1 4 0x600 0x4 #reset reset compressor (+2) Loading @@ -1059,7 +1063,7 @@ write_cmd_frame_sequencer 0 1 4 0x6c0 0x1c48 # reset reset compressor memo write_cmd_frame_sequencer 0 1 8 0x6c0 0x3d4b # enable run compressor memory (+2) write_cmd_frame_sequencer 0 1 8 0x600 0x7 # enable run compressor (+0) set_qtables all 0 80 set_rtc # maybe not needed as it can be set differently camsync_setup 0xf # sensor mask - use local timestamps) Loading Loading @@ -1087,7 +1091,7 @@ write_sensor_i2c 1 1 0 0x902d000d #exposure 0x797 (default) #write_sensor_i2c 1 1 0 0x90090797 #run compressors once (#1 - stop gracefully, 0 - reset, 2 - single, 3 - repetitive with sync to sensors) set_qtables 1l 0 80 set_qtables 1 0 80 compressor_control 1 3 jpeg_write "img.jpeg" 1 80 Loading Loading @@ -1791,6 +1795,102 @@ jpeg_sim_multi 4 #write_cmd_frame_sequencer 0 1 4 0x6c0 0x1c49 # stop compressor memory (+0) #write_cmd_frame_sequencer 0 1 6 0x6c0 0x3d4b # enable run compressor memory (+2) ################## Simulate Parallel 8 #################### ./py393/test_mcntrl.py @py393/cocoargs --simulated=localhost:7777 measure_all "*DI" setup_all_sensors True None 0xf set_sensor_io_ctl all None None 1 # Set ARO low - check if it is still needed? #just testing set_gpio_ports 1 # enable software gpio pins - just for testing. Also needed for legacy i2c! set_gpio_pins 0 1 # pin 0 low, pin 1 - high set_sensor_histogram_window 0 0 4 4 25 21 set_sensor_histogram_window 1 0 4 4 41 21 set_sensor_histogram_window 2 0 4 4 25 41 set_sensor_histogram_window 3 0 4 4 41 41 r read_control_register 0x430 read_control_register 0x431 write_cmd_frame_sequencer 0 1 2 0x600 0x48 # compressor q page = 1 // too late for frame 2 set_qtables 0 0 80 set_qtables 0 1 70 #irq coming, image not changing - yes write_cmd_frame_sequencer 0 1 1 0x686 0x280005 #save 4 more lines than sensor has write_cmd_frame_sequencer 0 1 1 0x680 0x5507 #enable abort #write_cmd_frame_sequencer 0 1 1 0x6c6 0x300006 #save 4 more lines that compressor has write_cmd_frame_sequencer 0 1 2 0x600 0x5 #stop compressor ` write_cmd_frame_sequencer 0 1 2 0x680 0x5405 # stop sensor memory (+0) // sensor memory should be controlled first, (9 commands write_cmd_frame_sequencer 0 1 2 0x6c0 0x5c49 # stop compressor memory (+0) write_cmd_frame_sequencer 0 1 3 0x686 0x240005 # correct lines write_cmd_frame_sequencer 0 1 3 0x680 0x5507 # run sensor memory (+1) Can not be 0 write_cmd_frame_sequencer 0 1 4 0x686 0x280005 #save 4 more lines than sensor has write_cmd_frame_sequencer 0 1 4 0x6c6 0x300006 #save more lines than compressor needs (sensor provides) write_cmd_frame_sequencer 0 1 4 0x6c0 0x7d4b # run compressor memory (+2) write_cmd_frame_sequencer 0 1 4 0x600 0x7 # run compressor (+0) write_cmd_frame_sequencer 0 1 1 0x600 0x48 # compressor q page = 1 write_cmd_frame_sequencer 0 1 4 0x600 0x40 # compressor q page = 0 read_control_register 0x431 read_control_register 0x430 #testing histograms write_control_register 0x409 0xc0 #sequencer test #ctrl_cmd_frame_sequencer <num_sensor> <reset=False> <start=False> <stop=False> ctrl_cmd_frame_sequencer 0 0 1 0 write_cmd_frame_sequencer 0 1 1 0x700 0x6 write_cmd_frame_sequencer 0 1 1 0x700 0x9 write_cmd_frame_sequencer 0 1 1 0x700 0xa0 write_cmd_frame_sequencer 0 1 1 0x700 0x50 write_cmd_frame_sequencer 0 0 3 0x700 0xa000 write_cmd_frame_sequencer 0 1 0 0x700 0x90 write_cmd_frame_sequencer 0 0 2 0x700 0xe00 write_cmd_frame_sequencer 0 0 3 0x700 0xa write_cmd_frame_sequencer 0 0 2 0x700 0x6 write_cmd_frame_sequencer 0 0 2 0x700 0x9 write_cmd_frame_sequencer 0 0 2 0x700 0x60 write_cmd_frame_sequencer 0 0 2 0x700 0x90 write_cmd_frame_sequencer 0 0 2 0x700 0x600 write_cmd_frame_sequencer 0 0 2 0x700 0x900 r read_status 0x21 r #set_sensor_io_dly_hispi all 0x48 0x68 0x68 0x68 0x68 #set_sensor_io_ctl all None None None None None 1 None # load all delays? compressor_control all None None None None None 2 compressor_interrupt_control all clr compressor_interrupt_control all en compressor_control all 3 r read_status 0x21 r jpeg_sim_multi 4 r read_status 0x21 r jpeg_sim_multi 3 r read_status 0x21 r write_cmd_frame_sequencer 0 1 1 0x686 0x240005 # correct lines write_cmd_frame_sequencer 0 1 1 0x6c6 0x200006 # correct lines write_cmd_frame_sequencer 0 1 1 0x680 0x5507 # run sensor memory, update frame#, reset buffers write_cmd_frame_sequencer 0 1 1 0x6c0 0x7d4b # run compressor memory write_cmd_frame_sequencer 0 1 1 0x600 0x7 # run compressor jpeg_sim_multi 4 jpeg_sim_multi 4 jpeg_sim_multi 4 ################## Serial #################### Loading
py393/x393_sens_cmprs.py +6 −1 Original line number Diff line number Diff line Loading @@ -2256,7 +2256,12 @@ class X393SensCmprs(object): for j in range (merge_num): d |= data[2* i + j] << (j * (32 // merge_num)) data32.append(d) t_addr = (t_num << 24) + index* len(data32) ''' t_addr[23:0] is in BYTES (so *4) ''' t_addr = (t_num << 24) + index* len(data32) * 4 print("name: %s, merge_num=%d, t_num=%d, len(data32)=%d, index=%d, t_addr=0x%x"% (item['name'], merge_num, t_num, len(data32), index,t_addr)) self.x393_axi_tasks.write_control_register(reg_addr + 1, t_addr) for d in data32: self.x393_axi_tasks.write_control_register(reg_addr, d) Loading
util_modules/table_ad_receive.v +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ * with at least one of the Free Software programs. */ `timescale 1ns/1ps // Table address is BYTE address module table_ad_receive #( parameter MODE_16_BITS = 1, parameter NUM_CHN = 1 Loading