Browse Source

Добавлена логика выбора потоков данных для реализации двухтонового измерения ГВЗ. Вместо канала R2 на блок ЦОС заводится второй тон канала T1, а вместо сигнала T2 заводится R1. Вместо стандартных sin и cos с NCO заводятся сгенерированные сигналы второго тона. В режиме измерения ГВЗ схема перестраивается из стандартной (T1, R1, R2, T2) в (T1_1Tone, R1_1Tone, T1_2Tone, R1_2Tone).

ChStepan 1 năm trước cách đây
mục cha
commit
f8bd87f212

+ 85 - 0
S5444_M/src/src/InternalDsp/GrDelModeMux.v

@@ -0,0 +1,85 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company: 
+// Engineer: 
+// 
+// Create Date:    10:02:35 04/20/2020 
+// Design Name: 
+// Module Name:    mult_module 
+// Project Name: 
+// Target Devices: 
+// Tool versions: 
+// Description: 
+//
+// Dependencies: 
+//
+// Revision: 
+// Revision 0.01 - File Created
+// Additional Comments: 
+//
+//////////////////////////////////////////////////////////////////////////////////
+module	GrDelModeMux	
+#(	
+	parameter	AdcDataWidth	=	20,
+	parameter	NcoDataWidth	=	18
+)
+(
+	input	Rst_i,
+	
+	input	MuxCtrl_i,
+
+	input	[AdcDataWidth-1:0]	AdcDataOrig_i,
+	input	[AdcDataWidth-1:0]	AdcDataGrDel_i,
+	
+	input	[NcoDataWidth-1:0]	NcoSinOrig_i,
+	input	[NcoDataWidth-1:0]	NcoCosOrig_i,
+	input	[NcoDataWidth-1:0]	NcoSinGrDel_i,
+	input	[NcoDataWidth-1:0]	NcoCosGrDel_i,
+	
+	output	reg	[AdcDataWidth-1:0]	MuxAdcData_o,
+	output	reg	[NcoDataWidth-1:0]	MuxNcoSin_o,
+	output	reg	[NcoDataWidth-1:0]	MuxNcoCos_o
+);	
+
+//================================================================================
+//  LOCALPARAM
+
+//================================================================================
+//	REG/WIRE
+	
+//================================================================================
+//  ASSIGNMENTS
+
+//================================================================================
+//  CODING
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		if	(MuxCtrl_i)	begin
+			MuxAdcData_o = AdcDataGrDel_i;
+			MuxNcoSin_o = NcoSinGrDel_i;
+			MuxNcoCos_o = NcoCosGrDel_i;
+		end else begin
+			MuxAdcData_o = AdcDataOrig_i;
+			MuxNcoSin_o = NcoSinOrig_i;
+			MuxNcoCos_o = NcoCosOrig_i;
+		end 
+	end	else	begin
+		MuxAdcData_o = 0;
+		MuxNcoSin_o = 0;
+		MuxNcoCos_o = 0;
+	end
+end
+
+
+endmodule
+
+
+
+
+
+
+
+
+
+
+

+ 139 - 42
S5444_M/src/src/InternalDsp/InternalDsp.v

@@ -98,12 +98,21 @@ module InternalDsp
 	
 	wire	[WindWidth-1:0]	wind;			
 
-	wire	[NcoWidth-1:0]	ncoCos;
-	wire	[NcoWidth-1:0]	ncoSin;
+	wire	[NcoWidth-1:0]	ncoCosFirstTone;
+	wire	[NcoWidth-1:0]	ncoSinFirstTone;
+	
+	wire	[NcoWidth-1:0]	ncoCosSecondTone;
+	wire	[NcoWidth-1:0]	ncoSinSecondTone;
+	
+	wire	[NcoWidth-1:0]	ncoCosMuxedTone	[ChNum-1:0];
+	wire	[NcoWidth-1:0]	ncoSinMuxedTone	[ChNum-1:0];
 	
 	wire	[CorrAdcDataWidth-1:0]	adcDataBus	[ChNum-1:0];
 	wire	[CorrAdcDataWidth-1:0]	adcDataBusExt	[ChNum-1:0];
 	wire	[CorrAdcDataWidth-1:0]	gatedAdcDataBus	[ChNum-1:0];
+	
+	wire	[CorrAdcDataWidth-1:0]	AdcDataBusMuxed	[ChNum-1:0];
+	
 	wire	[CorrAdcDataWidth-1:0]	calAdcData		[ChNum-1:0];
 	wire	[CorrAdcDataWidth-1:0]	prngData;
 	reg		[CorrAdcDataWidth-1:0]	prngDataBus		[ChNum-1:0];
