CPLD1: Add DPS Related Pin Defination
CPLD1: Add DPS Related Functions
Fix:
CPLD1: Remove unused pins
Improve:
CPLD1: PMU Logics
This commit is contained in:
Jeremy Shen
2026-06-15 10:40:38 +08:00
parent c447c6a592
commit 1ab71827c7
3 changed files with 544 additions and 148 deletions
+143 -36
View File
@@ -20,11 +20,22 @@ module CPLD_Con (
output o_IO_RC1,
output [5:0]o_RC_Tx,
//PMU OC Control
output [31:0]o_PMU_OC_1 ,
output [31:0]o_PMU_OC_2 ,
output [31:0]o_PMU_OC_3 ,
output [31:0]o_PMU_OC_4 ,
//DPS OC Control
output [15:0]o_DPS_FS_1 ,
output [15:0]o_DPS_FS_2 ,
output [15:0]o_DPS_FS_3 ,
output [15:0]o_DPS_FS_4 ,
output [3:0]o_DPS_FSMC ,
output [5:0]o_DPS_FSMMC ,
output o_DPSFS_RC1 ,
// DMM Mode Sel
output o_RC_VSel,
output o_RC_ISel,
@@ -57,6 +68,15 @@ module CPLD_Con (
reg [31:0]PMU_OC_3 ;
reg [31:0]PMU_OC_4 ;
reg [31:0]DPS_FS_1 ;
reg [31:0]DPS_FS_2 ;
reg [31:0]DPS_FS_3 ;
reg [31:0]DPS_FS_4 ;
reg [3:0]DPS_FSMC ;
reg [5:0]DPS_FSMMC ;
reg DPSFS_RC1 ;
//Condition Tester
reg [3:0]en_t ;
reg [3:0]freq_t;
@@ -142,11 +162,23 @@ module CPLD_Con (
RC_Tx <= 'd0 ;
//PMU
PMU_OC_1 <= 'd0 ;
PMU_OC_2 <= 'd0 ;
PMU_OC_3 <= 'd0 ;
PMU_OC_4 <= 'd0 ;
//DPS
//DPS Switches LOW Enable
DPS_FS_1 <= 32'hFFFFFFFF;
DPS_FS_2 <= 32'hFFFFFFFF;
DPS_FS_3 <= 32'hFFFFFFFF;
DPS_FS_4 <= 32'hFFFFFFFF;
DPS_FSMC <= 4'b1111;
DPS_FSMMC <= 6'b11_1111;
DPSFS_RC1 <= 1'b1;
done_flag <= 'd1;
end
else begin
@@ -273,7 +305,7 @@ module CPLD_Con (
RC_LOFS <= 2'b10;
end
//Sanity Check
if ((i_DC_Con1[21:17] < 1) || (i_DC_Con1[21:17] > 18) || (Channel_1 < 1) || (Channel_1 > 256)) begin
if ((i_DC_Con1[21:17] < 1) || (i_DC_Con1[21:17] > 18)) begin
err_flag <= 1'b1;
end
else begin
@@ -281,11 +313,25 @@ module CPLD_Con (
? ~(18'b1 << (RC_RLShifter1 - 1))
: 18'h3FFFF; //Set RLoad
if (i_DC_Con1[23] == 1'b0) begin //Select PMU
PMU_OC_1 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter1);
DMM_en <= (19'b000_0000_0000_0000_0001)<<(DMM_Shifter1);
if ((Channel_1 < 1) || (Channel_1 > 256)) begin
err_flag <= 1'b1;
end
else begin
PMU_OC_1 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter1);
DMM_en <= (19'b000_0000_0000_0000_0001)<<(DMM_Shifter1);
end
end
else if (i_DC_Con1[23] == 1'b1) begin //Select DPS
//Sanity Check
if ((Channel_1 < 1) || (Channel_1 > 32)) begin
err_flag <= 1'b1;
end
else begin
DPS_FS_1 <= ~(32'b1 << ( Channel_1 - 1));
DPS_FSMC <= 4'b1110;
DPS_FSMMC <= 6'b10_1110;
DPSFS_RC1 <= 1'b0;
end
end
end
end
@@ -301,7 +347,7 @@ module CPLD_Con (
RC_LOFS <= 2'b10;
end
//Sanity Check
if ((i_DC_Con2[21:17] < 1) || (i_DC_Con2[21:17] > 18) || (i_DC_Con2[9:1] < 1) || (i_DC_Con2[9:1] > 256)) begin
if ((i_DC_Con2[21:17] < 1) || (i_DC_Con2[21:17] > 18)) begin
err_flag <= 1'b1;
end
else begin
@@ -309,11 +355,25 @@ module CPLD_Con (
? ~(18'b1 << (RC_RLShifter2 - 1))
: 18'h3FFFF; // 1 0
if (i_DC_Con2[23] == 1'b0) begin //Select PMU
PMU_OC_2 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter2);
DMM_en <= (19'b000_0000_0000_0001_0000)<<(DMM_Shifter2);
if ((i_DC_Con2[9:1] < 1) || (i_DC_Con2[9:1] > 256)) begin
err_flag <= 1'b1;
end
else begin
//Sanity Check
if ((Channel_2 < 1) || (Channel_2 > 32)) begin
err_flag <= 1'b1;
end
else begin
PMU_OC_2 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter2);
DMM_en <= (19'b000_0000_0000_0001_0000)<<(DMM_Shifter2);
end
end
end
else if (i_DC_Con2[23] == 1'b1) begin //Select DPS
DPS_FS_2 <= ~(32'b1 << ( Channel_2 - 1));
DPS_FSMC <= 4'b1101;
DPS_FSMMC <= 6'b10_1101;
DPSFS_RC1 <= 1'b0;
end
end
end
@@ -329,7 +389,7 @@ module CPLD_Con (
RC_LOFS <= 2'b10;
end
//Sanity Check
if ((i_DC_Con3[21:17] < 1) || (i_DC_Con3[21:17] > 18) || (i_DC_Con3[9:1] < 1) || (i_DC_Con3[9:1] > 256)) begin
if ((i_DC_Con3[21:17] < 1) || (i_DC_Con3[21:17] > 18)) begin
err_flag <= 1'b1;
end
else begin
@@ -337,11 +397,25 @@ module CPLD_Con (
? ~(18'b1 << (RC_RLShifter3 - 1))
: 18'h3FFFF; // 否则1(即不置 0
if (i_DC_Con3[23] == 1'b0) begin //Select PMU
PMU_OC_3 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter3);
DMM_en <= (19'b000_0000_0001_0000_0000)<<(DMM_Shifter3);
if ((i_DC_Con3[9:1] < 1) || (i_DC_Con3[9:1] > 256)) begin
err_flag <= 1'b1;
end
else begin
PMU_OC_3 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter3);
DMM_en <= (19'b000_0000_0001_0000_0000)<<(DMM_Shifter3);
end
end
else if (i_DC_Con3[23] == 1'b1) begin //Select DPS
//Sanity Check
if ((Channel_3 < 1) || (Channel_3 > 32)) begin
err_flag <= 1'b1;
end
else begin
DPS_FS_3 <= ~(32'b1 << ( Channel_3 - 1));
DPS_FSMC <= 4'b1011;
DPS_FSMMC <= 6'b01_1011;
DPSFS_RC1 <= 1'b0;
end
end
end
end
@@ -357,7 +431,7 @@ module CPLD_Con (
RC_LOFS <= 2'b10;
end
//Sanity Check
if ((i_DC_Con4[21:17] < 1) || (i_DC_Con4[21:17] > 18) || (i_DC_Con4[9:1] < 1) || (i_DC_Con4[9:1] > 256)) begin
if ((i_DC_Con4[21:17] < 1) || (i_DC_Con4[21:17] > 18)) begin
err_flag <= 1'b1;
end
else begin
@@ -365,34 +439,48 @@ module CPLD_Con (
? ~(18'b1 << (RC_RLShifter4 - 1))
: 18'h3FFFF; // 1 0
if (i_DC_Con4[23] == 1'b0) begin //Select PMU
//Parsing Channel
//We need Speacial Handling for tthe "freq" channels
if (Channel_4 == 'd66 || Channel_4 == 'd68) begin
RC_Tx <= 'd1;
end
else if (Channel_4 == 'd70 || Channel_4 == 'd72) begin
RC_Tx <= 6'b00_0010;
end
else if (Channel_4 == 'd130 || Channel_4 == 'd132) begin
RC_Tx <= 6'b00_0100;
end
else if (Channel_4 == 'd134 || Channel_4 == 'd136) begin
RC_Tx <= 6'b00_1000;
end
else if (Channel_4 == 'd194 || Channel_4 == 'd196) begin
RC_Tx <= 6'b01_0000;
end
else if (Channel_4 == 'd198 || Channel_4 == 'd200) begin
RC_Tx <= 6'b10_0000;
if ((i_DC_Con4[9:1] < 1) || (i_DC_Con4[9:1] > 256)) begin
err_flag <= 1'b1;
end
else begin
RC_Tx <= 'd0;
//Parsing Channel
//We need Speacial Handling for tthe "freq" channels
if (Channel_4 == 'd66 || Channel_4 == 'd68) begin
RC_Tx <= 'd1;
end
else if (Channel_4 == 'd70 || Channel_4 == 'd72) begin
RC_Tx <= 6'b00_0010;
end
else if (Channel_4 == 'd130 || Channel_4 == 'd132) begin
RC_Tx <= 6'b00_0100;
end
else if (Channel_4 == 'd134 || Channel_4 == 'd136) begin
RC_Tx <= 6'b00_1000;
end
else if (Channel_4 == 'd194 || Channel_4 == 'd196) begin
RC_Tx <= 6'b01_0000;
end
else if (Channel_4 == 'd198 || Channel_4 == 'd200) begin
RC_Tx <= 6'b10_0000;
end
else begin
RC_Tx <= 'd0;
end
PMU_OC_4 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter4);
DMM_en <= (19'b000_0001_0000_0000_0000)<<(DMM_Shifter4);
end
PMU_OC_4 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter4);
DMM_en <= (19'b000_0001_0000_0000_0000)<<(DMM_Shifter4);
end
else if (i_DC_Con4[23] == 1'b1) begin //Select DPS
//Sanity Check
if ((Channel_4 < 1) || (Channel_4 > 32)) begin
err_flag <= 1'b1;
end
else begin
DPS_FS_4 <= ~(32'b1 << ( Channel_4 - 1));
DPS_FSMC <= 4'b0111;
DPS_FSMMC <= 6'b01_0111;
DPSFS_RC1 <= 1'b0;
end
end
end
end
@@ -407,6 +495,16 @@ module CPLD_Con (
PMU_OC_3 <= 'd0 ;
PMU_OC_4 <= 'd0 ;
DMM_en <= 'd0;
//DPS Switches LOW Enable
DPS_FS_1 <= 32'hFFFFFFFF;
DPS_FS_2 <= 32'hFFFFFFFF;
DPS_FS_3 <= 32'hFFFFFFFF;
DPS_FS_4 <= 32'hFFFFFFFF;
DPS_FSMC <= 4'b1111;
DPS_FSMMC <= 6'b11_1111;
DPSFS_RC1 <= 1'b1;
end
endcase
end
@@ -437,5 +535,14 @@ module CPLD_Con (
assign o_PMU_OC_3 = PMU_OC_3;
assign o_PMU_OC_4 = PMU_OC_4;
assign o_DPS_FS_1 = DPS_FS_1[15:0];
assign o_DPS_FS_2 = DPS_FS_2[15:0];
assign o_DPS_FS_3 = DPS_FS_3[15:0];
assign o_DPS_FS_4 = DPS_FS_4[15:0];
assign o_DPS_FSMC = DPS_FSMC;
assign o_DPS_FSMMC = DPS_FSMMC;
assign o_DPSFS_RC1 = DPSFS_RC1;
endmodule