Bläddra i källkod

Небольшие правки улучшающие тайминги. Некоторые сигналы и модули переименованы для лучшей читаемости.

Shalambala 2 år sedan
förälder
incheckning
39ed4ddc86

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 185
S5443_M/S5443.srcs/constrs_1/new/S5443Top.xdc


+ 3 - 3
S5443_M/S5443.srcs/sources_1/new/Clk200Gen.v

@@ -4,7 +4,7 @@ module Clk200Gen
     input	Rst_i,
 	output	Clk200_o,
 	output	Clk10Timers_o,
-	output	Clk100_o,
+	output	Clk150_o,
 	
 	output	Locked_o
 );
@@ -43,7 +43,7 @@ CommonPll (
       	.CLKFBOUT		(ClkFb),
       	.CLKOUT0		(rx_mmcmout_200),
       	.CLKOUT1		(rx_mmcmout_10),
-      	.CLKOUT2		(rx_mmcmout_100),
+      	.CLKOUT2		(rx_mmcmout_150),
       	.CLKOUT3		(),
       	.CLKOUT4		(),
       	.CLKOUT5		(),
@@ -68,7 +68,7 @@ BUFG	bufg_mmcm_Fb (.I(ClkFb), .O(rxFb)) ;
 
 BUFG	ctrlClk200 (.I(rx_mmcmout_200), .O(Clk200_o)) ;
 BUFG	ctrlClk10 (.I(rx_mmcmout_10), .O(Clk10Timers_o)) ;
-BUFG	ctrlClk100 (.I(rx_mmcmout_100), .O(Clk100_o)) ;
+BUFG	ctrlClk150 (.I(rx_mmcmout_150), .O(Clk150_o)) ;
 
 endmodule
 

+ 2 - 2
S5443_M/S5443.srcs/sources_1/new/FftDataFiltering/DecimFilterWrapper.v

@@ -167,8 +167,8 @@ ncoInst
 	.Clk_i		(Clk_i),
 	.Rst_i		(Rst_i),
 	.Val_i		(1'b1),
-	// .PhaseInc_i	({ifFtwHReg[0+:32-24],ifFtwLReg}),
-	.PhaseInc_i	(32'h3eb851eb),
+	.PhaseInc_i	({ifFtwHReg[0+:32-24],ifFtwLReg}),
+	// .PhaseInc_i	(32'h3eb851eb),
 	.WindVal_i	(1'b1),
 	.WinType_i	(),
 	.Wind_o		(),

+ 1 - 18
S5443_M/S5443.srcs/sources_1/new/InternalDsp/InternalDsp.v

@@ -102,7 +102,6 @@ module InternalDsp
 	wire	[NcoWidth-1:0]	ncoSin;
 	
 	wire	[CorrAdcDataWidth-1:0]	adcDataBus	[ChNum-1:0];
-	// wire	[AdcDataWidth-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]	calAdcData		[ChNum-1:0];
@@ -133,11 +132,6 @@ module InternalDsp
 	
 	wire	[31:0]	windArg;
 	
-	// wire	[CorrAdcDataWidth-1:0]	adc1ChT1DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-4]:{CorrAdcDataWidth{1'b0}};
-	// wire	[CorrAdcDataWidth-1:0]	adc1ChR1DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-3]:{CorrAdcDataWidth{1'b0}};
-	// wire	[CorrAdcDataWidth-1:0]	adc2ChR2DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-2]:{CorrAdcDataWidth{1'b0}};
-	// wire	[CorrAdcDataWidth-1:0]	adc2ChT2DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-1]:{CorrAdcDataWidth{1'b0}};	
-	
 	wire	[CorrAdcDataWidth-1:0]	adc1ChT1DataGated	=	(GatingPulse_i)?	adcDataBusExt[ChNum-4]:{CorrAdcDataWidth{1'b0}};
 	wire	[CorrAdcDataWidth-1:0]	adc1ChR1DataGated	=	(GatingPulse_i)?	adcDataBusExt[ChNum-3]:{CorrAdcDataWidth{1'b0}};
 	wire	[CorrAdcDataWidth-1:0]	adc2ChR2DataGated	=	(GatingPulse_i)?	adcDataBusExt[ChNum-2]:{CorrAdcDataWidth{1'b0}};
@@ -147,12 +141,6 @@ module InternalDsp
 	
 //================================================================================
 //  ASSIGNMENTS
-	
-	
-	// assign	adcDataBus	[ChNum-1]	=	Adc2ChT2Data_i;
-	// assign	adcDataBus	[ChNum-2]	=	Adc2ChR2Data_i;
-	// assign	adcDataBus	[ChNum-3]	=	Adc1ChR1Data_i;
-	// assign	adcDataBus	[ChNum-4]	=	Adc1ChT1Data_i;
 
 	assign	adcDataBus	[ChNum-1]	=	{{2{Adc2ChT2Data_i[AdcDataWidth-1]}},Adc2ChT2Data_i,4'b0};
 	assign	adcDataBus	[ChNum-2]	=	{{2{Adc2ChR2Data_i[AdcDataWidth-1]}},Adc2ChR2Data_i,4'b0};
@@ -284,8 +272,7 @@ Win_calc	WinCalcInst
 	.MeasWind_i		(measWind),
 	.win_value_i	(windArg),
 	.win_type_i		(measCtrlReg[2:0]),
-	.win_o			(wind),
-	.sinWin_o		(sinwind)
+	.win_o			(wind)
 );
 
 
@@ -321,11 +308,9 @@ ComplPrng
 )
 ComplPrngAdderInst
 (
-	// .Data_i	(calAdcData[g]),
 	.Clk_i	(Clk_i),
 	.Rst_i	(Rst_i),
 
-	// .DataAndPrng_o	(adcDataBusExt[g]),
 	.PrngData_o		(prngData)
 );
 
@@ -342,7 +327,6 @@ generate
 	
 		AdcCalibration 
 		#(	
-			// .AccNum			(32),
 			.AccNum			(2097152),
 			.AdcDataWidth	(CorrAdcDataWidth)
 		)
@@ -351,7 +335,6 @@ generate
 			.Clk_i					(Clk_i),
 			.Rst_i					(Rst_i),
 			.CalModeEn_i			(CalModeEn_i),
-			// .AdcData_i				(adcDataBusExt[g]),
 			.AdcData_i				(adcDataBus[g]),
 			
 			.CalDone_o				(calDone[g]),

+ 3 - 4
S5443_M/S5443.srcs/sources_1/new/InternalDsp/Win_calc.v

@@ -29,8 +29,7 @@ module Win_calc	(
 	input	[1:0]	TukeyCtrl_i,
 	input	[31:0]	win_value_i,
 	input	[2:0]	win_type_i,	
-	output	signed [17:0]	win_o,
-	output	reg	signed [17:0]	sinWin_o
+	output	signed [17:0]	win_o
 );
 //================================================================================
 //  REG/WIRE
@@ -250,7 +249,7 @@ DSP48E1 #(
       .OPMODEREG(0),                    // Number of pipeline stages for OPMODE (0 or 1)
       .PREG(0)                          // Number of pipeline stages for P (0 or 1)
    )
-DSP48E1_1inst (
+FirstStage (
       // Cascade: 30-bit (each) output: Cascade Ports
       .ACOUT(),                   // 30-bit output: A port cascade output
       .BCOUT(),                   // 18-bit output: B port cascade output
@@ -340,7 +339,7 @@ DSP48E1 #(
       .OPMODEREG(0),                    // Number of pipeline stages for OPMODE (0 or 1)
       .PREG(0)                          // Number of pipeline stages for P (0 or 1)
    )
-DSP48E1_2inst (
+SecondStage (
       // Cascade: 30-bit (each) output: Cascade Ports
       .ACOUT(),                   // 30-bit output: A port cascade output
       .BCOUT(),                   // 18-bit output: B port cascade output

+ 11 - 2
S5443_M/S5443.srcs/sources_1/new/Math/FpCustomMultiplier.v

@@ -1,8 +1,17 @@
-module FpCustomMultiplier # (
+module FpCustomMultiplier 
+# (
 	parameter	ManWidth	=	16,
 	parameter	ExpWidth	=	6
 )
-(Rst_i,Clk_i,A_i,B_i,Nd_i,Result_o,ResultValid_o);	
+(
+	Rst_i,
+	Clk_i,
+	A_i,
+	B_i,
+	Nd_i,
+	Result_o,
+	ResultValid_o
+);	
 
 	localparam	InOutWidth	=	1+ExpWidth+ManWidth;
 	

+ 19 - 5
S5443_M/S5443.srcs/sources_1/new/Math/MultModule.v

@@ -39,10 +39,12 @@ module	MultModule
 
 //================================================================================
 //  REG/WIRE
-	wire	signed	[IfNcoOutWidth-1:0]	adcDataCompl	=	{AdcData_i,4'b0};
+	reg	signed	[IfNcoOutWidth-1:0]	adcDataCompl;
+	reg	signed	[IfNcoOutWidth-1:0]	sinReg;
+	reg	signed	[IfNcoOutWidth-1:0]	cosReg;
 	
-	reg	[MultDataWidth-1:0]	AdcSinReg;
-	reg	[MultDataWidth-1:0]	AdcCosReg;
+	reg	signed	[MultDataWidth-1:0]	AdcSinReg;
+	reg	signed	[MultDataWidth-1:0]	AdcCosReg;
 //================================================================================
 //  ASSIGNMENTS
 	assign	AdcSin_o	=	AdcSinReg;
@@ -51,8 +53,20 @@ module	MultModule
 //  CODING
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
-			AdcSinReg	<=	adcDataCompl*Sin_i;
-			AdcCosReg	<=	adcDataCompl*Cos_i;
+			adcDataCompl	<=	{AdcData_i,4'b0};
+			sinReg	<=	Sin_i;
+			cosReg	<=	Cos_i;
+		end	else	begin
+			adcDataCompl	<=	0;
+			sinReg	<=	0;
+			cosReg	<=	0;
+		end
+	end
+	
+	always	@(posedge	Clk_i)	begin
+		if	(!Rst_i)	begin
+			AdcSinReg	<=	adcDataCompl*sinReg;
+			AdcCosReg	<=	adcDataCompl*cosReg;
 		end	else	begin
 			AdcSinReg	<=	{MultDataWidth{1'b0}};
 			AdcCosReg	<=	{MultDataWidth{1'b0}};

+ 5 - 19
S5443_M/S5443.srcs/sources_1/new/S5443Top.v

@@ -268,7 +268,7 @@ module	S5443Top
 	reg	[31:0]	testCnt;
 
 	wire	refClk;
-	wire	Clk100_o;
+	wire	windClk150;
 	
 	wire	measWind;
 	
@@ -557,9 +557,7 @@ module	S5443Top
 	assign	Trig6to1Dir_o	[5]	=	!measCtrl[21];
 	
 	assign	Trig6to1_io	[0]	=	(measCtrl[16])	?	1'bz:extPortsMuxedOut[0];	//1 - in, 0 - out
-	// assign	Trig6to1_io	[0]	=	(measCtrl[16])	?	1'bz:LpOutFs_o;	//1 - in, 0 - out
 	assign	Trig6to1_io	[1]	=	(measCtrl[17])	?	1'bz:extPortsMuxedOut[1];	//1 - in, 0 - out
-	// assign	Trig6to1_io	[1]	=	(measCtrl[17])	?	1'bz:LpOutFs_o;	//1 - in, 0 - out
 	assign	Trig6to1_io	[2]	=	(measCtrl[18])	?	1'bz:extPortsMuxedOut[2];	//1 - in, 0 - out
 	assign	Trig6to1_io	[3]	=	(measCtrl[19])	?	1'bz:extPortsMuxedOut[3];	//1 - in, 0 - out
 	assign	Trig6to1_io	[4]	=	(measCtrl[20])	?	1'bz:extPortsMuxedOut[4];	//1 - in, 0 - out
@@ -606,13 +604,13 @@ IBUF iob_50m_in
 	.O         		(gclk)
 );
 	
-Clk200Gen	Clk200Gen 
+Clk200Gen	ClocksGenerator 
 (
     .Clk_i			(gclk),
     .Rst_i			(initRst),
 	.Clk200_o		(refClk),
 	.Clk10Timers_o	(TimersClk_o),
-	.Clk100_o		(Clk100_o),
+	.Clk150_o		(windClk150),
 	
 	.Locked_o		(Locked200)
 );
@@ -703,17 +701,7 @@ ExternalDspInterface
 	.Adc1ChT1Data_i		(adc1ChT1Data),	
 	.Adc1ChR1Data_i		(adc1ChR1Data),	
 	.Adc2ChR2Data_i		(adc2ChR2Data),	
-	.Adc2ChT2Data_i		(adc2ChT2Data),	
-
-	// .Adc1ChT1Data_i		(AdcData_i),	
-	// .Adc1ChR1Data_i		(AdcData_i),	
-	// .Adc2ChR2Data_i		(AdcData_i),	
-	// .Adc2ChT2Data_i		(AdcData_i),	
-	
-	// .Adc1ChT1Data_i		(14'h1fff),	
-	// .Adc1ChR1Data_i		(14'h257f),	
-	// .Adc2ChR2Data_i		(14'h1001),	
-	// .Adc2ChT2Data_i		(14'h25f8),	
+	.Adc2ChT2Data_i		(adc2ChT2Data),		
 	
 	.Mosi_o				(adcInitMosi),
 	.Sck_o				(adcInitSck),
@@ -770,7 +758,7 @@ InternalDsp
 InternalDsp
 (
 	.Clk_i					(gclk),
-	.WindCalcClk_i			(Clk100_o),
+	.WindCalcClk_i			(windClk150),
 	.Rst_i					(initRst),
 	.NcoRst_i				(ncoRst),
 	.OscWind_o				(oscWind),
@@ -1009,7 +997,6 @@ generate
 		.NcoCos_i			(ncoCos),
 		
 		.AdcData_i			(adcDataBus[g]),
-		// .AdcData_i			(AdcData_i),
 		
 		.GainLowThreshold_i	(gainLowThresholdBus[g]),
 		.GainHighThreshold_i(gainHighThresholdBus[g]),
@@ -1140,7 +1127,6 @@ MeasStartEventGen	IntTrig2GenInst
 	.Clk_i				(gclk),
 	
 	.MeasTrig_i			(trigForIntTrig2),
-	// .StartMeasDsp_i		(startMeasEvent),
 	.StartMeasDsp_i		(intTrig1),
 	
 	.StartMeasEvent_o	(),

+ 3 - 0
S5443_M/S5443.srcs/sources_1/new/StartAfterGainSel.v

@@ -93,6 +93,9 @@ always	@(*)	begin
 			4'd15:	begin
 						measStart	=	&MeasStart_i;
 					end		
+			default:	begin
+							measStart	=	&MeasStart_i;
+						end
 		endcase
 	end
 end

+ 4 - 4
S5443_S/S5443.srcs/sources_1/new/Clk200Gen.v

@@ -4,7 +4,7 @@ module Clk200Gen
     input	Rst_i,
 	output	Clk200_o,
 	output	Clk10Timers_o,
-	output	Clk100_o,
+	output	Clk150_o,
 	
 	output	Locked_o
 );
@@ -27,7 +27,7 @@ PLLE2_ADV #(
       	.CLKOUT2_DIVIDE		(8),
       	.CLKOUT2_DUTY_CYCLE	(0.5),
       	.CLKOUT2_PHASE		(0.0),
-      	.CLKOUT3_DIVIDE		(7),
+      	.CLKOUT3_DIVIDE		(120),
       	.CLKOUT3_DUTY_CYCLE	(0.5),
       	.CLKOUT3_PHASE		(0.0),
       	.CLKOUT4_DIVIDE		(7),
@@ -43,7 +43,7 @@ CommonPll (
       	.CLKFBOUT		(ClkFb),
       	.CLKOUT0		(rx_mmcmout_200),
       	.CLKOUT1		(rx_mmcmout_10),
-      	.CLKOUT2		(rx_mmcmout_100),
+      	.CLKOUT2		(rx_mmcmout_150),
       	.CLKOUT3		(),
       	.CLKOUT4		(),
       	.CLKOUT5		(),
@@ -68,7 +68,7 @@ BUFG	bufg_mmcm_Fb (.I(ClkFb), .O(rxFb)) ;
 
 BUFG	ctrlClk200 (.I(rx_mmcmout_200), .O(Clk200_o)) ;
 BUFG	ctrlClk10 (.I(rx_mmcmout_10), .O(Clk10Timers_o)) ;
-BUFG	ctrlClk100 (.I(rx_mmcmout_100), .O(Clk100_o)) ;
+BUFG	ctrlClk150 (.I(rx_mmcmout_150), .O(Clk150_o)) ;
 
 endmodule
 

+ 88 - 16
S5443_S/S5443.srcs/sources_1/new/FftDataFiltering/DecimFilterWrapper.v

@@ -23,7 +23,7 @@ module	DecimFilterWrapper
 	parameter	AdcDataWidth		=	14,
 	parameter	N	=	4,
 	parameter	M	=	1,
-	parameter	FilteredDataWidth	=	21,
+	parameter	FilteredDataWidth	=	29,
 	parameter	FirOutDataWidth		=	48,
 	parameter	FirOutCutBit		=	42
 )
@@ -38,8 +38,8 @@ module	DecimFilterWrapper
 	
 	input	signed	[AdcDataWidth-1:0]	AdcData_i,
 	
-	output	signed	[AdcDataWidth+1:0]	FilteredAdcDataI_o,
-	output	signed	[AdcDataWidth+1:0]	FilteredAdcDataQ_o,
+	output	signed	[16-1:0]	FilteredAdcDataI_o,
+	output	signed	[16-1:0]	FilteredAdcDataQ_o,
 	output	FilteredDataVal_o
 );
 //================================================================================
@@ -48,7 +48,9 @@ module	DecimFilterWrapper
 	wire	signed	[FilteredDataWidth-1:0]	decimDataI;
 	wire	signed	[FilteredDataWidth-1:0]	decimDataQ;
 	wire	decimDataValI;
+	reg		decimDataValIR;
 	wire	decimDataValQ;
+	reg		decimDataValQR;
 	
 	wire	signed	[FirOutDataWidth-1:0]	firDataOut;
 	wire	firDataOutVal;
@@ -56,25 +58,93 @@ module	DecimFilterWrapper
 	wire	[AdcDataWidth-1:0]	ncoCos;
 	wire	[AdcDataWidth-1:0]	ncoSin;
 	
-	wire	[FilteredDataWidth-1:0]	adcSinResult;
+	wire	[AdcDataWidth-1:0]	adcSinResult;
 	wire	adcSinVal;
-	wire	[FilteredDataWidth-1:0]	adcCosResult;
+	wire	[AdcDataWidth-1:0]	adcCosResult;
 	wire	adcCosVal;
 	
 	reg		[24-1:0]	ifFtwLReg;
 	reg		[24-1:0]	ifFtwHReg;
+	
+	reg		[15:0]	outDataI;
+	reg		[15:0]	outDataQ;
+	
+	localparam	maxWidthForR2	=	5'd18;	//msb for R = 2;
+	localparam	maxWidthForR3	=	5'd21;	//msb for R = 3;
+	localparam	maxWidthForR4	=	5'd22;	//msb for R = 4;
+	localparam	maxWidthForR5	=	5'd24;	//msb for R = 5;
+	localparam	maxWidthForR6	=	5'd25;	//msb for R = 6;
+	localparam	maxWidthForR7	=	5'd26;	//msb for R = 7;
+	// localparam	maxWidthForR8	=	5'd26;	//msb for R = 8;
+	// localparam	maxWidthForR9	=	5'd27;	//msb for R = 9;
+	// localparam	maxWidthForR10	=	5'd28;	//msb for R = 10;
+	
 //================================================================================
 //	ASSIGNMENTS
 //================================================================================
 
-	assign	FilteredAdcDataI_o		=	decimDataI[FilteredDataWidth-1-:AdcDataWidth+2];
-	assign	FilteredAdcDataQ_o		=	decimDataQ[FilteredDataWidth-1-:AdcDataWidth+2];
-	assign	FilteredDataVal_o		=	decimDataValI&decimDataValQ;
-	
+	assign	FilteredAdcDataI_o	=	outDataI;
+	// assign	FilteredAdcDataI_o	=	decimDataI;
+	assign	FilteredAdcDataQ_o	=	outDataQ;
+	// assign	FilteredAdcDataQ_o	=	decimDataQ;
+	// assign	FilteredDataVal_o	=	decimDataValIR&decimDataValQR;
+	assign	FilteredDataVal_o	=	decimDataValI&decimDataValQ;
+
+
+// {{14{AdcData_i[AdcDataWidth-1]}},AdcData_i}
+
 //================================================================================
 //	CODING
 //================================================================================
 
+always	@(posedge	Clk_i)	begin
+	if	(!Rst_i)	begin
+		case(DecimFactor_i)
+			3'd2:	begin
+						outDataI	<=	decimDataI[maxWidthForR2-:16];
+						outDataQ	<=	decimDataQ[maxWidthForR2-:16];
+						decimDataValIR	<=	decimDataValI;
+						decimDataValQR	<=	decimDataValQ;
+					end
+			3'd3:	begin
+						outDataI	<=	decimDataI[maxWidthForR3-:16];
+						outDataQ	<=	decimDataQ[maxWidthForR3-:16];
+						decimDataValIR	<=	decimDataValI;
+						decimDataValQR	<=	decimDataValQ;
+					end
+			3'd4:	begin
+						outDataI	<=	decimDataI[maxWidthForR4-:16];
+						outDataQ	<=	decimDataQ[maxWidthForR4-:16];
+						decimDataValIR	<=	decimDataValI;
+						decimDataValQR	<=	decimDataValQ;
+					end
+			3'd5:	begin
+						outDataI	<=	decimDataI[maxWidthForR5-:16];
+						outDataQ	<=	decimDataQ[maxWidthForR5-:16];
+						decimDataValIR	<=	decimDataValI;
+						decimDataValQR	<=	decimDataValQ;
+					end
+			3'd6:	begin
+						outDataI	<=	decimDataI[maxWidthForR6-:16];
+						outDataQ	<=	decimDataQ[maxWidthForR6-:16];
+						decimDataValIR	<=	decimDataValI;
+						decimDataValQR	<=	decimDataValQ;
+					end
+			3'd7:	begin
+						outDataI	<=	decimDataI[maxWidthForR7-:16];
+						outDataQ	<=	decimDataQ[maxWidthForR7-:16];
+						decimDataValIR	<=	decimDataValI;
+						decimDataValQR	<=	decimDataValQ;
+					end
+		endcase
+	end	else	begin
+		outDataI	<=	16'd0;
+		outDataQ	<=	16'd0;
+		decimDataValIR	<=	1'b0;
+		decimDataValQR	<=	1'b0;
+	end
+end
+
 always	@(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin
 		ifFtwLReg	<=	IfFtwL_i;
@@ -98,6 +168,7 @@ ncoInst
 	.Rst_i		(Rst_i),
 	.Val_i		(1'b1),
 	.PhaseInc_i	({ifFtwHReg[0+:32-24],ifFtwLReg}),
+	// .PhaseInc_i	(32'h3eb851eb),
 	.WindVal_i	(1'b1),
 	.WinType_i	(),
 	.Wind_o		(),
@@ -110,7 +181,7 @@ SimpleMult
 #(	
 	.FactorAWidth	(AdcDataWidth),
 	.FactorBWidth	(AdcDataWidth),
-	.OutputWidth	(FilteredDataWidth)
+	.OutputWidth	(AdcDataWidth)
 )
 AdcNcoSinMult	
 (
@@ -119,6 +190,7 @@ AdcNcoSinMult
 	.Val_i		(1'b1),
 	.FactorA_i	(ncoSin),
 	.FactorB_i	(AdcData_i),	
+	// .FactorB_i	(ncoSin),	
 	.Result_o	(adcSinResult),
 	.ResultVal_o(adcSinVal)
 );
@@ -127,7 +199,7 @@ SimpleMult
 #(	
 	.FactorAWidth	(AdcDataWidth),
 	.FactorBWidth	(AdcDataWidth),
-	.OutputWidth	(FilteredDataWidth)
+	.OutputWidth	(AdcDataWidth)
 )
 AdcNcoCosMult	
 (
@@ -136,6 +208,7 @@ AdcNcoCosMult
 	.Val_i		(1'b1),
 	.FactorA_i	(ncoCos),
 	.FactorB_i	(AdcData_i),
+	// .FactorB_i	(ncoSin),
 	.Result_o	(adcCosResult),
 	.ResultVal_o(adcCosVal)
 );
@@ -153,8 +226,8 @@ cicFilterInstI
 	.Clk_i			(Clk_i),
 	.Rst_i			(Rst_i),
 	.DecimFactor_i	(DecimFactor_i),
-	// .Data_i			({{7{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
-	.Data_i			(adcCosResult),
+	.Data_i			({{15{adcCosResult[AdcDataWidth-1]}},adcCosResult}),
+	// .Data_i			({{15{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
 	.DataNd_i		(OscWind_i),
 	.Data_o			(decimDataI),
 	.DataValid_o	(decimDataValI)
@@ -173,9 +246,8 @@ cicFilterInstQ
 	.Clk_i			(Clk_i),
 	.Rst_i			(Rst_i),
 	.DecimFactor_i	(DecimFactor_i),
-	// .Data_i			(AdcData_i),
-	// .Data_i			({{7{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
-	.Data_i			(adcSinResult),
+	.Data_i			({{15{adcSinResult[AdcDataWidth-1]}},adcSinResult}),
+	// .Data_i			({{15{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
 	.DataNd_i		(OscWind_i),
 	.Data_o			(decimDataQ),
 	.DataValid_o	(decimDataValQ)

+ 5 - 28
S5443_S/S5443.srcs/sources_1/new/InternalDsp/InternalDsp.v

@@ -102,7 +102,6 @@ module InternalDsp
 	wire	[NcoWidth-1:0]	ncoSin;
 	
 	wire	[CorrAdcDataWidth-1:0]	adcDataBus	[ChNum-1:0];
-	// wire	[AdcDataWidth-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]	calAdcData		[ChNum-1:0];
@@ -133,11 +132,6 @@ module InternalDsp
 	
 	wire	[31:0]	windArg;
 	
-	// wire	[CorrAdcDataWidth-1:0]	adc1ChT1DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-4]:{CorrAdcDataWidth{1'b0}};
-	// wire	[CorrAdcDataWidth-1:0]	adc1ChR1DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-3]:{CorrAdcDataWidth{1'b0}};
-	// wire	[CorrAdcDataWidth-1:0]	adc2ChR2DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-2]:{CorrAdcDataWidth{1'b0}};
-	// wire	[CorrAdcDataWidth-1:0]	adc2ChT2DataGated	=	(GatingPulse_i)?	calAdcData[ChNum-1]:{CorrAdcDataWidth{1'b0}};	
-	
 	wire	[CorrAdcDataWidth-1:0]	adc1ChT1DataGated	=	(GatingPulse_i)?	adcDataBusExt[ChNum-4]:{CorrAdcDataWidth{1'b0}};
 	wire	[CorrAdcDataWidth-1:0]	adc1ChR1DataGated	=	(GatingPulse_i)?	adcDataBusExt[ChNum-3]:{CorrAdcDataWidth{1'b0}};
 	wire	[CorrAdcDataWidth-1:0]	adc2ChR2DataGated	=	(GatingPulse_i)?	adcDataBusExt[ChNum-2]:{CorrAdcDataWidth{1'b0}};
@@ -147,11 +141,6 @@ module InternalDsp
 	
 //================================================================================
 //  ASSIGNMENTS
-	
-	// assign	adcDataBus	[ChNum-1]	=	Adc2ChT2Data_i;
-	// assign	adcDataBus	[ChNum-2]	=	Adc2ChR2Data_i;
-	// assign	adcDataBus	[ChNum-3]	=	Adc1ChR1Data_i;
-	// assign	adcDataBus	[ChNum-4]	=	Adc1ChT1Data_i;
 
 	assign	adcDataBus	[ChNum-1]	=	{{2{Adc2ChT2Data_i[AdcDataWidth-1]}},Adc2ChT2Data_i,4'b0};
 	assign	adcDataBus	[ChNum-2]	=	{{2{Adc2ChR2Data_i[AdcDataWidth-1]}},Adc2ChR2Data_i,4'b0};
@@ -187,6 +176,7 @@ module InternalDsp
 	assign	MeasWind_o	=	measWind;
 	
 	assign	CalModeDone_o	=	&calDone;
+	
 //================================================================================
 //  INSTANTIATIONS
 
@@ -215,13 +205,6 @@ always	@(posedge	Clk_i)	begin
 	end 
 end
 
-// PseudoRandomGenerator	RandomGenInst
-// (
-	// .Rst_i	(Rst_i),
-	// .Clk_i	(Clk_i),
-	// .Data_o	()
-// );
-
 MeasCtrlModule	
 #(	
 	.WindPNumWidth	(WindPNumWidth)
@@ -289,8 +272,7 @@ Win_calc	WinCalcInst
 	.MeasWind_i		(measWind),
 	.win_value_i	(windArg),
 	.win_type_i		(measCtrlReg[2:0]),
-	.win_o			(wind),
-	.sinWin_o		(sinwind)
+	.win_o			(wind)
 );
 
 
@@ -314,11 +296,10 @@ ncoInst
 	.WinType_i	(),
 	.Wind_o		(),
 	.Sin_o		(ncoSin),
-	.Cos_o		(ncoCos),
+	.Cos_o		(ncoCos),	
 	.Val_o		()
 );
 
-
 ComplPrng
 #(
 	.DataPrngWidth	(8),
@@ -327,11 +308,9 @@ ComplPrng
 )
 ComplPrngAdderInst
 (
-	// .Data_i	(calAdcData[g]),
 	.Clk_i	(Clk_i),
 	.Rst_i	(Rst_i),
 
-	// .DataAndPrng_o	(adcDataBusExt[g]),
 	.PrngData_o		(prngData)
 );
 
@@ -348,7 +327,6 @@ generate
 	
 		AdcCalibration 
 		#(	
-			// .AccNum			(32),
 			.AccNum			(2097152),
 			.AdcDataWidth	(CorrAdcDataWidth)
 		)
@@ -357,7 +335,6 @@ generate
 			.Clk_i					(Clk_i),
 			.Rst_i					(Rst_i),
 			.CalModeEn_i			(CalModeEn_i),
-			// .AdcData_i				(adcDataBusExt[g]),
 			.AdcData_i				(adcDataBus[g]),
 			
 			.CalDone_o				(calDone[g]),
@@ -386,8 +363,8 @@ generate
 			.AverageNoizeLvl_i	(averageNoizeLvl),
 			.AdcData_i			(gatedAdcDataBus[g]),
 			.Wind_i				(wind),
-			.NcoSin_i			(ncoCos),
-			.NcoCos_i			(ncoSin),	
+			.NcoSin_i			(ncoSin),
+			.NcoCos_i			(ncoCos),	
 			.NormCoef_i			(windNormCoef),
 
 			.CorrResultIm_o		(resultImBus[g]),

+ 4 - 4
S5443_S/S5443.srcs/sources_1/new/InternalDsp/Win_calc.v

@@ -29,8 +29,7 @@ module Win_calc	(
 	input	[1:0]	TukeyCtrl_i,
 	input	[31:0]	win_value_i,
 	input	[2:0]	win_type_i,	
-	output	signed [17:0]	win_o,
-	output	reg	signed [17:0]	sinWin_o
+	output	signed [17:0]	win_o
 );
 //================================================================================
 //  REG/WIRE
@@ -53,6 +52,7 @@ module Win_calc	(
 	reg	[35:0]	sinWindPow2;
 	
 	wire	sinFilterFlag	=	(filterCmd_i>=8'h54	&	filterCmd_i<=8'h62);
+	// wire	rectFilterFlag	=	(filterCmd_i>=8'h63	&	filterCmd_i!=8'h70)|filterCmd_i==8'h30;
 	wire	rectFilterFlag	=	(filterCmd_i>=8'h63	&	filterCmd_i!=8'h70);
 	
 	wire	[17:0]	bSin	=	win_value_i[31]	?	18'h3FFFF	-	win_value_i[31:14]	:	win_value_i	[31:14];
@@ -249,7 +249,7 @@ DSP48E1 #(
       .OPMODEREG(0),                    // Number of pipeline stages for OPMODE (0 or 1)
       .PREG(0)                          // Number of pipeline stages for P (0 or 1)
    )
-DSP48E1_1inst (
+FirstStage (
       // Cascade: 30-bit (each) output: Cascade Ports
       .ACOUT(),                   // 30-bit output: A port cascade output
       .BCOUT(),                   // 18-bit output: B port cascade output
@@ -339,7 +339,7 @@ DSP48E1 #(
       .OPMODEREG(0),                    // Number of pipeline stages for OPMODE (0 or 1)
       .PREG(0)                          // Number of pipeline stages for P (0 or 1)
    )
-DSP48E1_2inst (
+SecondStage (
       // Cascade: 30-bit (each) output: Cascade Ports
       .ACOUT(),                   // 30-bit output: A port cascade output
       .BCOUT(),                   // 18-bit output: B port cascade output

+ 11 - 2
S5443_S/S5443.srcs/sources_1/new/Math/FpCustomMultiplier.v

@@ -1,8 +1,17 @@
-module FpCustomMultiplier # (
+module FpCustomMultiplier 
+# (
 	parameter	ManWidth	=	16,
 	parameter	ExpWidth	=	6
 )
-(Rst_i,Clk_i,A_i,B_i,Nd_i,Result_o,ResultValid_o);	
+(
+	Rst_i,
+	Clk_i,
+	A_i,
+	B_i,
+	Nd_i,
+	Result_o,
+	ResultValid_o
+);	
 
 	localparam	InOutWidth	=	1+ExpWidth+ManWidth;
 	

+ 19 - 5
S5443_S/S5443.srcs/sources_1/new/Math/MultModule.v

@@ -39,10 +39,12 @@ module	MultModule
 
 //================================================================================
 //  REG/WIRE
-	wire	signed	[IfNcoOutWidth-1:0]	adcDataCompl	=	{AdcData_i,4'b0};
+	reg	signed	[IfNcoOutWidth-1:0]	adcDataCompl;
+	reg	signed	[IfNcoOutWidth-1:0]	sinReg;
+	reg	signed	[IfNcoOutWidth-1:0]	cosReg;
 	
-	reg	[MultDataWidth-1:0]	AdcSinReg;
-	reg	[MultDataWidth-1:0]	AdcCosReg;
+	reg	signed	[MultDataWidth-1:0]	AdcSinReg;
+	reg	signed	[MultDataWidth-1:0]	AdcCosReg;
 //================================================================================
 //  ASSIGNMENTS
 	assign	AdcSin_o	=	AdcSinReg;
@@ -51,8 +53,20 @@ module	MultModule
 //  CODING
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
-			AdcSinReg	<=	adcDataCompl*Sin_i;
-			AdcCosReg	<=	adcDataCompl*Cos_i;
+			adcDataCompl	<=	{AdcData_i,4'b0};
+			sinReg	<=	Sin_i;
+			cosReg	<=	Cos_i;
+		end	else	begin
+			adcDataCompl	<=	0;
+			sinReg	<=	0;
+			cosReg	<=	0;
+		end
+	end
+	
+	always	@(posedge	Clk_i)	begin
+		if	(!Rst_i)	begin
+			AdcSinReg	<=	adcDataCompl*sinReg;
+			AdcCosReg	<=	adcDataCompl*cosReg;
 		end	else	begin
 			AdcSinReg	<=	{MultDataWidth{1'b0}};
 			AdcCosReg	<=	{MultDataWidth{1'b0}};

+ 19 - 74
S5443_S/S5443.srcs/sources_1/new/S5443Top.v

@@ -140,7 +140,7 @@ module	S5443Top
 	wire	gatingPulse;
 	wire	sampleStrobe;
 	wire	[ChNum-1:0]	measStartBus;
-	reg		measStart;
+	wire		measStart;
 	
 	//spi signals for adc init
 	wire	adcInitRst;
@@ -243,7 +243,7 @@ module	S5443Top
 	reg	[31:0]	testCnt;
 
 	wire	refClk;
-	wire	Clk100_o;
+	wire	windClk150;
 	
 	wire	measWind;
 	
@@ -538,13 +538,13 @@ IBUF iob_50m_in
 	.O         		(gclk)
 );
 	
-Clk200Gen	Clk200Gen 
+Clk200Gen	ClocksGenerator 
 (
     .Clk_i			(gclk),
     .Rst_i			(initRst),
 	.Clk200_o		(refClk),
 	.Clk10Timers_o	(TimersClk_o),
-	.Clk100_o		(Clk100_o),
+	.Clk150_o		(windClk150),
 	
 	.Locked_o		(Locked200)
 );
@@ -615,7 +615,6 @@ ExternalDspInterface
 	.Rst_i				(initRst),
 	.OscWind_i			(oscWind),
 	.StartMeasDsp_i		(startMeasSync),
-	// .DspReadyForRx_i	(dspReadyForRxReg),
 	.DspReadyForRx_i	(dspReadyForRxReg),
 	.MeasNum_i			({measNum2[7:0],measNum1}),
 	
@@ -635,16 +634,6 @@ ExternalDspInterface
 	.Adc1ChR1Data_i		(adc1ChR1Data),	
 	.Adc2ChR2Data_i		(adc2ChT2Data),	
 	.Adc2ChT2Data_i		(adc2ChR2Data),	
-
-	// .Adc1ChT1Data_i		(AdcData_i),	
-	// .Adc1ChR1Data_i		(AdcData_i),	
-	// .Adc2ChR2Data_i		(AdcData_i),	
-	// .Adc2ChT2Data_i		(AdcData_i),	
-	
-	// .Adc1ChT1Data_i		(14'h1fff),	
-	// .Adc1ChR1Data_i		(14'h257f),	
-	// .Adc2ChR2Data_i		(14'h1001),	
-	// .Adc2ChT2Data_i		(14'h25f8),	
 	
 	.Mosi_o				(adcInitMosi),
 	.Sck_o				(adcInitSck),
@@ -750,7 +739,7 @@ InternalDsp
 InternalDsp
 (
 	.Clk_i				(gclk),
-	.WindCalcClk_i		(Clk100_o),
+	.WindCalcClk_i		(windClk150),
 	.Rst_i				(initRst),
 	.NcoRst_i			(ncoRst),
 	.OscWind_o			(oscWind),
@@ -989,7 +978,6 @@ generate
 		.NcoCos_i			(ncoCos),
 		
 		.AdcData_i			(adcDataBus[g]),
-		// .AdcData_i			(AdcData_i),
 		
 		.GainLowThreshold_i	(gainLowThresholdBus[g]),
 		.GainHighThreshold_i(gainHighThresholdBus[g]),
@@ -1003,62 +991,18 @@ generate
 	end
 endgenerate
 
-always	@(*)	begin
-	if	(!initRst)	begin
-		case(gainAutoEn)
-			4'd0:	begin
-						measStart	=	&measStartBus;
-					end
-			4'd1:	begin
-						measStart	=	measStartBus[0];
-					end
-			4'd2:	begin
-						measStart	=	measStartBus[1];
-					end
-			4'd3:	begin
-						measStart	=	measStartBus[0]&measStartBus[1];
-					end
-			4'd4:	begin
-						measStart	=	&measStartBus[2];
-					end
-			4'd5:	begin
-						measStart	=	measStartBus[0]&measStartBus[2];
-					end
-			4'd6:	begin
-						measStart	=	measStartBus[1]&measStartBus[2];
-					end
-			4'd7:	begin
-						measStart	=	measStartBus[0]&measStartBus[1]&measStartBus[2];
-					end
-			4'd8:	begin
-						measStart	=	measStartBus[3];
-					end
-			4'd9:	begin
-						measStart	=	measStartBus[0]&measStartBus[3];
-					end
-			4'd10:	begin
-						measStart	=	measStartBus[1]&measStartBus[3];
-					end
-			4'd11:	begin
-						measStart	=	measStartBus[0]&measStartBus[1]&measStartBus[3];
-					end
-			4'd12:	begin
-						measStart	=	measStartBus[2]&measStartBus[3];
-					end
-			4'd13:	begin
-						measStart	=	measStartBus[0]&measStartBus[2]&measStartBus[3];
-					end
-			4'd14:	begin
-						measStart	=	measStartBus[1]&measStartBus[2]&measStartBus[3];
-					end
-			4'd15:	begin
-						measStart	=	&measStartBus;
-					end		
-		endcase
-	end
-end
-
-
+StartAfterGainSel	
+#(	
+	.ChNum	(ChNum)
+)	
+StartAfterGainSelInst
+(
+	.Rst_i			(initRst),
+	.GainCtrl_i		(gainAutoEn),
+	.MeasStart_i	(measStartBus),
+	
+	.MeasStart_o	(measStart)
+);
 
 //--------------------------------------------------------------------------------
 //	Dither Gen 
@@ -1123,7 +1067,8 @@ PulseGen
 )
 PulseGenerator
 (
-	.Rst_i			(initRst|pGenRst[j]|pGenMeasRst[j]),
+	//.Rst_i			(initRst|pGenRst[j]|pGenMeasRst[j]),
+	.Rst_i			(initRst|pGenMeasRst[j]),
 	.Clk_i			(gclk),
 	.EnPulse_i		(pgMuxedOut[j]),
 	

+ 103 - 0
S5443_S/S5443.srcs/sources_1/new/StartAfterGainSel.v

@@ -0,0 +1,103 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company: 
+// Engineer: 		Churbanov S.
+// 
+// Create Date:    15:24:31 08/20/2019 
+// Design Name: 
+// Module Name:  
+// Project Name: 
+// Target Devices: 
+// Tool versions: 
+// Description: 
+//
+// Dependencies: 
+//
+// Revision: 
+// Revision 0.02 - File Modified
+// Additional Comments: 16.09.2019 file modified in assotiate with task.
+//
+//////////////////////////////////////////////////////////////////////////////////
+module StartAfterGainSel
+#(	
+	parameter	ChNum	=	4
+)	
+(
+	input	Rst_i,	
+	input	[ChNum-1:0]	MeasStart_i,
+	input	[ChNum-1:0]	GainCtrl_i,
+	
+	output	MeasStart_o
+);
+
+//================================================================================
+//  LOCALPARAMS
+
+//================================================================================
+//  REG/WIRE
+	reg	measStart;
+//================================================================================
+//  ASSIGNMENTS
+	assign	MeasStart_o	=	measStart;
+//================================================================================
+//  CODING
+
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		case(GainCtrl_i)
+			4'd0:	begin
+						measStart	=	&MeasStart_i;
+					end
+			4'd1:	begin
+						measStart	=	MeasStart_i[0];
+					end
+			4'd2:	begin
+						measStart	=	MeasStart_i[1];
+					end
+			4'd3:	begin
+						measStart	=	MeasStart_i[0]&MeasStart_i[1];
+					end
+			4'd4:	begin
+						measStart	=	&MeasStart_i[2];
+					end
+			4'd5:	begin
+						measStart	=	MeasStart_i[0]&MeasStart_i[2];
+					end
+			4'd6:	begin
+						measStart	=	MeasStart_i[1]&MeasStart_i[2];
+					end
+			4'd7:	begin
+						measStart	=	MeasStart_i[0]&MeasStart_i[1]&MeasStart_i[2];
+					end
+			4'd8:	begin
+						measStart	=	MeasStart_i[3];
+					end
+			4'd9:	begin
+						measStart	=	MeasStart_i[0]&MeasStart_i[3];
+					end
+			4'd10:	begin
+						measStart	=	MeasStart_i[1]&MeasStart_i[3];
+					end
+			4'd11:	begin
+						measStart	=	MeasStart_i[0]&MeasStart_i[1]&MeasStart_i[3];
+					end
+			4'd12:	begin
+						measStart	=	MeasStart_i[2]&MeasStart_i[3];
+					end
+			4'd13:	begin
+						measStart	=	MeasStart_i[0]&MeasStart_i[2]&MeasStart_i[3];
+					end
+			4'd14:	begin
+						measStart	=	MeasStart_i[1]&MeasStart_i[2]&MeasStart_i[3];
+					end
+			4'd15:	begin
+						measStart	=	&MeasStart_i;
+					end		
+			default:	begin
+							measStart	=	&MeasStart_i;
+						end
+		endcase
+	end
+end
+
+endmodule