Kaynağa Gözat

Исправлены ошибки при запуске от внешнего триггера.

ChStepan 1 yıl önce
ebeveyn
işleme
4a5718ccdd

Dosya farkı çok büyük olduğundan ihmal edildi
+ 14 - 62
S5444_M/src/constrs/S5443Top.xdc


+ 1 - 0
S5444_M/src/src/ExtDspInterface/DspInterface.v

@@ -223,6 +223,7 @@ MeasDataFifoInst
 	.PpiBusy_i		(ppiBusy),	
 	.MeasNum_i		(MeasNum_i),	
 	.StartMeasDsp_i	(StartMeasDsp_i),	
+	.DspReadyForRx_i(DspReadyForRx_i),	
 	.MeasDataBus_i	(measDataBus),
 	.MeasDataVal_i	(LpOutStart_i),	
 	

+ 25 - 8
S5444_M/src/src/PulseMeas/MeasStartEventGen.v

@@ -1,4 +1,5 @@
 `timescale 1ns / 1ps
+(* keep_hierarchy = "yes" *)	
 //////////////////////////////////////////////////////////////////////////////////
 // Company: 
 // Engineer: 
@@ -44,6 +45,7 @@ module	MeasStartEventGen
 //  LOCALPARAM
 
 //================================================================================
+	reg		startMeasEventVal;
 	reg		startMeasEvent;
 	reg		initTrig;
 	
@@ -59,30 +61,46 @@ module	MeasStartEventGen
 
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
-			measTrigReg	<=	MeasTrig_i;
+			measTrigReg	 <=	MeasTrig_i;
 		end	else	begin
-			measTrigReg	=	0;
+			measTrigReg	 <=	0;
 		end
 	end
 	
-	always	@(posedge	Clk_i)	begin
+	always	@(posedge Clk_i)	begin
 		if	(!Rst_i)	begin
 			if	(StartMeasDsp_i)	begin
 				if	(measTrigPos)	begin
-					startMeasEvent	<=	1'b1;
+					startMeasEventVal	<=	1'b1;
+				end 
+			end	else	begin
+				startMeasEventVal	<=	0;
+			end
+		end	else	begin
+			startMeasEventVal	<=	0;
+		end
+	end
+	
+	always	@(*)	begin
+		if	(!Rst_i)	begin
+			if	(StartMeasDsp_i)	begin
+				if	(startMeasEventVal)	begin
+					startMeasEvent	=	measTrigReg;
+				end else begin
+					startMeasEvent	=	0;
 				end
 			end	else	begin
-				startMeasEvent	<=	0;
+				startMeasEvent	=	0;
 			end
 		end	else	begin
-			startMeasEvent	<=	0;
+			startMeasEvent	=	0;
 		end
 	end
 	
 	always	@(*)	begin
 		if	(!Rst_i)	begin
 			if	(StartMeasDsp_i)	begin
-				if	(measTrigPos)	begin
+				if	(MeasTrig_i)	begin
 					initTrig	=	1'b1;
 				end	else	begin
 					initTrig	=	1'b0;
@@ -94,7 +112,6 @@ module	MeasStartEventGen
 			initTrig	=	0;
 		end
 	end
-
 endmodule
 
 

+ 9 - 4
S5444_M/src/src/Sim/S5443TopPulseProfileTb.v

@@ -62,7 +62,8 @@ module S5443TopPulseProfileTb;
 	localparam	PG6POL	=	1'b0;
 	localparam	PG7POL	=	1'b0;
 	
-	localparam	[4:0]	EXTTRIGMUXCMD	=	5'd15;
+	localparam	[4:0]	EXTTRIGMUXCMD	=	5'd7;
+	// localparam	[4:0]	EXTTRIGMUXCMD	=	5'd15;
 	localparam	[4:0]	DSPTRIGINCMD	=	5'h8;
 	localparam	[4:0]	MUXSLOWMODCMD	=	5'd1;
 	localparam	[4:0]	MUXFASTMODCMD	=	5'd1;
@@ -73,7 +74,7 @@ module S5443TopPulseProfileTb;
 	parameter	[31:0]	MeasCmdBypass	=	{8'h11,8'h0,8'h63,8'h1};
 	parameter	[31:0]	MeasCmdFft 		=	{8'h11,8'h0,8'h63,7'h5,1'b1};
 	// parameter	[31:0]	MeasCmd 		=	{8'h11,8'h0,8'h53,8'h0};
-	parameter	[31:0]	MeasCmd =	{8'h11,8'h3e,8'h72,8'h0};
+	parameter	[31:0]	MeasCmd =	{8'h11,8'h3f,8'h72,8'h0};
 	parameter	[31:0]	AdcCtrl =	{8'h12,24'h2};
 	parameter	[31:0]	SensCtrlCmd =	{1'b0,27'h0,4'b1};
 	// parameter	[31:0]	DitherCmd 	= {8'h0E,24'h100192};
@@ -201,6 +202,10 @@ module S5443TopPulseProfileTb;
 	assign	trig0R	=	trig0;
     assign	trig1R	=	trig1;
 	
+	
+	wire [5:0] trig6to1Dir;
+	wire [5:0] trig6to1Test = (tb_cnt >= 3555 & tb_cnt <= 3557) ? 6'h3f:6'b0;
+	wire [5:0] trig6to1 = (!trig6to1Dir) ? trig6to1Test:6'bz;
 //==========================================================================================
 //clocks gen
 	always	#10 Clk50	=	~Clk50;
@@ -329,8 +334,8 @@ S5443Top MasterFpga
 	.EndMeas_o			(endMeas),
 	.TimersClk_o		(),
 	
-	.Trig6to1_io		(),	
-	.Trig6to1Dir_o		(),	
+	.Trig6to1_io		(trig6to1),	
+	.Trig6to1Dir_o		(trig6to1Dir),	
 	
 	.DspTrigOut_i		(Clk41),				//Trig from DSP
 	.DspTrigIn_o		(),				//Trig To DSP

+ 1 - 0
S5444_S/src/src/ExtDspInterface/DspInterface.v

@@ -223,6 +223,7 @@ MeasDataFifoInst
 	.PpiBusy_i		(ppiBusy),	
 	.MeasNum_i		(MeasNum_i),	
 	.StartMeasDsp_i	(StartMeasDsp_i),	
+	.DspReadyForRx_i(DspReadyForRx_i),	
 	.MeasDataBus_i	(measDataBus),
 	.MeasDataVal_i	(LpOutStart_i),	
 	

+ 25 - 8
S5444_S/src/src/PulseMeas/MeasStartEventGen.v

@@ -1,4 +1,5 @@
 `timescale 1ns / 1ps
