Przeglądaj źródła

Модуль генерации синуса и косинуса переписан табличным методом.

Shalambala 2 lat temu
rodzic
commit
6fc3bb255e

+ 70 - 5
S5443_M/S5443.srcs/sources_1/new/InternalDsp/InternalDsp.v

@@ -35,7 +35,8 @@ module InternalDsp
 	parameter	CmdDataRegWith		=	24,
 	parameter	IntermediateWidth	=	18,
 	parameter	CorrAdcDataWidth	=	20,
-	parameter	AccWidth			=	80
+	parameter	AccWidth			=	80,
+	parameter	[8:0]	MaxAddr		=	9'h190
 )
 (
 	input	wire	Clk_i,
@@ -142,6 +143,27 @@ module InternalDsp
 	
 	wire	[WindNcoPhIncWidth-1:0]	ncoPhInc = {ifFtwHReg[0+:WindNcoPhIncWidth-CmdDataRegWith],ifFtwLReg};
 	
+	reg		[8:0]	memAddrFirstTone;
+	wire	[8:0]	memAddrNextFirstTone;
+	wire	[8:0]	memAddrNext_pFirstTone;									//аргументы для расчета следующего значения
+	wire	[9:0]	memAddrNext_mFirstTone;									//аргументы для расчета следующего значения
+	
+	reg		[8:0]	memAddrSecondTone;
+	wire	[8:0]	memAddrNextSecondTone;
+	wire	[8:0]	memAddrNext_pSecondTone;									//аргументы для расчета следующего значения
+	wire	[9:0]	memAddrNext_mSecondTone;									//аргументы для расчета следующего значения
+	
+	wire	[8:0]	addrStepFirstTone	=	9'h50;
+	wire	[8:0]	addrStepSecondTone	=	9'h64;
+	
+	wire	[35:0]	firstToneSinCosValues;
+	wire	[35:0]	secondToneSinCosValues;
+	
+	wire	[17:0]	sinFirstTone	=	firstToneSinCosValues [35:18];			//выделяем из вычитаных данных, значение Cos
+	wire	[17:0]	cosFirstTone	=	firstToneSinCosValues [17:0];			//выделяем из вычитаных данных, значение Sin
+	
+	wire	[17:0]	sinSecondTone	=	secondToneSinCosValues [35:18];			//выделяем из вычитаных данных, значение Cos
+	wire	[17:0]	cosSecondTone	=	secondToneSinCosValues [17:0];			//выделяем из вычитаных данных, значение Sin
 //================================================================================
 //  ASSIGNMENTS
 
@@ -185,6 +207,13 @@ module InternalDsp
 	
 	assign	CalModeDone_o	=	&calDone;
 	
+	assign	memAddrNextFirstTone		=	!memAddrNext_mFirstTone[9]	?	memAddrNext_mFirstTone	:	memAddrNext_pFirstTone;
+	assign	memAddrNext_pFirstTone	=	memAddrFirstTone	+ addrStepFirstTone;
+	assign	memAddrNext_mFirstTone	=	memAddrFirstTone	+ addrStepFirstTone - MaxAddr;
+	
+	assign	memAddrNextSecondTone		=	!memAddrNext_mSecondTone[9]	?	memAddrNext_mSecondTone	:	memAddrNext_pSecondTone;
+	assign	memAddrNext_pSecondTone	=	memAddrSecondTone	+ addrStepSecondTone;
+	assign	memAddrNext_mSecondTone	=	memAddrSecondTone	+ addrStepSecondTone - MaxAddr;
 //================================================================================
 //  INSTANTIATIONS
 
@@ -336,6 +365,36 @@ ncoSecondTone
 	.Val_o		()
 );
 
