Commit 2585b4af authored by Andrey Filippov's avatar Andrey Filippov

adding synchronization and logger modules

parent 69e5938a
...@@ -24,9 +24,9 @@ ...@@ -24,9 +24,9 @@
`timescale 1ns/1ps `timescale 1ns/1ps
module mult_saxi_wr #( module mult_saxi_wr #(
parameter MULT_SAXI_ADDR = 'h380, // need to modify addresses and masks to fit into overall command range parameter MULT_SAXI_ADDR = 'h730, // ..'h737
parameter MULT_SAXI_CNTRL_ADDR = 'h3a0, // parameter MULT_SAXI_CNTRL_ADDR = 'h738, // ..'h739
parameter MULT_SAXI_STATUS_REG = 'h30, // uses 4 consecutive locations parameter MULT_SAXI_STATUS_REG = 'h34, //..'h37 uses 4 consecutive locations
parameter MULT_SAXI_HALF_BRAM = 1, // 0 - use full 36Kb BRAM for the buffer, 1 - use just half parameter MULT_SAXI_HALF_BRAM = 1, // 0 - use full 36Kb BRAM for the buffer, 1 - use just half
parameter MULT_SAXI_BSLOG0 = 4, // number of bits to represent burst size (4 - b.s. = 16, 0 - b.s = 1) parameter MULT_SAXI_BSLOG0 = 4, // number of bits to represent burst size (4 - b.s. = 16, 0 - b.s = 1)
parameter MULT_SAXI_BSLOG1 = 4, parameter MULT_SAXI_BSLOG1 = 4,
...@@ -34,7 +34,7 @@ module mult_saxi_wr #( ...@@ -34,7 +34,7 @@ module mult_saxi_wr #(
parameter MULT_SAXI_BSLOG3 = 4, parameter MULT_SAXI_BSLOG3 = 4,
parameter MULT_SAXI_MASK = 'h7f8, // 4 address/length pairs. In bytes, but lower bits are set to 0? parameter MULT_SAXI_MASK = 'h7f8, // 4 address/length pairs. In bytes, but lower bits are set to 0?
parameter MULT_SAXI_CNTRL_MASK = 'h7fe, // mode and status - 2 locations parameter MULT_SAXI_CNTRL_MASK = 'h7fe, // mode and status - 2 locations
parameter HIST_SAXI_AWCACHE = 4'h3, //..7 cache mode (4 bits, default 4'h3) parameter MULT_SAXI_AWCACHE = 4'h3, //..7 cache mode (4 bits, default 4'h3)
parameter MULT_SAXI_ADV_WR = 4, // number of clock cycles before end of write to genearte adv_wr_done parameter MULT_SAXI_ADV_WR = 4, // number of clock cycles before end of write to genearte adv_wr_done
parameter MULT_SAXI_ADV_RD = 3 // number of clock cycles before end of write to genearte adv_wr_done parameter MULT_SAXI_ADV_RD = 3 // number of clock cycles before end of write to genearte adv_wr_done
...@@ -348,7 +348,7 @@ module mult_saxi_wr #( ...@@ -348,7 +348,7 @@ module mult_saxi_wr #(
assign saxi_awlen = axi_len; assign saxi_awlen = axi_len;
assign saxi_awlock= 2'h0; // AXI PS Slave GP0 AWLOCK[1:0], input assign saxi_awlock= 2'h0; // AXI PS Slave GP0 AWLOCK[1:0], input
assign saxi_awcache= HIST_SAXI_AWCACHE; // awcache_mode; // 4'h3; // AXI PS Slave GP0 AWCACHE[3:0], input assign saxi_awcache= MULT_SAXI_AWCACHE; // awcache_mode; // 4'h3; // AXI PS Slave GP0 AWCACHE[3:0], input
assign saxi_awprot= 3'h0; // AXI PS Slave GP0 AWPROT[2:0], input assign saxi_awprot= 3'h0; // AXI PS Slave GP0 AWPROT[2:0], input
assign saxi_awsize= 2'h2; // 4 bytes; AXI PS Slave GP0 AWSIZE[1:0], input assign saxi_awsize= 2'h2; // 4 bytes; AXI PS Slave GP0 AWSIZE[1:0], input
assign saxi_awburst= 2'h1; // Increment address bursts AXI PS Slave GP0 AWBURST[1:0], input assign saxi_awburst= 2'h1; // Increment address bursts AXI PS Slave GP0 AWBURST[1:0], input
......
...@@ -585,11 +585,11 @@ ...@@ -585,11 +585,11 @@
parameter CMDSEQMUX_ADDR = 'h702, // only status control parameter CMDSEQMUX_ADDR = 'h702, // only status control
parameter CMDSEQMUX_MASK = 'h7ff, parameter CMDSEQMUX_MASK = 'h7ff,
parameter CMDSEQMUX_STATUS = 'h31, parameter CMDSEQMUX_STATUS = 'h38,
// Logger parameters // Logger parameters
parameter LOGGER_ADDR = 'h720, //..'h721 parameter LOGGER_ADDR = 'h720, //..'h721
parameter LOGGER_STATUS = 'h722, // .. 'h722 parameter LOGGER_STATUS = 'h722, // .. 'h722
parameter LOGGER_STATUS_REG_ADDR = 'h34, // just 1 location) parameter LOGGER_STATUS_REG_ADDR = 'h39, // just 1 location)
parameter LOGGER_MASK = 'h7fe, parameter LOGGER_MASK = 'h7fe,
parameter LOGGER_STATUS_MASK = 'h7ff, parameter LOGGER_STATUS_MASK = 'h7ff,
...@@ -613,7 +613,25 @@ ...@@ -613,7 +613,25 @@
parameter LOGGER_CONF_EN = 20, // 17, parameter LOGGER_CONF_EN = 20, // 17,
parameter LOGGER_CONF_EN_BITS = 1, parameter LOGGER_CONF_EN_BITS = 1,
parameter LOGGER_CONF_DBG = 25, // 22, parameter LOGGER_CONF_DBG = 25, // 22,
parameter LOGGER_CONF_DBG_BITS = 4 parameter LOGGER_CONF_DBG_BITS = 4,
parameter MULT_SAXI_HALF_BRAM_IN = 1, // 0 - use full 36Kb BRAM for the buffer, 1 - use just half
parameter MULT_SAXI_WLOG = 4, // number of bits for the input data ( 3 - 8 bit, 4 - 16-bit, 5 - 32-bit
parameter MULT_SAXI_ADDR = 'h730, // ..'h737
parameter MULT_SAXI_CNTRL_ADDR = 'h738, // ..'h739
parameter MULT_SAXI_STATUS_REG = 'h34, //..'h37 uses 4 consecutive locations
parameter MULT_SAXI_HALF_BRAM = 1, // 0 - use full 36Kb BRAM for the buffer, 1 - use just half
parameter MULT_SAXI_BSLOG0 = 4, // number of bits to represent burst size (4 - b.s. = 16, 0 - b.s = 1)
parameter MULT_SAXI_BSLOG1 = 4,
parameter MULT_SAXI_BSLOG2 = 4,
parameter MULT_SAXI_BSLOG3 = 4,
parameter MULT_SAXI_MASK = 'h7f8, // 4 address/length pairs. In bytes, but lower bits are set to 0?
parameter MULT_SAXI_CNTRL_MASK = 'h7fe, // mode and status - 2 locations
parameter MULT_SAXI_AWCACHE = 4'h3, //..7 cache mode (4 bits, default 4'h3)
parameter MULT_SAXI_ADV_WR = 4, // number of clock cycles before end of write to genearte adv_wr_done
parameter MULT_SAXI_ADV_RD = 3 // number of clock cycles before end of write to genearte adv_wr_done
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
module event_logger#( module event_logger#(
parameter LOGGER_ADDR = 'h720, //..'h721 parameter LOGGER_ADDR = 'h720, //..'h721
parameter LOGGER_STATUS = 'h722, // .. 'h722 parameter LOGGER_STATUS = 'h722, // .. 'h722
parameter LOGGER_STATUS_REG_ADDR = 'h34, // just 1 location) parameter LOGGER_STATUS_REG_ADDR = 'h39, // just 1 location)
parameter LOGGER_MASK = 'h7fe, parameter LOGGER_MASK = 'h7fe,
parameter LOGGER_STATUS_MASK = 'h7ff, parameter LOGGER_STATUS_MASK = 'h7ff,
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
module cmd_seq_mux#( module cmd_seq_mux#(
parameter CMDSEQMUX_ADDR = 'h702, // only status control parameter CMDSEQMUX_ADDR = 'h702, // only status control
parameter CMDSEQMUX_MASK = 'h7ff, parameter CMDSEQMUX_MASK = 'h7ff,
parameter CMDSEQMUX_STATUS = 'h31, parameter CMDSEQMUX_STATUS = 'h38,
parameter AXI_WR_ADDR_BITS=14 parameter AXI_WR_ADDR_BITS=14
)( )(
input rst, // global system reset input rst, // global system reset
......
...@@ -192,6 +192,8 @@ module x393 #( ...@@ -192,6 +192,8 @@ module x393 #(
wire hclk; // global clock, axi_hp (150MHz) derived from aclk_in = 50MHz wire hclk; // global clock, axi_hp (150MHz) derived from aclk_in = 50MHz
// sensor pixel rate clock likely to originate from the external clock // sensor pixel rate clock likely to originate from the external clock
//TODO: Create missing clocks
wire pclk; // global clock, sensor pixel rate (96 MHz) wire pclk; // global clock, sensor pixel rate (96 MHz)
wire pclk2x; // global clock, sensor double pixel rate (192 MHz) wire pclk2x; // global clock, sensor double pixel rate (192 MHz)
...@@ -205,7 +207,10 @@ module x393 #( ...@@ -205,7 +207,10 @@ module x393 #(
assign logger_clk = camsync_clk; assign logger_clk = camsync_clk;
wire time_ref; // RTC reference: integer number of microseconds, less than mclk/2. Not a global clock wire time_ref; // RTC reference: integer number of microseconds, less than mclk/2. Not a global clock
// temporary:
reg [2:0] time_ref_r;
always @ (posedge mclk or posedge axi_rst) if (axi_rst) time_ref_r <= 0; else time_ref_r <= time_ref_r + 1;
assign time_ref = time_ref_r[2];
wire [11:0] tmp_debug; wire [11:0] tmp_debug;
...@@ -249,7 +254,7 @@ module x393 #( ...@@ -249,7 +254,7 @@ module x393 #(
// wire [7:0] status_other_ad = 0; // Other status byte-wide address/data // wire [7:0] status_other_ad = 0; // Other status byte-wide address/data
// wire status_other_rq = 0; // Other status request // wire status_other_rq = 0; // Other status request
// wire status_other_start; // SuppressThisWarning VEditor ****** Other status packet transfer start (currently with 0 latency from status_root_rq) // wire status_other_start; //
wire [7:0] status_test01_ad; // Test module status byte-wide address/data wire [7:0] status_test01_ad; // Test module status byte-wide address/data
...@@ -259,11 +264,11 @@ module x393 #( ...@@ -259,11 +264,11 @@ module x393 #(
wire [7:0] status_sensor_ad; // Other status byte-wide address/data wire [7:0] status_sensor_ad; // Other status byte-wide address/data
wire status_sensor_rq; // Other status request wire status_sensor_rq; // Other status request
wire status_sensor_start; // S uppressThisWarning VEditor ****** Other status packet transfer start (currently with 0 latency from status_root_rq) wire status_sensor_start; //
wire [7:0] status_compressor_ad; // Other status byte-wide address/data wire [7:0] status_compressor_ad; // Other status byte-wide address/data
wire status_compressor_rq; // Other status request wire status_compressor_rq; // Other status request
wire status_compressor_start; // S uppressThisWarning VEditor ****** Other status packet transfer start (currently with 0 latency from status_root_rq) wire status_compressor_start; //
// TODO: Add sequencer status (16+2) bits of current frame number. Ose 'h31 as the adderss, 'h702 (701..703 were empty) to program // TODO: Add sequencer status (16+2) bits of current frame number. Ose 'h31 as the adderss, 'h702 (701..703 were empty) to program
...@@ -284,6 +289,10 @@ module x393 #( ...@@ -284,6 +289,10 @@ module x393 #(
wire status_gpio_rq; // Other status request wire status_gpio_rq; // Other status request
wire status_gpio_start; // S uppressThisWarning VEditor ****** Other status packet transfer start (currently with 0 latency from status_root_rq) wire status_gpio_start; // S uppressThisWarning VEditor ****** Other status packet transfer start (currently with 0 latency from status_root_rq)
wire [7:0] status_saxi1wr_ad; // saxi1 - logger data Other status byte-wide address/data
wire status_saxi1wr_rq; // Other status request
wire status_saxi1wr_start; // S uppressThisWarning VEditor ****** Other status packet transfer start (currently with 0 latency from status_root_rq)
// Insert register layer if needed // Insert register layer if needed
reg [7:0] cmd_mcontr_ad; reg [7:0] cmd_mcontr_ad;
reg cmd_mcontr_stb; reg cmd_mcontr_stb;
...@@ -312,6 +321,9 @@ module x393 #( ...@@ -312,6 +321,9 @@ module x393 #(
reg [7:0] cmd_gpio_ad; reg [7:0] cmd_gpio_ad;
reg cmd_gpio_stb; reg cmd_gpio_stb;
reg [7:0] cmd_saxi1wr_ad;
reg cmd_saxi1wr_stb;
// membridge // membridge
wire frame_start_chn1; // input wire frame_start_chn1; // input
wire next_page_chn1; // input wire next_page_chn1; // input
...@@ -338,21 +350,21 @@ module x393 #( ...@@ -338,21 +350,21 @@ module x393 #(
wire page_ready_chn2; // output wire page_ready_chn2; // output
wire frame_done_chn2; // output wire frame_done_chn2; // output
wire[FRAME_HEIGHT_BITS-1:0] line_unfinished_chn2; // output[15:0] wire[FRAME_HEIGHT_BITS-1:0] line_unfinished_chn2; // output[15:0]
wire [LAST_FRAME_BITS-1:0] frame_number_chn2; // output[15:0] // wire [LAST_FRAME_BITS-1:0] frame_number_chn2; // output[15:0]
wire suspend_chn2; // input wire suspend_chn2; // input
wire frame_start_chn3; // input wire frame_start_chn3; // input
wire next_page_chn3; // input wire next_page_chn3; // input
wire page_ready_chn3; // output wire page_ready_chn3; // output
wire frame_done_chn3; // output wire frame_done_chn3; // output
wire[FRAME_HEIGHT_BITS-1:0] line_unfinished_chn3; // output[15:0] wire[FRAME_HEIGHT_BITS-1:0] line_unfinished_chn3; // output[15:0]
wire [LAST_FRAME_BITS-1:0] frame_number_chn3; // output[15:0] // wire [LAST_FRAME_BITS-1:0] frame_number_chn3; // output[15:0]
wire suspend_chn3; // input wire suspend_chn3; // input
wire frame_start_chn4; // input wire frame_start_chn4; // input
wire next_page_chn4; // input wire next_page_chn4; // input
wire page_ready_chn4; // output wire page_ready_chn4; // output
wire frame_done_chn4; // output wire frame_done_chn4; // output
wire[FRAME_HEIGHT_BITS-1:0] line_unfinished_chn4; // output[15:0] wire[FRAME_HEIGHT_BITS-1:0] line_unfinished_chn4; // output[15:0]
wire [LAST_FRAME_BITS-1:0] frame_number_chn4; // output[15:0] // wire [LAST_FRAME_BITS-1:0] frame_number_chn4; // output[15:0]
wire suspend_chn4; // input wire suspend_chn4; // input
reg axi_rst_pre=1'b1; reg axi_rst_pre=1'b1;
...@@ -369,8 +381,8 @@ module x393 #( ...@@ -369,8 +381,8 @@ module x393 #(
wire trigger_mode; // (), // input wire trigger_mode; // (), // input
wire [3:0] trig_in; // input[3:0] wire [3:0] trig_in; // input[3:0]
wire [3:0] sof_out_pclk; // (), // output[3:0] wire [3:0] sof_out_pclk; // (), // output[3:0] // SuppressThisWarning VEditor - (yet) unused
wire [3:0] eof_out_pclk; // (), // output[3:0] wire [3:0] eof_out_pclk; // (), // output[3:0] // SuppressThisWarning VEditor - (yet) unused
wire [3:0] sof_out_mclk; // Use for sequencer and to start memory write wire [3:0] sof_out_mclk; // Use for sequencer and to start memory write
// if sof_out_mclk is applied to both sequencer and memory controller (as it is now) reprogramming of the sensor->memory // if sof_out_mclk is applied to both sequencer and memory controller (as it is now) reprogramming of the sensor->memory
// parameters will be applied to the next frame TODO: Verify that sequencer will always be later than memory controller // parameters will be applied to the next frame TODO: Verify that sequencer will always be later than memory controller
...@@ -414,8 +426,8 @@ module x393 #( ...@@ -414,8 +426,8 @@ module x393 #(
wire [7:0] ts_logegr_data; // input[7:0] loger timestamp data (@logger_clk) wire [7:0] ts_logegr_data; // input[7:0] loger timestamp data (@logger_clk)
// Compressor signals for interrupts generation // Compressor signals for interrupts generation
wire [3:0] eof_written_mclk; // output wire [3:0] eof_written_mclk; // output // SuppressThisWarning VEditor - (yet) unused
wire [3:0] stuffer_done_mclk; // output wire [3:0] stuffer_done_mclk; // output// SuppressThisWarning VEditor - (yet) unused
// Compressor frame synchronization // Compressor frame synchronization
// GPIO internal signals (for camera GPIOs, not Zynq PS GPIO) // GPIO internal signals (for camera GPIOs, not Zynq PS GPIO)
...@@ -434,6 +446,16 @@ module x393 #( ...@@ -434,6 +446,16 @@ module x393 #(
// Internal signal for toming393 (camsync) modules // Internal signal for toming393 (camsync) modules
wire logger_snap; wire logger_snap;
// event_logger intermediate signals
wire [15:0] logger_out; // output[15:0]
wire logger_stb; // output
// event_logger intermediate signals (after mult_saxi_wr_inbuf - converted to 32 bit wide)
wire logger_saxi_en;
wire logger_has_burst;
wire logger_read_burst;
wire [31:0] logger_data32;
wire logger_pre_valid_chn;
assign axird_dev_ready = ~axird_dev_busy; //may combine (AND) multiple sources if needed assign axird_dev_ready = ~axird_dev_busy; //may combine (AND) multiple sources if needed
...@@ -483,6 +505,10 @@ module x393 #( ...@@ -483,6 +505,10 @@ module x393 #(
cmd_gpio_ad <= cmd_root_ad; cmd_gpio_ad <= cmd_root_ad;
cmd_gpio_stb <= cmd_root_stb; cmd_gpio_stb <= cmd_root_stb;
cmd_saxi1wr_ad <= cmd_root_ad;
cmd_saxi1wr_stb <= cmd_root_stb;
end end
// For now - connect status_test01 to status_other, if needed - increase number of multiplexer inputs) // For now - connect status_test01 to status_other, if needed - increase number of multiplexer inputs)
...@@ -840,13 +866,13 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0])); ...@@ -840,13 +866,13 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0]));
.rq_in7 (status_timing_rq), // input .rq_in7 (status_timing_rq), // input
.start_in7 (status_timing_start), // output .start_in7 (status_timing_start), // output
.db_in8 (8'b0), // input[7:0] .db_in8 (status_gpio_ad), // input[7:0]
.rq_in8 (1'b0), // input .rq_in8 (status_gpio_rq), // input
.start_in8 (), // output .start_in8 (status_gpio_start), // output
.db_in9 (8'b0), // input[7:0] .db_in9 (status_saxi1wr_ad), // input[7:0]
.rq_in9 (1'b0), // input .rq_in9 (status_saxi1wr_rq), // input
.start_in9 (), // output .start_in9 (status_saxi1wr_start), // output
.db_in10 (8'b0), // input[7:0] .db_in10 (8'b0), // input[7:0]
.rq_in10 (1'b0), // input .rq_in10 (1'b0), // input
...@@ -1089,7 +1115,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0])); ...@@ -1089,7 +1115,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0]));
.page_ready_chn2 (page_ready_chn2), // output .page_ready_chn2 (page_ready_chn2), // output
.frame_done_chn2 (frame_done_chn2), // output .frame_done_chn2 (frame_done_chn2), // output
.line_unfinished_chn2 (line_unfinished_chn2), // output[15:0] .line_unfinished_chn2 (line_unfinished_chn2), // output[15:0]
.frame_number_chn2 (frame_number_chn2), // output[15:0] .frame_number_chn2 (), //frame_number_chn2), // output[15:0]
.suspend_chn2 (suspend_chn2), // input .suspend_chn2 (suspend_chn2), // input
.frame_start_chn3 (frame_start_chn3), // input .frame_start_chn3 (frame_start_chn3), // input
...@@ -1097,7 +1123,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0])); ...@@ -1097,7 +1123,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0]));
.page_ready_chn3 (page_ready_chn3), // output .page_ready_chn3 (page_ready_chn3), // output
.frame_done_chn3 (frame_done_chn3), // output .frame_done_chn3 (frame_done_chn3), // output
.line_unfinished_chn3 (line_unfinished_chn3), // output[15:0] .line_unfinished_chn3 (line_unfinished_chn3), // output[15:0]
.frame_number_chn3 (frame_number_chn3), // output[15:0] .frame_number_chn3 (), //frame_number_chn3), // output[15:0]
.suspend_chn3 (suspend_chn3), // input .suspend_chn3 (suspend_chn3), // input
.frame_start_chn4 (frame_start_chn4), // input .frame_start_chn4 (frame_start_chn4), // input
...@@ -1105,7 +1131,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0])); ...@@ -1105,7 +1131,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0]));
.page_ready_chn4 (page_ready_chn4), // output .page_ready_chn4 (page_ready_chn4), // output
.frame_done_chn4 (frame_done_chn4), // output .frame_done_chn4 (frame_done_chn4), // output
.line_unfinished_chn4 (line_unfinished_chn4), // output[15:0] .line_unfinished_chn4 (line_unfinished_chn4), // output[15:0]
.frame_number_chn4 (frame_number_chn4), // output[15:0] .frame_number_chn4 (), //frame_number_chn4), // output[15:0]
.suspend_chn4 (suspend_chn4), // input .suspend_chn4 (suspend_chn4), // input
.SDRST (SDRST), // output .SDRST (SDRST), // output
...@@ -1262,8 +1288,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0])); ...@@ -1262,8 +1288,7 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0]));
.afi_rdissuecap1en (afi0_rdissuecap1en) // output .afi_rdissuecap1en (afi0_rdissuecap1en) // output
); );
// SAXIGP0 signals // SAXIGP0 signals (read unused) (for the histograms)
wire saxi0_aclk = hclk; // 150KHz wire saxi0_aclk = hclk; // 150KHz
wire [31:0] saxi0_awaddr; wire [31:0] saxi0_awaddr;
wire saxi0_awvalid; wire saxi0_awvalid;
...@@ -1287,6 +1312,31 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0])); ...@@ -1287,6 +1312,31 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0]));
wire [ 5:0] saxi0_bid; wire [ 5:0] saxi0_bid;
wire [ 1:0] saxi0_bresp; wire [ 1:0] saxi0_bresp;
// SAXIGP1 signals (read unused) (for the event logger - has 3 spare channels for write)
wire saxi1_aclk = hclk; // 150KHz
wire [31:0] saxi1_awaddr;
wire saxi1_awvalid;
wire saxi1_awready;
wire [ 5:0] saxi1_awid;
wire [ 1:0] saxi1_awlock;
wire [ 3:0] saxi1_awcache;
wire [ 2:0] saxi1_awprot;
wire [ 3:0] saxi1_awlen;
wire [ 1:0] saxi1_awsize;
wire [ 1:0] saxi1_awburst;
wire [ 3:0] saxi1_awqos;
wire [31:0] saxi1_wdata;
wire saxi1_wvalid;
wire saxi1_wready;
wire [ 5:0] saxi1_wid;
wire saxi1_wlast;
wire [ 3:0] saxi1_wstrb;
wire saxi1_bvalid;
wire saxi1_bready;
wire [ 5:0] saxi1_bid;
wire [ 1:0] saxi1_bresp;
sensors393 #( sensors393 #(
.SENSOR_GROUP_ADDR (SENSOR_GROUP_ADDR), .SENSOR_GROUP_ADDR (SENSOR_GROUP_ADDR),
.SENSOR_BASE_INC (SENSOR_BASE_INC), .SENSOR_BASE_INC (SENSOR_BASE_INC),
...@@ -1844,112 +1894,104 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0])); ...@@ -1844,112 +1894,104 @@ BUFG bufg_axi_aclk_i (.O(axi_aclk),.I(fclk[0]));
.ts_local_stb (ts_pre_logger_stb), // input .ts_local_stb (ts_pre_logger_stb), // input
.ts_local_data (ts_logegr_data), // input[7:0] .ts_local_data (ts_logegr_data), // input[7:0]
.ext_di (gpio_rd), // input[9:0] .ext_di (gpio_rd), // input[9:0]
.ext_do (gpio_camsync), // output[9:0] .ext_do (gpio_logger), // output[9:0]
.ext_en (gpio_camsync_en), // output[9:0] .ext_en (gpio_logger_en), // output[9:0]
.ts_stb_chn0(), // input .ts_stb_chn0 (ts_pre_stb[0]), // input
.ts_data_chn0(), // input[7:0] .ts_data_chn0 (ts_data[0 * 8 +: 8]), // input[7:0]
.ts_stb_chn1(), // input .ts_stb_chn1 (ts_pre_stb[1]), // input
.ts_data_chn1(), // input[7:0] .ts_data_chn1 (ts_data[1 * 8 +: 8]), // input[7:0]
.ts_stb_chn2(), // input .ts_stb_chn2 (ts_pre_stb[2]), // input
.ts_data_chn2(), // input[7:0] .ts_data_chn2 (ts_data[2 * 8 +: 8]), // input[7:0]
.ts_stb_chn3(), // input .ts_stb_chn3 (ts_pre_stb[3]), // input
.ts_data_chn3(), // input[7:0] .ts_data_chn3 (ts_data[3 * 8 +: 8]), // input[7:0]
.data_out(), // output[15:0] .data_out (logger_out), // output[15:0] @mclk
.data_out_stb(), // output .data_out_stb (logger_stb), // output @mclk
.debug_state() // output[31:0] .debug_state() // output[31:0]
); );
/* Instance template for module mult_saxi_wr_chn */ /* Instance template for module mult_saxi_wr_inbuf */
mult_saxi_wr_chn #( mult_saxi_wr_inbuf #(
.MULT_SAXI_HALF_BRAM(1), .MULT_SAXI_HALF_BRAM_IN (MULT_SAXI_HALF_BRAM_IN),
.MULT_SAXI_BSLOG(4), .MULT_SAXI_BSLOG (MULT_SAXI_BSLOG0),
.MULT_SAXI_ADV_WR(4), .MULT_SAXI_WLOG (MULT_SAXI_WLOG)
.MULT_SAXI_ADV_RD(3) ) mult_saxi_wr_inbuf_i (
) mult_saxi_wr_chn_i ( .mclk (mclk), // input
.mclk(), // input .en (logger_saxi_en), // input
.aclk(), // input .iclk (mclk), // input
.en(), // input .data_in (logger_out), // input[15:0]
.has_burst(), // input .valid (logger_stb), // input
.valid(), // input .has_burst (logger_has_burst), // output reg
.rq_wr(), // output .read_burst (logger_read_burst), // input
.grant_wr(), // input .data_out (logger_data32), // output[31:0]
.wa(), // output[6:0] .pre_valid_chn (logger_pre_valid_chn) // output
.adv_wr_done(), // output reg
.rq_out(), // output reg
.grant_out(), // input
.fifo_half_full(), // input
.ra(), // output[6:0]
.pre_re(), // output
.first_re(), // output reg
.last_re(), // output reg
.wdata_busy() // output reg
); );
/* Instance template for module mult_saxi_wr */
mult_saxi_wr #( mult_saxi_wr #(
.MULT_SAXI_ADDR('h380), .MULT_SAXI_ADDR (MULT_SAXI_ADDR),
.MULT_SAXI_CNTRL_ADDR('h3a0), .MULT_SAXI_CNTRL_ADDR (MULT_SAXI_CNTRL_ADDR),
.MULT_SAXI_STATUS_REG('h30), .MULT_SAXI_STATUS_REG (MULT_SAXI_STATUS_REG),
.MULT_SAXI_HALF_BRAM(1), .MULT_SAXI_HALF_BRAM (MULT_SAXI_HALF_BRAM),
.MULT_SAXI_BSLOG0(4), .MULT_SAXI_BSLOG0 (MULT_SAXI_BSLOG0),
.MULT_SAXI_BSLOG1(4), .MULT_SAXI_BSLOG1 (MULT_SAXI_BSLOG1),
.MULT_SAXI_BSLOG2(4), .MULT_SAXI_BSLOG2 (MULT_SAXI_BSLOG2),
.MULT_SAXI_BSLOG3(4), .MULT_SAXI_BSLOG3 (MULT_SAXI_BSLOG3),
.MULT_SAXI_MASK('h7f8), .MULT_SAXI_MASK (MULT_SAXI_MASK),
.MULT_SAXI_CNTRL_MASK('h7fe), .MULT_SAXI_CNTRL_MASK (MULT_SAXI_CNTRL_MASK),
.HIST_SAXI_AWCACHE(4'h3), .MULT_SAXI_AWCACHE (MULT_SAXI_AWCACHE),
.MULT_SAXI_ADV_WR(4), .MULT_SAXI_ADV_WR (MULT_SAXI_ADV_WR),
.MULT_SAXI_ADV_RD(3) .MULT_SAXI_ADV_RD (MULT_SAXI_ADV_RD)
) mult_saxi_wr_i ( ) mult_saxi_wr_i (
.rst(), // input .rst (axi_rst), // input
.mclk(), // input .mclk (mclk), // input
.aclk(), // input .aclk (saxi1_aclk), // input
.cmd_ad(), // input[7:0] .cmd_ad (cmd_saxi1wr_ad), // input[7:0]
.cmd_stb(), // input .cmd_stb (cmd_saxi1wr_stb), // input
.status_ad(), // output[7:0] .status_ad (status_saxi1wr_ad), // output[7:0]
.status_rq(), // output .status_rq (status_saxi1wr_rq), // output
.status_start(), // input .status_start (status_saxi1wr_start), // input
.en_chn0(), // output .en_chn0 (logger_saxi_en), // output
.has_burst0(), // input .has_burst0 (logger_has_burst), // input
.read_burst0(), // output .read_burst0 (logger_read_burst), // output
.data_in_chn0(), // input[31:0] .data_in_chn0 (logger_data32), // input[31:0]
.pre_valid_chn0(), // input .pre_valid_chn0 (logger_pre_valid_chn), // input
.en_chn1(), // output // 3 spare channels for SAXI_GP 1
.has_burst1(), // input .en_chn1 (), // output
.read_burst1(), // output .has_burst1 (1'b0), // input
.data_in_chn1(), // input[31:0] .read_burst1 (), // output
.pre_valid_chn1(), // input .data_in_chn1 (32'b0), // input[31:0]
.en_chn2(), // output .pre_valid_chn1 (1'b0), // input
.has_burst2(), // input .en_chn2 (), // output
.read_burst2(), // output .has_burst2 (1'b0), // input
.data_in_chn2(), // input[31:0] .read_burst2 (), // output
.pre_valid_chn2(), // input .data_in_chn2 (32'b0), // input[31:0]
.en_chn3(), // output .pre_valid_chn2 (1'b0), // input
.has_burst3(), // input .en_chn3 (), // output
.read_burst3(), // output .has_burst3 (1'b0), // input
.data_in_chn3(), // input[31:0] .read_burst3 (), // output
.pre_valid_chn3(), // input .data_in_chn3 (32'b0), // input[31:0]
.saxi_awaddr(), // output[31:0] .pre_valid_chn3 (1'b0), // input
.saxi_awvalid(), // output
.saxi_awready(), // input .saxi_awaddr (saxi1_awaddr), // output[31:0]
.saxi_awid(), // output[5:0] .saxi_awvalid (saxi1_awvalid), // output
.saxi_awlock(), // output[1:0] .saxi_awready (saxi1_awready), // input
.saxi_awcache(), // output[3:0] .saxi_awid (saxi1_awid), // output[5:0]
.saxi_awprot(), // output[2:0] .saxi_awlock (saxi1_awlock), // output[1:0]
.saxi_awlen(), // output[3:0] .saxi_awcache (saxi1_awcache), // output[3:0]
.saxi_awsize(), // output[1:0] .saxi_awprot (saxi1_awprot), // output[2:0]
.saxi_awburst(), // output[1:0] .saxi_awlen (saxi1_awlen), // output[3:0]
.saxi_awqos(), // output[3:0] .saxi_awsize (saxi1_awsize), // output[1:0]
.saxi_wdata(), // output[31:0] .saxi_awburst (saxi1_awburst), // output[1:0]
.saxi_wvalid(), // output .saxi_awqos (saxi1_awqos), // output[3:0]
.saxi_wready(), // input .saxi_wdata (saxi1_wdata), // output[31:0]
.saxi_wid(), // output[5:0] .saxi_wvalid (saxi1_wvalid), // output
.saxi_wlast(), // output .saxi_wready (saxi1_wready), // input
.saxi_wstrb(), // output[3:0] .saxi_wid (saxi1_wid), // output[5:0]
.saxi_bvalid(), // input .saxi_wlast (saxi1_wlast), // output
.saxi_bready(), // output .saxi_wstrb (saxi1_wstrb), // output[3:0]
.saxi_bid(), // input[5:0] .saxi_bvalid (saxi1_bvalid), // input
.saxi_bresp() // input[1:0] .saxi_bready (saxi1_bready), // output
.saxi_bid (saxi1_bid), // input[5:0]
.saxi_bresp (saxi1_bresp) // input[1:0]
); );
...@@ -2443,7 +2485,7 @@ assign DUMMY_TO_KEEP = frst[2] && MEMCLK; // 1'b0; // dbg_toggle[0]; ...@@ -2443,7 +2485,7 @@ assign DUMMY_TO_KEEP = frst[2] && MEMCLK; // 1'b0; // dbg_toggle[0];
// AXI PS Slave GP1 // AXI PS Slave GP1
// AXI PS Slave GP1: Clock, Reset // AXI PS Slave GP1: Clock, Reset
.SAXIGP1ACLK(), // AXI PS Slave GP1 Clock , input .SAXIGP1ACLK (saxi1_aclk), // AXI PS Slave GP1 Clock , input
.SAXIGP1ARESETN(), // AXI PS Slave GP1 Reset, output .SAXIGP1ARESETN(), // AXI PS Slave GP1 Reset, output
// AXI PS Slave GP1: Read Address // AXI PS Slave GP1: Read Address
.SAXIGP1ARADDR(), // AXI PS Slave GP1 ARADDR[31:0], input .SAXIGP1ARADDR(), // AXI PS Slave GP1 ARADDR[31:0], input
...@@ -2465,29 +2507,29 @@ assign DUMMY_TO_KEEP = frst[2] && MEMCLK; // 1'b0; // dbg_toggle[0]; ...@@ -2465,29 +2507,29 @@ assign DUMMY_TO_KEEP = frst[2] && MEMCLK; // 1'b0; // dbg_toggle[0];
.SAXIGP1RLAST(), // AXI PS Slave GP1 RLAST, output .SAXIGP1RLAST(), // AXI PS Slave GP1 RLAST, output
.SAXIGP1RRESP(), // AXI PS Slave GP1 RRESP[1:0], output .SAXIGP1RRESP(), // AXI PS Slave GP1 RRESP[1:0], output
// AXI PS Slave GP1: Write Address // AXI PS Slave GP1: Write Address
.SAXIGP1AWADDR(), // AXI PS Slave GP1 AWADDR[31:0], input .SAXIGP1AWADDR (saxi1_awaddr), // AXI PS Slave GP1 AWADDR[31:0], input
.SAXIGP1AWVALID(), // AXI PS Slave GP1 AWVALID, input .SAXIGP1AWVALID (saxi1_awvalid), // AXI PS Slave GP1 AWVALID, input
.SAXIGP1AWREADY(), // AXI PS Slave GP1 AWREADY, output .SAXIGP1AWREADY (saxi1_awready), // AXI PS Slave GP1 AWREADY, output
.SAXIGP1AWID(), // AXI PS Slave GP1 AWID[5:0], input .SAXIGP1AWID (saxi1_awid), // AXI PS Slave GP1 AWID[5:0], input
.SAXIGP1AWLOCK(), // AXI PS Slave GP1 AWLOCK[1:0], input .SAXIGP1AWLOCK (saxi1_awlock), // AXI PS Slave GP1 AWLOCK[1:0], input
.SAXIGP1AWCACHE(), // AXI PS Slave GP1 AWCACHE[3:0], input .SAXIGP1AWCACHE (saxi1_awcache), // AXI PS Slave GP1 AWCACHE[3:0], input
.SAXIGP1AWPROT(), // AXI PS Slave GP1 AWPROT[2:0], input .SAXIGP1AWPROT (saxi1_awprot), // AXI PS Slave GP1 AWPROT[2:0], input
.SAXIGP1AWLEN(), // AXI PS Slave GP1 AWLEN[3:0], input .SAXIGP1AWLEN (saxi1_awlen), // AXI PS Slave GP1 AWLEN[3:0], input
.SAXIGP1AWSIZE(), // AXI PS Slave GP1 AWSIZE[1:0], input .SAXIGP1AWSIZE (saxi1_awsize), // AXI PS Slave GP1 AWSIZE[1:0], input
.SAXIGP1AWBURST(), // AXI PS Slave GP1 AWBURST[1:0], input .SAXIGP1AWBURST (saxi1_awburst), // AXI PS Slave GP1 AWBURST[1:0], input
.SAXIGP1AWQOS(), // AXI PS Slave GP1 AWQOS[3:0], input .SAXIGP1AWQOS (saxi1_awqos), // AXI PS Slave GP1 AWQOS[3:0], input
// AXI PS Slave GP1: Write Data // AXI PS Slave GP1: Write Data
.SAXIGP1WDATA(), // AXI PS Slave GP1 WDATA[31:0], input .SAXIGP1WDATA (saxi1_wdata), // AXI PS Slave GP1 WDATA[31:0], input
.SAXIGP1WVALID(), // AXI PS Slave GP1 WVALID, input .SAXIGP1WVALID (saxi1_wvalid), // AXI PS Slave GP1 WVALID, input
.SAXIGP1WREADY(), // AXI PS Slave GP1 WREADY, output .SAXIGP1WREADY (saxi1_wready), // AXI PS Slave GP1 WREADY, output
.SAXIGP1WID(), // AXI PS Slave GP1 WID[5:0], input .SAXIGP1WID (saxi1_wid), // AXI PS Slave GP1 WID[5:0], input
.SAXIGP1WLAST(), // AXI PS Slave GP1 WLAST, input .SAXIGP1WLAST (saxi1_wlast), // AXI PS Slave GP1 WLAST, input
.SAXIGP1WSTRB(), // AXI PS Slave GP1 WSTRB[3:0], input .SAXIGP1WSTRB (saxi1_wstrb), // AXI PS Slave GP1 WSTRB[3:0], input
// AXI PS Slave GP1: Write Responce // AXI PS Slave GP1: Write Responce
.SAXIGP1BVALID(), // AXI PS Slave GP1 BVALID, output .SAXIGP1BVALID (saxi1_bvalid), // AXI PS Slave GP1 BVALID, output
.SAXIGP1BREADY(), // AXI PS Slave GP1 BREADY, input .SAXIGP1BREADY (saxi1_bready), // AXI PS Slave GP1 BREADY, input
.SAXIGP1BID(), // AXI PS Slave GP1 BID[5:0], output .SAXIGP1BID (saxi1_bid), // AXI PS Slave GP1 BID[5:0], output //TODO: Update range !!!
.SAXIGP1BRESP(), // AXI PS Slave GP1 BRESP[1:0], output .SAXIGP1BRESP (saxi1_bresp), // AXI PS Slave GP1 BRESP[1:0], output
// AXI PS Slave HP0 // AXI PS Slave HP0
// AXI PS Slave HP0: Clock, Reset // AXI PS Slave HP0: Clock, Reset
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment