| module ldo_all( | |
| // Output to clock PAD | |
| //output CDC_CLK_OUT0, | |
| //output CDC_CLK_OUT1, | |
| //output CDC_CLK_OUT2, | |
| // SPI Interface | |
| input ldo_reset, // Active Low Reset | |
| input signal_reset, | |
| input [3:0] SPI_LDO_SS, // Slave Select | |
| input clk, // Serial Clock | |
| input SPI_LDO_MOSI, // Master Out Slave In | |
| // output SPI_LDO_MISO, | |
| // LDO interface | |
| //output [72:0] data, | |
| output reg [9:0] out, | |
| `ifdef USE_POWER_PINS | |
| inout vdda1, // User area 1 3.3V supply | |
| inout vdda2, // User area 2 3.3V supply | |
| inout vssa1, // User area 1 analog ground | |
| inout vssa2, // User area 2 analog ground | |
| inout vccd1, // User area 1 1.8V supply | |
| inout vccd2, // User area 2 1.8v supply | |
| inout vssd1, // User area 1 digital ground | |
| inout vssd2, // User area 2 digital ground | |
| `endif | |
| ); | |
| //wire data_in; //SPI_LDO_MOSI_IN | |
| wire [9:0] ldo_1_out; | |
| wire [9:0] ldo_2_out; | |
| wire [9:0] ldo_3_out; | |
| wire [9:0] ldo_4_out; | |
| wire [9:0] ldo_5_out; | |
| wire [9:0] ldo_6_out; | |
| wire [9:0] ldo_7_out; | |
| wire [9:0] ldo_8_out; | |
| wire [9:0] ldo_9_out; | |
| wire [9:0] ldo_10_out; | |
| reg [21:0] ldo_reg; | |
| reg [21:0] ldo_reg_next; | |
| reg [4:0] count; | |
| reg [4:0] count_next; | |
| ldo_1 ldo_1_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_1_out[9]), // Comparator Output | |
| .ctrl_out(ldo_1_out[8:0]) | |
| ); | |
| ldo_2 ldo_2_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_2_out[9]), // Comparator Output | |
| .ctrl_out(ldo_2_out[8:0]) | |
| ); | |
| ldo_3 ldo_3_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_3_out[9]), // Comparator Output | |
| .ctrl_out(ldo_3_out[8:0]) | |
| ); | |
| ldo_4 ldo_4_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_4_out[9]), // Comparator Output | |
| .ctrl_out(ldo_4_out[8:0]) | |
| ); | |
| ldo_5 ldo_5_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_5_out[9]), // Comparator Output | |
| .ctrl_out(ldo_5_out[8:0]) | |
| ); | |
| ldo_6 ldo_6_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_6_out[9]), // Comparator Output | |
| .ctrl_out(ldo_6_out[8:0]) | |
| ); | |
| ldo_7 ldo_7_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_7_out[9]), // Comparator Output | |
| .ctrl_out(ldo_7_out[8:0]) | |
| ); | |
| ldo_8 ldo_8_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_8_out[9]), // Comparator Output | |
| .ctrl_out(ldo_8_out[8:0]) | |
| ); | |
| ldo_9 ldo_9_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_9_out[9]), // Comparator Output | |
| .ctrl_out(ldo_9_out[8:0]) | |
| ); | |
| ldo_10 ldo_10_macro( | |
| .clk(clk), //input | |
| .reset(ldo_reset), //input | |
| .trim1(ldo_reg[0]), //input | |
| .trim2(ldo_reg[1]), | |
| .trim3(ldo_reg[2]), | |
| .trim4(ldo_reg[3]), | |
| .trim5(ldo_reg[4]), | |
| .trim6(ldo_reg[5]), | |
| .trim7(ldo_reg[6]), | |
| .trim8(ldo_reg[7]), | |
| .trim9(ldo_reg[8]), | |
| .trim10(ldo_reg[9]), | |
| .mode_sel(ldo_reg[11:10]), // 2'b00 (Comparator & PT Array Test Mode) // 2'b01 (Controller Test Mode) // 2'b1X (LDO Run Mode) input | |
| .std_ctrl_in(ldo_reg[12]), // Standalone Controller Test Input | |
| .std_pt_in_cnt(ldo_reg[21:13]), // Standalone PT Array Test Input | |
| .cmp_out(ldo_10_out[9]), // Comparator Output | |
| .ctrl_out(ldo_10_out[8:0]) | |
| ); | |
| always @(*) begin | |
| ldo_reg_next = ldo_reg; | |
| count_next = count; | |
| case (SPI_LDO_SS) | |
| 4'b0000: out = ldo_1_out; | |
| 4'b0001: out = ldo_2_out; | |
| 4'b0010: out = ldo_3_out; | |
| 4'b0011: out = ldo_4_out; | |
| 4'b0100: out = ldo_5_out; | |
| 4'b0101: out = ldo_6_out; | |
| 4'b0110: out = ldo_7_out; | |
| 4'b0111: out = ldo_8_out; | |
| 4'b1000: out = ldo_9_out; | |
| 4'b1001: out = ldo_10_out; | |
| default: out = ldo_1_out; | |
| endcase | |
| end | |
| always @(negedge clk) begin | |
| if(signal_reset) begin | |
| if (count <= 5'd21) begin | |
| count <= count_next + 1'b1; | |
| ldo_reg <= {ldo_reg_next[20:0],SPI_LDO_MOSI}; | |
| end | |
| else begin | |
| count <= count_next; | |
| ldo_reg <= ldo_reg_next; | |
| end | |
| end | |
| else begin | |
| count <= 0; | |
| ldo_reg <= ldo_reg_next; | |
| end | |
| end | |
| endmodule |