+always 	@(posedge Clk_i) begin
+	if	(!Rst_i)	begin
+		memAddrFirstTone	<=	memAddrNextFirstTone;
+	end	else	begin
+		memAddrFirstTone	<=	9'b0;
+	end
+end
+
+always 	@(posedge Clk_i) begin
+	if	(!Rst_i)	begin
+		memAddrSecondTone	<=	memAddrNextSecondTone;
+	end	else	begin
+		memAddrSecondTone	<=	9'b0;
+	end
+end
+	
+blk_mem_gen_0 sinCosMemFirstTone
+(
+	.clka	(Clk_i),    // input wire clka
+	.addra	(memAddrFirstTone),  // input wire [8 : 0] addra
+	.douta	(firstToneSinCosValues)  // output wire [35 : 0] douta
+);
+
+blk_mem_gen_0 sinCosMemSecondTone
+(
+	.clka	(Clk_i),    // input wire clka
+	.addra	(memAddrSecondTone),  // input wire [8 : 0] addra
+	.douta	(secondToneSinCosValues)  // output wire [35 : 0] douta
+);
+
 ComplPrng
 #(
 	.DataPrngWidth	(8),
@@ -399,8 +458,11 @@ generate
 			.AverageNoizeLvl_i	(averageNoizeLvl),
 			.AdcData_i			(gatedAdcDataBus[g]),
 			.Wind_i				(wind),
-			.NcoSin_i			(ncoSinFirstTone),
-			.NcoCos_i			(ncoCosFirstTone),	
+			// .NcoSin_i			(ncoSinFirstTone),
+			// .NcoCos_i			(ncoCosFirstTone),
+			
+			.NcoSin_i			(sinFirstTone),
+			.NcoCos_i			(cosFirstTone),	
 			.NormCoef_i			(windNormCoef),
 
 			.CorrResultIm_o		(resultImBus[g]),
@@ -430,8 +492,11 @@ generate
 			.AverageNoizeLvl_i	(averageNoizeLvl),
 			.AdcData_i			(gatedAdcDataBus[g]),
 			.Wind_i				(wind),
-			.NcoSin_i			(ncoSinSecondTone),
-			.NcoCos_i			(ncoCosSecondTone),	
+			// .NcoSin_i			(ncoSinSecondTone),
+			// .NcoCos_i			(ncoCosSecondTone),	
+			
+			.NcoSin_i			(sinSecondTone),
+			.NcoCos_i			(cosSecondTone),	
 			.NormCoef_i			(windNormCoef),
 
 			.CorrResultIm_o		(resultImBus[g+2]),

+ 402 - 0
S5443_M/S5443.srcs/sources_1/new/InternalDsp/sincoscalues.coe

