47 // parameter SENSIO_WIDTH = 'h3, // set line width (1.. 2^16) if 0 - use HACT 48 parameter SENSIO_DELAYS =
'h4,
// 'h4..'h7 - each address sets 4 delays through 4 bytes of 32-bit data 49 // 5, swap lanes 6 - delays, 7 - phase 62 // parameter SENS_CTRL_EXT_CLK= 8, // 9: 8 69 // parameter SENS_CTRL_QUADRANTS = 12, // 17:12, enable - 20 70 // parameter SENS_CTRL_QUADRANTS_WIDTH = 6, 71 // parameter SENS_CTRL_QUADRANTS_EN = 20, // 17:12, enable - 20 (2 bits reserved) 76 parameter SENS_PHASE_WIDTH=
8,
// number of bits for te phase counter (depends on divisors) 77 // parameter SENS_PCLK_PERIOD = 3.000, // input period in ns, 0..100.000 - MANDATORY, resolution down to 1 ps 80 parameter CLKIN_PERIOD_SENSOR =
3.000,
// input period in ns, 0..100.000 - MANDATORY, resolution down to 1 ps 82 parameter CLKFBOUT_PHASE_SENSOR =
0.000,
// CLOCK FEEDBACK phase in degrees (3 significant digits, -360.000...+360.000) 91 parameter SENS_SS_EN =
"FALSE",
// Enables Spread Spectrum mode 92 parameter SENS_SS_MODE =
"CENTER_HIGH",
//"CENTER_HIGH","CENTER_LOW","DOWN_HIGH","DOWN_LOW" 99 parameter HISPI_KEEP_IRST =
5,
// number of cycles to keep irst on after release of prst (small number - use 1 hot) 111 parameter HISPI_IOSTANDARD =
"DIFF_SSTL18_I",
//"DIFF_SSTL18_II" for high current (13.4mA vs 8mA) 113 // Other (non-HiSPi) sensor I/Os 121 // ,parameter STATUS_ALIVE_WIDTH = 4 124 input pclk,
// global clock input, pixel rate (220MHz for MT9F002) 126 output prsts,
// @pclk - includes sensor reset and sensor PLL reset 127 // delay control inputs 130 input [
7:
0]
cmd_ad,
// byte-serial command address/data (up to 6 bytes: AL-AH-D0-D1-D2-D3 131 input cmd_stb,
// strobe (with first byte) for the command a/d 132 output [
7:
0]
status_ad,
// status address/data - up to 5 bytes: A - {seq,status[1:0]} - status[2:9] - status[10:17] - status[18:25] 133 output status_rq,
// input request to send status downstream 134 input status_start,
// Acknowledge of the first status packet byte (address) 136 input trigger_mode,
// running in triggered mode (0 - free running mode) 137 input trig,
// per-sensor trigger input 153 output sns_gp0_tdi,
// sns_dp[5] == gp[0] TDI (differs from 10353) 169 // reg [3:0] set_idelay; 171 reg set_fifo_dly;
// set how long to wait after strating to fill FIFOs (in items) ~= 1/2 2^FIFO_DEPTH 184 // programmed resets to the sensor 199 wire xfpgadone;
// state of the MRST pin ("DONE" pin on external FPGA) 203 reg xpgmen=
0;
// enable programming mode for external FPGA 204 reg xfpgaprog=
0;
// PROG_B to be sent to an external FPGA 209 reg [
1:
0]
gp_r;
// sensor GP0, GP1. For now just software control, later use for something else 296 // generate (slow) clock for the sensor - it will be multiplied by the sensor VCO 300 // treat MSB separately to make 50% duty cycle 320 )
cmd_deser_sens_io_i (
321 .
rst (
1'b0),
// rst), // input 333 .
PAYLOAD_BITS(
15+
1)
// +3) // +STATUS_ALIVE_WIDTH) // STATUS_PAYLOAD_BITS) 334 )
status_generate_sens_io_i (
335 .
rst (
1'b0),
// rst), // input 340 // .status ({status_alive,status}), // input[25:0] 413 .CAPACITANCE("DONT_CARE"), 414 .IOSTANDARD(PXD_IOSTANDARD), // not diff, just opposite phase signals 417 .o (sens_ext_clk_p), // output 418 .ob (sens_ext_clk_n), // output 419 .i (pxd_clk_cntr[PXD_CLK_DIV_BITS-1]) // input 422 // reg [1:0] ext_clk_r; 423 // always @(posedge pclk) begin 424 // ext_clk_r <= {pxd_clk_cntr[PXD_CLK_DIV_BITS-1], !pxd_clk_cntr[PXD_CLK_DIV_BITS-1]}; 445 .
I (
iarst)
// ~pxd_clk_cntr[PXD_CLK_DIV_BITS-1]) // ext_clk_r[1]) // input 448 // Probe programmable/ control PROGRAM pin 451 // mpullup i_mrst_pullup(mrst); 528 .
I (
gp_r[
1])
// input 530 // READ TDO (and flash) 533 .
IBUF_DELAY_VALUE (
"0"),
535 .
IFD_DELAY_VALUE (
"AUTO"),
542 // READ DONE (and shutter) 545 .
IBUF_DELAY_VALUE (
"0"),
547 .
IFD_DELAY_VALUE (
"AUTO"),
549 )
sns_shutter_done_i (
554 // just to verify hact is active 557 .
rst (
1'b0),
// input
6839SENSIO_STATUS_REG'h21
6882HISPI_UNTUNED_SPLIT"FALSE"
6937clkfb_pxd_stopped_mmcmwire
real 6855REFCLK_FREQUENCY200.0
6858SENS_BANDWIDTH"OPTIMIZED"
[HISPI_NUMLANES-1:0] 7091sns_dn
7112clkfb_pxd_stopped_mmcm
6892PXD_CAPACITANCE"DONT_CARE"
6960async_prst_with_sens_mrstwire
sens_hispi12l4_i sens_hispi12l4
[HISPI_NUMLANES-1:0] 6908sns_dn
6881HISPI_DIFF_TERM"TRUE"
6885HISPI_IBUF_LOW_PWR"TRUE"
6856HIGH_PERFORMANCE_MODE"FALSE"
6880HISPI_CAPACITANCE"DONT_CARE"
6871SENS_SS_MOD_PERIOD10000
6959prst_with_sens_mrstreg[1:0]
6834SENSIO_ADDR_MASK'h7f8
[HISPI_NUMLANES-1:0] 6907sns_dp
[ADDR_MASK2!=0?2:ADDR_MASK1!=0?1:0:0] 9935we
6890PXD_IOSTANDARD"LVCMOS18"
6884HISPI_IBUF_DELAY_VALUE"0"
6886HISPI_IFD_DELAY_VALUE"AUTO"
status_generate_sens_io_i status_generate
6867SENS_REF_JITTER10.010
[DATA_WIDTH-1:0] 9934data
sns_shutter_done_i ibuf_ibufg
7111clkin_pxd_stopped_mmcm
6874HISPI_DELAY_CLK"FALSE"
6868SENS_REF_JITTER20.010
6849SENS_CTRL_IGNORE_EMBED8
[ADDR_WIDTH-1:0] 9933addr
6936clkin_pxd_stopped_mmcmwire
integer 6854IDELAY_VALUE0
i_sns_shutter_done_pullup mpullup
[HISPI_NUMLANES * 8-1:0] 7100dly_data
6860CLKFBOUT_MULT_SENSOR3
6861CLKFBOUT_PHASE_SENSOR0.000
6889PXD_IBUF_LOW_PWR"TRUE"
[HISPI_NUMLANES-1:0] 7103set_idelay
hact_mclk_i pulse_cross_clock
6870SENS_SS_MODE"CENTER_HIGH"
[ALL_BITS-1:0] 10777status
6958pxd_clk_cntrreg[PXD_CLK_DIV_BITS-1:0]
6877HISPI_WAIT_ALL_LANES4'h8
6859CLKIN_PERIOD_SENSOR3.000
6887HISPI_IOSTANDARD"DIFF_SSTL18_I"
[HISPI_NUMLANES-1:0] 7090sns_dp
6853IODELAY_GRP"IODELAY_SENSOR"
cmd_deser_sens_io_i cmd_deser