Преглед на файлове

Добавлен регистр, который содержит информацию о версии платы и прошивки. Обновлён протокол.

Anatoliy Chigirinskiy преди 1 година
родител
ревизия
8f5ccfa472
променени са 4 файла, в които са добавени 50 реда и са изтрити 14 реда
  1. BIN
      docs/S5443v3_fpga3_reg.xlsx
  2. 18 10
      src/src/PacketAnalyzer1Mosi/PacketAnalyzer1Mosi.v
  3. 19 1
      src/src/Top/TopSbTmsg.v
  4. 13 3
      src/src/WrapFifoChain/LmxWrapper.v

BIN
docs/S5443v3_fpga3_reg.xlsx


+ 18 - 10
src/src/PacketAnalyzer1Mosi/PacketAnalyzer1Mosi.v

@@ -43,6 +43,7 @@ module PacketAnalyzer1Mosi (
 	output reg FlagDirectGpio1_o,
 	output reg FlagDirectTemp_o,
 	output reg FlagDirectGpio2_o,
+	output reg FlagDirectServInfo_o,
 
 	output reg Busy_o
 );
@@ -60,16 +61,17 @@ reg [16:0] cntData;
 //==========================================
 // Parameters
 //==========================================
-localparam DEV_ID_LMX 		= 5'd0;
-localparam DEV_ID_DDS 		= 5'd1;
-localparam DEV_ID_POT 		= 5'd2;
-localparam DEV_ID_DAC 		= 5'd3;
-localparam DEV_ID_ATT 		= 5'd4;
-localparam DEV_ID_SH_REG 	= 5'd5;
-localparam DEV_ID_MAX 		= 5'd6;
-localparam DEV_ID_GPIO_1 	= 5'd7;
-localparam DEV_ID_TEMP 		= 5'd8;
-localparam DEV_ID_GPIO_2 	= 5'd9;
+localparam DEV_ID_LMX 			= 5'd0;
+localparam DEV_ID_DDS 			= 5'd1;
+localparam DEV_ID_POT 			= 5'd2;
+localparam DEV_ID_DAC 			= 5'd3;
+localparam DEV_ID_ATT 			= 5'd4;
+localparam DEV_ID_SH_REG 		= 5'd5;
+localparam DEV_ID_MAX 			= 5'd6;
+localparam DEV_ID_GPIO_1 		= 5'd7;
+localparam DEV_ID_TEMP 			= 5'd8;
+localparam DEV_ID_GPIO_2 		= 5'd9;
+localparam DEV_ID_SERVICE_INFO	= 5'd10;
 
 //==========================================
 // Assignments
@@ -115,6 +117,7 @@ always @(posedge Clk_i) begin
 		FlagDirectGpio1_o 	<= 1'b0;
 		FlagDirectTemp_o 	<= 1'b0;
 		FlagDirectGpio2_o 	<= 1'b0;
+		FlagDirectServInfo_o <= 1'b0;
 	end
 	else if (cntData != 0) begin
 		case (devId)
@@ -148,6 +151,9 @@ always @(posedge Clk_i) begin
 			DEV_ID_GPIO_2 : begin
 				FlagDirectGpio2_o <= 1'b1;
 			end
+			DEV_ID_SERVICE_INFO : begin 
+				FlagDirectServInfo_o <= 1'b1;
+			end
 			default : begin
 				FlagDirectLmx_o 	<= 1'b0;
 				FlagDirectDds_o 	<= 1'b0;
@@ -159,6 +165,7 @@ always @(posedge Clk_i) begin
 				FlagDirectGpio1_o 	<= 1'b0;
 				FlagDirectTemp_o 	<= 1'b0;
 				FlagDirectGpio2_o 	<= 1'b0;
+				FlagDirectServInfo_o <= 1'b0;
 			end
 		endcase
 	end
@@ -173,6 +180,7 @@ always @(posedge Clk_i) begin
 		FlagDirectGpio1_o 	<= 1'b0;
 		FlagDirectTemp_o 	<= 1'b0;
 		FlagDirectGpio2_o 	<= 1'b0;
