瀏覽代碼

Слияние

Anatoliy Chigirinskiy 1 年之前
父節點
當前提交
d305d102cd

+ 1 - 1
src/src/InterfaceArbiter/InterfaceArbiter.v

@@ -284,7 +284,7 @@ module InterfaceArbiter
 				if (!spiMode) begin
 					wordsNum <= dataRegSSpi[17:1];
 				end else begin
-					wordsNum <= dataRegQSpi[21:19]+dataRegQSpi[17:16]+dataRegQSpi[15:12]+dataRegQSpi[10:9]+dataRegQSpi[7:6]+dataRegQSpi[4:3]+dataRegQSpi[2]+dataRegQSpi[1];
+					wordsNum <= dataRegQSpi[21:18]+dataRegQSpi[17:16]+dataRegQSpi[14:12]+dataRegQSpi[10:9]+dataRegQSpi[7:6]+dataRegQSpi[4:3]+dataRegQSpi[2]+dataRegQSpi[1];
 				end 
 			end
 		end else begin

+ 27 - 24
src/src/PacketAnalyzer4Mosi/PacketAnalyzer4Mosi.v

@@ -74,21 +74,28 @@ wire [8:0] selector;
 //==========================================
 // Parameters
 //==========================================
-localparam [22:0] DECREMENT_LOAD_ORDER 	= 23'h400000;		//23'b100 0000 0000 0000 0000 0000
-localparam [22:0] DECREMENT_DDS 		= 23'h80000;		//23'b000 1000 0000 0000 0000 0000
-localparam [22:0] DECREMENT_GPIO 		= 23'h10000;		//23'b000 0001 0000 0000 0000 0000
-localparam [22:0] DECREMENT_LMX 		= 23'h1000;			//23'b000 0000 0001 0000 0000 0000
-localparam [22:0] DECREMENT_MAX 		= 23'h200;			//23'b000 0000 0000 0010 0000 0000
-localparam [22:0] DECREMENT_SH_REG 		= 23'h40;			//23'b000 0000 0000 0000 0100 0000
-localparam [22:0] DECREMENT_POT 		= 23'h8;			//23'b000 0000 0000 0000 0000 1000
-localparam [22:0] DECREMENT_DAC 		= 23'h4;			//23'b000 0000 0000 0000 0000 0100
-localparam [22:0] DECREMENT_ATT 		= 23'h2;			//23'b000 0000 0000 0000 0000 0010
+// localparam [22:0] DECREMENT_DDS 	= 23'h80000;		//23'b000 1000 0000 0000 0000 0000
+// localparam [22:0] DECREMENT_GPIO 	= 23'h10000;		//23'b000 0001 0000 0000 0000 0000
+// localparam [22:0] DECREMENT_LMX 	= 23'h1000;			//23'b000 0000 0001 0000 0000 0000
+// localparam [22:0] DECREMENT_MAX 	= 23'h200;			//23'b000 0000 0000 0010 0000 0000
+// localparam [22:0] DECREMENT_SH_REG 	= 23'h40;			//23'b000 0000 0000 0000 0100 0000
+// localparam [22:0] DECREMENT_POT 	= 23'h8;			//23'b000 0000 0000 0000 0000 1000
+// localparam [22:0] DECREMENT_DAC 	= 23'h4;			//23'b000 0000 0000 0000 0000 0100
+// localparam [22:0] DECREMENT_ATT 	= 23'h2;			//23'b000 0000 0000 0000 0000 0010
 
+localparam [22:0] DECREMENT_LMX 	= 23'h40000;		//23'b000 0100 0000 0000 0000 0000
+localparam [22:0] DECREMENT_GPIO 	= 23'h10000;		//23'b000 0001 0000 0000 0000 0000
+localparam [22:0] DECREMENT_DDS		= 23'h1000;			//23'b000 0000 0001 0000 0000 0000
+localparam [22:0] DECREMENT_MAX 	= 23'h200;			//23'b000 0000 0000 0010 0000 0000
+localparam [22:0] DECREMENT_SH_REG 	= 23'h40;			//23'b000 0000 0000 0000 0100 0000
+localparam [22:0] DECREMENT_POT 	= 23'h8;			//23'b000 0000 0000 0000 0000 1000
+localparam [22:0] DECREMENT_DAC 	= 23'h4;			//23'b000 0000 0000 0000 0000 0100
+localparam [22:0] DECREMENT_ATT 	= 23'h2;			//23'b000 0000 0000 0000 0000 0010
 //==========================================
 // Assignments
 //==========================================
-assign lmxOr 	= 	|dataSpiReg[15:12];
-assign ddsOr 	= 	|dataSpiReg[21:19];
+assign lmxOr 	= 	|dataSpiReg[21:18];
+assign ddsOr 	= 	|dataSpiReg[14:12];
 assign potOr 	= 	|dataSpiReg[4:3];
 assign dacOr 	= 	 dataSpiReg[2];
 assign attOr 	= 	 dataSpiReg[1];
