CPLD bug fixes

This commit is contained in:
Jeremy Shen
2026-05-25 18:13:03 +08:00
parent 74cd2ae192
commit 2dca3709ef
10 changed files with 47 additions and 34 deletions
+1 -1
View File
@@ -208,6 +208,6 @@ module BUS_Con (
assign o_wready = (state == IDLE); assign o_wready = (state == IDLE);
// Pass through unused signal or hook it up if needed // Pass through unused signal or hook it up if needed
assign o_rvalid = 1'b0; assign o_rvalid = i_rvalid;
endmodule endmodule
+2 -2
View File
@@ -93,7 +93,7 @@ module RelayConTop (
.i_wvalid(i_wvalid), .i_wvalid(i_wvalid),
.i_reg_busy(reg_busy), .i_reg_busy(reg_busy),
.i_rdata(r_data), .i_rdata(r_data),
.o_cmd_valid(cmd_vaild), .o_cmd_valid(cmd_valid),
.o_wr(wr_flag), .o_wr(wr_flag),
.o_miso(o_miso), .o_miso(o_miso),
.o_rvalid(o_rvalid), .o_rvalid(o_rvalid),
@@ -106,7 +106,7 @@ module RelayConTop (
Reg_file CPLD_Reg_1( Reg_file CPLD_Reg_1(
.i_sys_clk(i_sys_clk), .i_sys_clk(i_sys_clk),
.i_rst_n(i_rst_n), .i_rst_n(i_rst_n),
.i_wr_req(cmd_vaild), .i_wr_req(cmd_valid),
.i_wr(wr_flag), .i_wr(wr_flag),
.i_addr(reg_addr), .i_addr(reg_addr),
.i_wdata(w_data), .i_wdata(w_data),
+17 -17
View File
@@ -9,14 +9,14 @@ module BUS_Con (
output o_miso, // <-- MISO Logic added here output o_miso, // <-- MISO Logic added here
// Local Interface // Local Interface
output o_rvaild, // (Typo in original: o_rvalid) output o_rvalid, // (Typo in original: o_rvalid)
input i_rvaild, // Valid signal from Backend (Data is ready) input i_rvalid, // Valid signal from Backend (Data is ready)
input i_wvaild, input i_wvalid,
output o_wready, output o_wready,
input i_reg_busy, input i_reg_busy,
input [23:0] i_rdata, // Data from Backend to send to Master input [23:0] i_rdata, // Data from Backend to send to Master
output o_wr, output o_wr,
output o_cmd_vaild, output o_cmd_valid,
output [23:0] o_data, output [23:0] o_data,
output [6:0] o_addr, output [6:0] o_addr,
output o_err output o_err
@@ -61,19 +61,19 @@ module BUS_Con (
reg err_flag; reg err_flag;
reg [1:0] state; reg [1:0] state;
// //
reg [31:0] tx_buffer; // Holds data waiting for the next CS Low reg [31:0] tx_buffer; // Holds data waiting for the next CS Low
reg [31:0] miso_shift; // The actual shifter reg [31:0] miso_shift; // The actual shifter
// Output Registers // Output Registers
reg [6:0] addr_out; reg [6:0] addr_out;
reg [23:0] data_out; reg [23:0] data_out;
reg wr_out; reg wr_out;
reg cmd_valid_out; reg cmd_valid_out;
// //
localparam IDLE = 2'b00; localparam IDLE = 2'b00;
localparam CMD_SENT = 2'b01; localparam CMD_SENT = 2'b01;
localparam WAIT_BUSY = 2'b10; localparam WAIT_BUSY = 2'b10;
localparam DONE = 2'b11; localparam DONE = 2'b11;
always @(posedge i_sys_clk) begin always @(posedge i_sys_clk) begin
@@ -122,7 +122,7 @@ module BUS_Con (
end else begin end else begin
// If backend provides valid read data, store it. // If backend provides valid read data, store it.
// We pad the top 8 bits with Zeros (or you can put status flags here) // We pad the top 8 bits with Zeros (or you can put status flags here)
if (i_rvaild) begin if (i_rvalid) begin
tx_buffer <= {8'h00, i_rdata}; tx_buffer <= {8'h00, i_rdata};
end end
end end
@@ -205,11 +205,11 @@ module BUS_Con (
assign o_addr = addr_out; assign o_addr = addr_out;
assign o_data = data_out; assign o_data = data_out;
assign o_wr = wr_out; assign o_wr = wr_out;
assign o_cmd_vaild = cmd_valid_out; assign o_cmd_valid = cmd_valid_out;
assign o_err = err_flag; assign o_err = err_flag;
assign o_wready = (state == IDLE); assign o_wready = (state == IDLE);
// Pass through unused signal or hook it up if needed // Pass through unused signal or hook it up if needed
assign o_rvaild = 1'b0; assign o_rvalid = i_rvalid;
endmodule endmodule
+4
View File
@@ -104,6 +104,10 @@ module CPLD_Con (
exec_flag <= 1'b0; exec_flag <= 1'b0;
exec_done_flag <= 1'b1; exec_done_flag <= 1'b1;
freq_slot_flag <= 'd0; freq_slot_flag <= 'd0;
PMU_OC_1 <= 'd0;
PMU_OC_2 <= 'd0;
PMU_OC_3 <= 'd0;
PMU_OC_4 <= 'd0;
dc_slot_flag<='d0; dc_slot_flag<='d0;
err_flag <= 'd0; err_flag <= 'd0;
end end
+1 -1
View File
@@ -2,7 +2,7 @@
<BaliProject version="3.2" title="NewExtIns_CPLD2" device="LCMXO2-7000HC-4FG484C" default_implementation="impl1"> <BaliProject version="3.2" title="NewExtIns_CPLD2" device="LCMXO2-7000HC-4FG484C" default_implementation="impl1">
<Options/> <Options/>
<Implementation title="impl1" dir="impl1" description="impl1" synthesis="synplify" default_strategy="Strategy1"> <Implementation title="impl1" dir="impl1" description="impl1" synthesis="synplify" default_strategy="Strategy1">
<Options def_top="CPLD_Con" top="RelayConTop"/> <Options def_top="RelayConTop" top="RelayConTop"/>
<Source name="RelayConTop.v" type="Verilog" type_short="Verilog"> <Source name="RelayConTop.v" type="Verilog" type_short="Verilog">
<Options top_module="RelayConTop"/> <Options top_module="RelayConTop"/>
</Source> </Source>
+1
View File
@@ -1,3 +1,4 @@
rvl_alias "i_sys_clk" "i_sys_clk";
RVL_ALIAS "i_sys_clk" "i_sys_clk"; RVL_ALIAS "i_sys_clk" "i_sys_clk";
RVL_ALIAS "i_sys_clk" "i_sys_clk"; RVL_ALIAS "i_sys_clk" "i_sys_clk";
RVL_ALIAS "i_sys_clk" "i_sys_clk"; RVL_ALIAS "i_sys_clk" "i_sys_clk";
+8 -8
View File
@@ -8,7 +8,7 @@ module RelayConTop (
output o_miso, output o_miso,
output o_rvalid, output o_rvalid,
input i_rready, input i_rready,
input i_wvaild, input i_wvalid,
output o_wready, output o_wready,
output o_err, output o_err,
output [7:0]o_RC_F, //Ref: Schematic output [7:0]o_RC_F, //Ref: Schematic
@@ -61,20 +61,20 @@ module RelayConTop (
wire con_done; wire con_done;
BUS_Con BUS_Con_2( BUS_Con BUS_Con_2(
.i_sys_clk(i_sys_clk), .i_sys_clk(i_sys_clk),
.i_rst_n(i_rst_n), .i_rst_n(i_rst_n),
.i_sclk(i_sclk), .i_sclk(i_sclk),
.i_mosi(i_mosi), .i_mosi(i_mosi),
.i_cs(i_cs), .i_cs(i_cs),
.i_rvaild(con_rvaild), .i_rvalid(con_rvalid),
.i_wvaild(i_wvaild), .i_wvalid(i_wvalid),
.i_reg_busy(reg_busy), .i_reg_busy(reg_busy),
.i_rdata(r_data), .i_rdata(r_data),
.o_cmd_vaild(cmd_valid), .o_cmd_valid(cmd_valid),
.o_wr(wr_flag), .o_wr(wr_flag),
.o_miso(o_miso), .o_miso(o_miso),
.o_rvaild(o_rvalid), .o_rvalid(o_rvalid),
.o_wready(o_wready), .o_wready(o_wready),
.o_data(w_data), .o_data(w_data),
.o_addr(reg_addr), .o_addr(reg_addr),
@@ -161,7 +161,7 @@ module RelayConTop (
assign o_PMU_OC_4[31:25] = PMU_OC_4[31:25]; assign o_PMU_OC_4[31:25] = PMU_OC_4[31:25];
assign o_err = bus_err_flag || reg_err_flag; assign o_err = bus_err_flag || reg_err_flag || cpld_err_flag;
endmodule endmodule
+6
View File
@@ -109,6 +109,9 @@ module CPLD_Con (
4'b1000: begin 4'b1000: begin
PMU_RC <= 4'b0110; PMU_RC <= 4'b0110;
end end
default:begin
PMU_RC <= 4'b0000;
end
endcase endcase
end end
else if (dc_t == 1'b1) begin else if (dc_t == 1'b1) begin
@@ -125,6 +128,9 @@ module CPLD_Con (
4'b1000: begin 4'b1000: begin
PMU_RC <= 4'b1000; PMU_RC <= 4'b1000;
end end
default:begin
PMU_RC <= 4'b0000;
end
endcase endcase
end end
done_flag <= 1'b1; done_flag <= 1'b1;
+3 -1
View File
@@ -131,7 +131,9 @@ module Reg_file (
// Wait for Controller to register the command and pull 'done' LOW (Busy) // Wait for Controller to register the command and pull 'done' LOW (Busy)
EXEC_ACK: begin EXEC_ACK: begin
busy_flag <= 1'b1; busy_flag <= 1'b1;
state <= EXEC_WAIT; if (i_con_done == 1'b0) begin
state <= EXEC_WAIT;
end
// Optional: Timeout counter here to prevent hanging if Controller is dead // Optional: Timeout counter here to prevent hanging if Controller is dead
end end
+4 -4
View File
@@ -6,7 +6,7 @@ module RelayConTop (
input i_mosi, input i_mosi,
input i_cs, input i_cs,
output o_miso, output o_miso,
output o_rvaild, output o_rvalid,
input i_rready, input i_rready,
input i_wvaild, input i_wvaild,
@@ -23,7 +23,7 @@ module RelayConTop (
wire [23:0]w_data ; wire [23:0]w_data ;
wire [6:0]reg_addr ; wire [6:0]reg_addr ;
wire cmd_vaild; wire cmd_valid;
wire reg_busy; wire reg_busy;
wire wr_flag; //1=write,0=read wire wr_flag; //1=write,0=read
wire bus_err_flag; wire bus_err_flag;
@@ -55,7 +55,7 @@ module RelayConTop (
.i_wvalid(i_wvalid), .i_wvalid(i_wvalid),
.i_reg_busy(reg_busy), .i_reg_busy(reg_busy),
.i_rdata(r_data), .i_rdata(r_data),
.o_cmd_valid(cmd_vaild), .o_cmd_valid(cmd_valid),
.o_wr(wr_flag), .o_wr(wr_flag),
.o_miso(o_miso), .o_miso(o_miso),
.o_rvalid(o_rvalid), .o_rvalid(o_rvalid),
@@ -68,7 +68,7 @@ module RelayConTop (
Reg_file CPLD_Reg_3( Reg_file CPLD_Reg_3(
.i_sys_clk(i_sys_clk), .i_sys_clk(i_sys_clk),
.i_rst_n(i_rst_n), .i_rst_n(i_rst_n),
.i_wr_req(cmd_vaild), .i_wr_req(cmd_valid),
.i_wr(wr_flag), .i_wr(wr_flag),
.i_addr(reg_addr), .i_addr(reg_addr),
.i_wdata(w_data), .i_wdata(w_data),