From 1d92e2c53ee1a066fde7ec0a579ac195fbc4817f Mon Sep 17 00:00:00 2001 From: Jeremy Shen Date: Mon, 8 Jun 2026 15:44:24 +0800 Subject: [PATCH] Add DC Relay Control Logic --- CPLD2/CPLD_Con.v | 1118 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1103 insertions(+), 15 deletions(-) diff --git a/CPLD2/CPLD_Con.v b/CPLD2/CPLD_Con.v index 1dff8b0..6c00d2d 100644 --- a/CPLD2/CPLD_Con.v +++ b/CPLD2/CPLD_Con.v @@ -257,17 +257,287 @@ module CPLD_Con ( else begin if (i_DC_Con1[23] == 1'b0) begin //Select PMU //Parsing Channel - //We need Speacial Handling for tthe "freq" channels - - + //We need Speacial Handling for the "freq" channels + case (Channel_1) + //CAL_x.01 Default to Channel 1 + 'd2: begin + relay_l1 <= 'd0; + if (delay_cnt == 'd500) begin + relay_l2 <= 'd0; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0001; + end + end + 'd3: begin + relay_l1 <= 'd0; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0001; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd4: begin + relay_l1 <= 'd0; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0001; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0001; + end + end + 'd5: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd6: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0010; + end + end + 'd7: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0001; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd8: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0001; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0010; + end + end + //CAL_x.09 Default to Channel 65 + 'd66: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0100; + end + end + 'd67: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0010; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd68: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0010; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0100; + end + end + 'd69: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd70: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_1000; + end + end + 'd71: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0010; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd72: begin + relay_l1 <= 8'b0000_0001; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0010; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_1000; + end + end + //CAL_x.17 Default to Channel 129 + 'd130: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0001_0000; + end + end + 'd131: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0100; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd132: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0100; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0001_0000; + end + end + 'd133: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd134: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0010_0000; + end + end + 'd135: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0100; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd136: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0100; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0010_0000; + end + end + //CAL_x.25 Default to Channel 193 + 'd194: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0100_0000; + end + end + 'd195: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_1000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd196: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_1000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0100_0000; + end + end + 'd197: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd198: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_1000_0000; + end + end + 'd199: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_1000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + 'd200: begin + relay_l1 <= 8'b0000_0010; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_1000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_1000_0000; + end + end + default: begin + relay_l1 <= 8'b0000_0000; + if (delay_cnt == 'd500) begin + relay_l2 <= 16'b0000_0000_0000_0000; + end + else if (delay_cnt == 'd1000) begin + relay_l3 <= 32'b0000_0000_0000_0000_0000_0000_0000_0000; + end + end + endcase + //PMU OC Control PMU_OC_1 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<