@@ -97,7 +104,7 @@ assign maxOr 	= 	|dataSpiReg[10:9];
 assign gpioOr 	= 	|dataSpiReg[17:16];
 assign loadOrderOr = dataSpiReg[22];
 
-assign selector = {loadOrderOr,ddsOr, gpioOr, lmxOr, maxOr, shRegOr, potOr, dacOr, attOr};
+assign selector = {lmxOr, gpioOr, ddsOr, maxOr, shRegOr, potOr, dacOr, attOr};
 
 //==========================================================================//
 //									CODING									//
@@ -133,27 +140,23 @@ always @(posedge Clk_i) begin
 	else if (ValDataFromSpi_i) begin
 		if ((dataSpiReg == 0) && (DataFromSpi_i[23] == 1'b1)) begin
 			dataSpiReg[22:1] <= DataFromSpi_i[22:1];
-			LmxWordNum_o <= DataFromSpi_i[15:12];
-			DdsWordNum_o <= DataFromSpi_i[21:19];
+			LmxWordNum_o <= DataFromSpi_i[21:18];
+			DdsWordNum_o <= DataFromSpi_i[14:12];
 			ValWordNum_o <= 1'b1;
 		end
 		else begin
 			casez(selector)
-			9'b1????????: begin //LoadOrder
-				dataSpiReg <= dataSpiReg - DECREMENT_LOAD_ORDER;
-				ValLoadOrder_o <= 1'b1;
-			end
-			9'b01???????: begin //DDS
-				dataSpiReg <= dataSpiReg - DECREMENT_DDS;
-				ValDdsDataToFifo_o <= 1'b1;
+			8'b1???????: begin //LMX
+				dataSpiReg <= dataSpiReg - DECREMENT_LMX;
+				ValLmxDataToFifo_o <= 1'b1;
 			end
 			9'b001??????: begin //GPIO
 				dataSpiReg <= dataSpiReg - DECREMENT_GPIO;
 				ValGpioDataToFifo_o <= 1'b1;
 			end
-			9'b0001?????: begin //LMX
-				dataSpiReg <= dataSpiReg - DECREMENT_LMX;
-				ValLmxDataToFifo_o <= 1'b1;
+			8'b001?????: begin //DDS
+				dataSpiReg <= dataSpiReg - DECREMENT_DDS;
+				ValDdsDataToFifo_o <= 1'b1;
 			end
 			9'b00001????: begin //MAX
 				dataSpiReg <= dataSpiReg - DECREMENT_MAX;

+ 3 - 3
src/src/Top/TopSbTmsgTb.sv

@@ -123,7 +123,7 @@ localparam [23:0] InitDacHeader         = {1'h0, DeviceIdDac, DacWordInitNum, 1'
 localparam [23:0] InitAttHeader         = {1'h0, DeviceIdAtt, AttWordInitNum, 1'h1};
 localparam [23:0] InitShRegHeader       = {1'h0, DeviceIdShReg, ShRegWordInitNum, 1'h1};
 
-localparam [3:0]  LMXWordNum = 4'd14;
+localparam [3:0]  LMXWordNum = 4'd1;
 localparam [2:0]  DDSWordNum = 3'd4;
 localparam        POTWordNum = 2'd2;
 localparam        DACWordNum = 1'd1;
@@ -163,7 +163,7 @@ localparam [23:0] GPIO_REG = {DDS_SAW1_FPGA,GPIO_ADRF_V2,GPIO_ADRF_V1,REF_OFFSET
 //***********************************************
 
 // localparam [23:0] AllDevQSPIHeader = {1'h1, LMXWordNum, DDSWordNum, POTWordNum, DACWordNum,ATTWordNum, ShRegWordNum,MaxWordNum, GPIOWordNum, 7'h1};
-localparam [23:0] AllDevQSPIHeader = {1'h1, 1'h0,DDSWordNum,1'h0,GPIOWordNum, LMXWordNum,1'h0,MaxWordNum,1'h0,ShRegWordNum,1'h0,POTWordNum,DACWordNum,ATTWordNum,1'h1};
+localparam [23:0] AllDevQSPIHeader = {1'h1, 1'h0,LMXWordNum,GPIOWordNum, 1'h0, DDSWordNum,1'h0,MaxWordNum,1'h0,ShRegWordNum,1'h0,POTWordNum,DACWordNum,ATTWordNum,1'h1};
 
 //***********************************************
 //	           ASSIGNS
@@ -175,7 +175,7 @@ assign Mosi0_o = (modeSel) ? mosi0Q : mosi0R;
 assign Mosi1_io = (anyFlag) ? 1'bz : Mosi1_o;
 assign MisoLdLmx_i = 1'b1;
 
-assign emptyFlagTx = (trCnt > 71) ? 1'b1 : 1'b0;
+assign emptyFlagTx = (trCnt > 58) ? 1'b1 : 1'b0;
 assign QSPITotalWordNum = LMXWordNum + DDSWordNum + POTWordNum + DACWordNum + ATTWordNum + ShRegWordNum + MaxWordNum + GPIOWordNum; 
 
 assign currClk = (modeSel) ? Clk60 : Clk10;

+ 33 - 5
src/src/WrapFifoChain/DDSWrapper.v

@@ -60,14 +60,42 @@ reg ssReg;
 reg ddsDirectFlagR;
 reg [2:0] ddsWordNumReg;
 reg [2:0] ddsWordNumRegSync;
+
+reg plsToggle;
+reg plsToggleSyncA;
+reg plsToggleSyncB;
 //================================================================================
 //	                                ASSIGNMENTS
 //================================================================================ 
 assign DdsWordNumReg_o = ddsWordNumReg;
+assign ddsWordNumValSync = plsToggleSyncB^plsToggleSyncA;
 //==========================================================================//
 //									CODING									//
 //==========================================================================//
 always @(posedge WrClk_i) begin
+	if (Rst_i) begin 
+		plsToggle <= 1'b0;
+	end
+	else if (DdsWordNumVal_i) begin 
+		plsToggle <= ~plsToggle;
+	end
+	else begin 
+		plsToggle <= plsToggle;
+	end
+end
+
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		plsToggleSyncA <= 1'b0;
+		plsToggleSyncB <= 1'b0;
+	end
+	else begin 
+		plsToggleSyncA <= plsToggle;
+		plsToggleSyncB <= plsToggleSyncA;
+	end
+end
+
+always @(posedge RdClk_i) begin
 	if (Rst_i) begin 
 		ssR <= 1'b0;
 	end
@@ -89,16 +117,16 @@ always @(posedge RdClk_i) begin
 	ssReg <= Ss_o;
 end
 
-always @(posedge WrClk_i) begin
+always @(posedge RdClk_i) begin
 	if (Rst_i) begin 
 		ddsWordNumReg <= 3'h0;
 	end
 	else begin 
-		if (DdsWordNumVal_i) begin 
+		if (ddsWordNumValSync) begin 
 			ddsWordNumReg <= DdsWordNum_i>>2;
 		end
 		else begin 
-			if (Ss_o && !ssR) begin 
+			if ((Ss_o && !ssR) && ddsWordNumReg != 0 ) begin 
 				ddsWordNumReg <= ddsWordNumReg-1;
 			end
 		end
@@ -122,11 +150,11 @@ always @(posedge RdClk_i) begin
 		if (ddsDirectFlagR && !DdsDirectFlag_i) begin 
 				DdsSyncFpga_o <= 1'b1;
 		end 
-		else if ((!Ss_o && ssReg) && (ddsWordNumRegSync != 0)) begin 
+		else if ((!Ss_o && ssReg) && (ddsWordNumReg != 0)) begin 
 			DdsSyncFpga_o <= 1'b0;
 		end
 		else begin 
-			if (ddsWordNumRegSync == 3'h1 && (Ss_o && !ssReg)) begin 
+			if (ddsWordNumReg == 3'h1 && (Ss_o && !ssReg)) begin 
 				DdsSyncFpga_o <= 1'b1;
 			end
 			else begin 

+ 12 - 2
src/src/WrapFifoChain/LmxWrapper.v

@@ -63,6 +63,7 @@ reg ssReg;
 reg ssRegDds;
 reg [3:0] lmxWordNumReg; 
 reg [3:0] lmxWordNumRegR;
+reg [2:0] ddsWordNumRegSync;
 //==========================================================================//
 //									ASSIGNMENTS								//
 //==========================================================================//
@@ -137,16 +138,25 @@ always @(posedge RdClk_i) begin
 	end
 end
 
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		ddsWordNumRegSync <= 3'h0;
+	end
+	else begin 
+		ddsWordNumRegSync <= DdsWordNumReg_i;
+	end
+end
+
 always @(posedge RdClk_i) begin 
 	if (Rst_i) begin 
 		PllVtuneCtrl_o <=1'b0;
 	end
 	else begin
 		if (!LmxDirectFlag_i) begin  
-			if (lmxWordNumReg == 0 ) begin
+			if ((lmxWordNumReg == 0) && (ddsWordNumRegSync == 0) ) begin
 				PllVtuneCtrl_o <= 1'b1;
 			end
-			else if ((!DdsCs_i && ssRegDds) && (DdsWordNumReg_i != 0)) begin 
+			else if ((!DdsCs_i && ssRegDds) && (ddsWordNumRegSync != 0)) begin 
 				PllVtuneCtrl_o <= 1'b0;
 			end
 			else if ((!Ss_o && ssReg) && (lmxWordNumReg != 0) ) begin