@@ -0,0 +1,402 @@
+memory_initialization_radix=2;
+memory_initialization_vector=
+011111111111111111000000000000000000,
+011111111111101111000000100000001010,
+011111111110111111000001000000010101,
+011111111101101110000001100000011110,
+011111111011111101000010000000100110,
+011111111001101011000010100000101011,
+011111110110111010000011000000101110,
+011111110011101000000011100000101111,
+011111101111110110000100000000101011,
+011111101011100100000100100000100100,
+011111100110110010000101000000011000,
+011111100001100000000101100000000111,
+011111011011101110000101111111110000,
+011111010101011100000110011111010011,
+011111001110101011000110111110110000,
+011111000111011010000111011110000110,
+011110111111101010000111111101010100,
+011110110111011010001000011100011010,
+011110101110101011001000111011010111,
+011110100101011101001001011010001100,
+011110011011110000001001111000110111,
+011110010001100101001010010111011000,
+011110000110111011001010110101101111,
+011101111011110010001011010011111010,
+011101110000001011001011110001111010,
+011101100100000110001100001111101111,
+011101010111100011001100101101010110,
+011101001010100011001101001010110010,
+011100111101000101001101100111111111,
+011100101111001010001110000100111111,
+011100100000110010001110100001110001,
+011100010001111100001110111110010100,
+011100000010101011001111011010101000,
+011011110010111101001111110110101100,
+011011100010110011010000010010100001,
+011011010010001101010000101110000100,
+011011000001001011010001001001010111,
+011010101111101110010001100100011001,
+011010011101110111010001111111001001,
+011010001011100100010010011001100111,
+011001111000110111010010110011110010,
+011001100101110000010011001101101010,
+011001010010001111010011100111001110,
+011000111110010100010100000000011111,
+011000101010000000010100011001011100,
+011000010101010011010100110010000100,
+011000000000001110010101001010010111,
+010111101010110000010101100010010101,
+010111010100111011010101111001111100,
+010110111110101110010110010001001110,
+010110101000001001010110101000001001,
+010110010001001110010110111110101110,
+010101111001111100010111010100111011,
+010101100010010101010111101010110000,
+010101001010010111011000000000001110,
+010100110010000100011000010101010011,
+010100011001011100011000101010000000,
+010100000000011111011000111110010100,
+010011100111001110011001010010001111,
+010011001101101010011001100101110000,
+010010110011110010011001111000110111,
+010010011001100111011010001011100100,
+010001111111001001011010011101110111,
+010001100100011001011010101111101110,
+010001001001010111011011000001001011,
+010000101110000100011011010010001101,
+010000010010100001011011100010110011,
+001111110110101100011011110010111101,
+001111011010101000011100000010101011,
+001110111110010100011100010001111100,
+001110100001110001011100100000110010,
+001110000100111111011100101111001010,
+001101100111111111011100111101000101,
+001101001010110010011101001010100011,
+001100101101010110011101010111100011,
+001100001111101111011101100100000110,
+001011110001111010011101110000001011,
+001011010011111010011101111011110010,
+001010110101101111011110000110111011,
+001010010111011000011110010001100101,
+001001111000110111011110011011110000,
+001001011010001100011110100101011101,
+001000111011010111011110101110101011,
+001000011100011010011110110111011010,
+000111111101010100011110111111101010,
+000111011110000110011111000111011010,
+000110111110110000011111001110101011,
+000110011111010011011111010101011100,
+000101111111110000011111011011101110,
+000101100000000111011111100001100000,
+000101000000011000011111100110110010,
+000100100000100100011111101011100100,
+000100000000101011011111101111110110,
+000011100000101111011111110011101000,
+000011000000101110011111110110111010,
+000010100000101011011111111001101011,
+000010000000100110011111111011111101,
+000001100000011110011111111101101110,
+000001000000010101011111111110111111,
+000000100000001010011111111111101111,
+000000000000000000011111111111111111,
+111111011111110110011111111111101111,
+111110111111101011011111111110111111,
+111110011111100010011111111101101110,
+111101111111011010011111111011111101,
+111101011111010101011111111001101011,
+111100111111010010011111110110111010,
+111100011111010001011111110011101000,
+111011111111010101011111101111110110,
+111011011111011100011111101011100100,
+111010111111101000011111100110110010,
+111010011111111001011111100001100000,
+111010000000010000011111011011101110,
+111001100000101101011111010101011100,
+111001000001010000011111001110101011,
+111000100001111010011111000111011010,
+111000000010101100011110111111101010,
+110111100011100110011110110111011010,
+110111000100101001011110101110101011,
+110110100101110100011110100101011101,
+110110000111001001011110011011110000,
+110101101000101000011110010001100101,
+110101001010010001011110000110111011,
+110100101100000110011101111011110010,
+110100001110000110011101110000001011,
+110011110000010001011101100100000110,
+110011010010101010011101010111100011,
+110010110101001110011101001010100011,
+110010011000000001011100111101000101,
+110001111011000001011100101111001010,
+110001011110001111011100100000110010,
+110001000001101100011100010001111100,
+110000100101011000011100000010101011,
+110000001001010100011011110010111101,
+101111101101011111011011100010110011,
+101111010001111100011011010010001101,
+101110110110101001011011000001001011,
+101110011011100111011010101111101110,
+101110000000110111011010011101110111,
+101101100110011001011010001011100100,
+101101001100001110011001111000110111,
+101100110010010110011001100101110000,
+101100011000110010011001010010001111,
+101011111111100001011000111110010100,
+101011100110100100011000101010000000,
+101011001101111100011000010101010011,
+101010110101101001011000000000001110,
+101010011101101011010111101010110000,
+101010000110000100010111010100111011,
+101001101110110010010110111110101110,
+101001010111110111010110101000001001,
+101001000001010010010110010001001110,
+101000101011000101010101111001111100,
+101000010101010000010101100010010101,
+100111111111110010010101001010010111,
+100111101010101101010100110010000100,
+100111010110000000010100011001011100,
+100111000001101100010100000000011111,
+100110101101110001010011100111001110,
+100110011010010000010011001101101010,
+100110000111001001010010110011110010,
+100101110100011100010010011001100111,
+100101100010001001010001111111001001,
+100101010000010010010001100100011001,
+100100111110110101010001001001010111,
+100100101101110011010000101110000100,
+100100011101001101010000010010100001,
+100100001101000011001111110110101100,
+100011111101010101001111011010101000,
+100011101110000100001110111110010100,
+100011011111001110001110100001110001,
+100011010000110110001110000100111111,
+100011000010111011001101100111111111,
+100010110101011101001101001010110010,
+100010101000011101001100101101010110,
+100010011011111010001100001111101111,
+100010001111110101001011110001111010,
+100010000100001110001011010011111010,
+100001111001000101001010110101101111,
+100001101110011011001010010111011000,
+100001100100010000001001111000110111,
+100001011010100011001001011010001100,
+100001010001010101001000111011010111,
+100001001000100110001000011100011010,
+100001000000010110000111111101010100,
+100000111000100110000111011110000110,
+100000110001010101000110111110110000,
+100000101010100100000110011111010011,
+100000100100010010000101111111110000,
+100000011110100000000101100000000111,
+100000011001001110000101000000011000,
+100000010100011100000100100000100100,
+100000010000001010000100000000101011,
+100000001100011000000011100000101111,
+100000001001000110000011000000101110,
+100000000110010101000010100000101011,
+100000000100000011000010000000100110,
+100000000010010010000001100000011110,
+100000000001000001000001000000010101,
+100000000000010001000000100000001010,
+100000000000000000000000000000000000,
+100000000000010001111111011111110110,
+100000000001000001111110111111101011,
+100000000010010010111110011111100010,
+100000000100000011111101111111011010,
+100000000110010101111101011111010101,
+100000001001000110111100111111010010,
+100000001100011000111100011111010001,
+100000010000001010111011111111010101,
+100000010100011100111011011111011100,
+100000011001001110111010111111101000,
+100000011110100000111010011111111001,
+100000100100010010111010000000010000,
+100000101010100100111001100000101101,
+100000110001010101111001000001010000,
+100000111000100110111000100001111010,
+100001000000010110111000000010101100,
+100001001000100110110111100011100110,
+100001010001010101110111000100101001,
+100001011010100011110110100101110100,
+100001100100010000110110000111001001,
+100001101110011011110101101000101000,
+100001111001000101110101001010010001,
+100010000100001110110100101100000110,
+100010001111110101110100001110000110,
+100010011011111010110011110000010001,
+100010101000011101110011010010101010,
+100010110101011101110010110101001110,
+100011000010111011110010011000000001,
+100011010000110110110001111011000001,
+100011011111001110110001011110001111,
+100011101110000100110001000001101100,
+100011111101010101110000100101011000,
+100100001101000011110000001001010100,
+100100011101001101101111101101011111,
+100100101101110011101111010001111100,
+100100111110110101101110110110101001,
+100101010000010010101110011011100111,
+100101100010001001101110000000110111,
+100101110100011100101101100110011001,
+100110000111001001101101001100001110,
+100110011010010000101100110010010110,
+100110101101110001101100011000110010,
+100111000001101100101011111111100001,
+100111010110000000101011100110100100,
+100111101010101101101011001101111100,
+100111111111110010101010110101101001,
+101000010101010000101010011101101011,
+101000101011000101101010000110000100,
+101001000001010010101001101110110010,
+101001010111110111101001010111110111,
+101001101110110010101001000001010010,
+101010000110000100101000101011000101,
+101010011101101011101000010101010000,
+101010110101101001100111111111110010,
+101011001101111100100111101010101101,
+101011100110100100100111010110000000,
+101011111111100001100111000001101100,
+101100011000110010100110101101110001,
+101100110010010110100110011010010000,
+101101001100001110100110000111001001,
+101101100110011001100101110100011100,
+101110000000110111100101100010001001,
+101110011011100111100101010000010010,
+101110110110101001100100111110110101,
+101111010001111100100100101101110011,
+101111101101011111100100011101001101,
+110000001001010100100100001101000011,
+110000100101011000100011111101010101,
+110001000001101100100011101110000100,
+110001011110001111100011011111001110,
+110001111011000001100011010000110110,
+110010011000000001100011000010111011,
+110010110101001110100010110101011101,
+110011010010101010100010101000011101,
+110011110000010001100010011011111010,
+110100001110000110100010001111110101,
+110100101100000110100010000100001110,
+110101001010010001100001111001000101,
+110101101000101000100001101110011011,
+110110000111001001100001100100010000,
+110110100101110100100001011010100011,
+110111000100101001100001010001010101,
+110111100011100110100001001000100110,
+111000000010101100100001000000010110,
+111000100001111010100000111000100110,
+111001000001010000100000110001010101,
+111001100000101101100000101010100100,
+111010000000010000100000100100010010,
+111010011111111001100000011110100000,
+111010111111101000100000011001001110,
+111011011111011100100000010100011100,
+111011111111010101100000010000001010,
+111100011111010001100000001100011000,
+111100111111010010100000001001000110,
+111101011111010101100000000110010101,
+111101111111011010100000000100000011,
+111110011111100010100000000010010010,
+111110111111101011100000000001000001,
+111111011111110110100000000000010001,
+000000000000000000100000000000000000,
+000000100000001010100000000000010001,
+000001000000010101100000000001000001,
+000001100000011110100000000010010010,
+000010000000100110100000000100000011,
+000010100000101011100000000110010101,
+000011000000101110100000001001000110,
+000011100000101111100000001100011000,
+000100000000101011100000010000001010,
+000100100000100100100000010100011100,
+000101000000011000100000011001001110,
+000101100000000111100000011110100000,
+000101111111110000100000100100010010,
+000110011111010011100000101010100100,
+000110111110110000100000110001010101,
+000111011110000110100000111000100110,
+000111111101010100100001000000010110,
+001000011100011010100001001000100110,
+001000111011010111100001010001010101,
+001001011010001100100001011010100011,
+001001111000110111100001100100010000,
+001010010111011000100001101110011011,
+001010110101101111100001111001000101,
+001011010011111010100010000100001110,
+001011110001111010100010001111110101,
+001100001111101111100010011011111010,
+001100101101010110100010101000011101,
+001101001010110010100010110101011101,
+001101100111111111100011000010111011,
+001110000100111111100011010000110110,
+001110100001110001100011011111001110,
+001110111110010100100011101110000100,
+001111011010101000100011111101010101,
+001111110110101100100100001101000011,
+010000010010100001100100011101001101,
+010000101110000100100100101101110011,
+010001001001010111100100111110110101,
+010001100100011001100101010000010010,
+010001111111001001100101100010001001,
+010010011001100111100101110100011100,
+010010110011110010100110000111001001,
+010011001101101010100110011010010000,
+010011100111001110100110101101110001,
+010100000000011111100111000001101100,
+010100011001011100100111010110000000,
+010100110010000100100111101010101101,
+010101001010010111100111111111110010,
+010101100010010101101000010101010000,
+010101111001111100101000101011000101,
+010110010001001110101001000001010010,
+010110101000001001101001010111110111,
+010110111110101110101001101110110010,
+010111010100111011101010000110000100,
+010111101010110000101010011101101011,
+011000000000001110101010110101101001,
+011000010101010011101011001101111100,
+011000101010000000101011100110100100,
+011000111110010100101011111111100001,
+011001010010001111101100011000110010,
+011001100101110000101100110010010110,
+011001111000110111101101001100001110,
+011010001011100100101101100110011001,
+011010011101110111101110000000110111,
+011010101111101110101110011011100111,
+011011000001001011101110110110101001,
+011011010010001101101111010001111100,
+011011100010110011101111101101011111,
+011011110010111101110000001001010100,
+011100000010101011110000100101011000,
+011100010001111100110001000001101100,
+011100100000110010110001011110001111,
+011100101111001010110001111011000001,
+011100111101000101110010011000000001,
+011101001010100011110010110101001110,
+011101010111100011110011010010101010,
+011101100100000110110011110000010001,
+011101110000001011110100001110000110,
+011101111011110010110100101100000110,
+011110000110111011110101001010010001,
+011110010001100101110101101000101000,
+011110011011110000110110000111001001,
+011110100101011101110110100101110100,
+011110101110101011110111000100101001,
+011110110111011010110111100011100110,
+011110111111101010111000000010101100,
+011111000111011010111000100001111010,
+011111001110101011111001000001010000,
+011111010101011100111001100000101101,
+011111011011101110111010000000010000,
+011111100001100000111010011111111001,
+011111100110110010111010111111101000,
+011111101011100100111011011111011100,
+011111101111110110111011111111010101,
+011111110011101000111100011111010001,
+011111110110111010111100111111010010,
+011111111001101011111101011111010101,
+011111111011111101111101111111011010,
+011111111101101110111110011111100010,
+011111111110111111111110111111101011,
+011111111111101111111111011111110110;

