瀏覽代碼

К отсчетам АЦП добавляется случайно сгененированый шум, а на этапе перевода результатов в формат FP32 ведется проверка на ноль. Если результат наверн 0, он заменяется значением равным среднему уровню шума трассы, если не равен то остается как есть.

Shalambala 2 年之前
父節點
當前提交
8426c08794

File diff suppressed because it is too large
+ 1 - 26
S5443_M/S5443.srcs/constrs_1/new/S5443Top.xdc


+ 5 - 1
S5443_M/S5443.srcs/sources_1/new/Math/MyIntToFp.v

@@ -115,7 +115,11 @@ always	@(posedge	Clk_i	or	posedge	Rst_i)	begin
 		OutDataVal_o	<=	1'b0;
 	end	else	begin
 		if	(outValR)	begin
-			OutData_o	<=	fpOut;
+			if	(fpOut!=0)	begin
+				OutData_o	<=	fpOut;
+			end	else	begin
+				OutData_o	<=	32'h3a83126f;
+			end
 		end
 		OutDataVal_o	<=	outValR;
 	end

+ 23 - 17
S5443_M/S5443.srcs/sources_1/new/PulseMeas/PulseGenV2.v

@@ -18,7 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
-module	PulseGenV2	
+module	PulseGen	
 #(	
 	parameter	CmdRegWidth	=	32
 )
@@ -70,7 +70,7 @@ module	PulseGenV2
 	reg	[1:0]	nextState;
 	
 	reg		pulseDone;	
-	wire	delayDone	=	(currState	==	PULSE)?	delayCnt==currDelValue-1:1'b0;	
+	wire	delayDone	=	(currState	==	DELAY)?	delayCnt==currDelValue-1:1'b0;	
 	
 	wire	zeroDelay	=	(P1Del_i==0);
 	
@@ -115,7 +115,7 @@ always	@(posedge	Clk_i)	begin
 				delayCnt	<=	0;
 			end
 		end	else	begin
-			if	(currState	==	PULSE)	begin
+			if	(currState	==	DELAY)	begin
 				delayCnt	<=	delayCnt+1;
 			end	else	begin
 				delayCnt	<=	0;
@@ -128,7 +128,7 @@ end
 
 always	@(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin
-		if	(pulse)	begin
+		if	(currState	==	PULSE)	begin
 			widthCnt	<=	widthCnt+1;
 		end	else	begin
 			widthCnt	<=	0;
@@ -141,12 +141,8 @@ end
 always	@(*)	begin
 	if	(!Rst_i)	begin
 		if	(currState	==	PULSE)	begin
-			if	(delayDone)	begin
-				if	(widthCnt==currWidthValue-1)	begin
-					pulseDone	=	1'b1;
-				end	else	begin
-					pulseDone	=	1'b0;
-				end
+			if	(widthCnt==currWidthValue-1)	begin
+				pulseDone	=	1'b1;
 			end	else	begin
 				pulseDone	=	1'b0;
 			end
@@ -247,16 +243,28 @@ always	@(*)	begin
 	case(currState)
 	IDLE	:	begin
 					if (enPulseEn)	begin
+						if	(zeroDelay)	begin
+							nextState = PULSE;
+						end	else begin
+							nextState = DELAY;
+						end
+					end	else	begin
+						nextState = IDLE;
+					end
+				end
+				
+	DELAY	:	begin
+					if	(delayDone)	begin
 						nextState = PULSE;
 					end	else begin
-						nextState = IDLE;
+						nextState = DELAY;
 					end
 				end
 
 	PULSE	:	begin
 					if	(pulseDone)	begin
 						if	(!patternDone)	begin
-							nextState  = PULSE;
+							nextState  = DELAY;
 						end	else begin
 							nextState  = IDLE;
 						end
@@ -274,13 +282,11 @@ always	@(*)	begin
 				IDLE:	begin
 							pulse	=	1'b0;
 						end
-				PULSE:	begin
-						if	(delayDone)	begin
-							pulse	=	1'b1;
-						end	
-						if	(pulseDone)	begin
+				DELAY:	begin
 							pulse	=	1'b0;
 						end
+				PULSE:	begin
+							pulse	=	1'b1;
 						end
 				default:begin
 							pulse	=	1'b0;

+ 1 - 1
S5443_M/S5443.srcs/sources_1/new/S5443TopPulseProfileTb.v

@@ -67,7 +67,7 @@ module S5443TopPulseProfileTb;
 	localparam	[4:0]	MUXSLOWMODCMD	=	5'd1;
 	localparam	[4:0]	MUXFASTMODCMD	=	5'd1;
 	localparam	[4:0]	GATINGMUXCMD	=	5'd2;
-	localparam	[4:0]	SMPLSTRBMUXCMD	=	5'd3;
+	localparam	[4:0]	SMPLSTRBMUXCMD	=	5'd13;
 	
 	//COMMANDS	FOR REG_MAP
 	parameter	[31:0]	MeasCmdBypass	=	{8'h11,8'h0,8'h63,8'h1};