Procházet zdrojové kódy

Исправления в генерации DdsSyncFpga и PllVtuneCtrl

Anatoliy Chigirinskiy před 1 rokem
rodič
revize
b201d85174

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

@@ -417,7 +417,8 @@ LmxWrapper #(
 	.Data_i				(spiData),
 	.Val_i				(valLmxDataToFifo),
 	.LmxWordNum_i		(lmxWordNum),
-	.LmxWordNumVal_i	(valWordNum),	
+	.LmxWordNumVal_i	(valWordNum),
+	.LmxDirectFlag_i	(flagDirectLmx),	
 	.PllVtuneCtrl_o		(PllVtuneCtrl_o),
 	.Ss_o				(lmxCsSpiM),
 	.Sck_o				(lmxClkSpiM),
@@ -435,9 +436,10 @@ DDSWrapper #(
 	.Rst_i				(Rst_i),
 	.DdsWordNum_i		(ddsWordNum),
 	.DdsWordNumVal_i	(valWordNum),
+	.DdsDirectFlag_i	(flagDirectDds),
 	.Data_i				(spiData),
 	.Val_i				(valDdsDataToFifo),
-	.DdsSyncFpga_o	(DdsSyncFpga_o),
+	.DdsSyncFpga_o		(DdsSyncFpga_o),
 	.Ss_o				(ddsCsSpiM),
 	.Sck_o				(ddsClkSpiM),
 	.Mosi_o				(ddsMosiSpiM)

+ 16 - 2
src/src/WrapFifoChain/DDSWrapper.v

@@ -26,6 +26,7 @@ module DDSWrapper #(
     input Rst_i,
 	input [2:0] DdsWordNum_i,
 	input DdsWordNumVal_i,
+	input DdsDirectFlag_i,
     input [IN_WIDTH-1:0] Data_i,
     input Val_i,
 
@@ -55,6 +56,7 @@ wire ddsFifoEmpty;
 
 reg ssR;
 reg ssReg;
+reg ddsDirectFlagR;
 reg [2:0] ddsWordNumReg;
 //==========================================================================//
 //									CODING									//
@@ -68,6 +70,15 @@ always @(posedge WrClk_i) begin
 	end
 end
 
+always @(posedge RdClk_i) begin 
+	if (Rst_i) begin 
+		ddsDirectFlagR <= 1'b0;
+	end
+	else begin 
+		ddsDirectFlagR <= DdsDirectFlag_i;
+	end
+end
+
 always @(posedge RdClk_i) begin 
 	ssReg <= Ss_o;
 end
@@ -92,8 +103,11 @@ always @(posedge RdClk_i) begin
 	if (Rst_i) begin 
 		DdsSyncFpga_o <= 1'b0;
 	end
-	else begin 
-		if ((!Ss_o && ssReg) && (ddsWordNumReg != 0)) begin 
+	else begin
+		if (ddsDirectFlagR && !DdsDirectFlag_i) begin 
+				DdsSyncFpga_o <= 1'b1;
+		end 
+		else if ((!Ss_o && ssReg) && (ddsWordNumReg != 0)) begin 
 			DdsSyncFpga_o <= 1'b0;
 		end
 		else begin 

+ 14 - 8
src/src/WrapFifoChain/LmxWrapper.v

@@ -28,6 +28,7 @@ module LmxWrapper #(
     input Val_i,
 
 	input [3:0] LmxWordNum_i,
+	input LmxDirectFlag_i,
 	input LmxWordNumVal_i,
 
 	output reg PllVtuneCtrl_o,
@@ -72,7 +73,7 @@ always @(posedge WrClk_i) begin
 			lmxWordNumReg <= LmxWordNum_i;
 		end
 		else begin 
-			if (Ss_o && !ssR) begin 
+			if (Ss_o && !ssR && lmxWordNumReg != 0) begin 
 				lmxWordNumReg <= lmxWordNumReg-1;
 			end
 		end
@@ -83,15 +84,20 @@ always @(posedge WrClk_i) begin
 	if (Rst_i) begin 
 		PllVtuneCtrl_o <=1'b0;
 	end
-	else begin 
-		if ((!Ss_o && ssR) && (lmxWordNumReg != 0) ) begin 
-			PllVtuneCtrl_o <= 1'b0;
-		end
-		else begin
-			if (lmxWordNumReg == 0) begin  
-				PllVtuneCtrl_o <= 1'b1;
+	else begin
+		if (!LmxDirectFlag_i) begin  
+			if ((!Ss_o && ssR) && (lmxWordNumReg != 0) ) begin 
+				PllVtuneCtrl_o <= 1'b0;
+			end
+			else begin
+				if (lmxWordNumReg == 0) begin  
+					PllVtuneCtrl_o <= 1'b1;
+				end
 			end
 		end
+		else begin 
+			PllVtuneCtrl_o <= ~LmxDirectFlag_i;
+		end
 	end
 end