소스 검색

Пересчитаны фильтры. Изменена структура проекта.

ChStepan 1 년 전
부모
커밋
1ebcf5ad15

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 23 - 96
src/constrs/S5243Top.xdc


+ 5 - 3
src/src/Sim/BitWidthCalc.m

@@ -6,11 +6,13 @@ FormatSpecR = '%f';
 FormatSpecW = '%X\n';
 %FormatSpecW = '%h\n';
 
-
+MaxArg = 2^32;
 Fc = 3;
 Fs = 50;
 
 Fnqst = (Fs/R)/2
+Ftw = dec2hex(int32(MaxArg*(Fc/Fs)))
+
 
 Bmax = ceil(log2(((R*M)^N)/R)+B);
 MaxWidthR2 = ceil(log2(((2*M)^N)/2)+B);
@@ -23,8 +25,8 @@ fclose(ReadFilterCoefsId);
 CorrValue = 2^17;
 
 CorrCoeffs = FilterCoefs*CorrValue;
-CorrCoeffs = int32(CorrCoeffs);
+CorrCoeffs = floor(CorrCoeffs);
 
 WriteFilterCoefsId = fopen('C:\S5243_FFT_REPO\src\src\Sim\untitled.txt','w');
-fprintf(WriteFilterCoefsId,'%X\n', CorrCoeffs);
+fprintf(WriteFilterCoefsId,'%d\n', CorrCoeffs);
 fclose(WriteFilterCoefsId);

+ 64 - 64
src/src/Sim/CoeffsForR2.vh

@@ -1,67 +1,67 @@
 
 wire signed [17:0] coeffForR2[0:CoeffCount-1];
 