@@ -139,6 +148,7 @@ module InternalDsp
 	
 	wire	[WindNcoPhIncWidth-1:0]	ncoPhInc = {ifFtwHReg[0+:WindNcoPhIncWidth-CmdDataRegWith],ifFtwLReg};
 	
+	wire	grDelayMeasFlag = 1'b1;
 //================================================================================
 //  ASSIGNMENTS
 
@@ -171,8 +181,8 @@ module InternalDsp
 	assign	MeasDataRdy_o	=	&resultValBus;
 	assign	EndMeas_o		=	stopMeas;
 	
-	assign	NcoCos_o	=	ncoCos;
-	assign	NcoSin_o	=	ncoSin;
+	assign	NcoCos_o	=	ncoCosFirstTone;
+	assign	NcoSin_o	=	ncoSinFirstTone;
 	assign	MeasWind_o	=	measWind;
 	
 	assign	CalModeDone_o	=	&calDone;
@@ -296,7 +306,28 @@ CordicNco
 	.IterNum	(13),
 	.EnSinN		(0)
 )
-ncoInst
+ncoInstFirstTone
+(
+	.Clk_i		(Clk_i),
+	.Rst_i		(Rst_i|NcoRst_i),
+	.Val_i		(1'b1),
+	.PhaseInc_i	({ifFtwHReg[0+:WindNcoPhIncWidth-CmdDataRegWith],ifFtwLReg}),
+	.WindVal_i	(1'b1),
+	.WinType_i	(),
+	.Wind_o		(),
+	.Sin_o		(ncoSinFirstTone),
+	.Cos_o		(ncoCosFirstTone),	
+	.Val_o		()
+);
+
+CordicNco		
+#(	
+	.ODatWidth	(NcoWidth),
+	.PhIncWidth	(WindNcoPhIncWidth),
+	.IterNum	(13),
+	.EnSinN		(0)
+)
+ncoInstSecondTone
 (
 	.Clk_i		(Clk_i),
 	.Rst_i		(Rst_i|NcoRst_i),
@@ -305,8 +336,8 @@ ncoInst
 	.WindVal_i	(1'b1),
 	.WinType_i	(),
 	.Wind_o		(),
-	.Sin_o		(ncoSin),
-	.Cos_o		(ncoCos),	
+	.Sin_o		(ncoSinSecondTone),
+	.Cos_o		(ncoCosSecondTone),	
 	.Val_o		()
 );
 
@@ -351,41 +382,107 @@ generate
 			.CalibratedAdcData_o	(calAdcData[g])
 		);
 		
-		DspPipeline	
-		#(	
-			.AdcDataWidth		(AdcDataWidth),
-			.AccWidth			(AccWidth),
-			.WindWidth			(WindWidth),
-			.NcoWidth			(NcoWidth),
-			.ResultWidth		(ResultWidth),
-			.WindCorrCoefWidth	(WindCorrCoefWidth),
-			.WindNormCoefWidth	(WindNormCoefWidth),
-			.IntermediateWidth	(IntermediateWidth)
-		)
-		DspPipelineInst
-		(
-			.Clk_i				(Clk_i),
-			.Rst_i				(Rst_i),
-			.Val_i				(measWind),
-			.MeasWindEnd_i		(measWindEnd),
-			.StartFpConv_i		(measWindEnd),
-			
-			.FilterCorrCoef_i	({filterCorrCoefHReg[0+:WindNcoPhIncWidth-CmdDataRegWith],filterCorrCoefLReg}),
-			// .FilterCorrCoef_i	(32'h3f800000),
-			.AverageNoizeLvl_i	(averageNoizeLvl),
-			.AdcData_i			(gatedAdcDataBus[g]),
-			// .AdcData_i			({{2{ncoCos[17]}},ncoCos}),
-			.Wind_i				(wind),
-			.NcoSin_i			(ncoSin),
-			.NcoCos_i			(ncoCos),	
-			.NormCoef_i			(windNormCoef),
-			// .NormCoef_i			(32'h3f800000),
-			// .NormCoef_i			(32'h3f03993a),
-
-			.CorrResultIm_o		(resultImBus[g]),
-			.CorrResultRe_o		(resultReBus[g]),
-			.CorrResultVal_o	(resultValBus[g])
-		);
+		if	(g==2||g==ChNum-1)	begin
+			GrDelModeMux	
+			#(	
+				.AdcDataWidth	(CorrAdcDataWidth),
+				.NcoDataWidth	(NcoWidth)
+			)
+			GrDelModeMux
+			(
+				.Rst_i	(Rst_i),
+				
+				.MuxCtrl_i	(grDelayMeasFlag),
+	
+				.AdcDataOrig_i	(gatedAdcDataBus[g]),
+				.AdcDataGrDel_i	(gatedAdcDataBus[g-2]),
+				
+				.NcoSinOrig_i	(ncoSinFirstTone),
+				.NcoCosOrig_i	(ncoCosFirstTone),
+				.NcoSinGrDel_i	(ncoSinSecondTone),
+				.NcoCosGrDel_i	(ncoCosSecondTone),
+				
+				.MuxAdcData_o	(AdcDataBusMuxed[g]),
+				.MuxNcoSin_o	(ncoSinMuxedTone[g]),
+				.MuxNcoCos_o	(ncoCosMuxedTone[g])
+			);	
+		end
+		
+		if (g==2||g==ChNum-1) begin
+			DspPipeline	
+			#(	
+				.AdcDataWidth		(AdcDataWidth),
+				.AccWidth			(AccWidth),
+				.WindWidth			(WindWidth),
+				.NcoWidth			(NcoWidth),
+				.ResultWidth		(ResultWidth),
+				.WindCorrCoefWidth	(WindCorrCoefWidth),
+				.WindNormCoefWidth	(WindNormCoefWidth),
+				.IntermediateWidth	(IntermediateWidth)
+			)
+			DspPipelineInst
+			(
+				.Clk_i				(Clk_i),
+				.Rst_i				(Rst_i),
+				.Val_i				(measWind),
+				.MeasWindEnd_i		(measWindEnd),
+				.StartFpConv_i		(measWindEnd),
+				
+				.FilterCorrCoef_i	({filterCorrCoefHReg[0+:WindNcoPhIncWidth-CmdDataRegWith],filterCorrCoefLReg}),
+				// .FilterCorrCoef_i	(32'h3f800000),
+				.AverageNoizeLvl_i	(averageNoizeLvl),
+				// .AdcData_i			(gatedAdcDataBus[g]),
+				.AdcData_i			(AdcDataBusMuxed[g]),
+				// .AdcData_i			({{2{ncoCosFirstTone[17]}},ncoCosFirstTone}),
+				.Wind_i				(wind),
+				.NcoSin_i			(ncoSinMuxedTone[g]),
+				.NcoCos_i			(ncoCosMuxedTone[g]),	
+				.NormCoef_i			(windNormCoef),
+				// .NormCoef_i			(32'h3f800000),
+				// .NormCoef_i			(32'h3f03993a),
+	
+				.CorrResultIm_o		(resultImBus[g]),
+				.CorrResultRe_o		(resultReBus[g]),
+				.CorrResultVal_o	(resultValBus[g])
+			);
+		end else begin
+			DspPipeline	
+			#(	
+				.AdcDataWidth		(AdcDataWidth),
+				.AccWidth			(AccWidth),
+				.WindWidth			(WindWidth),
+				.NcoWidth			(NcoWidth),
+				.ResultWidth		(ResultWidth),
+				.WindCorrCoefWidth	(WindCorrCoefWidth),
+				.WindNormCoefWidth	(WindNormCoefWidth),
+				.IntermediateWidth	(IntermediateWidth)
+			)
+			DspPipelineInst
+			(
+				.Clk_i				(Clk_i),
+				.Rst_i				(Rst_i),
+				.Val_i				(measWind),
+				.MeasWindEnd_i		(measWindEnd),
+				.StartFpConv_i		(measWindEnd),
+				
+				.FilterCorrCoef_i	({filterCorrCoefHReg[0+:WindNcoPhIncWidth-CmdDataRegWith],filterCorrCoefLReg}),
+				// .FilterCorrCoef_i	(32'h3f800000),
+				.AverageNoizeLvl_i	(averageNoizeLvl),
+				.AdcData_i			(gatedAdcDataBus[g]),
+				// .AdcData_i			(AdcDataBusMuxed[g]),
+				// .AdcData_i			({{2{ncoCosFirstTone[17]}},ncoCosFirstTone}),
+				.Wind_i				(wind),
+				.NcoSin_i			(ncoSinFirstTone),
+				.NcoCos_i			(ncoCosFirstTone),	
+				.NormCoef_i			(windNormCoef),
+				// .NormCoef_i			(32'h3f800000),
+				// .NormCoef_i			(32'h3f03993a),
+	
+				.CorrResultIm_o		(resultImBus[g]),
+				.CorrResultRe_o		(resultReBus[g]),
+				.CorrResultVal_o	(resultValBus[g])
+			);
+		end
 	end
 endgenerate
 

