| // Copyright 2023 The Pigweed Authors |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| // use this file except in compliance with the License. You may obtain a copy of |
| // the License at |
| // |
| // https://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations under |
| // the License. |
| |
| `timescale 1ns / 1ps |
| ////////////////////////////////////////////////////////////////////////////////// |
| // |
| ////////////////////////////////////////////////////////////////////////////////// |
| module top ( |
| input clk_i, |
| input rst_i, |
| input op_mode_i, |
| output data_valid_o, |
| output led, |
| input ice_prog_spi_io0, |
| input ice_prog_spi_io1, |
| |
| // spi secondary interface |
| input sl_sclk_i_0, |
| input sl_mosi_i_0, |
| input sl_cs_i_0, |
| output sl_miso_o_0, |
| // spi interfaces |
| // |
| input miso_i_1, |
| input alertl_i_1, |
| output sclk_o_1, |
| output mosi_o_1, |
| output cs_o_1, |
| // |
| input miso_i_2, |
| input alertl_i_2, |
| output sclk_o_2, |
| output mosi_o_2, |
| output cs_o_2, |
| // |
| input miso_i_3, |
| input alertl_i_3, |
| output sclk_o_3, |
| output mosi_o_3, |
| output cs_o_3, |
| // |
| input miso_i_4, |
| input alertl_i_4, |
| output sclk_o_4, |
| output mosi_o_4, |
| output cs_o_4, |
| // |
| input miso_i_5, |
| input alertl_i_5, |
| output sclk_o_5, |
| output mosi_o_5, |
| output cs_o_5, |
| // |
| input miso_i_6, |
| input alertl_i_6, |
| output sclk_o_6, |
| output mosi_o_6, |
| output cs_o_6, |
| // |
| input miso_i_7, |
| input alertl_i_7, |
| output sclk_o_7, |
| output mosi_o_7, |
| output cs_o_7, |
| // |
| input miso_i_8, |
| input alertl_i_8, |
| output sclk_o_8, |
| output mosi_o_8, |
| output cs_o_8, |
| // |
| input miso_i_9, |
| input alertl_i_9, |
| output sclk_o_9, |
| output mosi_o_9, |
| output cs_o_9, |
| // |
| input miso_i_10, |
| input alertl_i_10, |
| output sclk_o_10, |
| output mosi_o_10, |
| output cs_o_10, |
| // |
| input miso_i_11, |
| input alertl_i_11, |
| output sclk_o_11, |
| output mosi_o_11, |
| output cs_o_11 |
| ); |
| |
| wire rst_i_sync, poll_dn_w, mclk, en_w, r_w_en_w, mode_i_sync, trf_dn_w, dn_clr; |
| wire [ 5:0] rwaddr_w; |
| wire [10:0] adc_select_w; |
| wire [11:0] poll_dn_bus_w; |
| wire [15:0] wdata_w; |
| wire [23:0] vbus_1,vshunt_1,vbus_2,vshunt_2 ,vbus_3 ,vshunt_3 ,vbus_4 ,vshunt_4 ,vbus_5 ,vshunt_5 ,vbus_6 ,vshunt_6 ; |
| wire [23:0] vbus_7 ,vshunt_7,vbus_8 ,vshunt_8 ,vbus_9 ,vshunt_9 ,vbus_10 ,vshunt_10 ,vbus_11 ,vshunt_11; |
| wire [39:0] rdata_w; |
| |
| //assign ice_prog_spi_io0 = 1'bz; assigned as input. same as output hi-z. |
| //assign ice_prog_spi_io1 = 1'bz; |
| |
| pll pll_inst ( |
| .clock_in (clk_i), |
| .clock_out(mclk) |
| ); |
| |
| assign led = count[25]; |
| reg [25:0] count; |
| initial count = 0; |
| always @(posedge mclk) begin |
| count <= count + 1; |
| end |
| |
| spi_s_core spi_s_core_inst ( |
| .sclk_i(sl_sclk_i_0), |
| .mosi_i(sl_mosi_i_0), |
| .cs_i(sl_cs_i_0), |
| .miso_o(sl_miso_o_0), |
| // |
| .mclk_i(mclk), |
| .rst_i(rst_i_sync), |
| .en_o(en_w), |
| .rwaddr_o(rwaddr_w), |
| .adc_sel_o(adc_select_w), |
| .wdata_o(wdata_w), |
| .r_w_en_o(r_w_en_w), |
| .data_valid_o(data_valid_o), |
| .mode_i(mode_i_sync), |
| .rdata_i(rdata_w), |
| .poll_dn_i(poll_dn_w), |
| .dn_i(trf_dn_w), |
| .dn_clr_o(dn_clr), |
| .vbus_1(vbus_1), |
| .vshunt_1(vshunt_1), |
| .vbus_2(vbus_2), |
| .vshunt_2(vshunt_2), |
| .vbus_3(vbus_3), |
| .vshunt_3(vshunt_3), |
| .vbus_4(vbus_4), |
| .vshunt_4(vshunt_4), |
| .vbus_5(vbus_5), |
| .vshunt_5(vshunt_5), |
| .vbus_6(vbus_6), |
| .vshunt_6(vshunt_6), |
| .vbus_7(vbus_7), |
| .vshunt_7(vshunt_7), |
| .vbus_8(vbus_8), |
| .vshunt_8(vshunt_8), |
| .vbus_9(vbus_9), |
| .vshunt_9(vshunt_9), |
| .vbus_10(vbus_10), |
| .vshunt_10(vshunt_10), |
| .vbus_11(vbus_11), |
| .vshunt_11(vshunt_11) |
| ); |
| // |
| // .vbus_1(1),// vbus_1), |
| // .vshunt_1(2), |
| // .vbus_2(3), |
| // .vshunt_2(4), |
| // .vbus_3(5), |
| // .vshunt_3(6), |
| // .vbus_4(7), |
| // .vshunt_4(8), |
| // .vbus_5(9), |
| // .vshunt_5(10), |
| // .vbus_6(11), |
| // .vshunt_6(12), |
| // .vbus_7(13), |
| // .vshunt_7(14), |
| // .vbus_8(15), |
| // .vshunt_8(16), |
| // .vbus_9(17), |
| // .vshunt_9(19), |
| // .vbus_10(20), |
| // .vshunt_10(21), |
| // .vbus_11(22), |
| // .vshunt_11(23)); |
| |
| |
| rst_sync rst_sync_inst ( |
| .clk_i(mclk), |
| .rst_i(rst_i), |
| .rst_o(rst_i_sync) |
| ); |
| |
| sig_sync op_mode_sync ( |
| .clk_i(mclk), |
| .rst_i(rst_i_sync), |
| .sig_i(op_mode_i), |
| .sig_o(mode_i_sync) |
| ); |
| |
| csa_ctl_top csa_ctl_top_inst ( |
| .mclk_i(mclk), |
| .rst_i(rst_i_sync), |
| .r_w_en_i(r_w_en_w), |
| .en_i(en_w), |
| .mode_i(mode_i_sync), |
| .rwaddr_i(rwaddr_w), |
| .adc_sel_i(adc_select_w), |
| .wdata_i(wdata_w), |
| .dn_o(trf_dn_w), |
| .rdata_o(rdata_w), |
| // |
| .dn_clr_i(dn_clr), // Use to clear data-valid. Short to trf_dn_o of spi core. |
| .poll_dn_o(poll_dn_w), |
| // .poll_dn(),// NC. Only for bringup |
| // spi |
| .miso_i_1(miso_i_1), |
| .alertl_i_1(alertl_i_1), |
| .sclk_o_1(sclk_o_1), |
| .mosi_o_1(mosi_o_1), |
| .cs_o_1(cs_o_1), |
| .miso_i_2(miso_i_2), |
| .alertl_i_2(alertl_i_2), |
| .sclk_o_2(sclk_o_2), |
| .mosi_o_2(mosi_o_2), |
| .cs_o_2(cs_o_2), |
| .miso_i_3(miso_i_3), |
| .alertl_i_3(alertl_i_3), |
| .sclk_o_3(sclk_o_3), |
| .mosi_o_3(mosi_o_3), |
| .cs_o_3(cs_o_3), |
| .miso_i_4(miso_i_4), |
| .alertl_i_4(alertl_i_4), |
| .sclk_o_4(sclk_o_4), |
| .mosi_o_4(mosi_o_4), |
| .cs_o_4(cs_o_4), |
| .miso_i_5(miso_i_5), |
| .alertl_i_5(alertl_i_5), |
| .sclk_o_5(sclk_o_5), |
| .mosi_o_5(mosi_o_5), |
| .cs_o_5(cs_o_5), |
| .miso_i_6(miso_i_6), |
| .alertl_i_6(alertl_i_6), |
| .sclk_o_6(sclk_o_6), |
| .mosi_o_6(mosi_o_6), |
| .cs_o_6(cs_o_6), |
| .miso_i_7(miso_i_7), |
| .alertl_i_7(alertl_i_7), |
| .sclk_o_7(sclk_o_7), |
| .mosi_o_7(mosi_o_7), |
| .cs_o_7(cs_o_7), |
| .miso_i_8(miso_i_8), |
| .alertl_i_8(alertl_i_8), |
| .sclk_o_8(sclk_o_8), |
| .mosi_o_8(mosi_o_8), |
| .cs_o_8(cs_o_8), |
| .miso_i_9(miso_i_9), |
| .alertl_i_9(alertl_i_9), |
| .sclk_o_9(sclk_o_9), |
| .mosi_o_9(mosi_o_9), |
| .cs_o_9(cs_o_9), |
| .miso_i_10(miso_i_10), |
| .alertl_i_10(alertl_i_10), |
| .sclk_o_10(sclk_o_10), |
| .mosi_o_10(mosi_o_10), |
| .cs_o_10(cs_o_10), |
| .miso_i_11(miso_i_11), |
| .alertl_i_11(alertl_i_11), |
| .sclk_o_11(sclk_o_11), |
| .mosi_o_11(mosi_o_11), |
| .cs_o_11(cs_o_11), |
| // |
| .vbus_1(vbus_1), |
| .vshunt_1(vshunt_1), |
| .vbus_2(vbus_2), |
| .vshunt_2(vshunt_2), |
| .vbus_3(vbus_3), |
| .vshunt_3(vshunt_3), |
| .vbus_4(vbus_4), |
| .vshunt_4(vshunt_4), |
| .vbus_5(vbus_5), |
| .vshunt_5(vshunt_5), |
| .vbus_6(vbus_6), |
| .vshunt_6(vshunt_6), |
| .vbus_7(vbus_7), |
| .vshunt_7(vshunt_7), |
| .vbus_8(vbus_8), |
| .vshunt_8(vshunt_8), |
| .vbus_9(vbus_9), |
| .vshunt_9(vshunt_9), |
| .vbus_10(vbus_10), |
| .vshunt_10(vshunt_10), |
| .vbus_11(vbus_11), |
| .vshunt_11(vshunt_11) |
| ); |
| |
| endmodule |