Compare commits

2 Commits
Author SHA1 Message Date
yuysh e19adb09f9 Fix bugs and Unify the PMU_OC logic 2026-06-09 11:41:21 +08:00
yuysh 092cad794c Remove unecessary code in CPLD1
Unify PMU_OC_* logic in CPLD2
2026-06-08 18:14:44 +08:00
5 changed files with 69 additions and 104 deletions
+32 -34
View File
@@ -74,18 +74,18 @@ module CPLD_Con (
//Reg Parsing //Reg Parsing
//Shift Counter //Shift Counter
wire [4:0]OC_Shifter1 = i_DC_Con1[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter1 = (i_DC_Con1[8:1] - 1) >> 3; // Channel Number div 8
wire [2:0]DMM_Shifter1 = i_DC_Con1[8:7]; // Channel Number div 64 wire [2:0]DMM_Shifter1 = i_DC_Con1[8:7] ; // Channel Number div 64
wire [4:0]RC_RLShifter1 = i_DC_Con1[21:17]; // RC_RL Shifter wire [4:0]RC_RLShifter1 = i_DC_Con1[21:17] ; // RC_RL Shifter
wire [4:0]OC_Shifter2 = i_DC_Con2[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter2 = (i_DC_Con2[8:1] - 1) >> 3; // Channel Number div 8
wire [2:0]DMM_Shifter2 = i_DC_Con2[8:7]; // Channel Number div 64 wire [2:0]DMM_Shifter2 = i_DC_Con2[8:7] ; // Channel Number div 64
wire [4:0]RC_RLShifter2 = i_DC_Con2[21:17]; // RC_RL Shifter wire [4:0]RC_RLShifter2 = i_DC_Con2[21:17] ; // RC_RL Shifter
wire [4:0]OC_Shifter3 = i_DC_Con3[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter3 = (i_DC_Con3[8:1] - 1) >> 3; // Channel Number div 8
wire [2:0]DMM_Shifter3 = i_DC_Con3[8:7]; // Channel Number div 64 wire [2:0]DMM_Shifter3 = i_DC_Con3[8:7] ; // Channel Number div 64
wire [4:0]RC_RLShifter3 = i_DC_Con3[21:17]; // RC_RL Shifter wire [4:0]RC_RLShifter3 = i_DC_Con3[21:17] ; // RC_RL Shifter
wire [4:0]OC_Shifter4 = i_DC_Con4[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter4 = (i_DC_Con4[8:1] - 1) >> 3; // Channel Number div 8
wire [2:0]DMM_Shifter4 = i_DC_Con4[8:7]; // Channel Number div 64 wire [2:0]DMM_Shifter4 = i_DC_Con4[8:7] ; // Channel Number div 64
wire [4:0]RC_RLShifter4 = i_DC_Con4[21:17]; // RC_RL Shifter wire [4:0]RC_RLShifter4 = i_DC_Con4[21:17] ; // RC_RL Shifter
//Channels //Channels
wire [8:0]Channel_1 = i_DC_Con1[9:1] ; wire [8:0]Channel_1 = i_DC_Con1[9:1] ;
@@ -367,28 +367,26 @@ module CPLD_Con (
if (i_DC_Con4[23] == 1'b0) begin //Select PMU if (i_DC_Con4[23] == 1'b0) begin //Select PMU
//Parsing Channel //Parsing Channel
//We need Speacial Handling for tthe "freq" channels //We need Speacial Handling for tthe "freq" channels
if (Channel_4[0] == 1'b0) begin if (Channel_4 == 'd66 || Channel_4 == 'd68) begin
if (Channel_4 == 'd66 || Channel_4 == 'd68) begin RC_Tx <= 'd1;
RC_Tx <= 'd1; end
end else if (Channel_4 == 'd70 || Channel_4 == 'd72) begin
else if (Channel_4 == 'd70 || Channel_4 == 'd72) begin RC_Tx <= 6'b00_0010;
RC_Tx <= 6'b00_0010; end
end else if (Channel_4 == 'd130 || Channel_4 == 'd132) begin
else if (Channel_4 == 'd130 || Channel_4 == 'd132) begin RC_Tx <= 6'b00_0100;
RC_Tx <= 6'b00_0100; end
end else if (Channel_4 == 'd134 || Channel_4 == 'd136) begin
else if (Channel_4 == 'd134 || Channel_4 == 'd136) begin RC_Tx <= 6'b00_1000;
RC_Tx <= 6'b00_1000; end
end else if (Channel_4 == 'd194 || Channel_4 == 'd196) begin
else if (Channel_4 == 'd194 || Channel_4 == 'd196) begin RC_Tx <= 6'b01_0000;
RC_Tx <= 6'b01_0000; end
end else if (Channel_4 == 'd198 || Channel_4 == 'd200) begin
else if (Channel_4 == 'd198 || Channel_4 == 'd200) begin RC_Tx <= 6'b10_0000;
RC_Tx <= 6'b10_0000; end
end else begin
else begin RC_Tx <= 'd0;
RC_Tx <= 'd0;
end
end end
PMU_OC_4 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter4); PMU_OC_4 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter4);
DMM_en <= (19'b000_0001_0000_0000_0000)<<(DMM_Shifter4); DMM_en <= (19'b000_0001_0000_0000_0000)<<(DMM_Shifter4);
+6 -6
View File
@@ -169,12 +169,12 @@ module RelayConTop (
assign o_DMM_EN = DMM_EN; assign o_DMM_EN = DMM_EN;
assign o_IO_RC1 = IO_RC1; assign o_IO_RC1 = IO_RC1;
assign o_RC_T27 = RC_Tx[5]; assign o_RC_T27 = RC_Tx[0];
assign o_RC_T28 = RC_Tx[4]; assign o_RC_T28 = RC_Tx[1];
assign o_RC_T29 = RC_Tx[3]; assign o_RC_T29 = RC_Tx[2];
assign o_RC_T30 = RC_Tx[2]; assign o_RC_T30 = RC_Tx[3];
assign o_RC_T31 = RC_Tx[1]; assign o_RC_T31 = RC_Tx[4];
assign o_RC_T32 = RC_Tx[0]; assign o_RC_T32 = RC_Tx[5];
assign o_RC_RLSel = RC_RLSel; assign o_RC_RLSel = RC_RLSel;
assign o_RC_VSel = RC_VSel; assign o_RC_VSel = RC_VSel;
+22 -32
View File
@@ -19,8 +19,6 @@ module CPLD_Con (
output [7:0]o_RC_F, //Ref: Schematic output [7:0]o_RC_F, //Ref: Schematic
output [15:0]o_RC_S, output [15:0]o_RC_S,
output [31:0]o_RC_T, output [31:0]o_RC_T,
output [3:0] o_OC_x09,
output [3:0] o_OC_x25,
output [31:0]o_PMU_OC_1 , output [31:0]o_PMU_OC_1 ,
output [31:0]o_PMU_OC_2 , output [31:0]o_PMU_OC_2 ,
@@ -32,10 +30,6 @@ module CPLD_Con (
output o_con_done output o_con_done
); );
//Output Relay Reg
reg [3:0] OC_x09;
reg [3:0] OC_x25;
//Condition Tester //Condition Tester
reg [3:0]en_t ; reg [3:0]en_t ;
reg [3:0]freq_t; reg [3:0]freq_t;
@@ -64,10 +58,10 @@ module CPLD_Con (
reg [15:0]delay_cnt; reg [15:0]delay_cnt;
//Shift Counter //Shift Counter
wire [4:0]OC_Shifter1 = i_DC_Con1[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter1 = (i_DC_Con1[8:1] - 1) >> 3;; // Channel Number div 8
wire [4:0]OC_Shifter2 = i_DC_Con2[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter2 = (i_DC_Con2[8:1] - 1) >> 3; // Channel Number div 8
wire [4:0]OC_Shifter3 = i_DC_Con3[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter3 = (i_DC_Con3[8:1] - 1) >> 3; // Channel Number div 8
wire [4:0]OC_Shifter4 = i_DC_Con4[8:4]; // Channel Number div 8 wire [4:0]OC_Shifter4 = (i_DC_Con4[8:1] - 1) >> 3; // Channel Number div 8
//Channels //Channels
wire [8:0]Channel_1 = i_DC_Con1[9:1] ; wire [8:0]Channel_1 = i_DC_Con1[9:1] ;
@@ -162,14 +156,13 @@ module CPLD_Con (
exec_done_flag <= 1'b1; exec_done_flag <= 1'b1;
end end
if ((freq_relay1 > 64) & (freq_relay1 < 73)) begin if ((freq_relay1 > 64) & (freq_relay1 < 73)) begin
OC_x09 <= 4'b0001; PMU_OC_1 <= 32'b1 << 8;
end end
else if ((freq_relay1 > 192) & (freq_relay1 < 201)) begin else if ((freq_relay1 > 192) & (freq_relay1 < 201)) begin
OC_x25 <= 4'b0001; PMU_OC_1 <= 32'b1 << 24;
end end
else begin else begin
OC_x09 <= 'd0; PMU_OC_1 <= 'd0;
OC_x25 <= 'd0;
end end
end end
4'b0010: begin 4'b0010: begin
@@ -185,14 +178,13 @@ module CPLD_Con (
exec_done_flag <= 1'b1; exec_done_flag <= 1'b1;
end end
if ((freq_relay2 > 64) & (freq_relay2 < 73)) begin if ((freq_relay2 > 64) & (freq_relay2 < 73)) begin
OC_x09 <= 4'b0010; PMU_OC_2 <= 32'b1 << 8;
end end
else if ((freq_relay2 > 192) & (freq_relay2 < 201)) begin else if ((freq_relay2 > 192) & (freq_relay2 < 201)) begin
OC_x25 <= 4'b0010; PMU_OC_2 <= 32'b1 << 24;
end end
else begin else begin
OC_x09 <= 'd0; PMU_OC_2 <= 'd0;
OC_x25 <= 'd0;
end end
end end
4'b0100: begin 4'b0100: begin
@@ -208,14 +200,13 @@ module CPLD_Con (
exec_done_flag <= 1'b1; exec_done_flag <= 1'b1;
end end
if ((freq_relay3 > 64) &(freq_relay3 <73)) begin if ((freq_relay3 > 64) &(freq_relay3 <73)) begin
OC_x09 <= 4'b0100; PMU_OC_3 <= 32'b1 << 8;
end end
else if ((freq_relay3 > 192) & (freq_relay3 < 201)) begin else if ((freq_relay3 > 192) & (freq_relay3 < 201)) begin
OC_x25 <= 4'b0100; PMU_OC_3 <= 32'b1 << 24;
end end
else begin else begin
OC_x09 <= 'd0; PMU_OC_3 <= 'd0;
OC_x25 <= 'd0;
end end
end end
4'b1000: begin 4'b1000: begin
@@ -231,19 +222,20 @@ module CPLD_Con (
exec_done_flag <= 1'b1; exec_done_flag <= 1'b1;
end end
if ((freq_relay4 > 64) & (freq_relay4 < 73)) begin if ((freq_relay4 > 64) & (freq_relay4 < 73)) begin
OC_x09 <= 4'b1000; PMU_OC_4 <= 32'b1 << 8;
end end
else if ((freq_relay4 > 192) & (freq_relay4 < 201)) begin else if ((freq_relay4 > 192) & (freq_relay4 < 201)) begin
OC_x25 <= 4'b1000; PMU_OC_4 <= 32'b1 << 24;
end end
else begin else begin
OC_x09 <= 'd0; PMU_OC_4 <= 'd0;
OC_x25 <= 'd0;
end end
end end
default: begin default: begin
OC_x09 <= 4'b0000; PMU_OC_1 <= 'd0;
OC_x25 <= 4'b0000; PMU_OC_2 <= 'd0;
PMU_OC_3 <= 'd0;
PMU_OC_4 <= 'd0;
end end
endcase endcase
end end
@@ -1210,7 +1202,7 @@ module CPLD_Con (
'd68: begin 'd68: begin
relay_l1 <= 8'b0000_0000; relay_l1 <= 8'b0000_0000;
if (delay_cnt == 'd500) begin if (delay_cnt == 'd500) begin
relay_l2 <= 16'b0000_0001_0000_0000; relay_l2 <= 16'b0010_0000_0000_0000;
end end
else if (delay_cnt == 'd1000) begin else if (delay_cnt == 'd1000) begin
relay_l3 <= 32'b0000_0100_0000_0000_0000_0000_0000_0000; relay_l3 <= 32'b0000_0100_0000_0000_0000_0000_0000_0000;
@@ -1374,7 +1366,7 @@ module CPLD_Con (
'd200: begin 'd200: begin
relay_l1 <= 8'b1000_0000; relay_l1 <= 8'b1000_0000;
if (delay_cnt == 'd500) begin if (delay_cnt == 'd500) begin
relay_l2 <= 16'b0000_0100_0000_0000; relay_l2 <= 16'b1000_0000_0000_0000;
end end
else if (delay_cnt == 'd1000) begin else if (delay_cnt == 'd1000) begin
relay_l3 <= 32'b1000_0000_0000_0000_0000_0000_0000_0000; relay_l3 <= 32'b1000_0000_0000_0000_0000_0000_0000_0000;
@@ -1421,8 +1413,6 @@ module CPLD_Con (
assign o_RC_S = relay_l2; assign o_RC_S = relay_l2;
assign o_RC_T = relay_l3; assign o_RC_T = relay_l3;
assign o_con_done = exec_done_flag; assign o_con_done = exec_done_flag;
assign o_OC_x09 = OC_x09;
assign o_OC_x25 = OC_x25;
assign o_PMU_OC_1 = PMU_OC_1; assign o_PMU_OC_1 = PMU_OC_1;
assign o_PMU_OC_2 = PMU_OC_2; assign o_PMU_OC_2 = PMU_OC_2;
+4 -27
View File
@@ -124,8 +124,6 @@ BUS_Con BUS_Con_2(
.o_RC_F(RC_F), .o_RC_F(RC_F),
.o_RC_S(RC_S), .o_RC_S(RC_S),
.o_RC_T(RC_T), .o_RC_T(RC_T),
.o_OC_x09(OC_x09),
.o_OC_x25(OC_x25),
.o_err(cpld_err_flag) .o_err(cpld_err_flag)
); );
@@ -134,31 +132,10 @@ BUS_Con BUS_Con_2(
assign o_RC_S = RC_S; assign o_RC_S = RC_S;
assign o_RC_T = RC_T[25:0]; assign o_RC_T = RC_T[25:0];
assign o_PMU_OC_1[8] = OC_x09[0]; assign o_PMU_OC_1 = PMU_OC_1 ;
assign o_PMU_OC_2[8] = OC_x09[1]; assign o_PMU_OC_2 = PMU_OC_2 ;
assign o_PMU_OC_3[8] = OC_x09[2]; assign o_PMU_OC_3 = PMU_OC_3 ;
assign o_PMU_OC_4[8] = OC_x09[3]; assign o_PMU_OC_4 = PMU_OC_4 ;
assign o_PMU_OC_1[24] = OC_x25[0];
assign o_PMU_OC_2[24] = OC_x25[1];
assign o_PMU_OC_3[24] = OC_x25[2];
assign o_PMU_OC_4[24] = OC_x25[3];
assign o_PMU_OC_1[7:0] = PMU_OC_1[7:0];
assign o_PMU_OC_1[23:9] = PMU_OC_1[23:8];
assign o_PMU_OC_1[31:25] = PMU_OC_1[31:25];
assign o_PMU_OC_2[7:0] = PMU_OC_2[7:0];
assign o_PMU_OC_2[23:9] = PMU_OC_2[23:9];
assign o_PMU_OC_2[31:25] = PMU_OC_2[31:25];
assign o_PMU_OC_3[7:0] = PMU_OC_3[7:0];
assign o_PMU_OC_3[23:9] = PMU_OC_3[23:9];
assign o_PMU_OC_3[31:25]= PMU_OC_3[31:25];
assign o_PMU_OC_4[7:0] = PMU_OC_4[7:0];
assign o_PMU_OC_4[23:9] = PMU_OC_4[23:9];
assign o_PMU_OC_4[31:25] = PMU_OC_4[31:25];
assign o_err = bus_err_flag || reg_err_flag || cpld_err_flag; assign o_err = bus_err_flag || reg_err_flag || cpld_err_flag;
+5 -5
View File
@@ -117,19 +117,19 @@ module CPLD_Con (
else if (dc_t == 1'b1) begin else if (dc_t == 1'b1) begin
case (dc_slot_flag) case (dc_slot_flag)
4'b0001: begin 4'b0001: begin
PMU_RC <= 4'b0001; PMU_RC <= 4'b1110;
end end
4'b0010: begin 4'b0010: begin
PMU_RC <= 4'b0010; PMU_RC <= 4'b1101;
end end
4'b0100: begin 4'b0100: begin
PMU_RC <= 4'b0100; PMU_RC <= 4'b1011;
end end
4'b1000: begin 4'b1000: begin
PMU_RC <= 4'b1000; PMU_RC <= 4'b0111;
end end
default:begin default:begin
PMU_RC <= 4'b0000; PMU_RC <= 4'b1111;
end end
endcase endcase
end end