+ 9 - 9
S5444_M/src/src/Top/S5443Top.v

@@ -763,15 +763,15 @@ InternalDsp
 	.NcoRst_i				(ncoRst),
 	.OscWind_o				(oscWind),
 
-	.Adc1ChT1Data_i			(adc1ChT1Data),	//T1
-	.Adc1ChR1Data_i			(adc1ChR1Data),	//R1
-	.Adc2ChR2Data_i			(adc2ChR2Data),	//R2
-	.Adc2ChT2Data_i			(adc2ChT2Data),	//T2
-
-	// .Adc1ChT1Data_i			(AdcData_i),	//T1
-	// .Adc1ChR1Data_i			(AdcData_i),	//R1
-	// .Adc2ChR2Data_i			(AdcData_i),	//R2
-	// .Adc2ChT2Data_i			(AdcData_i),	//T2
+	// .Adc1ChT1Data_i			(adc1ChT1Data),	//T1
+	// .Adc1ChR1Data_i			(adc1ChR1Data),	//R1
+	// .Adc2ChR2Data_i			(adc2ChR2Data),	//R2
+	// .Adc2ChT2Data_i			(adc2ChT2Data),	//T2
+
+	.Adc1ChT1Data_i			(AdcData_i),	//T1
+	.Adc1ChR1Data_i			(AdcData_i),	//R1
+	.Adc2ChR2Data_i			(AdcData_i),	//R2
+	.Adc2ChT2Data_i			(AdcData_i),	//T2
 
 	.GatingPulse_i			(gatingPulse),
 

