
module big_ila_top
(
    input           RESET
,   input           CAPTURE_CLK
,   input           TRIG
,   input           camLR_vsync
,   input           camLR_de
,   input           camL_empty
,   input           camR_empty
,   input           camLR_outputting

,   input           USB_CLK
,   input           RXACT
,   input           RXVAL
,   input  [ 7:0]   RXDAT
,   input           TXACT
,   input           TXPOP
,   output [ 7:0]   TXDAT
,   output [11:0]   TXDAT_LEN
,   output          TXCORK
);

localparam DATA_WIDTH = 5;
localparam MEM_WIDTH = 11;
localparam TRIGGER_POINT = 60;

wire [DATA_WIDTH-1:0] monitor_data_in;
assign monitor_data_in[0] = camLR_vsync;
assign monitor_data_in[1] = camLR_de;
assign monitor_data_in[2] = camL_empty;
assign monitor_data_in[3] = camR_empty;
assign monitor_data_in[4] = camLR_outputting;

wire [DATA_WIDTH-1:0] monitor_data_out;
wire [MEM_WIDTH-1:0] trig_point;
wire capture_done;
wire monitor_read_enable;
wire monitor_arm;

big_ila_usb_rec u_ila_usb_rec
(
    .CLK(USB_CLK)
,   .RESET(RESET)
,   .RXACT(RXACT)
,   .RXVAL(RXVAL)
,   .RXDAT(RXDAT)
,   .ARM(monitor_arm)
,   .CAPTURE_DONE(capture_done)
);

big_ila_usb_xmit #(
    .BI_DATA_WIDTH(DATA_WIDTH)
,   .MEM_WORD_WIDTH(MEM_WIDTH)
) u_ila_usb_xmit
(
    .CLK(USB_CLK)
,   .RESET(RESET)
,   .CAPTURE_DONE(capture_done)
,   .DATA_IN(monitor_data_out)
,   .TRIG_POINT(trig_point)
,   .DATA_READ_ENABLE(monitor_read_enable)
,   .TXACT(TXACT)
,   .TXPOP(TXPOP)
,   .TXDAT(TXDAT)
,   .TXDAT_LEN(TXDAT_LEN)
,   .TXCORK(TXCORK)
);

big_ila_monitor #(
    .BI_DATA_WIDTH(DATA_WIDTH)
,   .MEM_WORD_WIDTH(MEM_WIDTH)
,   .PRE_TRIGGER_SAMPLES(TRIGGER_POINT)
) u_ila_monitor
(
    .RESET(RESET)
,   .CAPTURE_CLK(CAPTURE_CLK)
,   .ARM(monitor_arm)
,   .TRIG(TRIG)
,   .DATA_IN(monitor_data_in)
,   .DATA_READ_CLK(USB_CLK)
,   .CAPTURE_DONE(capture_done)
,   .TRIG_POINT(trig_point)
,   .DATA_OUT(monitor_data_out)
,   .DATA_READ_ENABLE(monitor_read_enable)
);

endmodule

