/* mars.v - The whole MARS_0-18 * * Author: Paolo Musico (I.N.F.N. Genova) * Date: 22 April 2004 * Rev: 1.0 * */ `define N_CH 18 module mars0_18(X0, X1, X2, Y0, Y1, Y2, Y3, Y4, Y5, FASTOR_IN, FASTOR_OUT, DISCR_OUT, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, DYNODE, TRGH, TRGL, ANALOG_OUT, VMON0, VMON1, IMON0, IMON1, TEST_PULSE, ADC_SDATA, ADC_SCLK, ADC_CSb, ADDRESSED, DATA_OUT, DATA_IN, D_C, GA0, GA1, GA2, GA3, GTU_CLOCK, RUN, CLOCK, RSTb ); output X0, X1, X2; output Y0, Y1, Y2, Y3, Y4, Y5; input FASTOR_IN; output FASTOR_OUT, DISCR_OUT; inout A0, A1, A2, A3, A4, A5, A6, A7, A8; // Analog inout A9, A10, A11, A12, A13, A14, A15, A16, A17; // Analog inout DYNODE; // Analog inout TRGH, TRGL; // Analog inout ANALOG_OUT; // Analog inout VMON0, VMON1, IMON0, IMON1; // Analog input TEST_PULSE; input ADC_SDATA; output ADC_SCLK, ADC_CSb; output ADDRESSED; output DATA_OUT; input DATA_IN, D_C; input GA0, GA1, GA2, GA3; input GTU_CLOCK, RUN; input CLOCK, RSTb; wire [`N_CH-1:0] anode_core, anode_compared, integrator_flag, read_analog; wire [3:0] read_dynode; wire [2:0] x_core; wire [5:0] y_core; wire [7:0] coarse_dac; wire [3:0] fine_dac0, fine_dac1, fine_dac2, fine_dac3, fine_dac4, fine_dac5, fine_dac6, fine_dac7, fine_dac8, fine_dac9, fine_dac10, fine_dac11, fine_dac12, fine_dac13, fine_dac14, fine_dac15, fine_dac16, fine_dac17; wire [7:0] analog_select; wire [3:0] ga_core; // Analog PADS APRIOP A0_PAD(anode_core[0], A0); APRIOP A1_PAD(anode_core[1], A1); APRIOP A2_PAD(anode_core[2], A2); APRIOP A3_PAD(anode_core[3], A3); APRIOP A4_PAD(anode_core[4], A4); APRIOP A5_PAD(anode_core[5], A5); APRIOP A6_PAD(anode_core[6], A6); APRIOP A7_PAD(anode_core[7], A7); APRIOP A8_PAD(anode_core[8], A8); APRIOP A9_PAD(anode_core[9], A9); APRIOP A10_PAD(anode_core[10], A10); APRIOP A11_PAD(anode_core[11], A11); APRIOP A12_PAD(anode_core[12], A12); APRIOP A13_PAD(anode_core[13], A13); APRIOP A14_PAD(anode_core[14], A14); APRIOP A15_PAD(anode_core[15], A15); APRIOP A16_PAD(anode_core[16], A16); APRIOP A17_PAD(anode_core[17], A17); APRIOP ANA_OUT_PAD(analog_out_core, ANALOG_OUT); APRIOP VMON0_PAD(vmon0_core, VMON0); APRIOP VMON1_PAD(vmon1_core, VMON1); APRIOP IMON0_PAD(imon0_core, IMON0); APRIOP IMON1_PAD(imon1_core, IMON1); APRIOP DYNODE_PAD(dynode_core, DYNODE); APRIOP TRGH_PAD(trgh_core, TRGH); APRIOP TRGL_PAD(trgl_core, TRGL); // Digital PADS BUDD4P X0_PAD(x_core[0], X0); BUDD4P X1_PAD(x_core[1], X1); BUDD4P X2_PAD(x_core[2], X2); BUDD4P Y0_PAD(y_core[0], Y0); BUDD4P Y1_PAD(y_core[1], Y1); BUDD4P Y2_PAD(y_core[2], Y2); BUDD4P Y3_PAD(y_core[3], Y3); BUDD4P Y4_PAD(y_core[4], Y4); BUDD4P Y5_PAD(y_core[5], Y5); ISDP FASTOR_IN_PAD(FASTOR_IN, fastor_in_core); BU4P FASTOR_OUT_PAD(fastor_out_core, FASTOR_OUT); BU4P DISCR_OUT_PAD(discr_out_core, DISCR_OUT); ISDP TEST_PULSE_PAD(TEST_PULSE, test_pulse_core); ISUP ADC_SDATA_PAD(ADC_SDATA, adc_sdata_core); BU4P ADC_SCLK_PAD(adc_sclk_core, ADC_SCLK); BU4P ADC_CSb_PAD(adc_csb_core, ADC_CSb); BU4P ADDRESSED_PAD(addressed_core, ADDRESSED); BU4P DATA_OUT_PAD(data_out_core, DATA_OUT); ISDP DATA_IN_PAD(DATA_IN, data_in_core); ISDP DC_PAD(D_C, dc_core); ISDP GA0_PAD(GA0, ga_core[0]); ISDP GA1_PAD(GA1, ga_core[1]); ISDP GA2_PAD(GA2, ga_core[2]); ISDP GA3_PAD(GA3, ga_core[3]); ISDP GTU_CLOCK_PAD(GTU_CLOCK, gtu_clock_core); // ICCKxP ??? ISDP RUN_PAD(RUN, run_core); ISDP CLOCK_PAD(CLOCK, clock_core); // ICCKxP ??? ISUP RSTb_PAD(RSTb, rstb_core); digital_part DigitalPart( .CHIP_X(x_core), .CHIP_Y(y_core), .CHIP_OR_OUT(fastor_out_core), .CHIP_OR_IN(fastor_in_core), .DISCR_OUT(discr_out_core), .ANODE(anode_compared), .INTEGRATOR_FLAG(integrator_flag), .TEST_PULSE(test_pulse_core), .COARSE_DAC(coarse_dac), .FINE_DAC0(fine_dac0), .FINE_DAC1(fine_dac1), .FINE_DAC2(fine_dac2), .FINE_DAC3(fine_dac3), .FINE_DAC4(fine_dac4), .FINE_DAC5(fine_dac5), .FINE_DAC6(fine_dac6), .FINE_DAC7(fine_dac7), .FINE_DAC8(fine_dac8), .FINE_DAC9(fine_dac9), .FINE_DAC10(fine_dac10), .FINE_DAC11(fine_dac11), .FINE_DAC12(fine_dac12), .FINE_DAC13(fine_dac13), .FINE_DAC14(fine_dac14), .FINE_DAC15(fine_dac15), .FINE_DAC16(fine_dac16), .FINE_DAC17(fine_dac17), .ANA_OUT_SELECT(analog_select), .RD_ANA_CH(read_analog), .RD_DYNODE_CH(read_dynode), .GTU_CLOCK(gtu_clock_core), .RUN(run_core), .ADC_SDATA(adc_sdata_core), .ADC_SCLK(adc_sclk_core), .ADC_CSb(adc_csb_core), .ADDRESSED(addressed_core), .DATA_OUT(data_out_core), .DATA_IN(data_in_core), .D_C(dc_core), .GA(ga_core), .CLOCK(clock_core), .RSTb(rstb_core)); analog_part AnalogPart(.ANODE(anode_core), .ANALOG_OUT(analog_out_core), .COMPARATOR_OUT(anode_compared), .INTEGRATOR_FLAG(integrator_flag), .COARSE_DAC(coarse_dac), .FINE_DAC0(fine_dac0), .FINE_DAC1(fine_dac1), .FINE_DAC2(fine_dac2), .FINE_DAC3(fine_dac3), .FINE_DAC4(fine_dac4), .FINE_DAC5(fine_dac5), .FINE_DAC6(fine_dac6), .FINE_DAC7(fine_dac7), .FINE_DAC8(fine_dac8), .FINE_DAC9(fine_dac9), .FINE_DAC10(fine_dac10), .FINE_DAC11(fine_dac11), .FINE_DAC12(fine_dac12), .FINE_DAC13(fine_dac13), .FINE_DAC14(fine_dac14), .FINE_DAC15(fine_dac15), .FINE_DAC16(fine_dac16), .FINE_DAC17(fine_dac17), .ANALOG_SELECT(analog_select), .RD_ANALOG(read_analog), .RD_DYNODE(read_dynode[0]), .VMON0(vmon0_core), .VMON1(vmon1_core), .IMON0(imon0_core), .IMON1(imon1_core), .DYNODE(dynode_core), .TRGH(trgh_core), .TRGL(trgl_core), .RSTb(rstb_core), .GTU_CLOCK(gtu_clock_core), .CLOCK(clock_core), .RUN(run_core) ); endmodule