Sfoglia il codice sorgente

Рабочие коэфициенты децимации 1, 2, 4, 6, 7. Коэфициенты фильтров вычитываются из памяти.

ChStepan 1 anno fa
parent
commit
6297c32148

+ 41 - 4
src/src/FftDataFiltering/DecimFilterWrapper.v

@@ -59,7 +59,10 @@ module	DecimFilterWrapper
 	
 	wire	[39:0]	firData;
 	wire	firDataVal;
-	wire	bypassFlag = (DecimFactor_i==3'd0 | DecimFactor_i==3'd1);
+	// wire	bypassFlag = (DecimFactor_i==3'd0 | DecimFactor_i==3'd1);
+	reg		[2:0]	currDecimFactor;
+	wire	bypassFlag = (currDecimFactor==3'd1);
+	
 	
 	wire	[17:0]	adcExtData	=	{{extendBitNum{Data_i[AdcDataWidth-1]}},Data_i};
 	
@@ -81,13 +84,45 @@ module	DecimFilterWrapper
 //	CODING
 //================================================================================
 
+	always @(posedge Clk_i) begin
+		if (!Rst_i) begin
+			case(DecimFactor_i)
+				3'd0:	begin
+							currDecimFactor <= 3'd1;
+						end
+				3'd1:	begin
+							currDecimFactor <= 3'd1;
+						end
+				3'd2:	begin
+							currDecimFactor <= 3'd2;
+						end
+				3'd3:	begin
+							currDecimFactor <= 3'd4;
+						end
+				3'd4:	begin
+							currDecimFactor <= 3'd4;
+						end
+				3'd5:	begin
+							currDecimFactor <= 3'd6;
+						end
+				3'd6:	begin
+							currDecimFactor <= 3'd6;
+						end
+				3'd7:	begin
+							currDecimFactor <= 3'd7;
+						end
+			endcase
+		end
+	end
+	
 RomCtrl	RomCtrl
 (
 	.Clk_i		(Clk_i),
 	.Rst_i		(Rst_i),
 	.OscWind_i	(DataVal_i),
 	.CoefDataVal_o	(coefDataVal),
-	.DecimFactor_i	(DecimFactor_i),
+	// .DecimFactor_i	(DecimFactor_i),
+	.DecimFactor_i	(currDecimFactor),
 	.CoefAddr_o	(coefAddr)
 );
 
@@ -100,7 +135,8 @@ systolicFilter DataFitler (
 	.Clk_i(Clk_i), 
 	.Rst_i(Rst_i), 
 	.CoefData_i(coefData),
-	.DecimFactor_i(DecimFactor_i),
+	// .DecimFactor_i(DecimFactor_i),
+	.DecimFactor_i(currDecimFactor),
 	.CoefDataVal_i(coefDataVal),
 	.Data_i(adcExtData), 
 	.DataNd_i(oscWindVal), 
@@ -118,7 +154,8 @@ decimBlock
 		(
 			.Clk_i			(Clk_i),
 			.Rst_i			(Rst_i),
-			.DecimFactor_i	(DecimFactor_i),
+			// .DecimFactor_i	(DecimFactor_i),
+			.DecimFactor_i	(currDecimFactor),
 			.Data_i			(filteredData),
 			.DataNd_i		(filteredDataVal),
 			.Data_o			(decimData),

+ 20 - 16
src/src/FftDataFiltering/RomCtrl.v

@@ -21,12 +21,10 @@
 module RomCtrl
 #(	
 	parameter	OutWidth	=	9,
-	parameter BaseAddrR2 = 0,
-	parameter BaseAddrR3 = 64,
-	parameter BaseAddrR4 = 70,
-	parameter BaseAddrR5 = 105,
-	parameter BaseAddrR6 = 140,
-	parameter BaseAddrR7 = 175
+	parameter [8:0] BaseAddrR2 = 9'd0,
+	parameter [8:0] BaseAddrR4 = 9'd64,
+	parameter [8:0] BaseAddrR6 = 9'd128,
+	parameter [8:0] BaseAddrR7 = 9'd192
 )
 (
 	input Clk_i,
@@ -96,15 +94,18 @@ end
 always @(posedge Clk_i) begin
 	if (!Rst_i) begin
 		case (DecimFactor_i) 
-			1:	begin
-					currMaxAddr <= 9'd63;
-				end
 			2:	begin
 					currMaxAddr <= 9'd63;
 				end
-			3:	begin
+			4:	begin
 					currMaxAddr <= 9'd127;
 				end
+			6:	begin
+					currMaxAddr <= 9'd191;
+				end
+			7:	begin
+					currMaxAddr <= 9'd255;
+				end
 		endcase
 	end else begin
 		currMaxAddr <= 0;
@@ -149,14 +150,17 @@ always @(posedge Clk_i) begin
 			coefAddr<=coefAddr+1;
 		end else begin
 			case (DecimFactor_i) 
-				1:	begin
-						coefAddr <= 9'd0;
-					end
 				2:	begin
-						coefAddr <= 9'd0;
+						coefAddr <= BaseAddrR2;
+					end
+				4:	begin
+						coefAddr <= BaseAddrR4;
+					end
+				6:	begin
+						coefAddr <= BaseAddrR6;
 					end
-				3:	begin
-						coefAddr <= 9'd64;
+				7:	begin
+						coefAddr <= BaseAddrR7;
 					end
 			endcase
 		end 

+ 2 - 2
src/src/Sim/BitWidthCalc.m

@@ -18,7 +18,7 @@ Bmax = ceil(log2(((R*M)^N)/R)+B);
 MaxWidthR2 = ceil(log2(((2*M)^N)/2)+B);
 MaxWidthR4 = ceil(log2(((4*M)^N)/4)+B);
 
-ReadFilterCoefsId = fopen('C:\S5243_FFT_REPO\src\src\Sim\R3Test.fcf','r');
+ReadFilterCoefsId = fopen('C:\S5243_FFT_REPO\src\src\Sim\R7Test.fcf','r');
 FilterCoefs = fscanf(ReadFilterCoefsId,FormatSpecR);
 fclose(ReadFilterCoefsId);
 
@@ -27,7 +27,7 @@ CorrValue = 2^18;
 CorrCoeffs = FilterCoefs*CorrValue;
 CorrCoeffs = floor(CorrCoeffs);
 
-WriteFilterCoefsId = fopen('C:\S5243_FFT_REPO\src\src\Sim\R3.txt','w');
+WriteFilterCoefsId = fopen('C:\S5243_FFT_REPO\src\src\Sim\R7.txt','w');
 fprintf(WriteFilterCoefsId,'%d\n', CorrCoeffs);
 fclose(WriteFilterCoefsId);
 

+ 12 - 2
src/src/Sim/DecimFilterWrapperTb.v

@@ -124,11 +124,21 @@ end
 always	@(posedge	Clk50)	begin
 	if	(!Rst)	begin
 		if (tbCnt == 100) begin
-			decimFactor	<= 1;
+			decimFactor	<= 0;
 		end else if (tbCnt == 5400) begin
-			decimFactor	<= 2;
+			decimFactor	<= 1;
 		end else if (tbCnt == 6400) begin
+			decimFactor	<= 2;
+		end else if (tbCnt == 7400) begin
 			decimFactor	<= 3;
+		end else if (tbCnt == 8400) begin
+			decimFactor	<= 4;
+		end else if (tbCnt == 9400) begin
+			decimFactor	<= 5;
+		end else if (tbCnt == 10400) begin
+			decimFactor	<= 6;
+		end else if (tbCnt == 11400) begin
+			decimFactor	<= 7;
 		end
 	end else begin
 	 decimFactor <= 2;

+ 192 - 260
src/src/Sim/FiltersCoeffs.coe

@@ -63,263 +63,195 @@ MEMORY_INITIALIZATION_VECTOR =282,
 1502,
 992,
 282,
--100,
--282,
--481,
--481,
--26,
-984,
-2303,
-3320,
-3340,
-2052,
--97,
--1976,
--2374,
--859,
-1727,
-3589,
-3111,
-127,
--3626,
--5391,
--3288,
-2018,
-7172,
-7999,
-2469,
--7133,
--14541,
--12632,
-2230,
-27222,
-53530,
-70347,
-70347,
-53530,
-27222,
-2230,
--12632,
--14541,
--7133,
-2469,
-7999,
-7172,
-2018,
--3288,
--5391,
--3626,
-127,
-3111,
-3589,
-1727,
--859,
--2374,
--1976,
--97,
-2052,
-3340,
-3320,
-2303,
-984,
--26,
--481,
--481,
--282,
--100;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+-14,
+54,
+214,
+531,
+1022,
+1643,
+2265,
+2693,
+2710,
+2159,
+1030,
+-483,
+-1989,
+-2990,
+-3041,
+-1936,
+151,
+2633,
+4635,
+5257,
+3910,
+616,
+-3848,
+-8044,
+-10211,
+-8784,
+-2919,
+7127,
+19909,
+33060,
+43863,
+49951,
+49951,
+43863,
+33060,
+19909,
+7127,
+-2919,
+-8784,
+-10211,
+-8044,
+-3848,
+616,
+3910,
+5257,
+4635,
+2633,
+151,
+-1936,
+-3041,
+-2990,
+-1989,
+-483,
+1030,
+2159,
+2710,
+2693,
+2265,
+1643,
+1022,
+531,
+214,
+54,
+-14,
+57,
+121,
+232,
+388,
+587,
+817,
+1054,
+1261,
+1393,
+1398,
+1225,
+834,
+204,
+-657,
+-1705,
+-2857,
+-3991,
+-4957,
+-5585,
+-5704,
+-5165,
+-3858,
+-1735,
+1180,
+4782,
+8885,
+13240,
+17548,
+21494,
+24772,
+27119,
+28344,
+28344,
+27119,
+24772,
+21494,
+17548,
+13240,
+8885,
+4782,
+1180,
+-1735,
+-3858,
+-5165,
+-5704,
+-5585,
+-4957,
+-3991,
+-2857,
+-1705,
+-657,
+204,
+834,
+1225,
+1398,
+1393,
+1261,
+1054,
+817,
+587,
+388,
+232,
+121,
+57,
+25,
+-3,
+-31,
+-88,
+-184,
+-330,
+-536,
+-808,
+-1147,
+-1545,
+-1986,
+-2446,
+-2888,
+-3265,
+-3526,
+-3611,
+-3463,
+-3029,
+-2265,
+-1142,
+348,
+2191,
+4348,
+6755,
+9325,
+11954,
+14522,
+16906,
+18987,
+20655,
+21821,
+22420,
+22420,
+21821,
+20655,
+18987,
+16906,
+14522,
+11954,
+9325,
+6755,
+4348,
+2191,
+348,
+-1142,
+-2265,
+-3029,
+-3463,
+-3611,
+-3526,
+-3265,
+-2888,
+-2446,
+-1986,
+-1545,
+-1147,
+-808,
+-536,
+-330,
+-184,
+-88,
+-31,
+-3,
+25;

+ 64 - 0
src/src/Sim/R4.txt

@@ -0,0 +1,64 @@
+-14
+54
+214
+531
+1022
+1643
+2265
+2693
+2710
+2159
+1030
+-483
+-1989
+-2990
+-3041
+-1936
+151
+2633
+4635
+5257
+3910
+616
+-3848
+-8044
+-10211
+-8784
+-2919
+7127
+19909
+33060
+43863
+49951
+49951
+43863
+33060
+19909
+7127
+-2919
+-8784
+-10211
+-8044
+-3848
+616
+3910
+5257
+4635
+2633
+151
+-1936
+-3041
+-2990
+-1989
+-483
+1030
+2159
+2710
+2693
+2265
+1643
+1022
+531
+214
+54
+-14

+ 67 - 0
src/src/Sim/R4Test.fcf

@@ -0,0 +1,67 @@
+-0.0000514984130859375                                                         
+ 0.00020599365234375                                                           
+ 0.00081634521484375                                                           
+ 0.002025604248046875                                                          
+ 0.0039005279541015625                                                         
+ 0.006267547607421875                                                          
+ 0.008640289306640625                                                          
+ 0.010272979736328125                                                          
+ 0.01033782958984375                                                           
+ 0.008235931396484375                                                          
+ 0.00392913818359375                                                           
+-0.0018405914306640625                                                         
+-0.0075855255126953125                                                         
+-0.0114040374755859375                                                         
+-0.0115985870361328125                                                         
+-0.0073833465576171875                                                         
+ 0.000576019287109375                                                          
+ 0.010044097900390625                                                          
+ 0.0176830291748046875                                                         
+ 0.0200557708740234375                                                         
+ 0.01491546630859375                                                           
+ 0.002349853515625                                                             
+-0.014678955078125                                                             
+-0.0306835174560546875                                                         
+-0.038951873779296875                                                          
+-0.03350830078125                                                              
+-0.0111331939697265625                                                         
+ 0.0271892547607421875                                                         
+ 0.075946807861328125                                                          
+ 0.1261157989501953125                                                         
+ 0.167324066162109375                                                          
+ 0.190547943115234375                                                          
+ 0.190547943115234375                                                          
+ 0.167324066162109375                                                          
+ 0.1261157989501953125                                                         
+ 0.075946807861328125                                                          
+ 0.0271892547607421875                                                         
+-0.0111331939697265625                                                         
+-0.03350830078125                                                              
+-0.038951873779296875                                                          
+-0.0306835174560546875                                                         
+-0.014678955078125                                                             
+ 0.002349853515625                                                             
+ 0.01491546630859375                                                           
+ 0.0200557708740234375                                                         
+ 0.0176830291748046875                                                         
+ 0.010044097900390625                                                          
+ 0.000576019287109375                                                          
+-0.0073833465576171875                                                         
+-0.0115985870361328125                                                         
+-0.0114040374755859375                                                         
+-0.0075855255126953125                                                         
+-0.0018405914306640625                                                         
+ 0.00392913818359375                                                           
+ 0.008235931396484375                                                          
+ 0.01033782958984375                                                           
+ 0.010272979736328125                                                          
+ 0.008640289306640625                                                          
+ 0.006267547607421875                                                          
+ 0.0039005279541015625                                                         
+ 0.002025604248046875                                                          
+ 0.00081634521484375                                                           
+ 0.00020599365234375                                                           
+-0.0000514984130859375                                                         
+
+                                                                              
+

+ 64 - 0
src/src/Sim/R6.txt

@@ -0,0 +1,64 @@
+57
+121
+232
+388
+587
+817
+1054
+1261
+1393
+1398
+1225
+834
+204
+-657
+-1705
+-2857
+-3991
+-4957
+-5585
+-5704
+-5165
+-3858
+-1735
+1180
+4782
+8885
+13240
+17548
+21494
+24772
+27119
+28344
+28344
+27119
+24772
+21494
+17548
+13240
+8885
+4782
+1180
+-1735
+-3858
+-5165
+-5704
+-5585
+-4957
+-3991
+-2857
+-1705
+-657
+204
+834
+1225
+1398
+1393
+1261
+1054
+817
+587
+388
+232
+121
+57

+ 67 - 0
src/src/Sim/R6Test.fcf

@@ -0,0 +1,67 @@
+ 0.0002193450927734375                                                         
+ 0.00046253204345703125                                                        
+ 0.000885009765625                                                             
+ 0.00148105621337890625                                                        
+ 0.0022411346435546875                                                         
+ 0.00311946868896484375                                                        
+ 0.0040225982666015625                                                         
+ 0.00481319427490234375                                                        
+ 0.0053157806396484375                                                         
+ 0.00533390045166015625                                                        
+ 0.00467395782470703125                                                        
+ 0.00318145751953125                                                           
+ 0.0007781982421875                                                            
+-0.00250530242919921875                                                        
+-0.0065021514892578125                                                         
+-0.01089572906494140625                                                        
+-0.01522350311279296875                                                        
+-0.01890850067138671875                                                        
+-0.0213031768798828125                                                         
+-0.02175807952880859375                                                        
+-0.01970195770263671875                                                        
+-0.01471710205078125                                                           
+-0.0066165924072265625                                                         
+ 0.00450420379638671875                                                        
+ 0.01824188232421875                                                           
+ 0.0338954925537109375                                                         
+ 0.05050754547119140625                                                        
+ 0.06694316864013671875                                                        
+ 0.0819950103759765625                                                         
+ 0.0944995880126953125                                                         
+ 0.10345363616943359375                                                        
+ 0.10812473297119140625                                                        
+ 0.10812473297119140625                                                        
+ 0.10345363616943359375                                                        
+ 0.0944995880126953125                                                         
+ 0.0819950103759765625                                                         
+ 0.06694316864013671875                                                        
+ 0.05050754547119140625                                                        
+ 0.0338954925537109375                                                         
+ 0.01824188232421875                                                           
+ 0.00450420379638671875                                                        
+-0.0066165924072265625                                                         
+-0.01471710205078125                                                           
+-0.01970195770263671875                                                        
+-0.02175807952880859375                                                        
+-0.0213031768798828125                                                         
+-0.01890850067138671875                                                        
+-0.01522350311279296875                                                        
+-0.01089572906494140625                                                        
+-0.0065021514892578125                                                         
+-0.00250530242919921875                                                        
+ 0.0007781982421875                                                            
+ 0.00318145751953125                                                           
+ 0.00467395782470703125                                                        
+ 0.00533390045166015625                                                        
+ 0.0053157806396484375                                                         
+ 0.00481319427490234375                                                        
+ 0.0040225982666015625                                                         
+ 0.00311946868896484375                                                        
+ 0.0022411346435546875                                                         
+ 0.00148105621337890625                                                        
+ 0.000885009765625                                                             
+ 0.00046253204345703125                                                        
+ 0.0002193450927734375                                                         
+
+                                                                              
+

+ 64 - 0
src/src/Sim/R7.txt

@@ -0,0 +1,64 @@
+25
+-3
+-31
+-88
+-184
+-330
+-536
+-808
+-1147
+-1545
+-1986
+-2446
+-2888
+-3265
+-3526
+-3611
+-3463
+-3029
+-2265
+-1142
+348
+2191
+4348
+6755
+9325
+11954
+14522
+16906
+18987
+20655
+21821
+22420
+22420
+21821
+20655
+18987
+16906
+14522
+11954
+9325
+6755
+4348
+2191
+348
+-1142
+-2265
+-3029
+-3463
+-3611
+-3526
+-3265
+-2888
+-2446
+-1986
+-1545
+-1147
+-808
+-536
+-330
+-184
+-88
+-31
+-3
+25

+ 67 - 0
src/src/Sim/R7Test.fcf

@@ -0,0 +1,67 @@
+ 0.00009632110595703125                                                        
+-0.000011444091796875                                                          
+-0.00011730194091796875                                                        
+-0.0003337860107421875                                                         
+-0.0006999969482421875                                                         
+-0.00125885009765625                                                           
+-0.002044677734375                                                             
+-0.003082275390625                                                             
+-0.00437259674072265625                                                        
+-0.00589084625244140625                                                        
+-0.00757598876953125                                                           
+-0.00932979583740234375                                                        
+-0.0110149383544921875                                                         
+-0.012454986572265625                                                          
+-0.01344776153564453125                                                        
+-0.0137729644775390625                                                         
+-0.01320934295654296875                                                        
+-0.0115528106689453125                                                         
+-0.0086383819580078125                                                         
+-0.00435543060302734375                                                        
+ 0.0013275146484375                                                            
+ 0.008358001708984375                                                          
+ 0.0165863037109375                                                            
+ 0.02576923370361328125                                                        
+ 0.03557491302490234375                                                        
+ 0.04560089111328125                                                           
+ 0.05539703369140625                                                           
+ 0.06449413299560546875                                                        
+ 0.0724315643310546875                                                         
+ 0.07879543304443359375                                                        
+ 0.08324146270751953125                                                        
+ 0.0855274200439453125                                                         
+ 0.0855274200439453125                                                         
+ 0.08324146270751953125                                                        
+ 0.07879543304443359375                                                        
+ 0.0724315643310546875                                                         
+ 0.06449413299560546875                                                        
+ 0.05539703369140625                                                           
+ 0.04560089111328125                                                           
+ 0.03557491302490234375                                                        
+ 0.02576923370361328125                                                        
+ 0.0165863037109375                                                            
+ 0.008358001708984375                                                          
+ 0.0013275146484375                                                            
+-0.00435543060302734375                                                        
+-0.0086383819580078125                                                         
+-0.0115528106689453125                                                         
+-0.01320934295654296875                                                        
+-0.0137729644775390625                                                         
+-0.01344776153564453125                                                        
+-0.012454986572265625                                                          
+-0.0110149383544921875                                                         
+-0.00932979583740234375                                                        
+-0.00757598876953125                                                           
+-0.00589084625244140625                                                        
+-0.00437259674072265625                                                        
+-0.003082275390625                                                             
+-0.002044677734375                                                             
+-0.00125885009765625                                                           
+-0.0006999969482421875                                                         
+-0.0003337860107421875                                                         
+-0.00011730194091796875                                                        
+-0.000011444091796875                                                          
+ 0.00009632110595703125                                                        
+
+                                                                              
+

+ 69 - 0
src/src/Sim/fir_filter7Test.coe

@@ -0,0 +1,69 @@
+; XILINX CORE Generator(tm)Distributed Arithmetic FIR filter coefficient (.COE) File
+; Generated by MATLAB(R) 9.13 and DSP System Toolbox 9.15.
+; Generated on: 29-Mar-2024 11:09:52
+Radix = 16; 
+Coefficient_Width = 18; 
+CoefData = 00065,
+3fff4,
+3ff85,
+3fea2,
+3fd22,
+3fad8,
+3f7a0,
+3f360,
+3ee17,
+3e7df,
+3e0f8,
+3d9c9,
+3d2e2,
+3ccfc,
+3c8eb,
+3c796,
+3c9e5,
+3d0ae,
+3dc9e,
+3ee29,
+00570,
+0223c,
+043f0,
+0698d,
+091b7,
+0bac8,
+0e2e8,
+1082b,
+128ae,
+142bf,
+154f5,
+15e52,
+15e52,
+154f5,
+142bf,
+128ae,
+1082b,
+0e2e8,
+0bac8,
+091b7,
+0698d,
+043f0,
+0223c,
+00570,
+3ee29,
+3dc9e,
+3d0ae,
+3c9e5,
+3c796,
+3c8eb,
+3ccfc,
+3d2e2,
+3d9c9,
+3e0f8,
+3e7df,
+3ee17,
+3f360,
+3f7a0,
+3fad8,
+3fd22,
+3fea2,
+3ff85,
+3fff4,
+00065;