+ 10 - 9
S5443_M/S5443.srcs/sources_1/new/S5443TopPulseProfileTb.v

@@ -277,9 +277,10 @@ ncoInst
 );
 
 
-S5443Top MasterFpga 
+S5243Top MasterFpga 
 (
-	.Clk_i				(Clk50),
+	.ClkP_i				(Clk50),
+	.ClkN_i				(~Clk50),
 	.Led_o				(),
 //------------------------------------------	
     .Adc1FclkP_i		(),		
@@ -308,11 +309,11 @@ S5443Top MasterFpga
     .Adc2DataDb1P_i		(1'b1),
     .Adc2DataDb1N_i		(1'b0),
 //------------------------------------------
-	.AdcInitMosi_o		(),
-	.AdcInitClk_o		(),			
+	// .AdcInitMosi_o		(),
+	// .AdcInitClk_o		(),			
 	.Adc1InitCs_o		(),
 	.Adc2InitCs_o		(),
-	.AdcInitRst_o		(),
+	// .AdcInitRst_o		(),
 //------------------------------------------	
 	
 	.Mosi_i				(mosi_i),
@@ -325,7 +326,7 @@ S5443Top MasterFpga
 	
 	//fpga-dsp signals
 	.StartMeas_i		(startCalcCmdReg),
-	.StartMeasEvent_o	(startMeasS),
+	// .StartMeasEvent_o	(startMeasS),
 	.EndMeas_o			(endMeas),
 	.TimersClk_o		(),
 	
@@ -335,11 +336,11 @@ S5443Top MasterFpga
 	.DspTrigOut_i		(Clk41),				//Trig from DSP
 	.DspTrigIn_o		(),				//Trig To DSP
 	
-	.OverloadS_i		(1'b0),
+	// .OverloadS_i		(1'b0),
 	.Overload_o			(),
 	
 	.PortSel_o			(),
-	.PortSelDir_o		(),
+	// .PortSelDir_o		(),
 	
 	//mod out line
 	
@@ -347,7 +348,7 @@ S5443Top MasterFpga
 	
 	//gain lines
 	.DspReadyForRx_i		(1'b0),
-	.DspReadyForRxToFpgaS_o	(),
+	// .DspReadyForRxToFpgaS_o	(),
 	.AmpEn_o				(),	//	0-adc1ChA 1-adc1ChB 2-adc2ChA 3-adc2ChB
 	.AdcData_i				(sin_value[17-:14])
 	// .AdcData_i			(Data_i)