+ 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;
 

+ 340 - 0
S5444_S/src/src/PulseMeas/PulseGenNew.v

@@ -0,0 +1,340 @@
+//`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company: 
+// Engineer: 
+// 
+// Create Date:    10:02:35 04/20/2020 
+// Design Name: 
+// Module Name:    PulseGen 
+// Project Name: 
+// Target Devices: 
+// Tool versions: 
+// Description: 
+//
+// Dependencies: 
+//
+// Revision: 
+// Revision 0.01 - File Created
+// Additional Comments: 
+//
+//////////////////////////////////////////////////////////////////////////////////
+module	PulseGenNew	
+#(	
+	parameter	CmdRegWidth	=	32
+)
+(
+	input	Rst_i,
+	input	Clk_i,
+	input	EnPulse_i,
+	
+	input	PulsePol_i,
+	input	EnEdge_i,
+	input	[CmdRegWidth-29:0]	Mode_i,
+	input	[CmdRegWidth-1:0]	P1Del_i,
+	input	[CmdRegWidth-1:0]	P2Del_i,
+	input	[CmdRegWidth-1:0]	P3Del_i,
+	input	[CmdRegWidth-1:0]	P1Width_i,
+	input	[CmdRegWidth-1:0]	P2Width_i,
+	input	[CmdRegWidth-1:0]	P3Width_i,
+	
+	output	Pulse_o
+);	
+
+//================================================================================
+//  LOCALPARAM
+
+	localparam	IDLE	=	2'h0;
+	localparam	DELAY	=	2'h1;
+	localparam	PULSE	=	2'h2;
+	
+	localparam	DISABLED	=	8'd0;
+	localparam	SINGLE		=	8'd1;
+	localparam	DOUBLE		=	8'd2;
+	localparam	TRIPPLE		=	8'd3;
+	localparam	BURST		=	8'd4;
+	localparam	CONTINIOUS	=	8'd5;
+	
+//================================================================================
+	reg		pulse;
+	wire	[31:0]	delArray	[2:0];
+	wire	[31:0]	widthArray	[2:0];
+	
+	reg	[31:0]	pulseCnt;
+	reg	[31:0]	delayCnt;
+	reg	[31:0]	widthCnt;
+	
+	reg	[31:0]	currWidthValue;
+	reg	[31:0]	currDelValue;
+
+	reg	[1:0]	currState;
+	reg	[1:0]	nextState;
+	
+	reg		pulseDone;	
+	reg		delayDone;	
+	// wire	delayDone	=	(currState	==	DELAY)?	delayCnt==currDelValue-1:1'b0;	
+	
+	// wire	zeroDelay	=	(P1Del_i==0||P1Del_i==1);
+	wire	zeroDelay	=	(P1Del_i==0);
+	wire	singleDelay	=	(P1Del_i==1);
+	
+	reg	patternDone;
+
+	reg	enPulseR;
+	
+	wire	enPulsePos	=	(!enPulseR&EnPulse_i);
+	wire	enPulseNeg	=	(enPulseR&!EnPulse_i);
+	
+	wire	enPulse		=	(EnEdge_i)?	enPulseNeg:enPulsePos;
+	wire	enPulseEn	=	(Mode_i	!=	0)?	enPulse:1'b0;
+//================================================================================
+//  ASSIGNMENTS
+	assign	delArray	[0]	=	P1Del_i;
+	assign	delArray	[1]	=	P2Del_i;
+	assign	delArray	[2]	=	P3Del_i;
+	
+	assign	widthArray	[0]	=	P1Width_i;
+	assign	widthArray	[1]	=	P2Width_i;
+	assign	widthArray	[2]	=	P3Width_i;
+	
+	assign	Pulse_o	=	(PulsePol_i)?	~pulse:pulse;
+
+//================================================================================
+//  CODING
+
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		if	(Mode_i==0)	begin
+			delayDone=1'b0;
+		end	else	if	(Mode_i	>=1 & Mode_i<=3)	begin
+			delayDone=(delayCnt==currDelValue-2);
+		end	else	begin
+			delayDone=(delayCnt==currDelValue-1);
+		end
+	end	else	begin
+		delayDone=1'b0;
+	end
+end
+always	@(posedge	Clk_i)	begin
+	if	(!Rst_i)	begin
+		enPulseR	<=	EnPulse_i;
+	end	else	begin
+		enPulseR	<=	1'b0;
+	end
+end
+
+always	@(posedge	Clk_i)	begin
+	if	(!Rst_i)	begin
+		if	(Mode_i	>=1 & Mode_i<=3)	begin	
+			if	(currState	!=	IDLE)	begin
+				delayCnt	<=	delayCnt+1;
+			end	else	begin
+				delayCnt	<=	0;
+			end
+		end	else	begin
+			if	(currState	==	DELAY)	begin
+				delayCnt	<=	delayCnt+1;
+			end	else	begin
+				delayCnt	<=	0;
+			end
+		end
+	end	else	begin
+		delayCnt	<=	0;
+	end
+end
+
+always	@(posedge	Clk_i)	begin
+	if	(!Rst_i)	begin
+		if	(pulse)	begin
+			widthCnt	<=	widthCnt+1;
+		end	else	begin
+			widthCnt	<=	0;
+		end
+	end	else	begin
+		widthCnt	<=	0;
+	end
+end
+
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		if	(pulse)	begin
+			if	(widthCnt==currWidthValue-1)	begin
+				pulseDone	=	1'b1;
+			end	else	begin
+				pulseDone	=	1'b0;
+			end
+		end	else	begin
+			pulseDone	=	1'b0;
+		end
+	end	else	begin
+		pulseDone	=	1'b0;
+	end
+end
+
+always	@(posedge	Clk_i)	begin
+	if	(!Rst_i)	begin
+		if	(pulseDone)	begin
+			if	(!patternDone)	begin
+				pulseCnt	<=	pulseCnt+1;
+			end	else	begin
+				pulseCnt	<=	0;
+			end
+		end
+	end	else	begin
+		pulseCnt	<=	0;
+	end
+end
+
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		if	(Mode_i	==	0)	begin
+				currDelValue	=	0;
+				currWidthValue	=	0;
+		end	else	begin
+			if	(Mode_i	>=1 & Mode_i<=3)	begin
+				currDelValue	=	delArray[pulseCnt];
+				currWidthValue	=	widthArray[pulseCnt];
+			end	else	begin
+				if	(Mode_i	==	4|Mode_i	==	5)	begin
+					if	(pulseCnt==0)	begin
+						currDelValue	=	delArray[0];
+						currWidthValue	=	widthArray[0];
+					end	else	begin
+						currDelValue	=	delArray[1];
+						currWidthValue	=	widthArray[0];
+					end	
+				end
+			end
+		end
+	end	else	begin
+		currDelValue	=	0;
+		currWidthValue	=	0;
+	end
+end
+
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		// if	(currState	!=	IDLE)	begin
+			case(Mode_i)
+				8'd0:	begin
+							patternDone	=	0;
+						end
+				8'd1:	begin
+							patternDone	=	((pulseCnt==Mode_i-1)&pulseDone);
+						end
+				8'd2:	begin
+							patternDone	=	((pulseCnt==Mode_i-1)&pulseDone);
+						end
+				8'd3:	begin
+							patternDone	=	((pulseCnt==Mode_i-1)&pulseDone);
+						end
+				8'd4:	begin
+							patternDone	=	((pulseCnt==P2Width_i-1)&pulseDone);
+						end
+				8'd5:	begin
+							patternDone	=	0;
+						end
+				default	:begin
+							patternDone	=	0;
+						end
+			endcase
+		// end	else	begin
+			// patternDone	=	0;
+		// end
+	end	else	begin
+		patternDone	=	0;
+	end
+end
+
+	
+always	@(posedge	Clk_i)	begin
+	if	(!Rst_i)	begin
+		currState	<=	nextState;
+	end	else	begin
+		currState	<=	IDLE;
+	end
+end
+
+always	@(*)	begin
+	nextState	=	IDLE;
+	case(currState)
+	IDLE	:	begin
+					if (enPulseEn)	begin
+						if	(zeroDelay)	begin
+							if	(currWidthValue==1)	begin
+								nextState = DELAY;
+							end	else begin
+								nextState = PULSE;
+							end
+						end	else	if	(singleDelay)	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 = DELAY;
+					end
+				end
+
+	PULSE	:	begin
+					if	(pulseDone)	begin
+						if	(!patternDone)	begin
+							nextState  = DELAY;
+						end	else begin
+							nextState  = IDLE;
+						end
+					end	else	begin
+						nextState  = PULSE;
+					end
+				end
+	endcase
+end
+
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		if	(Mode_i	!=	0)	begin
+			case(currState)
+				IDLE:	begin
+							if	(zeroDelay&enPulseEn)	begin
+								pulse	=	1'b1;
+							end	else	begin
+								pulse	=	1'b0;
+							end
+						end
+				DELAY:	begin
+							pulse	=	1'b0;
+						end
+				PULSE:	begin
+							pulse	=	1'b1;
+						end
+				default:begin
+							pulse	=	1'b0;
+						end
+			endcase
+		end	else	begin
+			pulse	=	1'b0;
+		end	
+	end	else	begin
+		pulse	=	1'b0;
+	end
+end
+
+endmodule
+
+
+
+
+
+
+
+
+
+
+