-assign coeffForR2[0]  = 18'h0008d;
-assign coeffForR2[1]  = 18'h001f0;
-assign coeffForR2[2]  = 18'h002ef;
-assign coeffForR2[3]  = 18'h00120;
-assign coeffForR2[4]  = 18'h3fc41;
-assign coeffForR2[5]  = 18'h3f874;
-assign coeffForR2[6]  = 18'h3fa4a;
-assign coeffForR2[7]  = 18'h00000;
-assign coeffForR2[8]  = 18'h00252;
-assign coeffForR2[9]  = 18'h3fe55;
-assign coeffForR2[10] = 18'h3fab0;
-assign coeffForR2[11] = 18'h3fe2e;
-assign coeffForR2[12] = 18'h0044b;
-assign coeffForR2[13] = 18'h002fc;
-assign coeffForR2[14] = 18'h3fb57;
-assign coeffForR2[15] = 18'h3f9f8;
-assign coeffForR2[16] = 18'h002dd;
-assign coeffForR2[17] = 18'h00844;
-assign coeffForR2[18] = 18'h3ff94;
-assign coeffForR2[19] = 18'h3f566;
-assign coeffForR2[20] = 18'h3fc25;
-assign coeffForR2[21] = 18'h00bbf;
-assign coeffForR2[22] = 18'h00999;
-assign coeffForR2[23] = 18'h3f498;
-assign coeffForR2[24] = 18'h3ee98;
-assign coeffForR2[25] = 18'h00846;
-assign coeffForR2[26] = 18'h01c05;
-assign coeffForR2[27] = 18'h3ffda;
-assign coeffForR2[28] = 18'h3d2d7;
-assign coeffForR2[29] = 18'h3e9fe;
-assign coeffForR2[30] = 18'h05ddf;
-assign coeffForR2[31] = 18'h0d15d;
-assign coeffForR2[32] = 18'h0d15d;
-assign coeffForR2[33] = 18'h05ddf;
-assign coeffForR2[34] = 18'h3e9fe;
-assign coeffForR2[35] = 18'h3d2d7;
-assign coeffForR2[36] = 18'h3ffda;
-assign coeffForR2[37] = 18'h01c05;
-assign coeffForR2[38] = 18'h00846;
-assign coeffForR2[39] = 18'h3ee98;
-assign coeffForR2[40] = 18'h3f498;
-assign coeffForR2[41] = 18'h00999;
-assign coeffForR2[42] = 18'h00bbf;
-assign coeffForR2[43] = 18'h3fc25;
-assign coeffForR2[44] = 18'h3f566;
-assign coeffForR2[45] = 18'h3ff94;
-assign coeffForR2[46] = 18'h00844;
-assign coeffForR2[47] = 18'h002dd;
-assign coeffForR2[48] = 18'h3f9f8;
-assign coeffForR2[49] = 18'h3fb57;
-assign coeffForR2[50] = 18'h002fc;
-assign coeffForR2[51] = 18'h0044b;
-assign coeffForR2[52] = 18'h3fe2e;
-assign coeffForR2[53] = 18'h3fab0;
-assign coeffForR2[54] = 18'h3fe55;
-assign coeffForR2[55] = 18'h00252;
-assign coeffForR2[56] = 18'h00000;
-assign coeffForR2[57] = 18'h3fa4a;
-assign coeffForR2[58] = 18'h3f874;
-assign coeffForR2[59] = 18'h3fc41;
-assign coeffForR2[60] = 18'h00120;
-assign coeffForR2[61] = 18'h002ef;
-assign coeffForR2[62] = 18'h001f0;
-assign coeffForR2[63] = 18'h0008d;
+assign coeffForR2[0]  =141;
+assign coeffForR2[1]  =496;
+assign coeffForR2[2]  =751;
+assign coeffForR2[3]  =288;
+assign coeffForR2[4]  =-959;
+assign coeffForR2[5]  =-1932;
+assign coeffForR2[6]  =-1462;
+assign coeffForR2[7]  =0;
+assign coeffForR2[8]  =594;
+assign coeffForR2[9]  =-427;
+assign coeffForR2[10] =-1360;
+assign coeffForR2[11] =-466;
+assign coeffForR2[12] =1099;
+assign coeffForR2[13] =764;
+assign coeffForR2[14] =-1193;
+assign coeffForR2[15] =-1544;
+assign coeffForR2[16] =733;
+assign coeffForR2[17] =2116;
+assign coeffForR2[18] =-108;
+assign coeffForR2[19] =-2714;
+assign coeffForR2[20] =-987;
+assign coeffForR2[21] =3007;
+assign coeffForR2[22] =2457;
+assign coeffForR2[23] =-2920;
+assign coeffForR2[24] =-4456;
+assign coeffForR2[25] =2118;
+assign coeffForR2[26] =7173;
+assign coeffForR2[27] =-38;
+assign coeffForR2[28] =-11561;
+assign coeffForR2[29] =-5634;
+assign coeffForR2[30] =24031;
+assign coeffForR2[31] =53597;
+assign coeffForR2[32] =53597;
+assign coeffForR2[33] =24031;
+assign coeffForR2[34] =-5634;
+assign coeffForR2[35] =-11561;
+assign coeffForR2[36] =-38;
+assign coeffForR2[37] =7173;
+assign coeffForR2[38] =2118;
+assign coeffForR2[39] =-4456;
+assign coeffForR2[40] =-2920;
+assign coeffForR2[41] =2457;
+assign coeffForR2[42] =3007;
+assign coeffForR2[43] =-987;
+assign coeffForR2[44] =-2714;
+assign coeffForR2[45] =-108;
+assign coeffForR2[46] =2116;
+assign coeffForR2[47] =733;
+assign coeffForR2[48] =-1544;
+assign coeffForR2[49] =-1193;
+assign coeffForR2[50] =764;
+assign coeffForR2[51] =1099;
+assign coeffForR2[52] =-466;
+assign coeffForR2[53] =-1360;
+assign coeffForR2[54] =-427;
+assign coeffForR2[55] =594;
+assign coeffForR2[56] =0;
+assign coeffForR2[57] =-1462;
+assign coeffForR2[58] =-1932;
+assign coeffForR2[59] =-959;
+assign coeffForR2[60] =288;
+assign coeffForR2[61] =751;
+assign coeffForR2[62] =496;
+assign coeffForR2[63] =141;

