Explorar el Código

Петля теперь блокируется при начале отправки данных на Dds

Anatoliy Chigirinskiy hace 1 año
padre
commit
33a72de001

+ 4 - 0
src/src/Top/TopSbTmsg.v

@@ -186,6 +186,7 @@ localparam [11:0] FIRMWARE_VER	= 12'h1;
 
 	wire [3:0] lmxWordNum;
 	wire [2:0] ddsWordNum;
+	wire [2:0] ddsWordNumReg;
 	wire valWordNum;
 
 	wire testTrig;
@@ -451,6 +452,8 @@ LmxWrapper #(
 	.Val_i				(valLmxDataToFifo),
 	.LmxWordNum_i		(lmxWordNum),
 	.LmxWordNumVal_i	(valWordNum),
+	.DdsWordNumReg_i	(ddsWordNumReg),
+	.DdsCs_i			(ddsCsSpiM),
 	.LmxDirectFlag_i	(flagDirectLmx),	
 	.PllVtuneCtrl_o		(PllVtuneCtrl_o),
 	.Ss_o				(lmxCsSpiM),
@@ -472,6 +475,7 @@ DDSWrapper #(
 	.DdsDirectFlag_i	(flagDirectDds),
 	.Data_i				(spiData),
 	.Val_i				(valDdsDataToFifo),
+	.DdsWordNumReg_o	(ddsWordNumReg),
 	.DdsSyncFpga_o		(DdsSyncFpga_o),
 	.Ss_o				(ddsCsSpiM),
 	.Sck_o				(ddsClkSpiM),

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

@@ -31,6 +31,7 @@ module DDSWrapper #(
     input Val_i,
 
 	output reg DdsSyncFpga_o,
+	output [2:0] DdsWordNumReg_o,
 
     output Ss_o,
     output Sck_o,
@@ -59,6 +60,10 @@ reg ssReg;
 reg ddsDirectFlagR;
 reg [2:0] ddsWordNumReg;
 reg [2:0] ddsWordNumRegSync;
+//================================================================================
+//	                                ASSIGNMENTS
+//================================================================================ 
+assign DdsWordNumReg_o = ddsWordNumReg;
 //==========================================================================//
 //									CODING									//
 //==========================================================================//

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

@@ -28,6 +28,8 @@ module LmxWrapper #(
     input Val_i,
 
 	input [3:0] LmxWordNum_i,
+	input [2:0] DdsWordNumReg_i,
+	input DdsCs_i,
 	input LmxDirectFlag_i,
 	input LmxWordNumVal_i,
 
@@ -57,6 +59,7 @@ reg plsToggleSyncB;
 
 reg ssR;
 reg ssReg;
+reg ssRegDds;
 reg [3:0] lmxWordNumReg; 
 reg [3:0] lmxWordNumRegR;
 //==========================================================================//
@@ -107,6 +110,15 @@ always @(posedge RdClk_i) begin
 	end
 end
 
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		ssRegDds <= 1'b0;
+	end
+	else begin 
+		ssRegDds <= DdsCs_i;
+	end
+end
+
 always @(posedge RdClk_i) begin
 	if (Rst_i) begin 
 		lmxWordNumReg <= 3'h0;
@@ -129,11 +141,14 @@ always @(posedge RdClk_i) begin
 	end
 	else begin
 		if (!LmxDirectFlag_i) begin  
-			if ((!Ss_o && ssReg) && (lmxWordNumReg != 0) ) begin 
+			if (lmxWordNumReg == 0 ) begin
+				PllVtuneCtrl_o <= 1'b1;
+			end
+			else if ((!DdsCs_i && ssRegDds) && (DdsWordNumReg_i != 0)) begin 
 				PllVtuneCtrl_o <= 1'b0;
 			end
-			else if (lmxWordNumReg == 0 ) begin
-				PllVtuneCtrl_o <= 1'b1;
+			else if ((!Ss_o && ssReg) && (lmxWordNumReg != 0) ) begin 
+				PllVtuneCtrl_o <= 1'b0;
 			end
 		end
 		else begin