+ 29 - 5
S5444_S/src/src/Top/S5443Top.v

@@ -1061,14 +1061,37 @@ PulseGenMux
 	.MuxOut_o		(pgMuxedOut[j])
 );	
 
-PulseGen
+// PulseGen
+// #(	
+	// .CmdRegWidth	(CmdRegWidth)
+// )
+// PulseGenerator
+// (
+	// .Rst_i			(initRst|pGenRst[j]|pGenMeasRst[j]),
+	// .Rst_i			(initRst|pGenMeasRst[j]),
+	// .Clk_i			(gclk),
+	// .EnPulse_i		(pgMuxedOut[j]),
+	
+	// .PulsePol_i		(pgPulsePolArray[j]),
+	// .EnEdge_i		(pgEnEdgeArray[j]),
+	// .Mode_i			(pgModeArray[j]),
+	// .P1Del_i		(pgP1DelArray[j]),
+	// .P2Del_i		(pgP2DelArray[j]),
+	// .P3Del_i		(pgP3DelArray[j]),
+	// .P1Width_i		(pgP1WidthArray[j]),
+	// .P2Width_i		(pgP2WidthArray[j]),
+	// .P3Width_i		(pgP3WidthArray[j]),
+	
+	// .Pulse_o		(pulseBus[j])
+// );	
+
+PulseGenNew
 #(	
 	.CmdRegWidth	(CmdRegWidth)
 )
-PulseGenerator
+TestPgen
 (
-	//.Rst_i			(initRst|pGenRst[j]|pGenMeasRst[j]),
-	.Rst_i			(initRst|pGenMeasRst[j]),
+	.Rst_i			(initRst|pGenRst[j]|pGenMeasRst[j]),
 	.Clk_i			(gclk),
 	.EnPulse_i		(pgMuxedOut[j]),
 	
@@ -1083,7 +1106,8 @@ PulseGenerator
 	.P3Width_i		(pgP3WidthArray[j]),
 	
 	.Pulse_o		(pulseBus[j])
-);	
+);
+
 end
 endgenerate