+(* keep_hierarchy = "yes" *)	
 //////////////////////////////////////////////////////////////////////////////////
 // Company: 
 // Engineer: 
@@ -44,6 +45,7 @@ module	MeasStartEventGen
 //  LOCALPARAM
 
 //================================================================================
+	reg		startMeasEventVal;
 	reg		startMeasEvent;
 	reg		initTrig;
 	
@@ -59,30 +61,46 @@ module	MeasStartEventGen
 
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
-			measTrigReg	<=	MeasTrig_i;
+			measTrigReg	 <=	MeasTrig_i;
 		end	else	begin
-			measTrigReg	=	0;
+			measTrigReg	 <=	0;
 		end
 	end
 	
-	always	@(posedge	Clk_i)	begin
+	always	@(posedge Clk_i)	begin
 		if	(!Rst_i)	begin
 			if	(StartMeasDsp_i)	begin
 				if	(measTrigPos)	begin
-					startMeasEvent	<=	1'b1;
+					startMeasEventVal	<=	1'b1;
+				end 
+			end	else	begin
+				startMeasEventVal	<=	0;
+			end
+		end	else	begin
+			startMeasEventVal	<=	0;
+		end
+	end
+	
+	always	@(*)	begin
+		if	(!Rst_i)	begin
+			if	(StartMeasDsp_i)	begin
+				if	(startMeasEventVal)	begin
+					startMeasEvent	=	measTrigReg;
+				end else begin
+					startMeasEvent	=	0;
 				end
 			end	else	begin
-				startMeasEvent	<=	0;
+				startMeasEvent	=	0;
 			end
 		end	else	begin
-			startMeasEvent	<=	0;
+			startMeasEvent	=	0;
 		end
 	end
 	
 	always	@(*)	begin
 		if	(!Rst_i)	begin
 			if	(StartMeasDsp_i)	begin
-				if	(measTrigPos)	begin
+				if	(MeasTrig_i)	begin
 					initTrig	=	1'b1;
 				end	else	begin
 					initTrig	=	1'b0;
@@ -94,7 +112,6 @@ module	MeasStartEventGen
 			initTrig	=	0;
 		end
 	end
-
 endmodule
 
 

+ 1 - 1
S5444_S/src/src/PulseMeas/PulseGen.v

@@ -72,7 +72,7 @@ module	PulseGen
 	reg		pulseDone;	
 	wire	delayDone	=	(currState	==	DELAY)?	delayCnt==currDelValue-1:1'b0;	
 	
-	wire	zeroDelay	=	(P1Del_i==0);
+	wire	zeroDelay	=	(P1Del_i==0||P1Del_i==1);
 	
 	reg	patternDone;