Quellcode durchsuchen

Написан тестбенч для моделирования фильтрации с децимацией.

Stepan Churbanov vor 2 Jahren
Ursprung
Commit
eb35366be8

+ 50 - 17
S5443_M/S5443.srcs/sources_1/new/ExtDspInterface/DspInterface.v

@@ -229,41 +229,74 @@ DspSlaveSpi
 	.Miso_o		(Miso_o)
 );
 
-decimBlock	
-#(	
-	.inOutDataWidth	(14),
-	.decimCntWidth	(8)
-)
-Decimator
+DecimFilterWrapper	DecimFilter
 (
 	.Clk_i			(Clk_i),
 	.Rst_i			(Rst_i),
+	.OscWind_i		(OscWind_i),
 	.DecimFactor_i	(DecimFactor_i),
-	.Data_i			(currDataChannel),
-	.DataNd_i		(1'b1),
-	.Data_o			(currDataChannelDecim),
-	.DataValid_o	(currDataChannelDecimVal)
+	
+	.IfFtwL_i		(IfFtwL_i),
+	.IfFtwH_i		(IfFtwH_i),
+	
+	.AdcData_i		(currDataChannel),
+	// .TestData_o		(testData),
+	
+	.FilteredAdcDataI_o	(filteredDecimDataI),
+	.FilteredAdcDataQ_o	(filteredDecimDataQ),
+	.FilteredDataVal_o	(filteredDecimDataVal)
 );
 
-OscDataFormer	DecimDataFormer
+FftDataFormer	FftDataFormerInst
 (
 	.Clk_i				(Clk_i), 
 	.Rst_i				(Rst_i),	
 	.OscWind_i			(OscWind_i),
 	.MeasNum_i			(MeasNum_i),
 	
-	.AdcDataVal_i		(currDataChannelDecimVal),
-	.AdcData_i			(currDataChannelDecim),	
+	.AdcData_i			({filteredDecimDataI,filteredDecimDataQ}),
+	// .AdcData_i			({testPatternData,testPatternData}),
+	.AdcDataVal_i		(filteredDecimDataVal),
 	
-	.OscDataBus_o		(decimDataBus),
-	.OscDataBusVal_o	(decimDataBusVal)
+	.OscDataBus_o		(fftDataBus),
+	.OscDataBusVal_o	(fftDataBusVal)
 );
 
+// decimBlock	
+// #(	
+	// .inOutDataWidth	(14),
+	// .decimCntWidth	(8)
+// )
+// Decimator
+// (
+	// .Clk_i			(Clk_i),
+	// .Rst_i			(Rst_i),
+	// .DecimFactor_i	(DecimFactor_i),
+	// .Data_i			(currDataChannel),
+	// .DataNd_i		(1'b1),
+	// .Data_o			(currDataChannelDecim),
+	// .DataValid_o	(currDataChannelDecimVal)
+// );
+
+// OscDataFormer	DecimDataFormer
+// (
+	// .Clk_i				(Clk_i), 
+	// .Rst_i				(Rst_i),	
+	// .OscWind_i			(OscWind_i),
+	// .MeasNum_i			(MeasNum_i),
+	
+	// .AdcDataVal_i		(currDataChannelDecimVal),
+	// .AdcData_i			(currDataChannelDecim),	
+	
+	// .OscDataBus_o		(decimDataBus),
+	// .OscDataBusVal_o	(decimDataBusVal)
+// );
+
 always	@(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin
 		if	(Mode_i)	begin
-			dataForFifo		<=	decimDataBus;
-			dataForFifoVal	<=	decimDataBusVal;
+			dataForFifo		<=	fftDataBus;
+			dataForFifoVal	<=	fftDataBusVal;
 		end	else	begin
 			dataForFifo		<=	measDataBus;
 			dataForFifoVal	<=	LpOutStart_i;

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

@@ -226,8 +226,8 @@ cicFilterInstI
 	.Clk_i			(Clk_i),
 	.Rst_i			(Rst_i),
 	.DecimFactor_i	(DecimFactor_i),
-	.Data_i			({{15{adcCosResult[AdcDataWidth-1]}},adcCosResult}),
-	// .Data_i			({{15{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
+	// .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)
@@ -246,8 +246,8 @@ cicFilterInstQ
 	.Clk_i			(Clk_i),
 	.Rst_i			(Rst_i),
 	.DecimFactor_i	(DecimFactor_i),
-	.Data_i			({{15{adcSinResult[AdcDataWidth-1]}},adcSinResult}),
-	// .Data_i			({{15{AdcData_i[AdcDataWidth-1]}},AdcData_i}),
+	// .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)

+ 266 - 0
S5443_M/S5443.srcs/sources_1/new/FftDataFiltering/DecimFilterWrapperTb.v

@@ -0,0 +1,266 @@
+`timescale 1ns / 1ps
+
+module DecimFilterWrapperTb	();
+
+reg		Clk50;
+reg		Rst;
+
+reg		[2:0]	decimFactor;
+
+
+reg		[13:0]	adcData;
+real	pi	=	3.14159265358;
+real	phase	=	0;
+real	phaseInc	=	0.001;
+real	signal;
+
+reg		[31:0]	tbCnt;
+reg		[31:0]	pNumCnt;
+wire	oscWind	=	(tbCnt>=4500&tbCnt<=5499)?	1'b1:1'b0;
+
+wire	signed	[13:0]	ncoSin1;
+wire	signed	[13:0]	ncoCos1;
+wire	signed	[13:0]	ncoSin2;
+wire	signed	[13:0]	ncoCos2;
+
+wire	signed	[15:0]	resultI;
+wire	signed	[15:0]	resultQ;
+wire	resultVal;
+
+wire	signed	[13:0]	resultICut	=	resultI[0+:14];
+wire	signed	[13:0]	resultQCut	=	resultQ[0+:14];
+
+// wire	signed	[27:0]	adcDataMixed	=	oscWind?(ncoSin1*ncoSin2):28'd0;
+wire	signed	[27:0]	adcDataMixed	=	(ncoSin1*ncoSin2);
+wire	signed	[13:0]	adcDataMixedCut	=	adcDataMixed[27-:14];
+
+wire	signed	[13:0]	sinAdd	=	(ncoSin1>>>1)+(ncoSin2>>>1);
+
+wire	signed	[17:0]	wind;
+//==========================================================================================
+//clocks gen
+always	#10 Clk50	=	~Clk50;
+
+//==========================================================================================
+
+parameter	N	=	5;
+parameter	M	=	1;
+
+initial begin
+	Clk50		=	1'b1;
+	Rst			=	1'b1;
+	decimFactor	=	3'd4;
+#100;
+	Rst		=	1'b0;
+end		
+
+always	@(posedge	Clk50)	begin
+	if	(!Rst)	begin
+		tbCnt	<=	tbCnt+32'd1;
+	end	else	begin
+		tbCnt	<=	32'd0;
+	end
+end
+
+always	@(posedge	Clk50)	begin
+	if	(!Rst)	begin
+		if	(oscWind)	begin
+			pNumCnt	<=	pNumCnt+32'd1;
+		end	else	begin
+			pNumCnt	<=	32'd0;
+		end
+	end	else	begin
+		pNumCnt	<=	32'd0;
+	end
+end
+
+always @ (posedge Clk50)	begin
+	if (tbCnt >= 4505)	begin
+			phase = phase + phaseInc;
+			phaseInc <= phaseInc + 0.0005;
+			signal = $sin(2*pi*phase);
+			adcData = 2**12 * signal;
+	end	else	begin
+		adcData = 0;
+	end
+end
+	
+CordicNco		
+#(	
+	.ODatWidth	(14),
+	.PhIncWidth	(32),
+	.IterNum	(10),
+	.EnSinN		(1)
+)
+ncoInst1
+(
+	.Clk_i		(Clk50),
+	.Rst_i		(Rst),
+	.Val_i		(1'b1),
+	.PhaseInc_i	(32'h51eb851),
+	.WindVal_i	(1'b1),
+	.WinType_i	(),
+	.Wind_o		(),
+	.Sin_o		(ncoSin1),
+	.Cos_o		(ncoCos1),
+	.Val_o		()
+);
+
+CordicNco		
+#(	
+	.ODatWidth	(14),
+	.PhIncWidth	(32),
+	.IterNum	(10),
+	.EnSinN		(1)
+)
+ncoInst2
+(
+	.Clk_i		(Clk50),
+	.Rst_i		(Rst),
+	.Val_i		(1'b1),
+	.PhaseInc_i	(32'h33333333),
+	.WindVal_i	(1'b1),
+	.WinType_i	(),
+	.Wind_o		(),
+	.Sin_o		(ncoSin2),
+	.Cos_o		(ncoCos2),
+	.Val_o		()
+);
+
+
+DecimFilterWrapper	
+#(	
+	.AdcDataWidth	(14),
+	.N	(N),
+	.M	(M),
+	.FilteredDataWidth	(29),
+	.FirOutDataWidth	(48),
+	.FirOutCutBit		(42)
+)
+DecimFilter
+(
+	.Clk_i			(Clk50),
+	.DecimFactor_i	(decimFactor),
+	.Rst_i			(Rst),
+	.OscWind_i		(oscWind),
+	
+	.IfFtwL_i		(24'h51eb85),
+	.IfFtwH_i		(24'h23),
+	
+	.AdcData_i		(sinAdd),
+	// .AdcData_i		(adcDataMixedCut),
+	
+	.FilteredAdcDataI_o	(resultI),
+	.FilteredAdcDataQ_o	(resultQ),
+	.FilteredDataVal_o	(resultVal)
+);
+
+reg		[32-1:0]	windArg;
+wire	[31:0]	WindPhInc		=	32'h418937<<<decimFactor-2;
+
+always	@(posedge	Clk50)	begin
+	if	(!Rst)	begin
+		if	(resultVal)	begin
+			windArg	<=	windArg+WindPhInc;
+		end
+	end	else	begin
+		windArg	<=	WindPhInc>>1;
+	end
+end	
+
+reg	[1:0]	valReg;
+always	@(posedge	Clk50)	begin
+	if	(!Rst)	begin
+		valReg[0]	<=	resultVal;
+		valReg[1]	<=	valReg[0];
+	end	else	begin
+		valReg	<=	2'b0;
+	end
+end
+	
+reg	signed	[33:0]	windResult;
+reg	windResultVal;
+
+always	@(posedge	Clk50)	begin
+	if	(!Rst)	begin
+		if	(valReg[1])	begin
+			windResult	<=	wind*resultI;
+			windResultVal	<=	1'b1;
+		end	else	begin
+			windResultVal	<=	1'b0;
+		end
+	end	else	begin
+		windResult	<=	0;
+		windResultVal	<=	0;
+	end
+end
+
+wire	signed	[15:0]	windResultCut	=	windResult[32-:16];
+
+Win_calc	WinCalcInst
+(
+	.clk_i			(Clk50),
+	.filterCmd_i	(8'h60),
+	.reset_i		(Rst),
+	.WinCtrl_i		(1'b0),
+	.TukeyCtrl_i	(2'b0),
+	.MeasWind_i		(resultVal),
+	.win_value_i	(windArg),
+	.win_type_i		(3'b0),
+	.win_o			(wind)
+);
+
+integer inSignal,filteredData;
+parameter	PNum	=	5000;
+
+always	@(posedge	Clk50)	begin
+	if	(Rst)	begin
+		inSignal = $fopen("C:/Users/Stepan/Desktop/4portCompact/S5443Current/S5443_M/S5443.srcs/sources_1/new/InputSignal.txt","w");
+	end	else	begin
+		if	(oscWind)	begin
+			// $display("AdcData is %d", sinAdd);
+			$fwrite(inSignal,"%d\n",   sinAdd);
+		end	
+	end	
+end
+
+// always	@(posedge	Clk50)	begin
+	// if	(Rst)	begin
+		// filteredData = $fopen("C:/Users/Stepan/Desktop/4portCompact/S5443Current/S5443_M/S5443.srcs/sources_1/new/filteredData.txt","w");
+	// end	else	begin
+		// if	(resultVal)	begin
+			// $fwrite(filteredData,"%d\n",   resultI);
+		// end	
+	// end	
+// end
+ 
+always	@(posedge	Clk50)	begin
+	if	(Rst)	begin
+		filteredData = $fopen("C:/Users/Stepan/Desktop/4portCompact/S5443Current/S5443_M/S5443.srcs/sources_1/new/filteredData.txt","w");
+	end	else	begin
+		if	(windResultVal)	begin
+			$fwrite(filteredData,"%d\n",   windResultCut);
+		end	
+	end	
+end 
+
+endmodule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 250 - 0
S5443_M/S5443.srcs/sources_1/new/FilteredData.txt

@@ -0,0 +1,250 @@
+    -1
+   -12
+   -38
+   -44
+   -20
+    44
+   138
+   236
+   294
+   269
+   137
+   -98
+  -390
+  -656
+  -799
+  -736
+  -434
+    71
+   675
+  1218
+  1527
+  1464
+   974
+   121
+  -909
+ -1856
+ -2442
+ -2452
+ -1799
+  -567
+   984
+  2468
+  3471
+  3664
+  2907
+  1298
+  -826
+ -2960
+ -4533
+ -5066
+ -4315
+ -2363
+   366
+  3230
+  5498
+  6530
+  5948
+  3772
+   451
+ -3225
+ -6322
+ -7989
+ -7734
+ -5481
+ -1670
+  2816
+  6852
+  9361
+  9612
+  7426
+  3234
+ -2007
+ -7005
+-10487
+-11465
+ -9560
+ -5136
+   780
+  6754
+ 11282
+ 13159
+ 11777
+  7320
+   861
+ -6054
+-11683
+-14567
+-13894
+ -9702
+ -2914
+  4846
+ 11632
+ 15625
+ 15834
+ 12077
+  5194
+ -3184
+-11006
+-16283
+-17595
+-14504
+ -7706
+  1158
+  9872
+ 16316
+ 18830
+ 16677
+ 10291
+  1199
+ -8342
+-15941
+-19686
+-18596
+-12803
+ -3810
+  6277
+ 14928
+ 19942
+ 20030
+ 15142
+  6456
+ -3923
+-13444
+-19721
+-21015
+-17178
+ -9049
+  1348
+ 11450
+ 18768
+ 21444
+ 18810
+ 11499
+  1327
+ -9159
+-17358
+-21266
+-19936
+-13690
+ -4037
+  6592
+ 15535
+ 20566
+ 20471
+ 15419
+  6515
+ -3923
+-13323
+-19366
+-20562
+-16656
+ -8696
+  1284
+ 10805
+ 17552
+ 20003
+ 17413
+ 10560
+  1209
+ -8271
+-15534
+-18855
+-17506
+-11902
+ -3481
+  5660
+ 13228
+ 17365
+ 17139
+ 12731
+  5333
+ -3184
+-10719
+-15446
+-16255
+-13051
+ -6776
+   991
+  8265
+ 13300
+ 14944
+ 12885
+  7739
+   877
+ -5942
+-11049
+-13315
+-12234
+ -8230
+ -2381
+  3814
+  8817
+ 11445
+ 11167
+  8200
+  3394
+ -2002
+ -6675
+ -9498
+ -9868
+ -7819
+ -3992
+   576
+  4736
+  7513
+  8319
+  7066
+  4188
+   467
+ -3115
+ -5695
+ -6726
+ -6072
+ -4011
+ -1139
+  1789
+  4055
+  5165
+  4934
+  3544
+  1434
+  -826
+ -2681
+ -3718
+ -3762
+ -2900
+ -1438
+   201
+  1606
+  2465
+  2636
+  2159
+  1229
+   131
+  -842
+ -1471
+ -1656
+ -1421
+  -889
+  -239
+   351
+   744
+   880
+   777
+   512
+   188
+   -98
+  -284
+  -346
+  -303
+  -198
+   -81
+     9
+    54
+    59
+    41
+    18
+     4
+     0
+    -1

Datei-Diff unterdrückt, da er zu groß ist
+ 1000 - 0
S5443_M/S5443.srcs/sources_1/new/InputSignal.txt


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

@@ -90,10 +90,10 @@ module CordicNco
 	assign precompAngle[11] = 32'd333772;
 	assign precompAngle[12] = 32'd166886;
 	assign precompAngle[13] = 32'd83443;
-	assign precompAngle[14] = 32'd41722;
-	assign precompAngle[15] = 32'd20861;
-	assign precompAngle[16] = 32'd10430;
-	assign precompAngle[17] = 32'd5215;
+	// assign precompAngle[14] = 32'd41722;
+	// assign precompAngle[15] = 32'd20861;
+	// assign precompAngle[16] = 32'd10430;
+	// assign precompAngle[17] = 32'd5215;
 	//assign precompAngle[18] = 32'd2608;
 
 	assign	Sin_o	=	WindVal_i	?	sin_o	:	14'h0;

+ 80 - 324
S5443_M/S5443.srcs/sources_1/new/InternalDsp/Win_calc.v

@@ -21,7 +21,6 @@
 //////////////////////////////////////////////////////////////////////////////////
 module Win_calc	(
 	input			clk_i,
-	input			wind_clk,
 	input	[7:0]	filterCmd_i,
 	input			reset_i,
 	input			WinCtrl_i,
@@ -29,20 +28,32 @@ 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	signed [17:0]	win_o,
+	output	reg	signed [17:0]	sinWin_o
 );
+
 //================================================================================
-//  REG/WIRE
+//  PARAMETERS
 //================================================================================
+	localparam	signed	A3_1	=	18'h15584;
+// ????????? ??? ?????????? SIN
+	localparam signed	[17:0]	A1	=	18'h12400;			// a-1
+	localparam signed	[17:0]	A2	=	18'h002C0;			// b
+	localparam signed	[17:0]	A3	=	~A3_1	+	1'b1;	// c
+	localparam signed	[17:0]	A4	=	18'h0126C;			// d
+	localparam signed	[17:0]	A5	=	18'h01C5C;			// e
 	
-	reg			[3:0]	calc_cycle;
-	reg	signed	[17:0]	a1;		
-	reg signed	[17:0]	b; 	
-	reg signed	[17:0]	c1;
-	reg signed	[17:0]	c2;	
-	wire 		[47:0]	p2;
-	wire 		[47:0]	p1;	
+	localparam	CalcWidth			=	10;
+	localparam	CalcWidthR			=	18;
+	localparam	b2Width				=	CalcWidth*2;
+	localparam	b3Width				=	CalcWidth*3;
+	localparam	b4Width				=	CalcWidth*4;
+	localparam	b5Width				=	CalcWidth*5;
 	
+	localparam [31:0]	testArg	=	32'h12492492;
+//================================================================================
+//  REG/WIRE
+//================================================================================
 	reg			signed	[17:0]	sinWind;
 	reg			signed	[17:0]	tukeyWind;	
 		
@@ -52,13 +63,11 @@ 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];
-	wire	[17:0]	bTukey	=	win_value_i[31]	?	18'h3FFFF	-	win_value_i[31:14]	:	win_value_i	[31:14];
+	wire	[CalcWidth-1:0]	bCurr	=	win_value_i[31]	?	10'h3FF	-	win_value_i[31-:CalcWidth]	:	win_value_i	[31-:CalcWidth];
 	
-	wire	[17:0]	bCurr	=	sinFilterFlag	?	bSin:bTukey;
+	wire	[CalcWidthR-1:0]	bNew	=	win_value_i[31]	?	18'h3FFFF	-	win_value_i[31:14]	:	win_value_i	[31:14];
 	
 	wire	signed	[17:0]	constOne	=	18'b011111111111111111;
 	
@@ -68,32 +77,63 @@ module Win_calc	(
 	
 	wire	signed [17:0]	windMux1;
 	wire	signed [17:0]	windMux2;
-//================================================================================
-//  PARAMETERS
-//================================================================================
-	localparam	signed	A3_1	=	18'h15584;
-// ????????? ??? ?????????? SIN
-	localparam signed	[17:0]	A1	=	18'h12400;			// a-1
-	localparam signed	[17:0]	A2	=	18'h002C0;			// b
-	localparam signed	[17:0]	A3	=	~A3_1	+	1'b1;	// c
-	localparam signed	[17:0]	A4	=	18'h0126C;			// d
-	localparam signed	[17:0]	A5	=	18'h01C5C;			// e
 	
+	wire	signed	[b2Width-1:0]	b2	=	bCurr**2;
+	wire	signed	[b3Width-1:0]	b3	=	bCurr**3;
+	wire	signed	[b4Width-1:0]	b4	=	bCurr**4;
+	wire	signed	[b5Width-1:0]	b5	=	bCurr**5;
+	
+	wire	signed	[CalcWidthR-1:0]	b2Cut	=	b2[b2Width-2-:CalcWidthR];
+	wire	signed	[CalcWidthR-1:0]	b3Cut	=	b3[b3Width-3-:CalcWidthR];
+	wire	signed	[CalcWidthR-1:0]	b4Cut	=	b4[b4Width-4-:CalcWidthR];
+	wire	signed	[CalcWidthR-1:0]	b5Cut	=	b5[b5Width-5-:CalcWidthR];
+	
+	reg		signed	[CalcWidthR*2-1:0]	a1b;
+	reg		signed	[CalcWidthR*2-1:0]	a2b2;
+	reg		signed	[CalcWidthR*2-1:0]	a3b3;
+	reg		signed	[CalcWidthR*2-1:0]	a4b4;
+	reg		signed	[CalcWidthR*2-1:0]	a5b5;
+	
+	wire	signed	[CalcWidthR-1:0]	a1bCut	=	a1b	[CalcWidthR*2-2-:CalcWidthR];
+	wire	signed	[CalcWidthR-1:0]	a2b2Cut	=	a2b2[CalcWidthR*2-2-:CalcWidthR];
+	wire	signed	[CalcWidthR-1:0]	a3b3Cut	=	a3b3[CalcWidthR*2-2-:CalcWidthR];
+	wire	signed	[CalcWidthR-1:0]	a4b4Cut	=	a4b4[CalcWidthR*2-2-:CalcWidthR];
+	wire	signed	[CalcWidthR-1:0]	a5b5Cut	=	a5b5[CalcWidthR*2-2-:CalcWidthR];
+	
+	reg		signed	[CalcWidthR-1:0]	bPrevSh;
+		
+	wire	signed	[CalcWidthR-1:0]	approxSin	=	a5b5Cut+a4b4Cut+a3b3Cut+a2b2Cut+a1bCut+bPrevSh;	
+	
+	wire	signed	[CalcWidthR-1:0]	resultSin	=	approxSin[17]?	18'h1ffff:approxSin;
 //================================================================================
 //  ASSIGNMENTS
 // ================================================================================	
-
-	// assign	win_o	=	(sinFilterFlag)	?	sinWindPow2[34-:18]:tukeyWindOut;
-	
-	assign	win_o		=	windMux2;
 	
 	assign	windMux1	=	(sinFilterFlag)	?	sinWindPow2[34-:18]:tukeyWindOut;
 	assign	windMux2	=	(rectFilterFlag)?	18'h1ffff:windMux1;
 
+	assign	win_o		=	windMux2;
 // ================================================================================
 //  CODING
 //================================================================================	
 
+always	@(posedge	clk_i)	begin
+	if	(!reset_i)	begin
+		a5b5	<=	A5*b5Cut;
+		a4b4	<=	A4*b4Cut;
+		a3b3	<=	A3*b3Cut;
+		a2b2	<=	A2*b2Cut;
+		a1b		<=	A1*bNew;
+		bPrevSh	<=	bNew;
+	end	else	begin
+		a5b5	<=	0;
+		a4b4	<=	0;
+		a3b3	<=	0;
+		a2b2	<=	0;
+		a1b		<=	0;
+		bPrevSh	<=	0;
+	end
+end
 
 always	@(posedge	clk_i)	begin
 	if	(!reset_i)	begin
@@ -105,19 +145,19 @@ always	@(posedge	clk_i)	begin
 	end
 end
 
-always	@(posedge	clk_i)	begin
+always	@(*)	begin
 	if	(!reset_i)	begin
-		tukeyCorr	<=	(tukeyWind+constOne);
-		sinWindPow2	<=	sinWind**2;
+		tukeyCorr	=	(tukeyWind+constOne);
+		sinWindPow2	=	resultSin**2;
 	end	else	begin
-		tukeyCorr	<=	18'h0;
-		sinWindPow2	<=	18'h0;
+		tukeyCorr	=	18'h0;
+		sinWindPow2	=	18'h0;
 	end
 end
 
 always	@(*)	begin
 	if	(!reset_i)	begin
-		case(tukeyCtrlRR)
+		case(tukeyCtrlR)
 			2'h0:		begin
 							tukeyWindOut	=	0;
 						end
@@ -136,304 +176,20 @@ always	@(*)	begin
 	end
 end
 
-always	@(negedge	wind_clk)	begin
-	if	(!reset_i)	begin
-		// if	(MeasWind_i)	begin
-			case	(calc_cycle)
-				4'd1: 	
-						begin
-							a1	<=	A5;
-							c1	<=	A4;
-							c2	<=	A3;
-							b	<=	bCurr;
-						end
-						
-				4'd2:	
-						begin
-							a1	<=	p2[34:17];
-							c1	<=	A2;
-							c2	<=	A1;
-						end
-				4'd3:	
-						begin
-							a1	<=	p2[34:17];
-							c1	<=	b;
-						end
-			endcase
-		// end	else	begin
-			// a1	<=	18'b0;
-			// c1	<=	18'b0;
-			// c2	<=	18'b0;
-			// b	<=	18'b0;
-		// end
-	end	else	begin
-		a1	<=	18'b0;
-		c1	<=	18'b0;
-		c2	<=	18'b0;
-		b	<=	18'b0;
-	end
-end
-
-// always	@(*)	begin
-	// if	(!reset_i)	begin
-		// if	(MeasWind_i)	begin
-			// case	(calc_cycle)
-				// 3'd1: 	
-						// begin
-							// a1	=	A5;
-							// c1	=	A4;
-							// c2	=	A3;
-							// b	=	bCurr;
-						// end
-			// endcase
-		// end	else	begin
-			// a1	=	18'b0;
-			// c1	=	18'b0;
-			// c2	=	18'b0;
-			// b	=	18'b0;
-		// end
-	// end	else	begin
-		// a1	=	18'b0;
-		// c1	=	18'b0;
-		// c2	=	18'b0;
-		// b	=	18'b0;
-	// end
-// end
 
-		
-always	@(posedge	wind_clk)	begin
-	if	(!reset_i)	begin
-		if	(!win_type_i)	begin 
-			if (calc_cycle	==	3'd0) begin
-				if	(p1[47:34]	==	0)	begin
-					sinWind	<=	p1[34-:18];//1.0.17	
-				end	else	begin
-					sinWind	<=	18'h1FFFF;
-				end
-				
-			end 
-		end	else	begin
-			sinWind		<=	18'h0;
-		end
-	end	else	begin
-		sinWind		<=	18'h0;
-	end
-end
-
-always	@(posedge	wind_clk)	begin
+always	@(*)	begin
 	if	(!reset_i)	begin
 		if	(!win_type_i)	begin 
-			if (calc_cycle	==	3'd0) begin
-				if	(!WinCtrl_i)	begin
-					tukeyWind	<=	p1[34-:18];
-				end	else	begin
-					tukeyWind	<=	0-p1[34-:18];
-				end
-			end 
-		end	else	begin
-			tukeyWind	<=	18'h0;
-		end
-	end	else	begin
-		tukeyWind	<=	18'h0;
-	end
-end
-
-//??????? "????? ??????? ????????". ????????  [(b*A5+A4) = p1 ? ????????????? ?????? (b*p1+A3)=p2] == 1 ????.
-
-always	@(posedge	wind_clk)	begin
-	if	(!reset_i)	begin
-		if	(MeasWind_i)	begin
-			if	(calc_cycle	!=	4'd3)	begin
-				calc_cycle	<=	calc_cycle	+	4'd1;
+			if	(!WinCtrl_i)	begin
+				tukeyWind	=	resultSin;
 			end	else	begin
-				calc_cycle	<=	4'd0;
+				tukeyWind	=	0-resultSin;
 			end
 		end	else	begin
-			calc_cycle	<=	4'd0;
+			tukeyWind	=	18'h0;
 		end
 	end	else	begin
-		calc_cycle	<=	4'd0;
+		tukeyWind	=	18'h0;
 	end
 end
-
-DSP48E1 #(
-      // Feature Control Attributes: Data Path Selection
-      .A_INPUT("DIRECT"),               // Selects A input source, "DIRECT" (A port) or "CASCADE" (ACIN port)
-      .B_INPUT("DIRECT"),               // Selects B input source, "DIRECT" (B port) or "CASCADE" (BCIN port)
-      .USE_DPORT("FALSE"),              // Select D port usage (TRUE or FALSE)
-      .USE_MULT("MULTIPLY"),            // Select multiplier usage ("MULTIPLY", "DYNAMIC", or "NONE")
-      .USE_SIMD("ONE48"),               // SIMD selection ("ONE48", "TWO24", "FOUR12")
-      // Pattern Detector Attributes: Pattern Detection Configuration
-      .AUTORESET_PATDET("NO_RESET"),    // "NO_RESET", "RESET_MATCH", "RESET_NOT_MATCH" 
-      .MASK(48'h3fffffffffff),          // 48-bit mask value for pattern detect (1=ignore)
-      .PATTERN(48'h000000000000),       // 48-bit pattern match for pattern detect
-      .SEL_MASK("MASK"),                // "C", "MASK", "ROUNDING_MODE1", "ROUNDING_MODE2" 
-      .SEL_PATTERN("PATTERN"),          // Select pattern value ("PATTERN" or "C")
-      .USE_PATTERN_DETECT("NO_PATDET"), // Enable pattern detect ("PATDET" or "NO_PATDET")
-      // Register Control Attributes: Pipeline Register Configuration
-      .ACASCREG(0),                     // Number of pipeline stages between A/ACIN and ACOUT (0, 1 or 2)
-      .ADREG(0),                        // Number of pipeline stages for pre-adder (0 or 1)
-      .ALUMODEREG(0),                   // Number of pipeline stages for ALUMODE (0 or 1)
-      .AREG(0),                         // Number of pipeline stages for A (0, 1 or 2)
-      .BCASCREG(0),                     // Number of pipeline stages between B/BCIN and BCOUT (0, 1 or 2)
-      .BREG(0),                         // Number of pipeline stages for B (0, 1 or 2)
-      .CARRYINREG(0),                   // Number of pipeline stages for CARRYIN (0 or 1)
-      .CARRYINSELREG(0),                // Number of pipeline stages for CARRYINSEL (0 or 1)
-      .CREG(0),                         // Number of pipeline stages for C (0 or 1)
-      .DREG(0),                         // Number of pipeline stages for D (0 or 1)
-      .INMODEREG(0),                    // Number of pipeline stages for INMODE (0 or 1)
-      .MREG(0),                         // Number of multiplier pipeline stages (0 or 1)
-      .OPMODEREG(0),                    // Number of pipeline stages for OPMODE (0 or 1)
-      .PREG(1)                          // Number of pipeline stages for P (0 or 1)
-   )
-FirstStage (
-      // Cascade: 30-bit (each) output: Cascade Ports
-      .ACOUT(),                   // 30-bit output: A port cascade output
-      .BCOUT(),                   // 18-bit output: B port cascade output
-      .CARRYCASCOUT(),     // 1-bit output: Cascade carry output
-      .MULTSIGNOUT(),       // 1-bit output: Multiplier sign cascade output
-      .PCOUT(),                   // 48-bit output: Cascade output
-      // Control: 1-bit (each) output: Control Inputs/Status Bits
-      .OVERFLOW(),             // 1-bit output: Overflow in add/acc output
-      .PATTERNBDETECT(), // 1-bit output: Pattern bar detect output
-      .PATTERNDETECT(),   // 1-bit output: Pattern detect output
-      .UNDERFLOW(),           // 1-bit output: Underflow in add/acc output
-      // Data: 4-bit (each) output: Data Ports
-      .CARRYOUT(),             // 4-bit output: Carry output
-      .P(p1),                           // 48-bit output: Primary data output
-      // Cascade: 30-bit (each) input: Cascade Ports
-      .ACIN(),                     // 30-bit input: A cascade data input
-      .BCIN(),                     // 18-bit input: B cascade input
-      .CARRYCASCIN(),       // 1-bit input: Cascade carry input
-      .MULTSIGNIN(),         // 1-bit input: Multiplier sign input
-      .PCIN(48'b0),                     // 48-bit input: P cascade input
-      // Control: 4-bit (each) input: Control Inputs/Status Bits
-      .ALUMODE(4'b0000),               // 4-bit input: ALU control input
-      .CARRYINSEL(3'b000),         // 3-bit input: Carry select input
-      // .CLK(1'b0),                       // 1-bit input: Clock input
-      .CLK(wind_clk),                       // 1-bit input: Clock input
-      .INMODE(5'b00000),                 // 5-bit input: INMODE control input
-      .OPMODE(7'b0110101),                 // 7-bit input: Operation mode input
-      // Data: 30-bit (each) input: Data Ports
-      .A({{12{a1[17]}},a1}),                           // 30-bit input: A data input
-      .B(b),                           // 18-bit input: B data input
-      .C({ {13{c1[17]}}, c1[17:0],17'b0 }),                           // 48-bit input: C data input
-      .CARRYIN(1'b0),               // 1-bit input: Carry input signal
-      .D(25'b0),                           // 25-bit input: D data input
-      // Reset/Clock Enable: 1-bit (each) input: Reset/Clock Enable Inputs
-      .CEA1(1'b1),                     // 1-bit input: Clock enable input for 1st stage AREG
-      .CEA2(1'b1),                     // 1-bit input: Clock enable input for 2nd stage AREG
-      .CEAD(1'b1),                     // 1-bit input: Clock enable input for ADREG
-      .CEALUMODE(1'b1),           // 1-bit input: Clock enable input for ALUMODE
-      .CEB1(1'b1),                     // 1-bit input: Clock enable input for 1st stage BREG
-      .CEB2(1'b1),                     // 1-bit input: Clock enable input for 2nd stage BREG
-      .CEC(1'b1),                       // 1-bit input: Clock enable input for CREG
-      .CECARRYIN(1'b1),           // 1-bit input: Clock enable input for CARRYINREG
-      .CECTRL(1'b1),                 // 1-bit input: Clock enable input for OPMODEREG and CARRYINSELREG
-      .CED(1'b1),                       // 1-bit input: Clock enable input for DREG
-      .CEINMODE(1'b1),             // 1-bit input: Clock enable input for INMODEREG
-      .CEM(1'b0),                       // 1-bit input: Clock enable input for MREG
-      .CEP(1'b1),                       // 1-bit input: Clock enable input for PREG
-      .RSTA(1'b0),                     // 1-bit input: Reset input for AREG
-      .RSTALLCARRYIN(1'b0),   // 1-bit input: Reset input for CARRYINREG
-      .RSTALUMODE(1'b0),         // 1-bit input: Reset input for ALUMODEREG
-      .RSTB(1'b0),                     // 1-bit input: Reset input for BREG
-      .RSTC(1'b0),                     // 1-bit input: Reset input for CREG
-      .RSTCTRL(1'b0),               // 1-bit input: Reset input for OPMODEREG and CARRYINSELREG
-      .RSTD(1'b0),                     // 1-bit input: Reset input for DREG and ADREG
-      .RSTINMODE(1'b0),           // 1-bit input: Reset input for INMODEREG
-      .RSTM(reset_i),                     // 1-bit input: Reset input for MREG
-      .RSTP(reset_i)                      // 1-bit input: Reset input for PREG
-);
-   
-DSP48E1 #(
-      // Feature Control Attributes: Data Path Selection
-      .A_INPUT("DIRECT"),               // Selects A input source, "DIRECT" (A port) or "CASCADE" (ACIN port)
-      .B_INPUT("DIRECT"),               // Selects B input source, "DIRECT" (B port) or "CASCADE" (BCIN port)
-      .USE_DPORT("FALSE"),              // Select D port usage (TRUE or FALSE)
-      .USE_MULT("MULTIPLY"),            // Select multiplier usage ("MULTIPLY", "DYNAMIC", or "NONE")
-      .USE_SIMD("ONE48"),               // SIMD selection ("ONE48", "TWO24", "FOUR12")
-      // Pattern Detector Attributes: Pattern Detection Configuration
-      .AUTORESET_PATDET("NO_RESET"),    // "NO_RESET", "RESET_MATCH", "RESET_NOT_MATCH" 
-      .MASK(48'h1),          // 48-bit mask value for pattern detect (1=ignore)
-      .PATTERN(48'h000000000000),       // 48-bit pattern match for pattern detect
-      .SEL_MASK("MASK"),                // "C", "MASK", "ROUNDING_MODE1", "ROUNDING_MODE2" 
-      .SEL_PATTERN("PATTERN"),          // Select pattern value ("PATTERN" or "C")
-      .USE_PATTERN_DETECT("NO_PATDET"), // Enable pattern detect ("PATDET" or "NO_PATDET")
-      // Register Control Attributes: Pipeline Register Configuration
-      .ACASCREG(0),                     // Number of pipeline stages between A/ACIN and ACOUT (0, 1 or 2)
-      .ADREG(0),                        // Number of pipeline stages for pre-adder (0 or 1)
-      .ALUMODEREG(0),                   // Number of pipeline stages for ALUMODE (0 or 1)
-      .AREG(0),                         // Number of pipeline stages for A (0, 1 or 2)
-      .BCASCREG(0),                     // Number of pipeline stages between B/BCIN and BCOUT (0, 1 or 2)
-      .BREG(0),                         // Number of pipeline stages for B (0, 1 or 2)
-      .CARRYINREG(0),                   // Number of pipeline stages for CARRYIN (0 or 1)
-      .CARRYINSELREG(0),                // Number of pipeline stages for CARRYINSEL (0 or 1)
-      .CREG(0),                         // Number of pipeline stages for C (0 or 1)
-      .DREG(0),                         // Number of pipeline stages for D (0 or 1)
-      .INMODEREG(0),                    // Number of pipeline stages for INMODE (0 or 1)
-      .MREG(0),                         // Number of multiplier pipeline stages (0 or 1)
-      .OPMODEREG(0),                    // Number of pipeline stages for OPMODE (0 or 1)
-      .PREG(0)                          // Number of pipeline stages for P (0 or 1)
-   )
-SecondStage (
-      // Cascade: 30-bit (each) output: Cascade Ports
-      .ACOUT(),                   // 30-bit output: A port cascade output
-      .BCOUT(),                   // 18-bit output: B port cascade output
-      .CARRYCASCOUT(),     // 1-bit output: Cascade carry output
-      .MULTSIGNOUT(),       // 1-bit output: Multiplier sign cascade output
-      .PCOUT(),                   // 48-bit output: Cascade output
-      // Control: 1-bit (each) output: Control Inputs/Status Bits
-      .OVERFLOW(),             // 1-bit output: Overflow in add/acc output
-      .PATTERNBDETECT(), // 1-bit output: Pattern bar detect output
-      .PATTERNDETECT(),   // 1-bit output: Pattern detect output
-      .UNDERFLOW(),           // 1-bit output: Underflow in add/acc output
-      // Data: 4-bit (each) output: Data Ports
-      .CARRYOUT(),             // 4-bit output: Carry output
-      .P(p2),                           // 48-bit output: Primary data output
-      // Cascade: 30-bit (each) input: Cascade Ports
-      .ACIN(),                     // 30-bit input: A cascade data input
-      .BCIN(),                     // 18-bit input: B cascade input
-      .CARRYCASCIN(),       // 1-bit input: Cascade carry input
-      .MULTSIGNIN(),         // 1-bit input: Multiplier sign input
-      .PCIN(48'b0),                     // 48-bit input: P cascade input
-      // Control: 4-bit (each) input: Control Inputs/Status Bits
-      .ALUMODE(4'b0000),               // 4-bit input: ALU control input
-      .CARRYINSEL(3'b000),         // 3-bit input: Carry select input
-      .CLK(1'b0),                       // 1-bit input: Clock input
-      // .CLK(wind_clk),                       // 1-bit input: Clock input
-      .INMODE(5'b00000),                 // 5-bit input: INMODE control input
-      .OPMODE(7'b0110101),                 // 7-bit input: Operation mode input
-      // Data: 30-bit (each) input: Data Ports
-      .A({{12{p1[47]}},p1[34:17]}),                           // 30-bit input: A data input
-      .B(b),                           // 18-bit input: B data input
-      .C({ {13{c2[17]}}, c2[17:0],17'b0 }),                           // 48-bit input: C data input
-      .CARRYIN(1'b0),               // 1-bit input: Carry input signal
-      .D(25'b0),                           // 25-bit input: D data input
-      // Reset/Clock Enable: 1-bit (each) input: Reset/Clock Enable Inputs
-      .CEA1(1'b1),                     // 1-bit input: Clock enable input for 1st stage AREG
-      .CEA2(1'b1),                     // 1-bit input: Clock enable input for 2nd stage AREG
-      .CEAD(1'b1),                     // 1-bit input: Clock enable input for ADREG
-      .CEALUMODE(1'b1),           // 1-bit input: Clock enable input for ALUMODE
-      .CEB1(1'b1),                     // 1-bit input: Clock enable input for 1st stage BREG
-      .CEB2(1'b1),                     // 1-bit input: Clock enable input for 2nd stage BREG
-      .CEC(1'b1),                       // 1-bit input: Clock enable input for CREG
-      .CECARRYIN(1'b1),           // 1-bit input: Clock enable input for CARRYINREG
-      .CECTRL(1'b1),                 // 1-bit input: Clock enable input for OPMODEREG and CARRYINSELREG
-      .CED(1'b1),                       // 1-bit input: Clock enable input for DREG
-      .CEINMODE(1'b1),             // 1-bit input: Clock enable input for INMODEREG
-      .CEM(1'b0),                       // 1-bit input: Clock enable input for MREG
-      .CEP(1'b0),                       // 1-bit input: Clock enable input for PREG
-      .RSTA(1'b0),                     // 1-bit input: Reset input for AREG
-      .RSTALLCARRYIN(1'b0),   // 1-bit input: Reset input for CARRYINREG
-      .RSTALUMODE(1'b0),         // 1-bit input: Reset input for ALUMODEREG
-      .RSTB(1'b0),                     // 1-bit input: Reset input for BREG
-      .RSTC(1'b0),                     // 1-bit input: Reset input for CREG
-      .RSTCTRL(1'b0),               // 1-bit input: Reset input for OPMODEREG and CARRYINSELREG
-      .RSTD(1'b0),                     // 1-bit input: Reset input for DREG and ADREG
-      .RSTINMODE(1'b0),           // 1-bit input: Reset input for INMODEREG
-      .RSTM(reset_i),                     // 1-bit input: Reset input for MREG
-      .RSTP(reset_i)                      // 1-bit input: Reset input for PREG
-);
-
 endmodule

Datei-Diff unterdrückt, da er zu groß ist
+ 1406 - 0
S5443_M/S5443.srcs/sources_1/new/S5243Top.v


+ 9 - 9
S5443_M/S5443.srcs/sources_1/new/S5443Top.v

@@ -698,15 +698,15 @@ ExternalDspInterface
 	
 	.OscDataRdFlag_o	(oscDataRdFlag),
 	
-	.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		(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),		
 	
 	.Mosi_o				(adcInitMosi),
 	.Sck_o				(adcInitSck),

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

@@ -72,8 +72,8 @@ module S5443TopPulseProfileTb;
 	//COMMANDS	FOR REG_MAP
 	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'h63,8'h0};
+	// parameter	[31:0]	MeasCmd 		=	{8'h11,8'h0,8'h53,8'h0};
+	parameter	[31:0]	MeasCmd =	{8'h11,8'h3e,8'h63,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};

+ 41 - 19
S5443_M/S5443.srcs/sources_1/new/S5443TopSpectrumTb.v

@@ -72,7 +72,7 @@ module S5443TopSpectrumTb;
 	localparam	[1:0]	CURRADCCHANNEL	=	2'b0;
 	//COMMANDS	FOR REG_MAP
 	parameter	[31:0]	MeasCmdBypass	=	{8'h11,8'h0,8'h63,8'h1};
-	parameter	[31:0]	MeasCmdFft 		=	{8'h11,8'h0,8'h63,7'h2,1'b1};
+	parameter	[31:0]	MeasCmdFft 		=	{8'h11,8'h0,8'h63,7'h1,1'b1};
 	parameter	[31:0]	MeasCmd 		=	{8'h11,8'h0,8'h53,8'h0};
 	// parameter	[31:0]	MeasCmd =	{8'h11,8'h3e,8'h63,8'h0};
 	parameter	[31:0]	AdcCtrl =	{8'h12,24'h2};
@@ -199,6 +199,9 @@ module S5443TopSpectrumTb;
 	wire	trig0R;
     wire	trig1R;
 	
+	// wire	[13:0]	DelpaPulse	=	(tb_cnt>=4508	&	tb_cnt	<=	4518)	?	14'h1fff:14'h0;
+	wire	[13:0]	DelpaPulse	=	(tb_cnt==4508)	?	14'h1fff:14'h0;
+		
 	assign	trig0R	=	trig0;
     assign	trig1R	=	trig1;
 	
@@ -208,6 +211,7 @@ module S5443TopSpectrumTb;
 	always	#(14.285714285714/2) Clk70	=	~Clk70;
 	always	#10 clk_i	=	~clk_i;
 	always	#(24.390243902439/2)	Clk41	=	~Clk41;
+
 	
 	wire	sck_i;	
 //==========================================================================================
@@ -256,6 +260,38 @@ end
 wire	Adc1DataDa0P;
 wire	Adc1DataDa1P;
 
+reg [13:0] Data_i;
+real pi = 3.14159265358;
+real phase = 0;
+real phaseInc = 0.001;
+real signal;
+always @ (posedge Clk50)
+	begin
+		if (tb_cnt >= 4505)
+			begin
+				phase = phase + phaseInc;
+				phaseInc <= phaseInc + 0.0005;
+				signal = $sin(2*pi*phase);
+				Data_i = 2**12 * signal;
+			end
+		else
+			Data_i = 0;
+	end
+
+integer handle1;
+reg[7:0]	myVar;
+
+initial	begin
+
+handle1 = $fopen("InputSignal.txt");
+$fdisplay(handle1,"Chirp signal samples");
+	if	(tb_cnt>=4500	&	tb_cnt<=5000)	begin
+		$fdisplayh(handle1,Data_i);
+	end
+$fclose(handle1);
+
+end
+		
 wire	[31:0]	test	=	32'h2351eb85;
 // wire	[31:0]	test	=	32'h40000000;
 CordicNco		
@@ -350,7 +386,8 @@ S5443Top MasterFpga
 	.DspReadyForRx_i		(1'b0),
 	.DspReadyForRxToFpgaS_o	(),
 	.AmpEn_o				(),	//	0-adc1ChA 1-adc1ChB 2-adc2ChA 3-adc2ChB
-	.AdcData_i				(sin_value[17-:14])
+	// .AdcData_i				(sin_value[17-:14])
+	.AdcData_i			(DelpaPulse)
 	// .AdcData_i			(Data_i)
 );
 
@@ -367,6 +404,7 @@ wire	txWork	=	tb_cnt	>=	23;
 wire	txStop	=	(cmdCnt	>=	251);
 
 
+
 reg	[6:0]	txCnt;
 reg	[3:0]	pauseCnt;
 
@@ -628,23 +666,7 @@ always @(*) begin
 	endcase
 end
 
-	reg [13:0] Data_i;
-	real pi = 3.14159265358;
-	real phase = 0;
-	real phaseInc = 0.001;
-	real signal;
-	always @ (posedge Clk50)
-		begin
-			if (tb_cnt >= 4505)
-				begin
-					phase = phase + phaseInc;
-					phaseInc <= phaseInc + 0.0005;
-					signal = $sin(2*pi*phase);
-					Data_i = 2**12 * signal;
-				end
-			else
-				Data_i = 0;
-		end
+
 		
 endmodule