Unify the OC_Con logic
This commit is contained in:
+72
-62
@@ -16,8 +16,6 @@ module CPLD_Con (
|
||||
input [23:0]i_DC_Con4,
|
||||
|
||||
//Output RELAYs
|
||||
output [3:0]o_OC_x01,
|
||||
output [3:0]o_OC_x17,
|
||||
output [18:0]o_DMM_EN,
|
||||
output o_IO_RC1,
|
||||
output [5:0]o_RC_Tx,
|
||||
@@ -31,6 +29,9 @@ module CPLD_Con (
|
||||
output o_RC_VSel,
|
||||
output o_RC_ISel,
|
||||
|
||||
// Force/Sense Control
|
||||
output [1:0]o_RC_LOFS,
|
||||
|
||||
// Output RLoad Sel
|
||||
output [17:0]o_RC_RLSel,
|
||||
|
||||
@@ -47,7 +48,9 @@ module CPLD_Con (
|
||||
reg[5:0]RC_Tx;
|
||||
reg io_RC;
|
||||
|
||||
reg RC_VISel;
|
||||
reg RC_VSel;
|
||||
reg RC_ISel;
|
||||
reg [1:0]RC_LOFS;
|
||||
reg [17:0]RC_RLSel ;
|
||||
reg [31:0]PMU_OC_1 ;
|
||||
reg [31:0]PMU_OC_2 ;
|
||||
@@ -82,6 +85,8 @@ module CPLD_Con (
|
||||
wire [4:0]OC_Shifter4 = i_DC_Con4[8:4]; // Channel Number div 8
|
||||
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 [3:0]DC_OC1 = {PMU_OC_4[0],PMU_OC_3[0],PMU_OC_2[0],PMU_OC_1[0]} ;
|
||||
wire [3:0]DC_OC17 = {PMU_OC_4[16],PMU_OC_3[16],PMU_OC_2[16],PMU_OC_1[16]} ;
|
||||
|
||||
always @(posedge i_sys_clk) begin
|
||||
if (i_rst_n == 1'b0) begin
|
||||
@@ -120,12 +125,11 @@ module CPLD_Con (
|
||||
freq_slot_flag <= 'd0;
|
||||
dc_slot_flag <= 'd0;
|
||||
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'd0;
|
||||
|
||||
DMM_en <= 'd0;
|
||||
|
||||
RC_VISel <='d0;
|
||||
RC_VSel <= 'd1; //Vpk HIGH Disable, LOW Enable
|
||||
RC_ISel <= 'd1; //Apk HIGH Disable, LOW Enable
|
||||
RC_LOFS <= 'hf; //HIGH Disable, LOW Enable
|
||||
RC_RLSel <='hfffff;
|
||||
|
||||
PMU_OC_1 <= 'd0 ;
|
||||
@@ -165,95 +169,81 @@ module CPLD_Con (
|
||||
case (freq_slot_flag)
|
||||
4'b0001: begin
|
||||
if (i_freq_relay1[9:1] < 9) begin
|
||||
OC_x01 <= 4'b0001;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_1 <= 'd1;
|
||||
DMM_en <= 19'b000_0000_0000_0000_0001;
|
||||
end
|
||||
else if (i_freq_relay1[9:1] < 73) begin
|
||||
DMM_en <= 19'b000_0000_0000_0000_0010;
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_1 <= 'd0;
|
||||
end
|
||||
else if (i_freq_relay1[9:1] < 137) begin
|
||||
OC_x17 <= 4'b0001;
|
||||
OC_x01 <= 'd0;
|
||||
PMU_OC_1 <= 1'b1 << 16;
|
||||
DMM_en <= 19'b000_0000_0000_0000_0100;
|
||||
end
|
||||
else begin
|
||||
DMM_en <= 19'b000_0000_0000_0000_1000;
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_1 <= 'd0;
|
||||
end
|
||||
end
|
||||
4'b0010: begin
|
||||
if (i_freq_relay2[9:1] < 9) begin
|
||||
OC_x01 <= 4'b0010;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_2 <= 'd1;
|
||||
DMM_en <= 19'b000_0000_0000_0001_0000;
|
||||
end
|
||||
else if (i_freq_relay2[9:1] < 73) begin
|
||||
DMM_en <= 19'b000_0000_0000_0010_0000;
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_2 <= 'd0;
|
||||
end
|
||||
else if (i_freq_relay2[9:1] < 137) begin
|
||||
OC_x17 <= 4'b0010;
|
||||
OC_x01 <= 'd0;
|
||||
PMU_OC_2 <= 1'b1 << 16;
|
||||
DMM_en <= 19'b000_0000_0000_0100_0000;
|
||||
end
|
||||
else begin
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_2 <= 'd0;
|
||||
DMM_en <= 19'b000_0000_0000_1000_0000;
|
||||
end
|
||||
end
|
||||
4'b0100: begin
|
||||
if (i_freq_relay3[9:1] < 9) begin
|
||||
OC_x01 <= 'b0100;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_3 <= 'd1;
|
||||
DMM_en <= 19'b000_0000_0001_0000_0000;
|
||||
end
|
||||
else if ((i_freq_relay3[9:1] > 64)& (i_freq_relay3[9:1] < 73)) begin
|
||||
OC_x01 <= 4'b0000;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_3 <= 'd0;
|
||||
DMM_en <= 19'b000_0000_0010_0000_0000;
|
||||
end
|
||||
else if (i_freq_relay3[9:1] < 137) begin
|
||||
DMM_en <= 19'b000_0000_0100_0000_0000;
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'b0100;
|
||||
PMU_OC_3 <= 1'b1 << 16;
|
||||
end
|
||||
else if (i_freq_relay3[9:1] < 201) begin
|
||||
OC_x17 <= 4'd0;
|
||||
OC_x01 <= 'd0;
|
||||
PMU_OC_3 <= 'd0;
|
||||
DMM_en <= 19'b000_0000_1000_0000_0000;
|
||||
end
|
||||
end
|
||||
4'b1000: begin
|
||||
if (i_freq_relay4[9:1] < 9) begin
|
||||
OC_x01 <= 4'b1000;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_4 <= 'd1;
|
||||
DMM_en <= 19'b000_0001_0000_0000_0000;
|
||||
end
|
||||
else if (i_freq_relay4[9:1] < 72) begin
|
||||
DMM_en <= 19'b000_0010_0000_0000_0000;
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_4 <= 'd0;
|
||||
end
|
||||
else if (i_freq_relay4[9:1] < 137) begin
|
||||
OC_x17 <= 4'b1000;
|
||||
OC_x01 <= 'd0;
|
||||
PMU_OC_4 <= 1'b1 << 16;
|
||||
DMM_en <= 19'b000_0100_0000_0000_0000;
|
||||
end
|
||||
else begin
|
||||
OC_x01 <= 'd0;
|
||||
OC_x17 <= 'd0;
|
||||
PMU_OC_4 <= 'd0;
|
||||
DMM_en <= 19'b000_1000_0000_0000_0000;
|
||||
end
|
||||
end
|
||||
default: begin // You Should NOT be HERE
|
||||
OC_x01 <= 4'b0000;
|
||||
OC_x17 <= 4'b0000;
|
||||
PMU_OC_1 <= 'd0;
|
||||
PMU_OC_2 <= 'd0;
|
||||
PMU_OC_3 <= 'd0;
|
||||
PMU_OC_4 <= 'd0;
|
||||
DMM_en <= 'd0;
|
||||
end
|
||||
endcase
|
||||
@@ -261,11 +251,16 @@ module CPLD_Con (
|
||||
else if (dc_t == 1'b1) begin
|
||||
case (dc_slot_flag)
|
||||
4'b0001: begin
|
||||
//Here Set Mode and F/S
|
||||
if (i_DC_Con1[22] == 1'b1) begin
|
||||
RC_VISel <= 1'b1; //Select Current
|
||||
RC_VSel <= 1'b1; //Select Current
|
||||
RC_ISel <= 1'b0;
|
||||
RC_LOFS <= 2'b01;
|
||||
end
|
||||
else begin
|
||||
RC_VISel <= 1'b0; //Select Voltage
|
||||
RC_VSel <= 1'b0; //Select Voltage
|
||||
RC_ISel <= 1'b1;
|
||||
RC_LOFS <= 2'b10;
|
||||
end
|
||||
//Sanity Check
|
||||
if ((i_DC_Con1[21:17] < 1) || (i_DC_Con1[21:17] > 18) || (i_DC_Con1[9:1] < 1) || (i_DC_Con1[9:1] > 256)) begin
|
||||
@@ -274,7 +269,7 @@ module CPLD_Con (
|
||||
else begin
|
||||
RC_RLSel <= (RC_RLShifter1 >= 1 && RC_RLShifter1 <= 18)
|
||||
? ~(18'b1 << (RC_RLShifter1 - 1))
|
||||
: 18'h3FFFF; // 否则全 1(即不置 0)
|
||||
: 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);
|
||||
@@ -286,10 +281,14 @@ module CPLD_Con (
|
||||
end
|
||||
4'b0010: begin
|
||||
if (i_DC_Con2[22] == 1'b1) begin
|
||||
RC_VISel <= 1'b1; //Select Current
|
||||
RC_VSel <= 1'b1; //Select Current
|
||||
RC_ISel <= 1'b0;
|
||||
RC_LOFS <= 2'b01;
|
||||
end
|
||||
else begin
|
||||
RC_VISel <= 1'b0; //Select Voltage
|
||||
RC_VSel <= 1'b0; //Select Voltage
|
||||
RC_ISel <= 1'b1;
|
||||
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
|
||||
@@ -298,7 +297,7 @@ module CPLD_Con (
|
||||
else begin
|
||||
RC_RLSel <= (RC_RLShifter2 >= 1 && RC_RLShifter2 <= 18)
|
||||
? ~(18'b1 << (RC_RLShifter2 - 1))
|
||||
: 18'h3FFFF; // 否则全 1(即不置 0)
|
||||
: 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);
|
||||
@@ -310,10 +309,14 @@ module CPLD_Con (
|
||||
end
|
||||
4'b0100:begin
|
||||
if (i_DC_Con3[22] == 1'b1) begin
|
||||
RC_VISel <= 1'b1; //Select Current
|
||||
RC_VSel <= 1'b1; //Select Current
|
||||
RC_ISel <= 1'b0;
|
||||
RC_LOFS <= 2'b01;
|
||||
end
|
||||
else begin
|
||||
RC_VISel <= 1'b0; //Select Voltage
|
||||
RC_VSel <= 1'b0; //Select Voltage
|
||||
RC_ISel <= 1'b1;
|
||||
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
|
||||
@@ -322,7 +325,7 @@ module CPLD_Con (
|
||||
else begin
|
||||
RC_RLSel <= (RC_RLShifter3 >= 1 && RC_RLShifter3 <= 18)
|
||||
? ~(18'b1 << (RC_RLShifter3 - 1))
|
||||
: 18'h3FFFF; // 否则全 1(即不置 0)
|
||||
: 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);
|
||||
@@ -334,10 +337,14 @@ module CPLD_Con (
|
||||
end
|
||||
4'b1000:begin
|
||||
if (i_DC_Con4[22] == 1'b1) begin
|
||||
RC_VISel <= 1'b1; //Select Current
|
||||
RC_VSel <= 1'b1; //Select Current
|
||||
RC_ISel <= 1'b0;
|
||||
RC_LOFS <= 2'b01;
|
||||
end
|
||||
else begin
|
||||
RC_VISel <= 1'b0; //Select Voltage
|
||||
RC_VSel <= 1'b0; //Select Voltage
|
||||
RC_ISel <= 1'b1;
|
||||
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
|
||||
@@ -346,7 +353,7 @@ module CPLD_Con (
|
||||
else begin
|
||||
RC_RLSel <= (RC_RLShifter4 >= 1 && RC_RLShifter4 <= 18)
|
||||
? ~(18'b1 << (RC_RLShifter4 - 1))
|
||||
: 18'h3FFFF; // 否则全 1(即不置 0)
|
||||
: 18'h3FFFF; // 否则�1(即不置 0�
|
||||
if (i_DC_Con4[23] == 1'b0) begin //Select PMU
|
||||
PMU_OC_4 <= (32'b0000_0000_0000_0000_0000_0000_0000_0001)<<(OC_Shifter4);
|
||||
DMM_en <= (19'b000_0001_0000_0000_0000)<<(DMM_Shifter4);
|
||||
@@ -357,8 +364,10 @@ module CPLD_Con (
|
||||
end
|
||||
end
|
||||
default:begin // You Should NOT be HERE
|
||||
RC_VISel <='d0;
|
||||
RC_RLSel <='hfffff;
|
||||
RC_VSel <= 'd1;
|
||||
RC_ISel <= 'd1;
|
||||
RC_RLSel <= 'hf;
|
||||
RC_LOFS <= 'hf;
|
||||
|
||||
PMU_OC_1 <= 'd0 ;
|
||||
PMU_OC_2 <= 'd0 ;
|
||||
@@ -377,15 +386,16 @@ module CPLD_Con (
|
||||
end
|
||||
|
||||
assign o_con_done = done_flag;
|
||||
assign o_DMM_EN = DMM_en;
|
||||
assign o_OC_x01 = OC_x01;
|
||||
assign o_OC_x17 = OC_x17;
|
||||
assign o_IO_RC1 = io_RC;
|
||||
assign o_err = err_flag;
|
||||
assign o_RC_Tx = RC_Tx;
|
||||
|
||||
assign o_RC_ISel = (RC_VISel==1'b1)?1:0;
|
||||
assign o_RC_VSel = (RC_VISel==1'b1)?0:1;
|
||||
assign o_DMM_EN = DMM_en;
|
||||
assign o_IO_RC1 = io_RC;
|
||||
assign o_RC_Tx = RC_Tx;
|
||||
|
||||
assign o_RC_VSel = RC_VSel;
|
||||
assign o_RC_ISel = RC_ISel;
|
||||
|
||||
assign o_RC_LOFS = RC_LOFS;
|
||||
|
||||
assign o_RC_RLSel = RC_RLSel;
|
||||
|
||||
|
||||
+11
-24
@@ -79,6 +79,9 @@ module RelayConTop (
|
||||
//DMM I Select
|
||||
wire RC_ISel;
|
||||
|
||||
//Force/Sense Control
|
||||
wire [1:0]RC_LOFS ;
|
||||
|
||||
wire con_rvalid;
|
||||
|
||||
wire con_done;
|
||||
@@ -139,8 +142,6 @@ module RelayConTop (
|
||||
.i_DC_Con3(DC_Con3),
|
||||
.i_DC_Con4(DC_Con4),
|
||||
.o_con_done(con_done),
|
||||
.o_OC_x01(OC_x01),
|
||||
.o_OC_x17(OC_x17),
|
||||
.o_RC_Tx(RC_Tx),
|
||||
.o_DMM_EN(DMM_EN),
|
||||
.o_PMU_OC_1(PMU_OC_1),
|
||||
@@ -149,35 +150,21 @@ module RelayConTop (
|
||||
.o_PMU_OC_4(PMU_OC_4),
|
||||
.o_RC_VSel(RC_VSel),
|
||||
.o_RC_ISel(RC_ISel),
|
||||
.o_RC_LOFS(RC_LOFS),
|
||||
.o_RC_RLSel(RC_RLSel),
|
||||
.o_IO_RC1(IO_RC1),
|
||||
.o_err(cpld_err_flag)
|
||||
);
|
||||
|
||||
assign o_con_done = con_done;
|
||||
//assign o_OC_x01 = OC_x01;
|
||||
assign o_PMU_OC_1[0] = OC_x01[0];
|
||||
assign o_PMU_OC_2[0] = OC_x01[1];
|
||||
assign o_PMU_OC_3[0] = OC_x01[2];
|
||||
assign o_PMU_OC_4[0] = OC_x01[3];
|
||||
|
||||
//assign o_OC_x17 = OC_x17;
|
||||
assign o_PMU_OC_1[16] = OC_x17[0];
|
||||
assign o_PMU_OC_2[16] = OC_x17[1];
|
||||
assign o_PMU_OC_3[16] = OC_x17[2];
|
||||
assign o_PMU_OC_4[16] = OC_x17[3];
|
||||
|
||||
assign o_PMU_OC_1[15:1] = PMU_OC_1[15:1];
|
||||
assign o_PMU_OC_1[31:17] = PMU_OC_1[31:17];
|
||||
assign o_PMU_OC_1 = PMU_OC_1;
|
||||
|
||||
assign o_PMU_OC_2[15:1] = PMU_OC_2[15:1];
|
||||
assign o_PMU_OC_2[31:17] = PMU_OC_2[31:17];
|
||||
|
||||
assign o_PMU_OC_3[15:1] = PMU_OC_3[15:1];
|
||||
assign o_PMU_OC_3[31:17] = PMU_OC_3[31:17];
|
||||
assign o_PMU_OC_2 = PMU_OC_2;
|
||||
|
||||
assign o_PMU_OC_4[15:1] = PMU_OC_4[15:1];
|
||||
assign o_PMU_OC_4[31:17] = PMU_OC_4[31:17];
|
||||
assign o_PMU_OC_3 = PMU_OC_3;
|
||||
|
||||
assign o_PMU_OC_4 = PMU_OC_4;
|
||||
|
||||
assign o_DMM_EN = DMM_EN;
|
||||
assign o_IO_RC1 = IO_RC1;
|
||||
@@ -193,8 +180,8 @@ module RelayConTop (
|
||||
assign o_RC_VSel = RC_VSel;
|
||||
assign o_RC_ISel = RC_ISel;
|
||||
|
||||
assign o_RC_LOF = (RC_VSel == 1'b1)?2'b01:2'b10; //if Measure V then close RC_LOF[0]
|
||||
assign o_RC_LOS = (RC_VSel == 1'b1)?2'b01:2'b10;
|
||||
assign o_RC_LOF = RC_LOFS;
|
||||
assign o_RC_LOS = RC_LOFS;
|
||||
|
||||
assign o_err = bus_err_flag || reg_err_flag ||cpld_err_flag;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user