+ 6 - 4
src/src/Sim/DecimFilterWrapperTb.v

@@ -64,8 +64,9 @@ parameter	LsbForR1	=	10'd18;
 parameter	LsbForR2	=	10'd18;
 parameter	LsbForR4	=	10'd18;
 	
-parameter	[31:0]	Nco1PhaseInc	=	32'h0f5c28f5;	
-parameter	[31:0]	Nco2PhaseInc	=	32'h428f5c28;	
+parameter	[31:0]	Nco1PhaseInc	=	32'ha0000000;	
+// parameter	[31:0]	Nco2PhaseInc	=	32'h428f5c28;	
+parameter	[31:0]	Nco2PhaseInc	=	32'h0F5C28F6;	
 parameter	[31:0]	Nco3PhaseInc	=	32'h428f5c28;	
 
 initial begin
@@ -220,7 +221,7 @@ DecimFilter
 (
 	.Clk_i			(Clk50),
 	.DecimFactor_i	(decimFactor),
-	.Rst_i			(Rst|!oscWind),
+	.Rst_i			(Rst),
 	.OscWind_i		(oscWind),
 	
 	.IfFtwL_i		(24'h51eb85),
@@ -228,7 +229,8 @@ DecimFilter
 	
 	// .AdcData_i		(sinAdd),
 	// .AdcData_i		(adcDataMixedCut),
-	.AdcData_i		(adcData),
+	// .AdcData_i		(adcData),
+	.AdcData_i		(ncoSin2),
 	
 	.FilteredAdcDataI_o	(filteredDataOut),
 	.FilteredAdcDataQ_o	(),

+ 64 - 46
src/src/Sim/R2Test.fcf

@@ -1,49 +1,67 @@
- 0.00232696533203125                                                           
- 0.00856781005859375                                                           
- 0.01430511474609375                                                           
- 0.0113067626953125                                                            
--0.00147247314453125                                                           
--0.01067352294921875                                                           
--0.00383758544921875                                                           
- 0.0105438232421875                                                            
- 0.0098724365234375                                                            
--0.008392333984375                                                             
--0.0169525146484375                                                            
- 0.00243377685546875                                                           
- 0.02350616455078125                                                           
- 0.00861358642578125                                                           
--0.0272979736328125                                                            
--0.02559661865234375                                                           
- 0.0251312255859375                                                            
- 0.05007171630859375                                                           
--0.01154327392578125                                                           
--0.08837890625                                                                 
--0.0316009521484375                                                            
- 0.1885223388671875                                                            
- 0.39971923828125                                                              
- 0.39971923828125                                                              
- 0.1885223388671875                                                            
--0.0316009521484375                                                            
--0.08837890625                                                                 
--0.01154327392578125                                                           
- 0.05007171630859375                                                           
- 0.0251312255859375                                                            
--0.02559661865234375                                                           
--0.0272979736328125                                                            
- 0.00861358642578125                                                           
- 0.02350616455078125                                                           
- 0.00243377685546875                                                           
--0.0169525146484375                                                            
--0.008392333984375                                                             
- 0.0098724365234375                                                            
- 0.0105438232421875                                                            
--0.00383758544921875                                                           
--0.01067352294921875                                                           
--0.00147247314453125                                                           
- 0.0113067626953125                                                            
- 0.01430511474609375                                                           
- 0.00856781005859375                                                           
- 0.00232696533203125                                                           
+ 0.00107574462890625                                                           
+ 0.0037841796875                                                               
+ 0.00572967529296875                                                           
+ 0.002197265625                                                                
+-0.00731658935546875                                                           
+-0.014739990234375                                                             
+-0.0111541748046875                                                            
+ 0                                                                             
+ 0.0045318603515625                                                            
+-0.00325775146484375                                                           
+-0.0103759765625                                                               
+-0.0035552978515625                                                            
+ 0.00838470458984375                                                           
+ 0.005828857421875                                                             
+-0.00910186767578125                                                           
+-0.01177978515625                                                              
+ 0.00559234619140625                                                           
+ 0.016143798828125                                                             
+-0.000823974609375                                                             
+-0.0207061767578125                                                            
+-0.00753021240234375                                                           
+ 0.02294158935546875                                                           
+ 0.01874542236328125                                                           
+-0.02227783203125                                                              
+-0.03399658203125                                                              
+ 0.0161590576171875                                                            
+ 0.05472564697265625                                                           
+-0.0002899169921875                                                            
+-0.08820343017578125                                                           
+-0.0429840087890625                                                            
+ 0.18334197998046875                                                           
+ 0.40891265869140625                                                           
+ 0.40891265869140625                                                           
+ 0.18334197998046875                                                           
+-0.0429840087890625                                                            
+-0.08820343017578125                                                           
+-0.0002899169921875                                                            
+ 0.05472564697265625                                                           
+ 0.0161590576171875                                                            
+-0.03399658203125                                                              
+-0.02227783203125                                                              
+ 0.01874542236328125                                                           
+ 0.02294158935546875                                                           
+-0.00753021240234375                                                           
+-0.0207061767578125                                                            
+-0.000823974609375                                                             
+ 0.016143798828125                                                             
+ 0.00559234619140625                                                           
+-0.01177978515625                                                              
+-0.00910186767578125                                                           
+ 0.005828857421875                                                             
+ 0.00838470458984375                                                           
+-0.0035552978515625                                                            
+-0.0103759765625                                                               
+-0.00325775146484375                                                           
+ 0.0045318603515625                                                            
+ 0                                                                             
+-0.0111541748046875                                                            
+-0.014739990234375                                                             
+-0.00731658935546875                                                           
+ 0.002197265625                                                                
+ 0.00572967529296875                                                           
+ 0.0037841796875                                                               
+ 0.00107574462890625                                                           
 
                                                                               
 

+ 3 - 2
src/src/Sim/firFilter/systolicFilter.v

@@ -1,5 +1,5 @@
 module systolicFilter
-#(	parameter	filteredDataWidth	=	38,
+#(	parameter	filteredDataWidth	=	35,
 	parameter	inOutDataWidth	=	18,
 	parameter	decimCntWidth	=	7,
 	parameter	CoeffCount		=	64
@@ -28,6 +28,7 @@ module systolicFilter
 		.Data_i(Data_i),
 		.DecimFactor_i(DecimFactor_i),
 		.DataNd_i(DataNd_i),
+		// .DataNd_i(1'b1),
 		.Data_o(outData),
 		.DataValid_o(outDataValid)
 	);
@@ -41,7 +42,7 @@ module systolicFilter
 	(
 		.Rst_i(Rst_i),
 		.Clk_i(Clk_i),
-		.Data_i(outData[37:0]),
+		.Data_i(outData[34:0]),
 		.DataNd_i(outDataValid),
 		.Data_o(Data_o),
 		.DataValid_o(DataValid_o)

+ 47 - 31
src/src/Sim/firFilter/systolicFilterBlockTest.v

@@ -13,21 +13,26 @@ module systolicFilterBlockTest # (
 
 	`include "CoeffsForR2.vh"
 	`include "CoeffsForR3.vh"
-	`include "CoeffsForR4.vh"
-	`include "CoeffsForR5.vh"
-	`include "CoeffsForR6.vh"
-	`include "CoeffsForR7.vh"
+	// `include "CoeffsForR4.vh"
+	// `include "CoeffsForR5.vh"
+	// `include "CoeffsForR6.vh"
+	// `include "CoeffsForR7.vh"
 
 	// wire signed [17:0] coeff[0:CoeffCount-1];
 	reg	 signed [17:0] coeff[0:CoeffCount-1];
 	wire signed [17:0] dataIn = Data_i;
-	reg [3:0] ndShReg;
+	// reg [3:0] ndShReg;
+	reg [CoeffCount-1:0] ndShReg;
+	
+	reg [31:0]	testCnt;
+	
+	wire comRst = (Rst_i|!(DataNd_i|DataValid_o));
 	
 	always @ (posedge Clk_i)
 		if (!Rst_i) begin
-			ndShReg <= {ndShReg[2:0], DataNd_i};
+			ndShReg <= {ndShReg[CoeffCount-2:0], DataNd_i};
 		end else begin
-			ndShReg <= 4'h0;
+			ndShReg <= 0;
 		end
 	
 	reg signed [17:0] inReg0[0:CoeffCount-1];
@@ -35,11 +40,22 @@ module systolicFilterBlockTest # (
 	reg signed [34:0] multResult[0:CoeffCount-1];
 	reg signed [47:0] sumResult[0:CoeffCount-1];
 	
+	always	@(posedge	Clk_i)	begin
+		if	(!Rst_i)	begin
+			if	(DataValid_o)	begin
+				testCnt	<=	testCnt+1;
+			end	else	begin
+				testCnt	<=	0;
+			end
+		end	else	begin
+			testCnt	<=	0;
+		end
+	end
 	genvar i;
 	generate
 		for (i = 0; i < CoeffCount; i = i + 1)begin 
 			always @ (posedge Clk_i) begin
-				if (!Rst_i) begin
+				if (!comRst) begin
 					if (DataNd_i) begin
 						if (i == 0) begin
 							inReg0[i] <= 0;
@@ -50,36 +66,36 @@ module systolicFilterBlockTest # (
 						end
 					end
 				
-					if (ndShReg[0]) begin
+					if (ndShReg[0]|ndShReg[CoeffCount-2]) begin
 						case (DecimFactor_i) 
-							0:	begin
-									multResult[i] <= inReg1[i] * coeffForR2[i];
-								end
-							1:	begin
-									multResult[i] <= inReg1[i] * coeffForR2[i];
-								end
+							// 0:	begin
+									// multResult[i] <= inReg1[i] * coeffForR2[i];
+								// end
+							// 1:	begin
+									// multResult[i] <= inReg1[i] * coeffForR2[i];
+								// end
 							2:	begin
 									multResult[i] <= inReg1[i] * coeffForR2[i];
 								end
 							3:	begin
 									multResult[i] <= inReg1[i] * coeffForR3[i];
 								end
-							4:	begin
-									multResult[i] <= inReg1[i] * coeffForR4[i];
-								end
-							5:	begin
-									multResult[i] <= inReg1[i] * coeffForR5[i];
-								end
-							6:	begin
-									multResult[i] <= inReg1[i] * coeffForR6[i];
-								end
-							7:	begin
-									multResult[i] <= inReg1[i] * coeffForR7[i];
-								end
+							// 4:	begin
+									// multResult[i] <= inReg1[i] * coeffForR4[i];
+								// end
+							// 5:	begin
+									// multResult[i] <= inReg1[i] * coeffForR5[i];
+								// end
+							// 6:	begin
+									// multResult[i] <= inReg1[i] * coeffForR6[i];
+								// end
+							// 7:	begin
+									// multResult[i] <= inReg1[i] * coeffForR7[i];
+								// end
 						endcase
-					end
+					end 
 					
-					if (ndShReg[1]) begin
+					if (ndShReg[1]|ndShReg[CoeffCount-1]) begin
 						if (i == 0) begin
 							sumResult[i] <= multResult[i];
 						end else begin
@@ -96,7 +112,7 @@ module systolicFilterBlockTest # (
 		end
 	endgenerate
 
-	assign Data_o = sumResult[CoeffCount-1];
-	assign DataValid_o = ndShReg[2];
+	assign Data_o = comRst?	48'd0:sumResult[CoeffCount-1];
+	assign DataValid_o = ndShReg[CoeffCount-1];
 
 endmodule

+ 65 - 65
src/src/Sim/fir_filter2.coe

@@ -1,69 +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: 27-Feb-2024 14:18:47
+; Generated on: 05-Mar-2024 17:15:10
 Radix = 16; 
 Coefficient_Width = 18; 
-CoefData = 0008d,
-001f0,
-002ef,
-00120,
-3fc41,
-3f874,
-3fa4a,
-00000,
-00252,
-3fe55,
-3fab0,
-3fe2e,
-0044b,
-002fc,
-3fb57,
-3f9f8,
-002dd,
-00844,
-3ff94,
-3f566,
-3fc25,
-00bbf,
-00999,
-3f498,
-3ee98,
-00846,
-01c05,
-3ffda,
-3d2d7,
-3e9fe,
-05ddf,
-0d15d,
-0d15d,
-05ddf,
-3e9fe,
-3d2d7,
-3ffda,
-01c05,
-00846,
-3ee98,
-3f498,
-00999,
-00bbf,
-3fc25,
-3f566,
-3ff94,
-00844,
-002dd,
-3f9f8,
-3fb57,
-002fc,
-0044b,
-3fe2e,
-3fab0,
-3fe55,
-00252,
-00000,
-3fa4a,
-3f874,
-3fc41,
-00120,
-002ef,
-001f0,
-0008d;
+CoefData = 3ffbf,
+3fe27,
+3fac8,
+3f782,
+3f820,
+3fdef,
+00454,
+0049d,
+3fea2,
+3fa80,
+3fe7e,
+0056a,
+004ad,
+3fc1e,
+3f84c,
+00089,
+009ad,
+00492,
+3f689,
+3f534,
+005fd,
+010e2,
+00189,
+3eaf0,
+3f254,
+014fd,
+01f45,
+3f330,
+3c5ce,
+3f097,
+07d5b,
+10000,
+10000,
+07d5b,
+3f097,
+3c5ce,
+3f330,
+01f45,
+014fd,
+3f254,
+3eaf0,
+00189,
+010e2,
+005fd,
+3f534,
+3f689,
+00492,
+009ad,
+00089,
+3f84c,
+3fc1e,
+004ad,
+0056a,
+3fe7e,
+3fa80,
+3fea2,
+0049d,
+00454,
+3fdef,
+3f820,
+3f782,
+3fac8,
+3fe27,
+3ffbf;

+ 64 - 46
src/src/Sim/untitled.txt

@@ -1,46 +1,64 @@
-131
-463
-753
-5CA
--1.930000e+02
--1.399000e+03
--5.030000e+02
-566
-50E
--1.100000e+03
--2.222000e+03
-13F
-C09
-469
--3.578000e+03
--3.355000e+03
-CDE
-19A3
--1.513000e+03
--1.158400e+04
--4.142000e+03
-6086
-CCA8
-CCA8
-6086
--4.142000e+03
--1.158400e+04
--1.513000e+03
-19A3
-CDE
--3.355000e+03
--3.578000e+03
-469
-C09
-13F
--2.222000e+03
--1.100000e+03
-50E
-566
--5.030000e+02
--1.399000e+03
--1.930000e+02
-5CA
-753
-463
-131
+141
+496
+751
+288
+-959
+-1932
+-1462
+0
+594
+-427
+-1360
+-466
+1099
+764
+-1193
+-1544
+733
+2116
+-108
+-2714
+-987
+3007
+2457
+-2920
+-4456
+2118
+7173
+-38
+-11561
+-5634
+24031
+53597
+53597
+24031
+-5634
+-11561
+-38
+7173
+2118
+-4456
+-2920
+2457
+3007
+-987
+-2714
+-108
+2116
+733
+-1544
+-1193
+764
+1099
+-466
+-1360
+-427
+594
+0
+-1462
+-1932
+-959
+288
+751
+496
+141

+ 9 - 9
src/src/Top/S5243Top.v

@@ -679,15 +679,15 @@ ExternalDspInterface
 	
 	.OscDataRdFlag_o	(oscDataRdFlag),
 	
-	// .Adc1ChT1Data_i		(adc1ChT1Data),	
-	// .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		(adc1ChT1Data),	
+	.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		(sinAdd),	
 	// .Adc1ChR1Data_i		(sinAdd),