Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
x393
Commits
9afdf9d6
Commit
9afdf9d6
authored
Aug 05, 2015
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
continue with test fixture
parent
38eedfcf
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
865 additions
and
270 deletions
+865
-270
x393_localparams.vh
includes/x393_localparams.vh
+3
-2
x393_parameters.vh
includes/x393_parameters.vh
+27
-13
x393_simulation_parameters.vh
includes/x393_simulation_parameters.vh
+11
-2
mcntrl393.v
memctrl/mcntrl393.v
+26
-9
sensor_channel.v
sensor/sensor_channel.v
+2
-2
sensor_i2c.v
sensor/sensor_i2c.v
+3
-3
sensor_i2c_io.v
sensor/sensor_i2c_io.v
+4
-4
sensors393.v
sensor/sensors393.v
+2
-3
simul_axi_hp_wr.v
simulation_modules/simul_axi_hp_wr.v
+3
-3
camsync393.v
timing/camsync393.v
+33
-14
rtc393.v
timing/rtc393.v
+1
-1
timing393.v
timing/timing393.v
+2
-2
cmd_frame_sequencer.v
util_modules/cmd_frame_sequencer.v
+0
-7
x393.v
x393.v
+12
-8
x393_testbench02.tf
x393_testbench02.tf
+736
-197
No files found.
includes/x393_localparams.vh
View file @
9afdf9d6
...
...
@@ -116,8 +116,9 @@
localparam STATUS_MSB_RSHFT= 2; // status bits [25:2] are read through [23:0]
localparam STATUS_PSHIFTER_RDY_MASK = 1<<STATUS_2LSB_SHFT;
localparam FRAME_START_ADDRESS= 'h1000; // RA=80, CA=0, BA=0 22-bit frame start address (3 CA LSBs==0. BA==0)
localparam FRAME_FULL_WIDTH= 'h0c0; // Padded line length (8-row increment), in 8-bursts (16 bytes)
localparam FRAME_START_ADDRESS= 'h1000; // RA=80, CA=0, BA=0 22-bit frame start address (3 CA LSBs==0. BA==0)
localparam FRAME_START_ADDRESS_INC= 'h 800;
localparam FRAME_FULL_WIDTH= 'h0c0; // Padded line length (8-row increment), in 8-bursts (16 bytes)
// localparam AFI_LO_ADDR64= 'h4000; // start of the system memory range in 64-bit words
// localparam AFI_SIZE64= 'h4000; // size of system memory range in 64-bit words
...
...
includes/x393_parameters.vh
View file @
9afdf9d6
...
...
@@ -216,10 +216,12 @@
parameter MCNTRL_SCANLINE_MODE= 'h0, // set mode register: {extra_pages[1:0],enable,!reset}
parameter MCNTRL_SCANLINE_STATUS_CNTRL= 'h1, // control status reporting
parameter MCNTRL_SCANLINE_STARTADDR= 'h2, // 22-bit frame start address (3 CA LSBs==0. BA==0)
parameter MCNTRL_SCANLINE_FRAME_FULL_WIDTH= 'h3, // Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter MCNTRL_SCANLINE_WINDOW_WH= 'h4, // low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter MCNTRL_SCANLINE_WINDOW_X0Y0= 'h5, // low word - 13-bit window left, high word - 16-bit window top
parameter MCNTRL_SCANLINE_WINDOW_STARTXY= 'h6, // low word - 13-bit start X (relative to window), high word - 16-bit start y
parameter MCNTRL_SCANLINE_FRAME_SIZE= 'h3, // 22-bit frame start address increment (3 CA LSBs==0. BA==0)
parameter MCNTRL_SCANLINE_FRAME_LAST= 'h4, // 16-bit last frame number in the buffer
parameter MCNTRL_SCANLINE_FRAME_FULL_WIDTH= 'h5, // Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter MCNTRL_SCANLINE_WINDOW_WH= 'h6, // low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter MCNTRL_SCANLINE_WINDOW_X0Y0= 'h7, // low word - 13-bit window left, high word - 16-bit window top
parameter MCNTRL_SCANLINE_WINDOW_STARTXY= 'h8, // low word - 13-bit start X (relative to window), high word - 16-bit start y
// Start XY can be used when read command to start from the middle
// TODO: Add number of blocks to R/W? (blocks can be different) - total length?
// Read back current address (for debugging)?
...
...
@@ -239,14 +241,17 @@
parameter MCNTRL_TILED_MODE= 'h0, // set mode register: {extra_pages[1:0],write_mode,enable,!reset}
parameter MCNTRL_TILED_STATUS_CNTRL= 'h1, // control status reporting
parameter MCNTRL_TILED_STARTADDR= 'h2, // 22-bit frame start address (3 CA LSBs==0. BA==0)
parameter MCNTRL_TILED_FRAME_FULL_WIDTH='h3, // Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter MCNTRL_TILED_WINDOW_WH= 'h4, // low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter MCNTRL_TILED_WINDOW_X0Y0= 'h5, // low word - 13-bit window left, high word - 16-bit window top
parameter MCNTRL_TILED_WINDOW_STARTXY= 'h6, // low word - 13-bit start X (relative to window), high word - 16-bit start y
parameter MCNTRL_TILED_FRAME_SIZE= 'h3, // 22-bit frame start address increment (3 CA LSBs==0. BA==0)
parameter MCNTRL_TILED_FRAME_LAST= 'h4, // 16-bit last frame number in the buffer
parameter MCNTRL_TILED_FRAME_FULL_WIDTH='h5, // Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter MCNTRL_TILED_WINDOW_WH= 'h6, // low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter MCNTRL_TILED_WINDOW_X0Y0= 'h7, // low word - 13-bit window left, high word - 16-bit window top
parameter MCNTRL_TILED_WINDOW_STARTXY= 'h8, // low word - 13-bit start X (relative to window), high word - 16-bit start y
// Start XY can be used when read command to start from the middle
// TODO: Add number of blocks to R/W? (blocks can be different) - total length?
// Read back current address (for debugging)?
parameter MCNTRL_TILED_TILE_WHS= 'h7, // low word - 6-bit tile width in 8-bursts, high - tile height (0 - > 64)
parameter MCNTRL_TILED_TILE_WHS= 'h9, // low byte - 6-bit tile width in 8-bursts, second byte - tile height (0 - > 64),
// 3-rd byte - vertical step (to control tile vertical overlap)
parameter MCNTRL_TILED_STATUS_REG_CHN2_ADDR= 'h5,
parameter MCNTRL_TILED_STATUS_REG_CHN4_ADDR= 'h7,
parameter MCNTRL_TILED_PENDING_CNTR_BITS=2, // Number of bits to count pending trasfers, currently 2 is enough, but may increase
...
...
@@ -282,6 +287,15 @@
parameter MCNTRL_TEST01_STATUS_REG_CHN2_ADDR= 'h3d, // status/readback register for channel 3
parameter MCNTRL_TEST01_STATUS_REG_CHN3_ADDR= 'h3e, // status/readback register for channel 4
parameter MCNTRL_TEST01_STATUS_REG_CHN4_ADDR= 'h3f, // status/readback register for channel 4
parameter MCONTR_SENS_BASE = 'h680, // .. 'h6bf
parameter MCONTR_SENS_INC = 'h10,
parameter MCONTR_CMPRS_BASE = 'h6c0, // .. 'h6ff
parameter MCONTR_CMPRS_INC = 'h10,
parameter MCONTR_SENS_STATUS_BASE = 'h28, // .. 'h2b
parameter MCONTR_SENS_STATUS_INC = 'h1,
parameter MCONTR_CMPRS_STATUS_BASE = 'h2c, // .. 'h2f
parameter MCONTR_CMPRS_STATUS_INC = 'h1,
// membridge module parameters
parameter MEMBRIDGE_ADDR= 'h200,
...
...
@@ -338,9 +352,9 @@
parameter SENSI2C_CMD_DLY = 8, // [7:0] - duration of quater i2c cycle (if 0, [3:0] control SCL+SDA)
parameter SENSI2C_CMD_DLY_PBITS = 8,
// direct control of SDA/SCL mutually exclusive with DLY control, disabled by running i2c
parameter SENSI2C_CMD_SCL =
0, // [1:0
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter SENSI2C_CMD_SCL =
16, // [17:16
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter SENSI2C_CMD_SCL_WIDTH = 2,
parameter SENSI2C_CMD_SDA =
2, // [3:2
] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter SENSI2C_CMD_SDA =
18, // [19:18
] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter SENSI2C_CMD_SDA_WIDTH = 2,
parameter SENSI2C_STATUS = 'h1,
...
...
@@ -602,8 +616,8 @@
parameter CAMSYNC_TRIG_DELAY2 = 'h6, // setup input trigger delay
parameter CAMSYNC_TRIG_DELAY3 = 'h7, // setup input trigger delay
parameter CAMSYNC_SNDEN_BIT = 'h1, // enable writing ts_snd_en
parameter CAMSYNC_EXTERNAL_BIT = 'h3, // enable writing ts_external
parameter CAMSYNC_TRIGGERED_BIT = 'h5, //
enable writing ts_external
parameter CAMSYNC_EXTERNAL_BIT = 'h3, // enable writing ts_external
(0 - local timestamp in the frame header)
parameter CAMSYNC_TRIGGERED_BIT = 'h5, //
triggered mode ( 0- async)
parameter CAMSYNC_MASTER_BIT = 'h8, // select a 2-bit master channel (master delay may be used as a flash delay)
parameter CAMSYNC_CHN_EN_BIT = 'hd, // per-channel enable timestamp generation
parameter CAMSYNC_PRE_MAGIC = 6'b110100,
...
...
includes/x393_simulation_parameters.vh
View file @
9afdf9d6
...
...
@@ -46,5 +46,14 @@
parameter SENSOR12BITS_TDDO = 2, // some confusion here - let's assume that it is from DCLK to Data out
parameter SENSOR12BITS_TDDO1 = 5, //
parameter SENSOR12BITS_TRIGDLY = 8, // delay between trigger input and start of output (VACT) in lines
parameter SENSOR12BITS_RAMP = 1, // 1 - ramp, 0 - random (now - sensor.dat)
parameter SENSOR12BITS_NEW_BAYER = 0 // 0 - "old" tiles (16x16, 1 - new - (18x18)
\ No newline at end of file
parameter SENSOR12BITS_RAMP = 1, // 1 - ramp, 0 - random (now - sensor.dat)
parameter SENSOR12BITS_NEW_BAYER = 0, // 0 - "old" tiles (16x16, 1 - new - (18x18)
parameter HISTOGRAM_LEFT = 0, //2; // left
parameter HISTOGRAM_TOP = 2, // top
parameter HISTOGRAM_WIDTH = 6, // width
parameter HISTOGRAM_HEIGHT = 6, // height
parameter HISTOGRAM_STRAT_PAGE = 20'h12345,
parameter WOI_WIDTH= 64
\ No newline at end of file
memctrl/mcntrl393.v
View file @
9afdf9d6
...
...
@@ -182,10 +182,12 @@ module mcntrl393 #(
parameter
MCNTRL_SCANLINE_MODE
=
'h0
,
// set mode register: {extra_pages[1:0],enable,!reset}
parameter
MCNTRL_SCANLINE_STATUS_CNTRL
=
'h1
,
// control status reporting
parameter
MCNTRL_SCANLINE_STARTADDR
=
'h2
,
// 22-bit frame start address (3 CA LSBs==0. BA==0)
parameter
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
=
'h3
,
// Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter
MCNTRL_SCANLINE_WINDOW_WH
=
'h4
,
// low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter
MCNTRL_SCANLINE_WINDOW_X0Y0
=
'h5
,
// low word - 13-bit window left, high word - 16-bit window top
parameter
MCNTRL_SCANLINE_WINDOW_STARTXY
=
'h6
,
// low word - 13-bit start X (relative to window), high word - 16-bit start y
parameter
MCNTRL_SCANLINE_FRAME_SIZE
=
'h3
,
// 22-bit frame start address increment (3 CA LSBs==0. BA==0)
parameter
MCNTRL_SCANLINE_FRAME_LAST
=
'h4
,
// 16-bit last frame number in the buffer
parameter
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
=
'h5
,
// Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter
MCNTRL_SCANLINE_WINDOW_WH
=
'h6
,
// low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter
MCNTRL_SCANLINE_WINDOW_X0Y0
=
'h7
,
// low word - 13-bit window left, high word - 16-bit window top
parameter
MCNTRL_SCANLINE_WINDOW_STARTXY
=
'h8
,
// low word - 13-bit start X (relative to window), high word - 16-bit start y
// Start XY can be used when read command to start from the middle
// TODO: Add number of blocks to R/W? (blocks can be different) - total length?
// Read back current address (for debugging)?
...
...
@@ -207,14 +209,17 @@ module mcntrl393 #(
parameter
MCNTRL_TILED_MODE
=
'h0
,
// set mode register: {extra_pages[1:0],write_mode,enable,!reset}
parameter
MCNTRL_TILED_STATUS_CNTRL
=
'h1
,
// control status reporting
parameter
MCNTRL_TILED_STARTADDR
=
'h2
,
// 22-bit frame start address (3 CA LSBs==0. BA==0)
parameter
MCNTRL_TILED_FRAME_FULL_WIDTH
=
'h3
,
// Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter
MCNTRL_TILED_WINDOW_WH
=
'h4
,
// low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter
MCNTRL_TILED_WINDOW_X0Y0
=
'h5
,
// low word - 13-bit window left, high word - 16-bit window top
parameter
MCNTRL_TILED_WINDOW_STARTXY
=
'h6
,
// low word - 13-bit start X (relative to window), high word - 16-bit start y
parameter
MCNTRL_TILED_FRAME_SIZE
=
'h3
,
// 22-bit frame start address increment (3 CA LSBs==0. BA==0)
parameter
MCNTRL_TILED_FRAME_LAST
=
'h4
,
// 16-bit last frame number in the buffer
parameter
MCNTRL_TILED_FRAME_FULL_WIDTH
=
'h5
,
// Padded line length (8-row increment), in 8-bursts (16 bytes)
parameter
MCNTRL_TILED_WINDOW_WH
=
'h6
,
// low word - 13-bit window width (0->'h4000), high word - 16-bit frame height (0->'h10000)
parameter
MCNTRL_TILED_WINDOW_X0Y0
=
'h7
,
// low word - 13-bit window left, high word - 16-bit window top
parameter
MCNTRL_TILED_WINDOW_STARTXY
=
'h8
,
// low word - 13-bit start X (relative to window), high word - 16-bit start y
// Start XY can be used when read command to start from the middle
// TODO: Add number of blocks to R/W? (blocks can be different) - total length?
// Read back current address (for debugging)?
parameter
MCNTRL_TILED_TILE_WHS
=
'h7
,
// low word - 6-bit tile width in 8-bursts, high - tile height (0 - > 64)
parameter
MCNTRL_TILED_TILE_WHS
=
'h9
,
// low byte - 6-bit tile width in 8-bursts, second byte - tile height (0 - > 64),
// 3-rd byte - vertical step (to control tile vertical overlap)
parameter
MCNTRL_TILED_STATUS_REG_CHN2_ADDR
=
'h5
,
parameter
MCNTRL_TILED_STATUS_REG_CHN4_ADDR
=
'h7
,
parameter
MCNTRL_TILED_PENDING_CNTR_BITS
=
2
,
// Number of bits to count pending trasfers, currently 2 is enough, but may increase
...
...
@@ -1036,6 +1041,8 @@ module mcntrl393 #(
.
MCNTRL_SCANLINE_MODE
(
MCNTRL_SCANLINE_MODE
)
,
.
MCNTRL_SCANLINE_STATUS_CNTRL
(
MCNTRL_SCANLINE_STATUS_CNTRL
)
,
.
MCNTRL_SCANLINE_STARTADDR
(
MCNTRL_SCANLINE_STARTADDR
)
,
.
MCNTRL_SCANLINE_FRAME_SIZE
(
MCNTRL_SCANLINE_FRAME_SIZE
)
,
.
MCNTRL_SCANLINE_FRAME_LAST
(
MCNTRL_SCANLINE_FRAME_LAST
)
,
.
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
(
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
)
,
.
MCNTRL_SCANLINE_WINDOW_WH
(
MCNTRL_SCANLINE_WINDOW_WH
)
,
.
MCNTRL_SCANLINE_WINDOW_X0Y0
(
MCNTRL_SCANLINE_WINDOW_X0Y0
)
,
...
...
@@ -1095,6 +1102,8 @@ module mcntrl393 #(
.
MCNTRL_TILED_MODE
(
MCNTRL_TILED_MODE
)
,
.
MCNTRL_TILED_STATUS_CNTRL
(
MCNTRL_TILED_STATUS_CNTRL
)
,
.
MCNTRL_TILED_STARTADDR
(
MCNTRL_TILED_STARTADDR
)
,
.
MCNTRL_TILED_FRAME_SIZE
(
MCNTRL_TILED_FRAME_SIZE
)
,
.
MCNTRL_TILED_FRAME_LAST
(
MCNTRL_TILED_FRAME_LAST
)
,
.
MCNTRL_TILED_FRAME_FULL_WIDTH
(
MCNTRL_TILED_FRAME_FULL_WIDTH
)
,
.
MCNTRL_TILED_WINDOW_WH
(
MCNTRL_TILED_WINDOW_WH
)
,
.
MCNTRL_TILED_WINDOW_X0Y0
(
MCNTRL_TILED_WINDOW_X0Y0
)
,
...
...
@@ -1167,6 +1176,8 @@ module mcntrl393 #(
.
MCNTRL_SCANLINE_MODE
(
MCNTRL_SCANLINE_MODE
)
,
.
MCNTRL_SCANLINE_STATUS_CNTRL
(
MCNTRL_SCANLINE_STATUS_CNTRL
)
,
.
MCNTRL_SCANLINE_STARTADDR
(
MCNTRL_SCANLINE_STARTADDR
)
,
.
MCNTRL_SCANLINE_FRAME_SIZE
(
MCNTRL_SCANLINE_FRAME_SIZE
)
,
.
MCNTRL_SCANLINE_FRAME_LAST
(
MCNTRL_SCANLINE_FRAME_LAST
)
,
.
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
(
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
)
,
.
MCNTRL_SCANLINE_WINDOW_WH
(
MCNTRL_SCANLINE_WINDOW_WH
)
,
.
MCNTRL_SCANLINE_WINDOW_X0Y0
(
MCNTRL_SCANLINE_WINDOW_X0Y0
)
,
...
...
@@ -1225,6 +1236,8 @@ module mcntrl393 #(
.
MCNTRL_SCANLINE_MODE
(
MCNTRL_SCANLINE_MODE
)
,
.
MCNTRL_SCANLINE_STATUS_CNTRL
(
MCNTRL_SCANLINE_STATUS_CNTRL
)
,
.
MCNTRL_SCANLINE_STARTADDR
(
MCNTRL_SCANLINE_STARTADDR
)
,
.
MCNTRL_SCANLINE_FRAME_SIZE
(
MCNTRL_SCANLINE_FRAME_SIZE
)
,
.
MCNTRL_SCANLINE_FRAME_LAST
(
MCNTRL_SCANLINE_FRAME_LAST
)
,
.
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
(
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
)
,
.
MCNTRL_SCANLINE_WINDOW_WH
(
MCNTRL_SCANLINE_WINDOW_WH
)
,
.
MCNTRL_SCANLINE_WINDOW_X0Y0
(
MCNTRL_SCANLINE_WINDOW_X0Y0
)
,
...
...
@@ -1284,6 +1297,8 @@ module mcntrl393 #(
.
MCNTRL_TILED_MODE
(
MCNTRL_TILED_MODE
)
,
.
MCNTRL_TILED_STATUS_CNTRL
(
MCNTRL_TILED_STATUS_CNTRL
)
,
.
MCNTRL_TILED_STARTADDR
(
MCNTRL_TILED_STARTADDR
)
,
.
MCNTRL_TILED_FRAME_SIZE
(
MCNTRL_TILED_FRAME_SIZE
)
,
.
MCNTRL_TILED_FRAME_LAST
(
MCNTRL_TILED_FRAME_LAST
)
,
.
MCNTRL_TILED_FRAME_FULL_WIDTH
(
MCNTRL_TILED_FRAME_FULL_WIDTH
)
,
.
MCNTRL_TILED_WINDOW_WH
(
MCNTRL_TILED_WINDOW_WH
)
,
.
MCNTRL_TILED_WINDOW_X0Y0
(
MCNTRL_TILED_WINDOW_X0Y0
)
,
...
...
@@ -1349,6 +1364,8 @@ module mcntrl393 #(
.
MCNTRL_TILED_MODE
(
MCNTRL_TILED_MODE
)
,
.
MCNTRL_TILED_STATUS_CNTRL
(
MCNTRL_TILED_STATUS_CNTRL
)
,
.
MCNTRL_TILED_STARTADDR
(
MCNTRL_TILED_STARTADDR
)
,
.
MCNTRL_TILED_FRAME_SIZE
(
MCNTRL_TILED_FRAME_SIZE
)
,
.
MCNTRL_TILED_FRAME_LAST
(
MCNTRL_TILED_FRAME_LAST
)
,
.
MCNTRL_TILED_FRAME_FULL_WIDTH
(
MCNTRL_TILED_FRAME_FULL_WIDTH
)
,
.
MCNTRL_TILED_WINDOW_WH
(
MCNTRL_TILED_WINDOW_WH
)
,
.
MCNTRL_TILED_WINDOW_X0Y0
(
MCNTRL_TILED_WINDOW_X0Y0
)
,
...
...
sensor/sensor_channel.v
View file @
9afdf9d6
...
...
@@ -70,9 +70,9 @@ module sensor_channel#(
parameter
SENSI2C_CMD_DLY
=
8
,
// [7:0] - duration of quater i2c cycle (if 0, [3:0] control SCL+SDA)
parameter
SENSI2C_CMD_DLY_PBITS
=
8
,
// direct control of SDA/SCL mutually exclusive with DLY control, disabled by running i2c
parameter
SENSI2C_CMD_SCL
=
0
,
// [1:0
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL
=
16
,
// [17:16
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL_WIDTH
=
2
,
parameter
SENSI2C_CMD_SDA
=
2
,
// [3:2] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter
SENSI2C_CMD_SDA
=
18
,
// [19:18] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter
SENSI2C_CMD_SDA_WIDTH
=
2
,
parameter
SENSI2C_STATUS
=
'h1
,
...
...
sensor/sensor_i2c.v
View file @
9afdf9d6
...
...
@@ -37,10 +37,10 @@ module sensor_i2c#(
parameter
SENSI2C_CMD_BYTES_PBITS
=
2
,
parameter
SENSI2C_CMD_DLY
=
8
,
// [7:0] - duration of quater i2c cycle (if 0, [3:0] control SCL+SDA)
parameter
SENSI2C_CMD_DLY_PBITS
=
8
,
// direct control of SDA/SCL mutually exclusive with DLY control, disabled by running i2c
parameter
SENSI2C_CMD_SCL
=
0
,
// [1:0
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL
=
16
,
// [17:16
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL_WIDTH
=
2
,
parameter
SENSI2C_CMD_SDA
=
2
,
// [3:2
] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter
SENSI2C_CMD_SDA
=
18
,
// [19:18
] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter
SENSI2C_CMD_SDA_WIDTH
=
2
)(
input
mrst
,
// @ posedge mclk
...
...
sensor/sensor_i2c_io.v
View file @
9afdf9d6
...
...
@@ -38,10 +38,10 @@ module sensor_i2c_io#(
parameter
SENSI2C_CMD_DLY
=
8
,
// [7:0] - duration of quater i2c cycle (if 0, [3:0] control SCL+SDA)
parameter
SENSI2C_CMD_DLY_PBITS
=
8
,
// direct control of SDA/SCL mutually exclusive with DLY control, disabled by running i2c
parameter
SENSI2C_CMD_SCL
=
0
,
// [1:0
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL_WIDTH
=
2
,
parameter
SENSI2C_CMD_SDA
=
2
,
// [3:2] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter
SENSI2C_CMD_SDA_WIDTH
=
2
,
parameter
SENSI2C_CMD_SCL
=
16
,
// [17:16
] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL_WIDTH
=
2
,
parameter
SENSI2C_CMD_SDA
=
18
,
// [19:18] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter
SENSI2C_CMD_SDA_WIDTH
=
2
,
// I/O parameters
parameter
integer
SENSI2C_DRIVE
=
12
,
parameter
SENSI2C_IBUF_LOW_PWR
=
"TRUE"
,
...
...
sensor/sensors393.v
View file @
9afdf9d6
...
...
@@ -61,10 +61,9 @@ module sensors393 #(
parameter
SENSI2C_CMD_BYTES_PBITS
=
2
,
parameter
SENSI2C_CMD_DLY
=
8
,
// [7:0] - duration of quater i2c cycle (if 0, [3:0] control SCL+SDA)
parameter
SENSI2C_CMD_DLY_PBITS
=
8
,
// direct control of SDA/SCL mutually exclusive with DLY control, disabled by running i2c
parameter
SENSI2C_CMD_SCL
=
0
,
// [1:0] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL
=
16
,
// [17:16] : 0: NOP, 1: 1'b0->SCL, 2: 1'b1->SCL, 3: 1'bz -> SCL
parameter
SENSI2C_CMD_SCL_WIDTH
=
2
,
parameter
SENSI2C_CMD_SDA
=
2
,
// [3:2] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA
parameter
SENSI2C_CMD_SDA
=
18
,
// [19:18] : 0: NOP, 1: 1'b0->SDA, 2: 1'b1->SDA, 3: 1'bz -> SDA,
parameter
SENSI2C_CMD_SDA_WIDTH
=
2
,
parameter
SENSI2C_STATUS
=
'h1
,
...
...
simulation_modules/simul_axi_hp_wr.v
View file @
9afdf9d6
...
...
@@ -32,9 +32,9 @@ module simul_axi_hp_wr#(
input
awvalid
,
output
awready
,
input
[
5
:
0
]
awid
,
input
[
1
:
0
]
awlock
,
// verify the cor
er
ct values are here
input
[
3
:
0
]
awcache
,
// verify the cor
er
ct values are here
input
[
2
:
0
]
awprot
,
// verify the cor
er
ct values are here
input
[
1
:
0
]
awlock
,
// verify the cor
re
ct values are here
input
[
3
:
0
]
awcache
,
// verify the cor
re
ct values are here
input
[
2
:
0
]
awprot
,
// verify the cor
re
ct values are here
input
[
3
:
0
]
awlen
,
input
[
1
:
0
]
awsize
,
input
[
1
:
0
]
awburst
,
...
...
timing/camsync393.v
View file @
9afdf9d6
...
...
@@ -42,8 +42,8 @@ module camsync393 #(
parameter
CAMSYNC_TRIG_DELAY3
=
'h7
,
// setup input trigger delay
parameter
CAMSYNC_SNDEN_BIT
=
'h1
,
// enable writing ts_snd_en
parameter
CAMSYNC_EXTERNAL_BIT
=
'h3
,
// enable writing ts_external
parameter
CAMSYNC_TRIGGERED_BIT
=
'h5
,
//
enable writing ts_external
parameter
CAMSYNC_EXTERNAL_BIT
=
'h3
,
// enable writing ts_external
(0 - local timestamp in the frame header)
parameter
CAMSYNC_TRIGGERED_BIT
=
'h5
,
//
triggered mode ( 0- async)
parameter
CAMSYNC_MASTER_BIT
=
'h8
,
// select a 2-bit master channel (master delay may be used as a flash delay)
parameter
CAMSYNC_CHN_EN_BIT
=
'hd
,
// per-channel enable timestamp generation
...
...
@@ -63,7 +63,7 @@ module camsync393 #(
// [5:4] +'h20 - reset triggered mode (free running sensor), +'h30 - set sensor triggered mode
// [8:6] +'h100 - set master channel (zero delay in internal trigger mode, delay used for flash output)
// [13:9] +'h2000 - set which channels to generate timestamp mesages
// UPDATE now di-bit "01" means "keep" (00 - do not use, 01 - keep, 10 set active 0, 11 - set active 1)
// 1 - source of trigger (10 bit pairs, LSB - level to trigger, MSB - use this bit). All 0 - internal trigger
// in internal mode output has variable delay from the internal trigger (relative to sensor trigger)
// 2 - 10 bit pairs: MSB - enable selected line, LSB - level to send when trigger active
...
...
@@ -79,7 +79,7 @@ module camsync393 #(
input
prst
,
// @ posedge pclk - sync reset
input
[
9
:
0
]
gpio_in
,
// 10-bit input from GPIO pins -> 10 bit
output
[
9
:
0
]
gpio_out
,
// 10-bit output to GPIO pins
output
reg
[
9
:
0
]
gpio_out_en
,
// 10-bit output enable to GPIO pins
output
[
9
:
0
]
gpio_out_en
,
// 10-bit output enable to GPIO pins
output
triggered_mode
,
// use triggered mode (0 - sensors are free-running) @mclk
...
...
@@ -197,6 +197,7 @@ module camsync393 #(
reg
high_zero
;
// 24 MSBs are zero
reg
[
9
:
0
]
input_use
;
// 1 - use this bit
reg
[
9
:
0
]
input_pattern
;
// data to be compared for trigger event to take place
reg
[
9
:
0
]
gpio_out_en_r
;
reg
pre_input_use_intern
;
// @(posedge mclk) Use internal trigger generator, 0 - use external trigger (also switches delay from input to output)
reg
input_use_intern
;
// @(posedge clk)
reg
[
31
:
0
]
input_dly_chn0
;
// delay value for the trigger
...
...
@@ -285,6 +286,8 @@ module camsync393 #(
wire
[
3
:
0
]
frame_sync
;
reg
[
3
:
0
]
ts_snap_triggered
;
// make a timestamp pulse single @(posedge pclk)
wire
[
3
:
0
]
ts_snap_triggered_mclk
;
// make a timestamp pulse single @(posedge pclk)
assign
gpio_out_en
=
gpio_out_en_r
;
//! in testmode GPIO[9] and GPIO[8] use internal signals instead of the outsync:
//! bit 11 - same as TRIGGER output to the sensor (signal to the sensor may be disabled externally)
//! then that bit will be still from internall trigger to frame valid
...
...
@@ -326,11 +329,27 @@ module camsync393 #(
assign
set_trig_delay2_w
=
cmd_we
&&
(
cmd_a
==
CAMSYNC_TRIG_DELAY2
)
;
assign
set_trig_delay3_w
=
cmd_we
&&
(
cmd_a
==
CAMSYNC_TRIG_DELAY3
)
;
assign
pre_input_use
=
{
cmd_data
[
19
]
,
cmd_data
[
17
]
,
cmd_data
[
15
]
,
cmd_data
[
13
]
,
cmd_data
[
11
]
,
cmd_data
[
9
]
,
cmd_data
[
7
]
,
cmd_data
[
5
]
,
cmd_data
[
3
]
,
cmd_data
[
1
]
};
assign
pre_input_pattern
=
{
cmd_data
[
18
]
,
cmd_data
[
16
]
,
cmd_data
[
14
]
,
cmd_data
[
12
]
,
cmd_data
[
10
]
,
cmd_data
[
8
]
,
cmd_data
[
6
]
,
cmd_data
[
4
]
,
cmd_data
[
2
]
,
cmd_data
[
0
]
};
assign
pre_input_use
=
{
cmd_data
[
19
]
,
cmd_data
[
17
]
,
cmd_data
[
15
]
,
cmd_data
[
13
]
,
cmd_data
[
11
]
,
cmd_data
[
9
]
,
cmd_data
[
7
]
,
cmd_data
[
5
]
,
cmd_data
[
3
]
,
cmd_data
[
1
]
};
assign
pre_input_pattern
=
{
cmd_data
[
18
]
,
cmd_data
[
16
]
,
cmd_data
[
14
]
,
cmd_data
[
12
]
,
cmd_data
[
10
]
,
cmd_data
[
8
]
,
cmd_data
[
6
]
,
cmd_data
[
4
]
,
cmd_data
[
2
]
,
cmd_data
[
0
]
};
assign
triggered_mode
=
triggered_mode_r
;
assign
{
ts_snap_mclk_chn3
,
ts_snap_mclk_chn2
,
ts_snap_mclk_chn1
,
ts_snap_mclk_chn0
}
=
triggered_mode
?
ts_snap_triggered_mclk
:
frame_sync
;
// keep previous value if 2'b01
// assign input_use_w = pre_input_use | (~pre_input_use & pre_input_pattern & input_use);
wire
[
9
:
0
]
input_mask
=
pre_input_pattern
|
~
pre_input_use
;
wire
[
9
:
0
]
input_use_w
=
((
input_use
^
pre_input_use
)
&
input_mask
)
^
input_use
;
wire
[
9
:
0
]
input_pattern_w
=
((
input_pattern
^
pre_input_pattern
)
&
input_mask
)
^
input_pattern
;
wire
[
9
:
0
]
pre_gpio_out_en
=
{
cmd_data
[
19
]
,
cmd_data
[
17
]
,
cmd_data
[
15
]
,
cmd_data
[
13
]
,
cmd_data
[
11
]
,
cmd_data
[
9
]
,
cmd_data
[
7
]
,
cmd_data
[
5
]
,
cmd_data
[
3
]
,
cmd_data
[
1
]
};
wire
[
9
:
0
]
pre_gpio_active
=
{
cmd_data
[
18
]
,
cmd_data
[
16
]
,
cmd_data
[
14
]
,
cmd_data
[
12
]
,
cmd_data
[
10
]
,
cmd_data
[
8
]
,
cmd_data
[
6
]
,
cmd_data
[
4
]
,
cmd_data
[
2
]
,
cmd_data
[
0
]
};
wire
[
9
:
0
]
output_mask
=
pre_gpio_out_en
|
~
pre_gpio_active
;
wire
[
9
:
0
]
gpio_out_en_w
=
((
gpio_out_en_r
^
pre_gpio_out_en
)
&
output_mask
)
^
gpio_out_en_r
;
wire
[
9
:
0
]
gpio_active_w
=
((
gpio_active
^
pre_gpio_active
)
&
output_mask
)
^
gpio_active
;
always
@
(
posedge
mclk
)
begin
if
(
set_mode_reg_w
)
begin
if
(
cmd_data
[
CAMSYNC_SNDEN_BIT
])
ts_snd_en
<=
cmd_data
[
CAMSYNC_SNDEN_BIT
-
1
]
;
...
...
@@ -339,11 +358,11 @@ module camsync393 #(
if
(
cmd_data
[
CAMSYNC_MASTER_BIT
])
master_chn
<=
cmd_data
[
CAMSYNC_MASTER_BIT
-
1
-:
2
]
;
if
(
cmd_data
[
CAMSYNC_CHN_EN_BIT
])
chn_en
<=
cmd_data
[
CAMSYNC_CHN_EN_BIT
-
1
-:
4
]
;
end
if
(
set_trig_src_w
)
begin
input_use
<=
pre_input_use
;
input_pattern
<=
pre_input_pattern
;
pre_input_use_intern
<=
(
pre_input_use
==
0
)
;
// use internal source for triggering
if
(
mrst
)
input_use
<=
0
;
else
if
(
set_trig_src_w
)
begin
input_use
<=
input_use_w
;
input_pattern
<=
input_pattern_w
;
pre_input_use_intern
<=
(
input_use_w
==
0
)
;
// use internal source for triggering
end
if
(
set_trig_delay0_w
)
begin
...
...
@@ -363,8 +382,8 @@ module camsync393 #(
end
if
(
set_trig_dst_w
)
begin
gpio_out_en
[
9
:
0
]
<=
{
cmd_data
[
19
]
,
cmd_data
[
17
]
,
cmd_data
[
15
]
,
cmd_data
[
13
]
,
cmd_data
[
11
]
,
cmd_data
[
9
]
,
cmd_data
[
7
]
,
cmd_data
[
5
]
,
cmd_data
[
3
]
,
cmd_data
[
1
]
}
;
gpio_active
[
9
:
0
]
<=
{
cmd_data
[
18
]
,
cmd_data
[
16
]
,
cmd_data
[
14
]
,
cmd_data
[
12
]
,
cmd_data
[
10
]
,
cmd_data
[
8
]
,
cmd_data
[
6
]
,
cmd_data
[
4
]
,
cmd_data
[
2
]
,
cmd_data
[
0
]
}
;
gpio_out_en
_r
[
9
:
0
]
<=
gpio_out_en_w
;
gpio_active
[
9
:
0
]
<=
gpio_active_w
;
testmode
<=
cmd_data
[
24
]
;
end
...
...
timing/rtc393.v
View file @
9afdf9d6
...
...
@@ -31,7 +31,7 @@ module rtc393 #(
parameter
RTC_MHZ
=
25
,
// RTC input clock in MHz (should be interger number)
parameter
RTC_BITC_PREDIV
=
5
,
// number of bits to generate 2 MHz pulses counting refclk
parameter
RTC_SET_USEC
=
0
,
// 20-bit number of microseconds
parameter
RTC_SET_SEC
=
1
,
// 32-bit full number of seconds (
u
nd actually update timer)
parameter
RTC_SET_SEC
=
1
,
// 32-bit full number of seconds (
a
nd actually update timer)
parameter
RTC_SET_CORR
=
2
,
// write correction 16-bit signed
parameter
RTC_SET_STATUS
=
3
// set status mode, and take a time snapshot (wait response and read time)
...
...
timing/timing393.v
View file @
9afdf9d6
...
...
@@ -36,8 +36,8 @@ module timing393 #(
parameter
CAMSYNC_TRIG_DELAY2
=
'h6
,
// setup input trigger delay
parameter
CAMSYNC_TRIG_DELAY3
=
'h7
,
// setup input trigger delay
parameter
CAMSYNC_SNDEN_BIT
=
'h1
,
// enable writing ts_snd_en
parameter
CAMSYNC_EXTERNAL_BIT
=
'h3
,
// enable writing ts_external
parameter
CAMSYNC_TRIGGERED_BIT
=
'h5
,
//
enable writing ts_external
parameter
CAMSYNC_EXTERNAL_BIT
=
'h3
,
// enable writing ts_external
(0 - local timestamp in the frame header)
parameter
CAMSYNC_TRIGGERED_BIT
=
'h5
,
//
triggered mode ( 0- async)
parameter
CAMSYNC_MASTER_BIT
=
'h8
,
// select a 2-bit master channel (master delay may be used as a flash delay)
parameter
CAMSYNC_CHN_EN_BIT
=
'hd
,
// per-channel enable timestamp generation
parameter
CAMSYNC_PRE_MAGIC
=
6'b110100
,
...
...
util_modules/cmd_frame_sequencer.v
View file @
9afdf9d6
...
...
@@ -27,12 +27,6 @@
// It also reduces real-time requirements to the software, as it is possible to
// program parameters related to the events several frames in the future.
//
// Commands related to the particular frames go to one of the 8 FIFO buffers (64 commands deep each),
// each command is 32 bits wide, with 8MSBs being register address, and the remaining 24 bits - data
// to be written.
// That limits data that can be written to the FPGA registers compared to the direct register writes
// (8MSBs are always zero), but all the relevant information can be written with just 24 data bits.
//
//
// Controller is programmed through 32 locations. Each registers but the control require two writes:
// First write - register address (AXI_WR_ADDR_BITS bits), second - register data (32 bits)
...
...
@@ -57,7 +51,6 @@ module cmd_frame_sequencer#(
parameter
CMDFRAMESEQ_CTRL
=
31
,
parameter
CMDFRAMESEQ_RST_BIT
=
14
,
parameter
CMDFRAMESEQ_RUN_BIT
=
13
)(
input
mrst
,
input
mclk
,
// for command/status
...
...
x393.v
View file @
9afdf9d6
...
...
@@ -916,14 +916,14 @@ assign axi_grst = axi_rst_pre;
)
;
mcntrl393
#(
.
MCONTR_SENS_BASE
(
'h680
)
,
.
MCONTR_SENS_INC
(
'h10
)
,
.
MCONTR_CMPRS_BASE
(
'h6c0
)
,
.
MCONTR_CMPRS_INC
(
'h10
)
,
.
MCONTR_SENS_STATUS_BASE
(
'h28
)
,
.
MCONTR_SENS_STATUS_INC
(
'h1
)
,
.
MCONTR_CMPRS_STATUS_BASE
(
'h2c
)
,
.
MCONTR_CMPRS_STATUS_INC
(
'h1
)
,
.
MCONTR_SENS_BASE
(
MCONTR_SENS_BASE
)
,
.
MCONTR_SENS_INC
(
MCONTR_SENS_INC
)
,
.
MCONTR_CMPRS_BASE
(
MCONTR_CMPRS_BASE
)
,
.
MCONTR_CMPRS_INC
(
MCONTR_CMPRS_INC
)
,
.
MCONTR_SENS_STATUS_BASE
(
MCONTR_SENS_STATUS_BASE
)
,
.
MCONTR_SENS_STATUS_INC
(
MCONTR_SENS_STATUS_INC
)
,
.
MCONTR_CMPRS_STATUS_BASE
(
MCONTR_CMPRS_STATUS_BASE
)
,
.
MCONTR_CMPRS_STATUS_INC
(
MCONTR_CMPRS_STATUS_INC
)
,
.
MCONTR_WR_MASK
(
MCONTR_WR_MASK
)
,
.
MCONTR_RD_MASK
(
MCONTR_RD_MASK
)
,
...
...
@@ -1025,6 +1025,8 @@ assign axi_grst = axi_rst_pre;
.
MCNTRL_SCANLINE_MODE
(
MCNTRL_SCANLINE_MODE
)
,
.
MCNTRL_SCANLINE_STATUS_CNTRL
(
MCNTRL_SCANLINE_STATUS_CNTRL
)
,
.
MCNTRL_SCANLINE_STARTADDR
(
MCNTRL_SCANLINE_STARTADDR
)
,
.
MCNTRL_SCANLINE_FRAME_SIZE
(
MCNTRL_SCANLINE_FRAME_SIZE
)
,
.
MCNTRL_SCANLINE_FRAME_LAST
(
MCNTRL_SCANLINE_FRAME_LAST
)
,
.
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
(
MCNTRL_SCANLINE_FRAME_FULL_WIDTH
)
,
.
MCNTRL_SCANLINE_WINDOW_WH
(
MCNTRL_SCANLINE_WINDOW_WH
)
,
.
MCNTRL_SCANLINE_WINDOW_X0Y0
(
MCNTRL_SCANLINE_WINDOW_X0Y0
)
,
...
...
@@ -1041,6 +1043,8 @@ assign axi_grst = axi_rst_pre;
.
MCNTRL_TILED_MODE
(
MCNTRL_TILED_MODE
)
,
.
MCNTRL_TILED_STATUS_CNTRL
(
MCNTRL_TILED_STATUS_CNTRL
)
,
.
MCNTRL_TILED_STARTADDR
(
MCNTRL_TILED_STARTADDR
)
,
.
MCNTRL_TILED_FRAME_SIZE
(
MCNTRL_TILED_FRAME_SIZE
)
,
.
MCNTRL_TILED_FRAME_LAST
(
MCNTRL_TILED_FRAME_LAST
)
,
.
MCNTRL_TILED_FRAME_FULL_WIDTH
(
MCNTRL_TILED_FRAME_FULL_WIDTH
)
,
.
MCNTRL_TILED_WINDOW_WH
(
MCNTRL_TILED_WINDOW_WH
)
,
.
MCNTRL_TILED_WINDOW_X0Y0
(
MCNTRL_TILED_WINDOW_X0Y0
)
,
...
...
x393_testbench02.tf
View file @
9afdf9d6
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment