`timescale 1 ns / 1 ps module eeg_top# ( parameter CLK_PERIOD = 10 , parameter CHIPSET_QTY = 4 ,//8 parameter CHIPSET_CH_QTY = 8 , parameter SPIS_QTY = 2 ,//4 parameter SPI_SLAVE_QTY = 2 , parameter SPI_CLK_DIV = 3 , parameter SPI_DATA_WIDTH = 8 , parameter SPI_TRANS_PERIOD = 2000 //Unit: ns ) ( input clk , input rst_n , input [13-1:0] bram_addr , input bram_clk , input [32-1:0] bram_din , output [32-1:0] bram_dout , input bram_en , input bram_rst , input [ 4-1:0] bram_we , output interrupt , output [32-1:0] axis_record_tdata , output axis_record_tlast , input axis_record_tready , output axis_record_tvalid , output [CHIPSET_QTY-1:0] cs , output [ SPIS_QTY-1:0] sclk , output [ SPIS_QTY-1:0] mosi , input [ SPIS_QTY-1:0] miso , input [ SPIS_QTY-1:0] drdy , output [ SPIS_QTY-1:0] start , output [ 4-1:0] debug_sig ); //***************************************************************************** // localparam definition //***************************************************************************** //***************************************************************************** // Internal register and wire declarations //***************************************************************************** wire [32-1:0] eeg_er ; wire [32-1:0] eeg_cr ; wire [32-1:0] eeg_sr ; wire [32*SPIS_QTY-1:0] eeg_tr_array ; wire [32*SPIS_QTY-1:0] eeg_rr_array ; wire eeg_sr_r_evt ; wire [SPI_SLAVE_QTY-1:0] cs_w[SPIS_QTY-1:0] ; wire send_enable[SPIS_QTY-1:0] ; wire [ 8-1:0] send_cs_n[SPIS_QTY-1:0] ; wire [ 8-1:0] send_length[SPIS_QTY-1:0] ; wire [32-1:0] send_data_array[SPIS_QTY-1:0] ; wire [32-1:0] recv_data_array[SPIS_QTY-1:0] ; wire recv_data_en_array[SPIS_QTY-1:0]; wire [ 8-1:0] t_cs_n[SPIS_QTY-1:0] ; wire [ 8-1:0] t_tdata[SPIS_QTY-1:0] ; wire t_tlast[SPIS_QTY-1:0] ; wire t_tready[SPIS_QTY-1:0] ; wire t_tvalid[SPIS_QTY-1:0] ; wire [ 8-1:0] r_tdata[SPIS_QTY-1:0] ; wire r_tlast[SPIS_QTY-1:0] ; wire r_tvalid[SPIS_QTY-1:0] ; wire cnv_start[SPIS_QTY-1:0] ; wire cnv_drdy[SPIS_QTY-1:0] ; wire upload_round[SPIS_QTY-1:0] ; //------------------------------------------ record stream rx wire [32-1:0] cnv_res_tdata[SPIS_QTY-1:0] ; wire cnv_res_tlast[SPIS_QTY-1:0] ; wire cnv_res_tready[SPIS_QTY-1:0] ; wire cnv_res_tvalid[SPIS_QTY-1:0] ; wire [32*SPIS_QTY-1:0] cnv_res_tdata_array ; wire [ SPIS_QTY-1:0] cnv_res_tlast_array ; wire [ SPIS_QTY-1:0] cnv_res_tready_array ; wire [ SPIS_QTY-1:0] cnv_res_tvalid_array ; wire record_enable ; genvar i; //***************************************************************************** // Instantiation //***************************************************************************** eeg_config# ( .SPIS_QTY ( 2 ),//4 .SPI_DATA_WIDTH ( 8 ) ) u_eeg_config ( .clk ( clk ), .rst_n ( rst_n ), .bram_addr ( bram_addr ), .bram_clk ( bram_clk ), .bram_din ( bram_din ), .bram_dout ( bram_dout ), .bram_en ( bram_en ), .bram_rst ( bram_rst ), .bram_we ( bram_we ), //eeg .eeg_er ( eeg_er ), .eeg_cr ( eeg_cr ), .eeg_sr ( eeg_sr ), .eeg_tr_array ( eeg_tr_array ), .eeg_rr_array ( eeg_rr_array ), .eeg_sr_r_evt ( eeg_sr_r_evt ) ); generate for(i=0;i