+		FlagDirectServInfo_o <= 1'b0;
 	end
 end
 

+ 19 - 1
src/src/Top/TopSbTmsg.v

@@ -107,6 +107,8 @@ module TopSbTmsg
 //================================================================================
 //  LOCALPARAM
 
+localparam [11:0] BOARD_VER 	= 12'h1;
+localparam [11:0] FIRMWARE_VER	= 12'h1;	
 
 //================================================================================
 //  REG/WIRE
@@ -191,6 +193,8 @@ module TopSbTmsg
 
 	reg misoReg;
 
+	wire [23:0] servInfo;
+
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================
@@ -222,6 +226,8 @@ assign RfLd_o = MisoLdLmx_i;
 assign Mosi1_io = misoReg;
 assign AnyFlag_o = anyFlag;//Debug-only
 
+assign servInfo	= {BOARD_VER, FIRMWARE_VER};
+
 //================================================================================
 //  CODING
 always @(*) begin 
@@ -244,6 +250,9 @@ always @(*) begin
 		else if (flagDirectGpio2) begin 
 			misoReg = misoGpio2;
 		end
+		else if (flagDirectServInfo) begin 
+			misoReg = misoServInfo;
+		end
 		else begin 
 			misoReg = 1'bz;
 		end
@@ -422,6 +431,7 @@ PacketAnalyzer1Mosi	PacketAnalyzer1Mosi
 	.FlagDirectGpio1_o		(flagDirectGpio1),
 	.FlagDirectTemp_o		(flagDirectTemp),
 	.FlagDirectGpio2_o		(flagDirectGpio2),
+	.FlagDirectServInfo_o	(flagDirectServInfo),
 	
 	.Busy_o					(busyMosi1)
 );
@@ -568,7 +578,7 @@ Gpio1Ctrl Gpio1Ctrl
 
 Gpio2Read Gpio2Read (
 	.Clk_i				(clk60),
-	.Rst_i				(Rst_i),
+	.Rst_i				(initRst),
 	.ClkSpi_i			(Sck_i),
 	.LdMax_i			(MisoLdMax2870_i),
 	.LdLmx_i			(MisoLdLmx_i),
@@ -576,4 +586,12 @@ Gpio2Read Gpio2Read (
 	.MisoGpio2_o		(misoGpio2)
 );
 
+SpiReadback ServInfoReadback (
+	.ClkSpi_i		(Sck_i),
+	.Rst_i			(initRst),
+	.RegData_i		(servInfo),
+	.FlagDirect_i	(flagDirectServInfo),
+	.Miso_o			(misoServInfo)
+);
+
 endmodule

+ 13 - 3
src/src/WrapFifoChain/LmxWrapper.v

@@ -51,6 +51,7 @@ wire lmxFifoFull;
 wire lmxFifoEmpty;
 
 reg ssR;
+reg ssReg;
 reg [3:0] lmxWordNumReg; 
 reg [3:0] lmxWordNumRegR;
 //==========================================================================//
@@ -65,6 +66,15 @@ always @(posedge WrClk_i) begin
 	end
 end
 
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		ssReg <= 1'b0;
+	end
+	else begin 
+		ssReg <= Ss_o;
+	end
+end
+
 always @(posedge WrClk_i) begin
 	if (Rst_i) begin 
 		lmxWordNumReg <= 3'h0;
@@ -90,16 +100,16 @@ always @(posedge RdClk_i) begin
 	end
 end
 
-always @(posedge WrClk_i) begin 
+always @(posedge RdClk_i) begin 
 	if (Rst_i) begin 
 		PllVtuneCtrl_o <=1'b0;
 	end
 	else begin
 		if (!LmxDirectFlag_i) begin  
-			if ((!Ss_o && ssR) && (lmxWordNumReg != 0) ) begin 
+			if ((!Ss_o && ssReg) && (lmxWordNumRegR != 0) ) begin 
 				PllVtuneCtrl_o <= 1'b0;
 			end
-			else if (lmxWordNumReg == 0 ) begin
+			else if (lmxWordNumRegR == 0 ) begin
 				PllVtuneCtrl_o <= 1'b1;
 			end
 		end