Procházet zdrojové kódy

Улучшение читаемости кода отдельных модулей, удаление неиспользуемого функционала. (Для slave fpga).

ChStepan před 1 rokem
rodič
revize
2170b97c91
46 změnil soubory, kde provedl 591 přidání a 111 odebrání
  1. 3 24
      S5444_S/src/src/AdcDataRx/AdcDataInterface.v
  2. 2 0
      S5444_S/src/src/AdcDataRx/AdcSync.v
  3. 3 0
      S5444_S/src/src/AdcDataRx/Description.txt
  4. 3 3
      S5444_S/src/src/ClkGen/Clk200Gen.v
  5. 17 0
      S5444_S/src/src/DitherGen/Description.txt
  6. 8 3
      S5444_S/src/src/DitherGen/DitherGenv2.v
  7. 41 0
      S5444_S/src/src/ExtDspInterface/Description.txt
  8. 4 0
      S5444_S/src/src/ExtDspInterface/DspInterface.v
  9. 8 3
      S5444_S/src/src/ExtDspInterface/DspPpiOut.v
  10. 8 1
      S5444_S/src/src/ExtDspInterface/SlaveSpi.v
  11. 29 0
      S5444_S/src/src/GainOverloadControl/Description.txt
  12. 13 2
      S5444_S/src/src/GainOverloadControl/GainControl.v
  13. 13 1
      S5444_S/src/src/GainOverloadControl/GainControlWrapper.v
  14. 15 0
      S5444_S/src/src/GainOverloadControl/OverloadDetect.v
  15. 0 12
      S5444_S/src/src/InitRst/InitRst.v
  16. 5 1
      S5444_S/src/src/InternalDsp/AdcCalibration.v
  17. 7 0
      S5444_S/src/src/InternalDsp/ComplPrng.v
  18. 9 7
      S5444_S/src/src/InternalDsp/CordicNco.v
  19. 7 0
      S5444_S/src/src/InternalDsp/CordicRotation.v
  20. 9 0
      S5444_S/src/src/InternalDsp/DspPipeline.v
  21. 7 13
      S5444_S/src/src/InternalDsp/InternalDsp.v
  22. 8 0
      S5444_S/src/src/InternalDsp/MeasCtrlModule.v
  23. 9 1
      S5444_S/src/src/InternalDsp/NcoRstGen.v
  24. 7 0
      S5444_S/src/src/InternalDsp/WinParameters.v
  25. 10 4
      S5444_S/src/src/InternalDsp/Win_calc.v
  26. 6 0
      S5444_S/src/src/Math/Description.txt
  27. 9 3
      S5444_S/src/src/Math/MultModule.v
  28. 7 2
      S5444_S/src/src/Math/MyIntToFp.v
  29. 13 0
      S5444_S/src/src/Math/SimpleMult.v
  30. 7 3
      S5444_S/src/src/Math/SumAcc.v
  31. 18 0
      S5444_S/src/src/MeasDataFifo/Description.txt
  32. 4 0
      S5444_S/src/src/MeasDataFifo/FifoController.v
  33. 3 0
      S5444_S/src/src/MeasDataFifo/MeasDataFifoWrapper.v
  34. 157 0
      S5444_S/src/src/PulseMeas/ActivePortSelector.v
  35. 20 0
      S5444_S/src/src/PulseMeas/Description.txt
  36. 9 2
      S5444_S/src/src/PulseMeas/MeasStartEventGen.v
  37. 7 3
      S5444_S/src/src/PulseMeas/Mux.v
  38. 3 3
      S5444_S/src/src/PulseMeas/PGenRstGenerator.v
  39. 9 0
      S5444_S/src/src/PulseMeas/PulseGen.v
  40. 9 0
      S5444_S/src/src/PulseMeas/PulseGenNew.v
  41. 8 3
      S5444_S/src/src/PulseMeas/SampleStrobeGenRstDemux.v
  42. 8 3
      S5444_S/src/src/PulseMeas/StartAfterGainSel.v
  43. 7 3
      S5444_S/src/src/PulseMeas/TrigInt2Mux.v
  44. 2 0
      S5444_S/src/src/RegMap/Description.txt
  45. 10 5
      S5444_S/src/src/RegMap/RegMap.v
  46. 30 6
      S5444_S/src/src/Top/S5443Top.v

+ 3 - 24
S5444_S/src/src/AdcDataRx/AdcDataInterface.v

@@ -18,6 +18,7 @@
 // additional comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	AdcDataInterface	
 #(	
 	parameter	AdcDataWidth	=	14,
@@ -63,9 +64,11 @@ module	AdcDataInterface
 	output	[AdcDataWidth-1:0]	Adc2ChR2Data_o,
 	output	[AdcDataWidth-1:0]	Adc2ChT2Data_o
 );
+
 //================================================================================
 //  reg/wire
 //================================================================================	
+
 	wire    [ChNum-1:0]    	adc1P;
     wire    [ChNum-1:0]    	adc1N;
     wire    [ChNum-1:0]    	adc2P;
@@ -175,30 +178,6 @@ AdcSync Adc2Sync
 	.Data_o	({adc2ChR2DataSync, adc2ChT2DataSync})
 );
 
-// AdcSyncFifo	adc1SyncFifo	(
-	// .rst		(Rst_i),
-	// .wr_clk		(Adc1RxClk),	
-	// .rd_clk		(Clk_i),
-	// .din		(adc1Dout),
-	// .din		({testAdc,testAdc}),
-	// .wr_en		(1'b1),
-	// .rd_en		(1'b1),
-	// .dout		({adc1ChT1DataSync, adc1ChR1DataSync}),
-	// .full		(),
-	// .empty		()
-// );
-
-// AdcSyncFifo	adc2SyncFifo	(
-	// .rst		(Rst_i),
-	// .wr_clk		(Adc2RxClk),	
-	// .rd_clk		(Clk_i),
-	// .din		(adc2Dout),
-	// .wr_en		(1'b1),
-	// .rd_en		(1'b1),
-	// .dout		({adc2ChR2DataSync, adc2ChT2DataSync}),
-	// .full		(),
-	// .empty		()
-// );
 endmodule
 
 

+ 2 - 0
S5444_S/src/src/AdcDataRx/AdcSync.v

@@ -21,7 +21,9 @@ module AdcSync
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================
+
 	assign	Data_o	=	adcDataSyncPipe[2];
+	
 //================================================================================
 //  CODING
 //================================================================================

+ 3 - 0
S5444_S/src/src/AdcDataRx/Description.txt

@@ -0,0 +1,3 @@
+1. Модуль AdcDataInterface просто обертка для модулей приёма данных с двух АЦП.
+2. Модуль TopRx реализовывает приём данных с АЦП в соответствии с XAPP585.
+3. Модуль AdcSync служит для синхронизации данных между клоковых доменов внутри FPGA. Модуль по сути простая синхро цепь из двух последовательных регистров.

+ 3 - 3
S5444_S/src/src/ClkGen/Clk200Gen.v

@@ -24,7 +24,7 @@ PLLE2_ADV #(
       	.CLKOUT1_DIVIDE		(120),
       	.CLKOUT1_DUTY_CYCLE	(0.5),
       	.CLKOUT1_PHASE		(0.0),
-      	.CLKOUT2_DIVIDE		(6),
+      	.CLKOUT2_DIVIDE		(12),
       	.CLKOUT2_DUTY_CYCLE	(0.5),
       	.CLKOUT2_PHASE		(0.0),
       	.CLKOUT3_DIVIDE		(120),
@@ -43,7 +43,7 @@ CommonPll (
       	.CLKFBOUT		(ClkFb),
       	.CLKOUT0		(rx_mmcmout_200),
       	.CLKOUT1		(rx_mmcmout_10),
-      	.CLKOUT2		(rx_mmcmout_150),
+      	.CLKOUT2		(rx_mmcmout_100),
       	.CLKOUT3		(),
       	.CLKOUT4		(),
       	.CLKOUT5		(),
@@ -68,7 +68,7 @@ BUFG	bufg_mmcm_Fb (.I(ClkFb), .O(rxFb)) ;
 
 BUFG	ctrlClk200 (.I(rx_mmcmout_200), .O(Clk200_o)) ;
 BUFG	ctrlClk10 (.I(rx_mmcmout_10), .O(Clk10Timers_o)) ;
-BUFG	ctrlClk150 (.I(rx_mmcmout_150), .O(Clk150_o)) ;
+BUFG	ctrlClk100 (.I(rx_mmcmout_100), .O(Clk150_o)) ;
 
 endmodule
 

+ 17 - 0
S5444_S/src/src/DitherGen/Description.txt

@@ -0,0 +1,17 @@
+1. Модуль генерирует дизер.
+2. Команда настройки генератора описана в S5443v4port_reg.xlsx.
+	2.1 В команде настройки приходят такие параметры как :
+		FR	- регулирует "шаг" по таблице NCO.
+		AM_N- значение амплитуды генерируемого дизера.
+		RAMP_CNTR - максимальное значение счетчика генератора пилообразного сигнала.
+		
+3. Частота на выходе модуля определяется по следующей формуле:
+
+	Fdith = (Fref/(RAMP_CNTR+1))*(FR/256)
+
+где  Fref - опорная частота, в текущей версии прибора Fref = 50*10^6;
+         Fdith - целевая частота дизера.
+
+Например:	 
+	Для частоты дизера 312.5k: FR =16 , RAMP_CNTR=9
+	Для частоты дизера 284.9090....k: FR =16 , RAMP_CNTR=10

+ 8 - 3
S5444_S/src/src/DitherGen/DitherGenv2.v

@@ -3,9 +3,9 @@
 // Company: 
 // Engineer:		Churbanov S.
 // 
-// Create Date:    10:00:14 13/08/2019 
+// Create Date:   
 // Design Name: 
-// Module Name:    DspPpiOut 
+// Module Name:     
 // Project Name: 
 // Target Devices: 
 // Tool versions: 
@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module DitherGenv2
 #(	
 	parameter	CmdDataRegWith		=	24,
@@ -32,6 +33,7 @@ module DitherGenv2
 	output	DitherCtrlT2R2_o,
 	output	DitherCtrlT1R1_o
 );
+
 //================================================================================
 //  REG/WIRE
 //================================================================================
@@ -71,14 +73,17 @@ module DitherGenv2
 	
 	wire	[3:0]	ncoSignalT2R2	=	ncoArray[currStateT2R2[FrAmpWordWidth-1-:4]];
 	wire	[3:0]	ncoSignalT1R1	=	ncoArray[currStateT1R1[FrAmpWordWidth-1-:4]];
-	
+
 	wire	dithGenT2R2	=	((ncoSignalT2R2>>ditherAmpT2R2)>sawCnt)	?	1'b1:1'b0;
 	wire	dithGenT1R1	=	((ncoSignalT1R1>>ditherAmpT1R1)>sawCnt)	?	1'b1:1'b0;
+
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================	
+
 	assign	DitherCtrlT2R2_o	=	(ditherEnT2R2)	?	dithGenT2R2:1'b0;
 	assign	DitherCtrlT1R1_o	=	(ditherEnT1R1)	?	dithGenT1R1:1'b0;
+	
 //================================================================================
 //  CODING
 //================================================================================	

+ 41 - 0
S5444_S/src/src/ExtDspInterface/Description.txt

@@ -0,0 +1,41 @@
+1. Модуль DspInterface является оберткой.
+2. Структура модуля следующая:
+	DspInterface
+		DecimFilterWrapper
+		OscDataFormer
+		MeasDataFifoWrapper
+		DspPpiOut
+		SlaveSpi
+		Логика выбора данных для записи в FIFO в соответствии с режмом работы (режим подготовки данных для FFT или измерение S параметров).
+		
+3. MeasDataFifoWrapper модуль обертка для подключения FIFO для хранения данных. Описание модуля смотри в соответствующей папке.
+
+4. DspPpiOut модуль передачи данных-результатов измерений по PPI к DSP.
+   Мы знаем размер передаваемой посылки (256 бит, 8 квадратур в формате Fp32 и сервисный регистр 32 бита итого 288 бит) и знаем что за один такт передается 16бит данных.
+		   Соответственно нам нужно 288/16=18 тактов для передачи всей посылки.
+		   
+	4.1 Модуль работает так:
+		1. Если не работает то ждёт когда сигнал LpOutStart_i примет значение лог.1.
+		2. Как только LpOutStart_i принял значение лог.1. выставляется сигнал занятости модуля PpiBusy_o.
+		3. Как только LpOutStart_i принял значение лог.1. счетчику передачи данных txCnt присваивается значение 19, так же выставляется в лог.1 сигнал валидности данных dataValid.
+		   Значение 19 объясняется тем что нужно 18 тактов на передачу данных, и еще 1 такт выделен на упаковку в единый регистр 256бит данных измерений и сервисного регистра.
+		4. Так как LpOutStart_i устанавливается на 1 такт, в последствии при его отсутствии и наличии сигнала dataValid счетчик txCnt начинает декрементироваться на -1 отсчитывая переданные данные.
+		5. Параллельно с этим работает логика управления сигналами валидности данных dataValid, управления сдвиговым регистром dataShEn и сигналом указания на начало кадра передачи для PPI LpOutFs_o.
+		6. Пока dataShEn установлен в лог.1 данные каждый такт LpOutClk_o (тактовая частота работы PPI) выставляются на шину данных LpOutData_o.
+		7. Клок для PPI LpOutClk_o генерируется из системного клока через модуль OODR2 (см. документацию XILINX).
+		  
+5. SlaveSpi модуль приёма команд настройки системы, передачи данных из регистровой карты, а так же трансляции транзитных данных на внешние устройства.
+	5.1 Модуль работает так:
+		1. Как только сигнал Ss_i принимает значение лог.0 запускаются счетчики принятых данных и начинается захват данных с линии Mosi_i, по каждому такту Sck_i в сдвиговый регистр.
+		2. После приёма 1 бита данных (бит указывает на режим работы SPI) определяется режим работы модуля (запись/чтение).
+		3. После приёма 8 бита данных определяется адресс обращения по SPI. Адреса регистровой карты описаны в документе (S5435v4port_reg.xlsx). Есть 2 выделенных адреса прямого доступа к внешним устройствам (см. параметры в шапке модуля).
+		4. На этапе после определения режима работы и адреса работа модуля ветвится:
+			4.1 Может быть выбран режим трансляции данных транзитом к внешним устройствам: выбран режим записи и пришедший адрес совпадает с одним из адресов прямого доступа.
+				В этом режиме принимаются только биты режима работы и адреса, в дальнейшем линии от DSP со входа модуля замыкаются на выходные линии модуля к перефирийному устройству.
+			4.2 Может быть выбран режим трансляции данных транзитом от внешних устройств: выбран режим чтения и пришедший адрес совпадает с одним из адресов прямого доступа.
+				В этом режиме принимаются только биты режима работы и адреса,  линии от перефирийного устройства замыкаются на выходные линии к DSP.
+			4.3 Может быть выбран режим записи данных в регистровую карту RegMap (модуль описан в другом документе):выбран режим записи и один из адресов регистровой карты.
+				В этом режиме данные полностью захватываются и передаются для записи в регистровую карту.
+			4.4 Может быть выбран режим чтения данных из регистровой карты RegMap (модуль описан в другом документе):выбран режим чтения и один из адресов регистровой карты.
+				В этом режиме принимается только бит регистра и адреса, в дальнейшем линия Mosi_i от DSP игнорируется, а на линию Miso_o выставляются данные считаные из регистровой карты.
+				

+ 4 - 0
S5444_S/src/src/ExtDspInterface/DspInterface.v

@@ -18,6 +18,7 @@
 // additional comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	DspInterface
 #(	
 	parameter	AdcDataWidth	=	14,	
@@ -87,9 +88,11 @@ module	DspInterface
 
 	input	LpOutStart_i
 );
+
 //================================================================================
 //	REG/WIRE
 //================================================================================
+
 	wire	[ResultWidth*(ChNum*2)-1:0]	measDataBus;
 	wire	[ResultWidth*(ChNum*2)-1:0]	fftDataBus;
 	wire	[ResultWidth*(ChNum*2)-1:0]	bypassDataBus;
@@ -116,6 +119,7 @@ module	DspInterface
 	wire	signed	[15:0]	filteredDecimDataI;
 	wire	signed	[15:0]	filteredDecimDataQ;
 	wire	filteredDecimDataVal;
+	
 //================================================================================
 //	ASSIGNMENTS
 //================================================================================

+ 8 - 3
S5444_S/src/src/ExtDspInterface/DspPpiOut.v

@@ -19,6 +19,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module DspPpiOut
 #(	
 	parameter	ODataWidth		=	16,	
@@ -41,9 +42,11 @@ module DspPpiOut
 	output	LpOutFs_o,
 	output	[ODataWidth-1:0]	LpOutData_o
 );
+
 //================================================================================
 //  REG/WIRE
 //================================================================================
+
 	reg	lpDataRst;
 	reg	[5:0]	txCnt	=	6'd0;	
 	reg	[DataBusWidth-1:0]	lpDataBuf;
@@ -63,15 +66,19 @@ module DspPpiOut
 	wire	[31:0]	serviceData	=	{ampEnR2,ampEnT2,ampEnR1,ampEnT1};
 	
 	wire	outDataVal	=	(txCnt	<=	18	&&	txCnt	!=	0);
+
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================	
+
 	assign	LpOutData_o	=	lpDataBuf[ODataWidth-1:0];
 	assign	LpOutFs_o	=	lpOutFs;
 	assign	PpiBusy_o	=	ppiBusy;
+
 //================================================================================
 //  CODING
 //================================================================================	
+
 always	@(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin
 		if	(LpOutStart_i)	begin
@@ -138,9 +145,7 @@ always	@(posedge	Clk_i)	begin
 		lpDataBuf	<=	{DataBusWidth{1'b0}};
 	end
 end
-//================================================================================
-//  INSTANTIATIONS
-//================================================================================		
+
 ODDR2
 #(
 	.DDR_ALIGNMENT("NONE"),

+ 8 - 1
S5444_S/src/src/ExtDspInterface/SlaveSpi.v

@@ -5,7 +5,7 @@
 // 
 // Create Date: 17.09.2020 14:18:14
 // Design Name: 
-// Module Name: SlaveSpi
+// Module Name: 
 // Project Name: 
 // Target Devices: 
 // Tool Versions: 
@@ -56,9 +56,11 @@ module	SlaveSpi
 	input	Miso_i,
 	output	Miso_o
 );
+
 //================================================================================
 //	REG/WIRE
 //================================================================================
+
 	reg	[CmdRegWidth-1:0]		dataCaptReg;
 	reg	[DataCntWidth-1:0]		dataCnt;
 	reg	[HeaderWidth-1:0]		ansAddr;
@@ -66,18 +68,22 @@ module	SlaveSpi
 	wire	directTransit	=	(ansAddr	==	Adc0DirAccessAddr)|(ansAddr	==	Adc1DirAccessAddr);
 	reg	txWind;
 	reg	[4:0]	txCnt;
+
 //================================================================================
 //	ASSIGNMENTS
 //================================================================================
+
 	assign	Mosi_o		=	(!spiMode&directTransit)?	Mosi_i:1'b1;
 	assign	Sck_o		=	(directTransit)?	Sck_i:1'b0;
 	assign	Ss0_o		=	(directTransit&&(ansAddr==Adc0DirAccessAddr))?	Ss_i:1'b1;
 	assign	Ss1_o		=	(directTransit&&(ansAddr==Adc1DirAccessAddr))?	Ss_i:1'b1;
 	assign	AnsAddr_o	=	ansAddr;
 	assign	Miso_o		=	txWind?	AnsReg_i[txCnt]:1'b0;
+
 //================================================================================
 //	CODING
 //================================================================================
+
 always	@(posedge	Sck_i)	begin
 	if	(~Ss_i)	begin
 		dataCaptReg	<=	{dataCaptReg[CmdRegWidth-2:0],Mosi_i};
@@ -129,6 +135,7 @@ end
 //================================================================================
 //	Generating output signals
 //================================================================================
+
 reg	ssReg;
 reg	ssRegR;
 

+ 29 - 0
S5444_S/src/src/GainOverloadControl/Description.txt

@@ -0,0 +1,29 @@
+1. Модуль GainControlWrapper является оберткой для подключения модулей для реализации логики покканального автоматического/ручного включения/отключения усиления.
+	1.2. Структура модуля следующая:
+			GainControlWrapper
+				MultModule
+				GainControl
+				Логика выбора управляющих сигналов.
+		
+2. Логика выбора управляющих сигналов делает выбор, основываясь на том включено ли автоматическое управление усилением, или нет.
+	Если оно включено, то на выход управляющего сигнала замыкается результат работы GainControl. 
+	Если оно выключено, то считается, что влючено ручное управление, и на выход управляющего сигнала замыкается значение пришедшее в команде управления.
+
+3. Модуль GainControl выполняет анализ вреднего уровня сигнала по заданой длине выборки сигнала.
+   Выборка задается вручную и скорее всего еще будет перестраиваться.
+   3.1 После запуска отсчеты с текущего канала АЦП подаются на аккумулятор и суммируются пока не будет выбрано нужное количество отсчетов.
+   3.2 Как только нужная выборка сделана берется среднее значение и возводится в квадрат.
+   3.3 Следующим этапом считается сумма квадратов.
+       По сути реализуется расчет амплитуды через формулу A = sqrt(i^2+b^2);
+   3.4 Если включено автоматическое управление GainAutoEn_i в лог.1 то:
+       Если если усиление уже включено, и продетектированная амплитуда выше Верхнего порога гистерезиса, то отключаем усиление.
+	   Если если усиление уже включено, и продетектированная амплитуда ниже Верхнего порога гистерезиса, то оставляем включеным усиление.
+	   Если если усиление выключено, и продетектированная амплитуда ниже Нижнего порога гистерезиса, то включаем усиление.
+       Если если усиление выключено, и продетектированная амплитуда выше Нижнего порога гистерезиса, то оставляем выключеным усиление.
+
+
+
+4. Модуль OverloadDetect выполняет контроль перегрузки каналов АЦП.
+	4.1 Модуль накапливает выборку отсчетов с АЦП, суммируя в акумуляторе.
+	4.2 Затем берется среднее значение по выборке и сравнивается с отсечкой (значение отсечки присылается в команде).
+	4.3 Если  среднее значение выше отсечки, то FPGA просигнализирует о перегрузке определенного канала АЦП.

+ 13 - 2
S5444_S/src/src/GainOverloadControl/GainControl.v

@@ -4,9 +4,9 @@
 // Company: 
 // Engineer: 		Churbanov S.
 // 
-// Create Date:    15:24:31 08/20/2019 
+// Create Date:    
 // Design Name: 
-// Module Name:    gain_master 
+// Module Name:    
 // Project Name: 
 // Target Devices: 
 // Tool versions: 
@@ -19,6 +19,7 @@
 // Additional Comments: 16.09.2019 file modified in assotiate with task.
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module GainControl
 #(	
 	parameter	AdcNcoMultWidth	=	35,
@@ -45,12 +46,17 @@ module GainControl
 
 //================================================================================
 //  LOCALPARAMS
+//================================================================================
+
 	localparam	CntWidth		=	32;
 	localparam	Delay			=	100;
 	localparam	AverageDelay	=	MeasPeriod+Delay-1;
 	localparam	SumWidth		=	AdcNcoMultWidth+6-1;
+
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	reg		[CntWidth-1:0]	measCnt;
 	
 	reg		signed	[SumWidth-1:0]	adcSinSum;			
@@ -78,13 +84,18 @@ module GainControl
 	wire	[(ThresholdWidth*2)-9:0]	highThresholdCompl	=	{10'b0,GainHighThreshold_i,6'b0};
 	
 	wire	accWind	=	(measCnt>0	&	measCnt	<=MeasPeriod-2);
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	GainNewState_o	=	gainNewState;
 	assign	SensEn_o		=	sensEn;
 	assign	MeasStart_o		=	GainAutoEn_i?	measEnd:StartMeas_i;
+
 //================================================================================
 //  CODING
+//================================================================================
 
 always	@(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin

+ 13 - 1
S5444_S/src/src/GainOverloadControl/GainControlWrapper.v

@@ -6,7 +6,7 @@
 // 
 // Create Date:    15:24:31 08/20/2019 
 // Design Name: 
-// Module Name:    gain_master 
+// Module Name:     
 // Project Name: 
 // Target Devices: 
 // Tool versions: 
@@ -19,6 +19,7 @@
 // Additional Comments: 16.09.2019 file modified in assotiate with task.
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module GainControlWrapper
 #(	
 	parameter	AdcDataWidth		=	14,
@@ -49,20 +50,30 @@ module GainControlWrapper
 
 //================================================================================
 //  LOCALPARAM
+//================================================================================
+
 	localparam	MultDataWidth	=	36;
 	
 //================================================================================
+//  REG/WIRE
+//================================================================================
+
 	wire	[MultDataWidth-1:0]	adcSin;
 	wire	[MultDataWidth-1:0]	adcCos;
 
 	wire	[MultDataWidth-1:0]	adcSinCut	=	adcSin	[MultDataWidth-1:0];
 	wire	[MultDataWidth-1:0]	adcCosCut	=	adcCos	[MultDataWidth-1:0];
 	wire	gainNewState;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	AmpEnNewState_o	=	(GainAutoEn_i)?	gainNewState:GainManualState_i;
+
 //================================================================================
 //  CODING
+//================================================================================
 
 MultModule		
 #(	
@@ -102,4 +113,5 @@ GainMaster
 	.SensEn_o				(SensEn_o),
 	.MeasStart_o			(MeasStart_o)
 ); 
+
 endmodule

+ 15 - 0
S5444_S/src/src/GainOverloadControl/OverloadDetect.v

@@ -34,6 +34,8 @@ module OverloadDetect
 
 //================================================================================
 //  LOG2 FUNCTION
+//================================================================================
+
 	function integer Log2;
 	input integer value;
 		begin
@@ -48,23 +50,35 @@ module OverloadDetect
 			end	
 		end
 	endfunction
+
 //================================================================================
 //  LOCALPARAMS
+//================================================================================
+
 	localparam CntWidth	=	Log2(MeasPeriod);
 	localparam SumWidth	=	AdcDataWidth+CntWidth;
+
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	reg		overloadReg;
 	reg		[CntWidth-1:0]	measCnt;		
 	
 	reg		[SumWidth-1:0]	adcSum;	
 	
 	wire	[AdcDataWidth-1:0]	absAdc	=	(AdcData_i[AdcDataWidth-1])?	(~AdcData_i + 1):AdcData_i;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	Overload_o	=	overloadReg;
+
 //================================================================================
 //  CODING
+//================================================================================
+
 always	@(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin
 		if	(measCnt	!= MeasPeriod-1)	begin
@@ -98,4 +112,5 @@ always	@(posedge	Clk_i)	begin
 		end
 	end
 end
+
 endmodule

+ 0 - 12
S5444_S/src/src/InitRst/InitRst.v

@@ -4,9 +4,7 @@ module InitRst (
 );
 
 //================================================================================
-//
 //  FUNCTIONS
-//
 //================================================================================
 
     function integer bit_num;
@@ -21,36 +19,28 @@ module InitRst (
     endfunction
 
 //================================================================================
-//
 //  PARAMETER/LOCALPARAM
-//
 //================================================================================
 
     parameter   DELAY_VALUE     = 20;
     localparam  DELAY_CNT_W     = bit_num(DELAY_VALUE);
 
 //================================================================================
-//
 //  PORTS
-//
 //================================================================================
 
     input           clk_i;
     output  reg     signal_o;
 
 //================================================================================
-//
 //  STATE MACHINE STATES
-//
 //================================================================================
 
     localparam      SM_RST_S    = 1'b0;
     localparam      SM_DONE_S   = 1'b1;
 
 //================================================================================
-//
 //  REG/WIRE
-//
 //================================================================================
 
     reg                         curr_state  = SM_RST_S;
@@ -62,9 +52,7 @@ module InitRst (
     reg                         signal_next;
 
 //================================================================================
-//
 //  CODING
-//
 //================================================================================
 
 initial begin

+ 5 - 1
S5444_S/src/src/InternalDsp/AdcCalibration.v

@@ -6,7 +6,7 @@
 // 
 // Create Date:    14:12:30 06/03/2020 
 // Design Name: 
-// Module Name:    WinParameters 
+// Module Name:     
 // Project Name: 
 // Target Devices: 
 // Tool versions: 
@@ -39,6 +39,7 @@ module AdcCalibration
 //================================================================================
 //  Func
 //================================================================================
+
 	function integer Log2;
 	input integer value;
 		begin
@@ -56,6 +57,7 @@ module AdcCalibration
 //================================================================================
 //  REG/WIRE
 //================================================================================
+
 	reg signed	[AccWidth:0]	adcAcc;
 	reg signed	[AdcDataWidth-1:0]	calValue;
 	reg signed	[AdcDataWidth-1:0]	calValueR;
@@ -69,8 +71,10 @@ module AdcCalibration
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================	
+
 	assign	CalDone_o	=	calDone;
 	assign	CalibratedAdcData_o	=	calibratedData;
+	
 //================================================================================
 //  CODING
 //================================================================================	

+ 7 - 0
S5444_S/src/src/InternalDsp/ComplPrng.v

@@ -15,6 +15,7 @@
 // Dependencies: None
 // 
 //////////////////////////////////////////////////////////////////////////////////
+
 module ComplPrng
 #(
 	parameter DataPrngWidth = 4,
@@ -29,9 +30,11 @@ module ComplPrng
 	// output signed	[OutDataWidth-1:0] DataAndPrng_o
 	output signed	[OutDataWidth-1:0] PrngData_o
 );
+
 //================================================================================
 //	REG/WIRE
 //================================================================================
+
 reg [31:0] s1;
 reg [31:0] s2;
 reg [31:0] s3;
@@ -44,18 +47,22 @@ wire	signed	[DataPrngWidth-1:0]	dataPrngCut;
 reg		signed	[OutDataWidth-1:0]	dataPrngCutExtended;
 
 reg	signed	[OutDataWidth-1:0]	dataAndPrngReg;
+
 //================================================================================
 //	ASSIGNMENTS
 //================================================================================
+
 // assign	adcDataExtended		=	{Data_i[InDataWidth-1], Data_i[InDataWidth-1], Data_i, 4'b0};
 assign	dataPrngCut			=	dataPrng[31-:DataPrngWidth];
 // assign	dataPrngCutExtended	=	{{OutDataWidth-DataPrngWidth{dataPrngCut[DataPrngWidth-1]}}, dataPrngCut};
 // assign	DataAndPrng_o		=	adcDataExtended+dataPrngCutExtended;
 // assign	DataAndPrng_o		=	dataAndPrngReg;
 assign	PrngData_o			=	dataPrngCutExtended;
+
 //================================================================================
 //	CODING
 //================================================================================
+
 always @(posedge Clk_i) begin
 	if (Rst_i) begin
 		s1 <= 32'd12345;

+ 9 - 7
S5444_S/src/src/InternalDsp/CordicNco.v

@@ -26,6 +26,7 @@ module CordicNco
 //================================================================================
 //  FUNCTIONS
 //================================================================================
+
     function integer log2;
         input integer value;
         begin
@@ -36,14 +37,17 @@ module CordicNco
             end
         end
     endfunction
+
 //================================================================================
 //  LOCALPARAMS
 //================================================================================
+
 	localparam  [PhIncWidth-1:0]	angle270	= 3<<(PhIncWidth-2);
 	localparam  [PhIncWidth-1:0]	angle180	= 1<<(PhIncWidth-1);
 	localparam  [PhIncWidth-1:0]	angle90		= 1<<(PhIncWidth-2);
 	
 	localparam [17:0] initValue = 18'd78498;
+
 //================================================================================
 //  REG/WIRE DECLARATIONS
 //================================================================================
@@ -68,9 +72,11 @@ module CordicNco
     integer	i;
 	
 	reg		valR;
+
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================
+
     assign	xPipe[0]	=	(Val_i)	?	initValue:xPipe[0];
     assign	yPipe[0]	=	(Val_i)	?	initValue:yPipe[0];
     assign	valPipe[0]	=	valSr[2];
@@ -98,9 +104,11 @@ module CordicNco
 
 	assign	Sin_o	=	WindVal_i	?	sin_o	:	14'h0;
 	assign	Cos_o	=	WindVal_i	?	cos_o	:	14'h0;
+
 //================================================================================
 //  CODING
 //================================================================================
+
 always @(posedge Clk_i) begin
     if (Rst_i) begin
         valR	<=	1'b0;
@@ -109,7 +117,6 @@ always @(posedge Clk_i) begin
 	end
 end
 
-//  Phase handle logic
 always @(posedge Clk_i) begin
     if (Rst_i) begin
         phaseAcc   <= {PhIncWidth{1'b0}};
@@ -141,9 +148,6 @@ always @(posedge Clk_i) begin
     end
 end
 
-//--------------------------------------------------------------------------------
-//  CORDIC pipe
-
 always @(posedge Clk_i) begin
     if (Rst_i) begin
         valSr <= 3'b0;
@@ -186,9 +190,6 @@ generate
     end
 endgenerate
 
-//--------------------------------------------------------------------------------
-//  Output logic
-
 generate 
     if (EnSinN) begin
         always @(posedge Clk_i) begin
@@ -243,4 +244,5 @@ always @(posedge Clk_i) begin
 		Val_o		<= valPipe[0];
     end	
 end
+
 endmodule

+ 7 - 0
S5444_S/src/src/InternalDsp/CordicRotation.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module cordic_rotation 
 #(	parameter   ODatWidth	= 16,
 	parameter   Shift		= 1)
@@ -33,19 +34,25 @@ module cordic_rotation
 	output	reg	signed	[ODatWidth-1:0]	Y_o,
 	output	reg	Val_o
 );
+
 //================================================================================
 //  REG/WIRE DECLARATIONS
 //================================================================================
+
     wire    [ODatWidth-1:0]    shiftedInX;
     wire    [ODatWidth-1:0]    shiftedInY;
+
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================
+
     assign  shiftedInX    =   X_i >>> Shift;
     assign  shiftedInY    =   Y_i >>> Shift;
+
 //================================================================================
 //  CODING
 //================================================================================
+
 always @(posedge Clk_i) begin
     if (Rst_i) begin
         Val_o	<= 1'b0;

+ 9 - 0
S5444_S/src/src/InternalDsp/DspPipeline.v

@@ -36,10 +36,15 @@ module DspPipeline
 
 //================================================================================
 //  LOCALPARAMS
+//================================================================================
+
 	localparam	NormResultWidth	=	AccWidth+WindNormCoefWidth;
 	localparam	AdcWindWidth	=	18;
+
 //================================================================================
 //  REG/WIRE 
+//================================================================================
+
 	wire	[AdcWindWidth-1:0]	adcWindResult;
 	wire	adcWindResultVal;
 	
@@ -68,12 +73,16 @@ module DspPipeline
 	
 	reg		valReg;
 	reg		valRegReg;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	CorrResultVal_o	=	CorrResultReVal&CorrResultImVal;
 	
 //================================================================================
 //  CODING
+//================================================================================
 
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin

+ 7 - 13
S5444_S/src/src/InternalDsp/InternalDsp.v

@@ -19,6 +19,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module InternalDsp	
 #(	
 	parameter	AdcDataWidth		=	14,	
@@ -90,6 +91,8 @@ module InternalDsp
 
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	wire	[WindNormCoefWidth-1:0]	windNormCoef;
 	wire	[WindPNumWidth-1:0]		windPointsNum;
 	wire	[WindPNumWidth-1:0]		averageNoizeLvl;
@@ -141,6 +144,7 @@ module InternalDsp
 	
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
 
 	assign	adcDataBus	[ChNum-1]	=	{{2{Adc2ChT2Data_i[AdcDataWidth-1]}},Adc2ChT2Data_i,4'b0};
 	assign	adcDataBus	[ChNum-2]	=	{{2{Adc2ChR2Data_i[AdcDataWidth-1]}},Adc2ChR2Data_i,4'b0};
@@ -178,7 +182,8 @@ module InternalDsp
 	assign	CalModeDone_o	=	&calDone;
 	
 //================================================================================
-//  INSTANTIATIONS
+//  CODING
+//================================================================================
 
 //----------------------------------------------
 //Module generates event signals for measurement
@@ -274,18 +279,6 @@ Win_calc	WinCalcInst
 	.win_o			(wind)
 );
 
-// Approximation3 WindCalc2
-// (
-    // .Clk_i			(Clk_i), 
-    // .Rst_i			(Rst_i),
-    // .Clk100_i		(WindCalcClk_i),
-    // .WinCtrl_i		(winCtrl),
-    // .Win_value_i	(windArg),
-    // .filterCmd_i	(measCtrlReg[15-:8]), 
-	// .Win_o			(wind)
-// );
-
-
 //----------------------------------------------
 //Module generates Sin and Cos for measurement
 
@@ -330,6 +323,7 @@ always @(posedge Clk_i) begin
 		prngDataBus	[i]<=prngDataBus[i-1];
 	end
 end
+
 //------------------------------------------------
 //Generating needed amount of calculating channels
 generate

+ 8 - 0
S5444_S/src/src/InternalDsp/MeasCtrlModule.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module MeasCtrlModule
 #(	
 	parameter	WindPNumWidth	=	48,
@@ -55,6 +56,8 @@ module MeasCtrlModule
 
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	reg	startFpConv;
 
 	reg	[1:0]	startFpConvPipe	[3:0];
@@ -107,8 +110,11 @@ module MeasCtrlModule
 	reg		sampleStrobeGenRst;
 	
 	wire	measWindOr	=	(measWind|measWindR);
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	StartFpConv_o			=	startFpConvPipe	[2];
 	// assign	MeasWind_o				=	measWind;
 	assign	MeasWind_o				=	measWindOr;
@@ -120,8 +126,10 @@ module MeasCtrlModule
 	assign	TukeyCtrl_o				=	tukeyCtrl;
 	assign	WinCtrl_o				=	(pNumCnt<=tukeyFirstCosValuesDiv2+1|pNumCnt>tukeySecondCosValuesDiv2);
 	assign	SampleStrobeGenRst_o	=	sampleStrobeGenRst;
+
 //================================================================================
 //  CODING
+//================================================================================
 	
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin

+ 9 - 1
S5444_S/src/src/InternalDsp/NcoRstGen.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module NcoRstGen	
 (
 	input	Clk_i,
@@ -28,9 +29,11 @@ module NcoRstGen
 	output	NcoRst_o,
 	output	StartMeasEvent_o
 );
+
 //================================================================================
 //  REG/WIRE
 //================================================================================
+
 	reg	[15:0]	startMeasEventReg;
 	reg	[31:0]	ncoPhIncReg;
 	reg	[31:0]	ncoPhIncRegR;
@@ -41,17 +44,22 @@ module NcoRstGen
 	reg	[1:0]	currState;
 	
 	reg	rst;
+
 //================================================================================
 //  PARAMETERS
 //================================================================================
+
 	parameter	[1:0]	IDLE	=	2'd0;
 	parameter	[1:0]	RST		=	2'd1;
 	parameter	[1:0]	DEL		=	2'd2;
+
 //================================================================================
 //  ASSIGNMENTS
-// ================================================================================	
+// ===============================================================================
+
 	assign	NcoRst_o	=	rst;
 	assign	StartMeasEvent_o	=	(currState	==	IDLE)?	StartMeasEvent_i:startMeasEventReg[15];
+	
 //================================================================================
 //  CODING
 //================================================================================	

+ 7 - 0
S5444_S/src/src/InternalDsp/WinParameters.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module WinParameters 
 #(	
 	parameter	WindPhIncWidth		=	48,
@@ -35,24 +36,30 @@ module WinParameters
 	output		[WindPNumWidth-1:0]		WinPointsNum_o,
 	output		[WindPNumWidth-1:0]		AverageNoiseLvl_o
 );
+
 //================================================================================
 //  REG/WIRE
 //================================================================================
+
 	reg [WindPhIncWidth-1:0]	windPhInc;
 	reg	[WindNormCoefWidth-1:0]	winNormCoef;
 	reg	[WindPNumWidth-1:0]		winPointsNum;
 	reg	[WindPNumWidth-1:0]		averageNoiseLvl;
+
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================	
+
 	assign	WinPhInc_o 			=	windPhInc;
 	assign	WinPhIncStart_o		 =	32'h80000000;
 	assign	WinNormCoef_o		=	winNormCoef;
 	assign	WinPointsNum_o		=	winPointsNum;
 	assign	AverageNoiseLvl_o	=	averageNoiseLvl;
+
 //================================================================================
 //  CODING
 //================================================================================	
+
 always	@	(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin
 		case (FilterCmd_i)			

+ 10 - 4
S5444_S/src/src/InternalDsp/Win_calc.v

@@ -6,8 +6,8 @@
 // 
 // Create Date:		15:22:20 12/08/2019 
 // Design Name: 
-// Module Name:		Win_parameters
-// Project Name:	Compact_main
+// Module Name:		
+// Project Name:	
 // Target Devices: 
 // Tool versions: 
 // Description: 	
@@ -19,6 +19,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module Win_calc	(
 	input			clk_i,
 	input	[7:0]	filterCmd_i,
@@ -35,6 +36,7 @@ module Win_calc	(
 //================================================================================
 //  PARAMETERS
 //================================================================================
+
 	localparam	signed	A3_1	=	18'h15584;
 // ????????? ??? ?????????? SIN
 	localparam signed	[17:0]	A1	=	18'h12400;			// a-1
@@ -51,9 +53,11 @@ module Win_calc	(
 	localparam	b5Width				=	CalcWidth*5;
 	
 	localparam [31:0]	testArg	=	32'h12492492;
+
 //================================================================================
 //  REG/WIRE
 //================================================================================
+
 	reg			signed	[17:0]	sinWind;
 	reg			signed	[17:0]	tukeyWind;	
 		
@@ -105,14 +109,16 @@ module Win_calc	(
 	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	windMux1	=	(sinFilterFlag)	?	sinWindPow2[34-:18]:tukeyWindOut;
 	assign	windMux2	=	(rectFilterFlag)?	18'h1ffff:windMux1;
 
 	assign	win_o		=	windMux2;
+
 // ================================================================================
 //  CODING
 //================================================================================	
@@ -176,7 +182,6 @@ always	@(*)	begin
 	end
 end
 
-
 always	@(*)	begin
 	if	(!reset_i)	begin
 		if	(!win_type_i)	begin 
@@ -192,4 +197,5 @@ always	@(*)	begin
 		tukeyWind	=	18'h0;
 	end
 end
+
 endmodule

+ 6 - 0
S5444_S/src/src/Math/Description.txt

@@ -0,0 +1,6 @@
+1. Модуль FpCustomMultiplier выполняет перемножение чисел в формате fp32. Работа модуля реализована по стандарту перемножения числе в формате fp32. (читай там как работает). 
+2. Модуль MultModule выполняет умножение данных с текущего канала АЦП с сигналами Sin и Cos сгенерированным CordicNco. Умножение знаковых чисел в формате fixedPoint.
+   По сути это квадратурный демодулятор, на выходе модуля две шины данных - результаты перемножения AdcCos (I) и AdcSin(Q).
+3. Модуль MyIntToFp выполняет преобразование чисел в формат fp32 (вообще имеет перестраиваемые параметры числа бит отводимых под экспоненту и мантиссу).
+4. Модуль SimpleMult выполняет умножие знаковых чисел в формате fixedPoint.
+5. Модуль SumAcc является аккумулятором. Реализован как сумматор входных отсчетов. Суммирование ведется с учетом знаков.

+ 9 - 3
S5444_S/src/src/Math/MultModule.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	MultModule	
 #(	
 	parameter	AdcDataWidth	=	14,
@@ -34,23 +35,28 @@ module	MultModule
 	output	signed	[MultDataWidth-1:0]	AdcCos_o
 );
 
-//================================================================================
-//  LOCALPARAM
-
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	reg	signed	[IfNcoOutWidth-1:0]	adcDataCompl;
 	reg	signed	[IfNcoOutWidth-1:0]	sinReg;
 	reg	signed	[IfNcoOutWidth-1:0]	cosReg;
 	
 	reg	signed	[MultDataWidth-1:0]	AdcSinReg;
 	reg	signed	[MultDataWidth-1:0]	AdcCosReg;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	AdcSin_o	=	AdcSinReg;
 	assign	AdcCos_o	=	AdcCosReg;
+
 //================================================================================
 //  CODING
+//================================================================================
+
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
 			adcDataCompl	<=	{AdcData_i,4'b0};

+ 7 - 2
S5444_S/src/src/Math/MyIntToFp.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	MyIntToFp	
 #(	
 	parameter	InWidth		=	32,
@@ -40,7 +41,9 @@ module	MyIntToFp
 	output	reg	OutDataVal_o;
 	
 //================================================================================
-//  Func
+//  FUNC
+//================================================================================
+
 	function integer Log2;
 	input integer value;
 		begin
@@ -59,7 +62,9 @@ module	MyIntToFp
 	localparam Stages = Log2(InWidth);
 	
 //================================================================================
-//  Coding
+//  CODING
+//================================================================================
+
 	reg		[InWidth-1:0]	inDataR;
 	reg		signR;
 	reg		outValR;

+ 13 - 0
S5444_S/src/src/Math/SimpleMult.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	SimpleMult	
 #(	
 	parameter	FactorAWidth	=	14,
@@ -38,17 +39,28 @@ module	SimpleMult
 
 //================================================================================
 //  LOCALPARAM
+//================================================================================
+
 	localparam	ResultWidth	=	FactorAWidth+FactorBWidth;
+
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	reg	[ResultWidth-1:0]	resultReg;
 	reg	resultValReg;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	Result_o	=	(ResultWidth==OutputWidth)?	resultReg:resultReg[ResultWidth-2-:OutputWidth];
 	assign	ResultVal_o	=	resultValReg;
+
 //================================================================================
 //  CODING
+//================================================================================
+
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
 			if	(Val_i)	begin
@@ -63,4 +75,5 @@ module	SimpleMult
 			resultValReg	<=	1'b0;
 		end
 	end
+	
 endmodule

+ 7 - 3
S5444_S/src/src/Math/SumAcc.v

@@ -14,11 +14,10 @@ module SumAcc
 	output	ResultVal_o
 );
 
-//================================================================================
-//  LOCALPARAMS
-
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	reg		[ODataWidth-1:0]	dataAcc;
 	reg		resultVal;
 	wire	[ODataWidth-1:0]	extData	=	{{(ODataWidth - IDataWidth){Data_i[IDataWidth-1]}}, Data_i};	//sign extension
@@ -26,12 +25,17 @@ module SumAcc
 	reg		accZeroing;
 	reg		accZeroingR;
 	reg		accZeroingRR;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	Result_o	=	dataAcc;
 	assign	ResultVal_o	=	resultVal;
+
 //================================================================================
 //  CODING
+//================================================================================
 
 	always	@(posedge	Clk_i)	begin
 		if	(Rst_i)	begin

+ 18 - 0
S5444_S/src/src/MeasDataFifo/Description.txt

@@ -0,0 +1,18 @@
+1. Модуль MeasDataFifoWrapper является оберткой для подключения FIFO для хранения данных измерений.
+	1.2. Структура модуля следующая:
+			MeasDataFifoWrapper
+				FifoController
+				MeasDataFifo
+				Логика генерации сброса модулей
+				
+
+	
+2. Модуль FifoController служит для контроля работы FIFO с внешними модулями поставляющими данные для записи или запрашивающими вычитывание из FIFO и генерации управляющих сигналов для FIFO. 
+   Логика модуля не допускает конфликтных ситуаций при обращении к FIFO и следует главным правилам:
+	2.1 Не пиши в полное FIFO.
+	2.2 Не читай из пустого FIFO.
+	
+3. Модуль MeasDataFifo является IP ядром FIFO от XILINX. Узнать как настроенна FIFO можно через опцию Re-Custimize IP в vivado.
+
+4. Модуль OscDataFormer упаковывает данные с выхода фильтра-дециматора в посылку размером 256бит. Модуль писался так, чтобы работать с той же FIFO в которую записываются данные измерений. 
+   Формат упаковки данных модулем, и то как упаковываются данные в простых измерениях см. в документе S5435v4port_reg.xlsx.

+ 4 - 0
S5444_S/src/src/MeasDataFifo/FifoController.v

@@ -42,14 +42,18 @@ module FifoController
 	output	reg	WrEn_o,
 	output	RdEn_o
 );
+
 //================================================================================
 //  REG/WIRE
 //================================================================================
+
 	reg	rdEn;
 	reg	[13:0]	wrCnt;
+
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================
+
 	assign	MeasDataVal_o	=	rdEn&(!PpiBusy_i);
 	assign	RdEn_o			=	rdEn&(!PpiBusy_i);
 	

+ 3 - 0
S5444_S/src/src/MeasDataFifo/MeasDataFifoWrapper.v

@@ -19,6 +19,7 @@ module MeasDataFifoWrapper
 	output	[DataWidth*(ChNum*2)-1:0]	MeasDataBus_o,
 	output	MeasDataVal_o
 );
+
 //================================================================================
 //  REG/WIRE
 //================================================================================
@@ -46,9 +47,11 @@ module MeasDataFifoWrapper
 //================================================================================
 //  ASSIGNMENTS
 //================================================================================
+
 	assign	rstOr	=	Rst_i|startMeasDspPos;
 	assign	MeasDataVal_o		=	rdEn;
 	assign	startMeasDspPos		=	(StartMeasDsp_i&(!startMeasDspReg));
+	
 //================================================================================
 //  CODING
 //================================================================================		

+ 157 - 0
S5444_S/src/src/PulseMeas/ActivePortSelector.v

@@ -0,0 +1,157 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company: 
+// Engineer: 
+// 
+// Create Date:    10:02:35 04/20/2020 
+// Design Name: 
+// Module Name:    mult_module 
+// Project Name: 
+// Target Devices: 
+// Tool versions: 
+// Description: 
+//
+// Dependencies: 
+//
+// Revision: 
+// Revision 0.01 - File Created
+// Additional Comments: 
+//
+//
+//////////////////////////////////////////////////////////////////////////////////
+
+module	ActivePortSelector	
+#(	
+	parameter	PortsNum	=	4
+)
+(
+	input	Rst_i,
+	
+	input	Mod_i,
+	input	[PortsNum-1:0]	Ctrl_i,
+	
+	output	reg	[PortsNum-1:0]	Ctrl_o
+);	
+
+//================================================================================
+//  LOCALPARAM
+//================================================================================
+
+	localparam	LutNum		=	2**PortsNum;
+	localparam	PortsNone	=	4'b0000;
+	localparam	Ports_1		=	4'b0001;
+	localparam	Ports_2		=	4'b0010;
+	localparam	Ports_21	=	4'b0011;
+	localparam	Ports_3		=	4'b0100;
+	localparam	Ports_31	=	4'b0101;
+	localparam	Ports_32	=	4'b0110;
+	localparam	Ports_321	=	4'b0111;
+	localparam	Ports_4		=	4'b1000;
+	localparam	Ports_41	=	4'b1001;
+	localparam	Ports_42	=	4'b1010;
+	localparam	Ports_421	=	4'b1011;
+	localparam	Ports_43	=	4'b1100;
+	localparam	Ports_431	=	4'b1101;
+	localparam	Ports_432	=	4'b1110;
+	localparam	Ports_4321	=	4'b1111;
+	
+//================================================================================
+//	REG/WIRE
+//================================================================================
+
+	wire		[PortsNum-1:0]	Lut	[LutNum-1:0];
+
+//================================================================================
+//  ASSIGNMENTS
+//================================================================================
+	assign	Lut	[0]		=	~(4'b0000);
+	assign	Lut	[1]		=	~({3'b000,Mod_i});
+	assign	Lut	[2]		=	~({2'b00,Mod_i,1'b0});
+	assign	Lut	[3]		=	~({2'b00,Mod_i,Mod_i});
+	assign	Lut	[4]		=	~({1'b0,Mod_i,2'b0});
+	assign	Lut	[5]		=	~({1'b0,Mod_i,1'b0,Mod_i});
+	assign	Lut	[6]		=	~({1'b0,Mod_i,Mod_i,1'b0});
+	assign	Lut	[7]		=	~({1'b0,Mod_i,Mod_i,Mod_i});
+	assign	Lut	[8]		=	~({Mod_i,3'b000});
+	assign	Lut	[9]		=	~({Mod_i,2'b00,Mod_i});
+	assign	Lut	[10]	=	~({Mod_i,1'b0,Mod_i,1'd0});
+	assign	Lut	[11]	=	~({Mod_i,1'b0,Mod_i,Mod_i});
+	assign	Lut	[12]	=	~({Mod_i,Mod_i,2'b00});
+	assign	Lut	[13]	=	~({Mod_i,Mod_i,1'b0,Mod_i});
+	assign	Lut	[14]	=	~({Mod_i,Mod_i,Mod_i,1'b0});
+	assign	Lut	[15]	=	~({Mod_i,Mod_i,Mod_i,Mod_i});
+
+//================================================================================
+//  CODING
+//================================================================================
+
+always	@(*)	begin
+	if	(!Rst_i)	begin
+		case	(Ctrl_i)
+			PortsNone:	begin
+							Ctrl_o	=	Lut[0];
+						end
+			Ports_1:	begin
+							Ctrl_o	=	Lut[1];
+						end	
+			Ports_2:	begin
+							Ctrl_o	=	Lut[2];
+						end
+			Ports_21:	begin
+							Ctrl_o	=	Lut[3];
+						end	
+			Ports_3:	begin
+							Ctrl_o	=	Lut[4];
+						end		
+			Ports_31:	begin
+							Ctrl_o	=	Lut[5];
+						end	
+			Ports_32:	begin
+							Ctrl_o	=	Lut[6];
+						end	
+			Ports_321:	begin
+							Ctrl_o	=	Lut[7];
+						end
+			Ports_4:	begin
+							Ctrl_o	=	Lut[8];
+						end		
+			Ports_41:	begin
+							Ctrl_o	=	Lut[9];
+						end	
+			Ports_42:	begin
+							Ctrl_o	=	Lut[10];
+						end	
+			Ports_421:	begin
+							Ctrl_o	=	Lut[11];
+						end
+			Ports_43:	begin
+							Ctrl_o	=	Lut[12];
+						end	
+			Ports_431:	begin
+							Ctrl_o	=	Lut[13];
+						end
+			Ports_432:	begin
+							Ctrl_o	=	Lut[14];
+						end
+			Ports_4321:	begin
+							Ctrl_o	=	Lut[15];
+						end
+		endcase
+	end	else	begin
+		Ctrl_o	=	4'd0;
+	end
+end
+
+
+endmodule
+
+
+
+
+
+
+
+
+
+
+

+ 20 - 0
S5444_S/src/src/PulseMeas/Description.txt

@@ -0,0 +1,20 @@
+1. Модуль ActivePortSelector замыкает импульсы выбранного импульсного генератора, как модулирующий сигнал для выбранного порта (или нескольких портов).
+2. Модуль MeasStartEventGen выполняет синхронизацию сигналов запуска и генерирует общий, синхроннизированный сигнал зпуска системы.
+3. Модуль Mux является мультиплексором общего назначения. Благодаря наличию таких мультиплексоров система может гибко переконфигурироваться.
+   Все входные сигналы объединяются в шину, а на выход замыкается сигнал исходя из пришедней на модуль настройки.
+4. Модуль PGenRstGenerator генирирует сбросы для импульсных генераторов. Когда в ПО изменяется настройка импульсного генератора, DSP присылает и новые настройки, и команду в которой находятся биты указывающие на необходимость сброса конкретного(ых) генератора(ов).
+   В ответ на пришедшую команду, модуль генерирует сброс(ы) и перезаписывает команду в RegMap модуле. 
+   
+5. Модуль PulseGen генерирует ипульсы для режима импусльных измерений.
+   Всего у модуля есть 5 возможных режимов работы:
+   0 - Выключен.
+   1 - Шаблон 1 импульс.
+   2 - Шаблон 2 импульса.
+   3 - Шаблон 3 импульса.
+   4 - Burst режим для генерации N импульсов.
+   5 - Continious режим для бесконечной генерации импульсов.
+   
+   Про то как отгружаются и интерпретируются настройки ширины и длительности импульсов, а так же как задается период следования импульсов можно прочитать в протоколе обмена между ПО и DSP.
+   
+6. Модуль SampleStrobeGenRstDemux генерирует сброс конкретно для одного генератора, запускающего измерения. Выбор ведется исходя из настроек пришедших в командах конфигурации системы.
+7. Модуль TrigInt2Mux модуль является мультиплексором, который определяет относительно какого из импульсных генераторов будут синхронизироваться зпуски измерений в определенных режимах измерений.

+ 9 - 2
S5444_S/src/src/PulseMeas/MeasStartEventGen.v

@@ -26,6 +26,7 @@
 //
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	MeasStartEventGen	
 #(	
 	parameter	CmdRegWidth	=	32
@@ -42,22 +43,27 @@ module	MeasStartEventGen
 );	
 
 //================================================================================
-//  LOCALPARAM
-
+//  REG/WIRE
 //================================================================================
+
 	reg		startMeasEventVal;
 	reg		startMeasEvent;
 	reg		initTrig;
 	
 	reg		measTrigReg;
 	wire	measTrigPos;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	measTrigPos			=	(!measTrigReg&MeasTrig_i);
 	assign	StartMeasEvent_o	=	startMeasEvent;
 	assign	InitTrig_o			=	initTrig;
+
 //================================================================================
 //  CODING
+//================================================================================
 
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
@@ -112,6 +118,7 @@ module	MeasStartEventGen
 			initTrig	=	0;
 		end
 	end
+	
 endmodule
 
 

+ 7 - 3
S5444_S/src/src/PulseMeas/Mux.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	Mux	
 #(	
 	parameter	CmdRegWidth		=	24,
@@ -39,19 +40,22 @@ module	Mux
 	output	MuxOut_o
 );	
 
-//================================================================================
-//  LOCALPARAM
-
 //================================================================================
 //	REG/WIRE
+//================================================================================
+
 	reg		muxOut;
 	wire	[PGenNum+TrigPortsNum+5:0]	inputBus	=	{IntTrig2_i,1'b1,1'b0,DspStartCmd_i,DspTrigOut_i,IntTrig_i,ExtPortsBus_i,PulseBus_i};
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
 	assign	MuxOut_o	=	muxOut;
 
 //================================================================================
 //  CODING
+//================================================================================
+
 always	@(*)	begin
 	if	(!Rst_i)	begin
 		muxOut	=	inputBus[MuxCtrl_i];

+ 3 - 3
S5444_S/src/src/PulseMeas/PGenRstGenerator.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	PGenRstGenerator	
 #(	
 	parameter	PgenNum	=	7
@@ -35,6 +36,7 @@ module	PGenRstGenerator
 //================================================================================
 //  LOCALPARAM
 //================================================================================
+
 	localparam	IDLE	=	2'h0;
 	localparam	RST		=	2'h1;
 	localparam	DEL		=	2'h2;
@@ -42,14 +44,12 @@ module	PGenRstGenerator
 //================================================================================
 //  REG/WIRE
 //================================================================================
+
 	reg	[1:0]	currState;
 	
 	reg	[PgenNum-1:0]	pGenRstReg;
 	
 	wire	orPGenRstReg	=	|pGenRstReg;
-//================================================================================
-//  ASSIGNMENTS
-//================================================================================
 
 //================================================================================
 //  CODING

+ 9 - 0
S5444_S/src/src/PulseMeas/PulseGen.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	PulseGen	
 #(	
 	parameter	CmdRegWidth	=	32
@@ -42,6 +43,7 @@ module	PulseGen
 
 //================================================================================
 //  LOCALPARAM
+//================================================================================
 
 	localparam	IDLE	=	2'h0;
 	localparam	DELAY	=	2'h1;
@@ -55,6 +57,9 @@ module	PulseGen
 	localparam	CONTINIOUS	=	8'd5;
 	
 //================================================================================
+//  REG/WIRE
+//================================================================================
+
 	reg		pulse;
 	wire	[31:0]	delArray	[2:0];
 	wire	[31:0]	widthArray	[2:0];
@@ -83,8 +88,11 @@ module	PulseGen
 	
 	wire	enPulse		=	(EnEdge_i)?	enPulseNeg:enPulsePos;
 	wire	enPulseEn	=	(Mode_i	!=	0)?	enPulse:1'b0;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	delArray	[0]	=	P1Del_i;
 	assign	delArray	[1]	=	P2Del_i;
 	assign	delArray	[2]	=	P3Del_i;
@@ -97,6 +105,7 @@ module	PulseGen
 
 //================================================================================
 //  CODING
+//================================================================================
 
 always	@(posedge	Clk_i)	begin
 	if	(!Rst_i)	begin

+ 9 - 0
S5444_S/src/src/PulseMeas/PulseGenNew.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	PulseGenNew	
 #(	
 	parameter	CmdRegWidth	=	32
@@ -42,6 +43,7 @@ module	PulseGenNew
 
 //================================================================================
 //  LOCALPARAM
+//================================================================================
 
 	localparam	IDLE	=	2'h0;
 	localparam	DELAY	=	2'h1;
@@ -55,6 +57,9 @@ module	PulseGenNew
 	localparam	CONTINIOUS	=	8'd5;
 	
 //================================================================================
+//  REG/WIRE
+//================================================================================
+
 	reg		pulse;
 	wire	[31:0]	delArray	[2:0];
 	wire	[31:0]	widthArray	[2:0];
@@ -86,8 +91,11 @@ module	PulseGenNew
 	
 	wire	enPulse		=	(EnEdge_i)?	enPulseNeg:enPulsePos;
 	wire	enPulseEn	=	(Mode_i	!=	0)?	enPulse:1'b0;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	delArray	[0]	=	P1Del_i;
 	assign	delArray	[1]	=	P2Del_i;
 	assign	delArray	[2]	=	P3Del_i;
@@ -100,6 +108,7 @@ module	PulseGenNew
 
 //================================================================================
 //  CODING
+//================================================================================
 
 always	@(*)	begin
 	if	(!Rst_i)	begin

+ 8 - 3
S5444_S/src/src/PulseMeas/SampleStrobeGenRstDemux.v

@@ -18,6 +18,7 @@
 // Additional Comments: 
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module	SampleStrobeGenRstDemux	
 #(	
 	parameter	CmdRegWidth		=	24,
@@ -32,18 +33,21 @@ module	SampleStrobeGenRstDemux
 	output	[PGenNum-1:0]	RstDemuxOut_o
 );	
 
-//================================================================================
-//  LOCALPARAM
-
 //================================================================================
 //	REG/WIRE
+//================================================================================
+
 	reg	[PGenNum-1:0]	demuxOut;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	RstDemuxOut_o	=	demuxOut;
 
 //================================================================================
 //  CODING
+//================================================================================
 
 always	@(*)	begin
 	if	(!Rst_i)	begin
@@ -77,6 +81,7 @@ always	@(*)	begin
 		demuxOut	=	0;
 	end
 end
+
 endmodule
 
 

+ 8 - 3
S5444_S/src/src/PulseMeas/StartAfterGainSel.v

@@ -18,6 +18,7 @@
 // Additional Comments: 16.09.2019 file modified in assotiate with task.
 //
 //////////////////////////////////////////////////////////////////////////////////
+
 module StartAfterGainSel
 #(	
 	parameter	ChNum	=	4
@@ -30,17 +31,21 @@ module StartAfterGainSel
 	output	MeasStart_o
 );
 
-//================================================================================
-//  LOCALPARAMS
-
 //================================================================================
 //  REG/WIRE
+//================================================================================
+
 	reg	measStart;
+
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	MeasStart_o	=	measStart;
+
 //================================================================================
 //  CODING
+//================================================================================
 
 always	@(*)	begin
 	if	(!Rst_i)	begin

+ 7 - 3
S5444_S/src/src/PulseMeas/TrigInt2Mux.v

@@ -17,6 +17,7 @@
 // Revision 0.01 - File Created
 // Additional Comments: 
 //
+
 //////////////////////////////////////////////////////////////////////////////////
 module	TrigInt2Mux	
 #(	
@@ -31,19 +32,22 @@ module	TrigInt2Mux
 	output	MuxOut_o
 );	
 
-//================================================================================
-//  LOCALPARAM
-
 //================================================================================
 //	REG/WIRE
+//================================================================================
+
 	reg		muxOut;
 	
 //================================================================================
 //  ASSIGNMENTS
+//================================================================================
+
 	assign	MuxOut_o	=	muxOut;
 
 //================================================================================
 //  CODING
+//================================================================================
+
 always	@(*)	begin
 	if	(!Rst_i)	begin
 		muxOut	=	PulseBus_i[MuxCtrl_i];

+ 2 - 0
S5444_S/src/src/RegMap/Description.txt

@@ -0,0 +1,2 @@
+Регистровая карта для хранения приходящих команд-настроек системы.
+Регистры реализованы согласно документу S5435v4port_reg.xlsx.

+ 10 - 5
S5444_S/src/src/RegMap/RegMap.v

@@ -16,7 +16,7 @@
 // Revision:
 // Revision 0.01 - File Created
 // Additional Comments:
-// нужно доработать модуль для получения возможности обновления регистров как снаружи (внешний dsp) так и изнутри (информацией из других модулей в системе).
+// 
 //////////////////////////////////////////////////////////////////////////////////
 
 module	RegMap	
@@ -144,9 +144,11 @@ module	RegMap
 	output	[CmdDataRegWith-1:0]	MuxCtrl3Reg_o,
 	output	[CmdDataRegWith-1:0]	MuxCtrl4Reg_o
 );
+
 //================================================================================
 //	LOCALPARAMS
 //================================================================================
+
 	localparam	GainCtrlRegAddr			=	7'h0;
 	localparam	GainLowThreshT1RegAddr	=	7'h1;
 	localparam	GainHighThreshT1RegAddr	=	7'h2;
@@ -259,7 +261,7 @@ module	RegMap
 //================================================================================
 //	REG/WIRE
 //================================================================================
-	// common regs
+	
 	reg	[CmdDataRegWith-1:0]	gainCtrlReg;		//Use the same reg for store gain ctrl lines on both working modes 
 	reg	[CmdDataRegWith-1:0]	gainLowThreshT1Reg;
 	reg	[CmdDataRegWith-1:0]	gainHighThreshT1Reg;
@@ -368,9 +370,11 @@ module	RegMap
 
 	//ans reg
 	reg	[CmdDataRegWith-1:0]	ansReg;
+
 //================================================================================
 //	ASSIGNMENTS
 //================================================================================
+
 	assign	GainCtrlReg_o			=	gainCtrlReg;		
 	assign	GainLowThreshT1Reg_o	=	gainLowThreshT1Reg;
 	assign	GainHighThreshT1Reg_o	=	gainHighThreshT1Reg;		
@@ -479,9 +483,11 @@ module	RegMap
 	assign	MuxCtrl4Reg_o		=	muxCtrl4Reg;
 	
 	assign	AnsDataReg_o		=	ansReg;
+
 //================================================================================
 //	CODING
 //================================================================================
+
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
 			if	(Val_i)	begin
@@ -867,8 +873,7 @@ module	RegMap
 			pGMode1Reg			<=	{CmdDataRegWith{1'b0}};	
 		end
 	end
-	
-	
+
 	always	@(posedge	Clk_i)	begin
 		if	(!Rst_i)	begin
 			if	(Val_i)	begin
@@ -972,7 +977,7 @@ module	RegMap
 					DspTrigOut2Addr:		begin
 												ansReg	=	dspTrigOut2Reg;
 											end
-					default:		begin
+					default:				begin
 												ansReg	=	0;
 											end
 				endcase

+ 30 - 6
S5444_S/src/src/Top/S5443Top.v

@@ -21,8 +21,6 @@
 //
 //Spi clock for ADC initialization is 15Mhz.
 //Spi clock for RegMap work is 41Mhz.
-//Нужно сделать процедуру сброса для импульсных измерений, такую же как для обычных, тоесть по детектированию спадающего фронта StartMeas;
-//Забрать из команды настройки измерения, биты управления ключем и замкнуть на выходы.
 //////////////////////////////////////////////////////////////////////////////////
 
 //  xc7s25-2csga225
@@ -119,10 +117,11 @@ module	S5443Top
 	///test port for testbench
 	input	[AdcDataWidth-1:0]	AdcData_i
 );
+
 //================================================================================
 //  reg/wire
 //================================================================================	
-	//captured data
+
 	wire	[AdcDataWidth-1:0]	adc1ChT1Data;
 	wire	[AdcDataWidth-1:0]	adc1ChR1Data;
 	wire	[AdcDataWidth-1:0]	adc2ChR2Data;
@@ -371,6 +370,9 @@ module	S5443Top
 	wire	fifoEn;
 	reg		dspReadyForRxReg;
 	wire	sampleStrobeGenRst;
+
+	integer m;
+
 //================================================================================
 //  assignments
 //================================================================================	
@@ -512,10 +514,10 @@ module	S5443Top
 	
 	assign	Overload_o	=	overCtrlR;
 	// assign	Overload_o	=	intTrig2;
+
 //================================================================================
 //  CODING
 //================================================================================
-integer m;
 
 always	@(posedge	gclk)	begin	
 	stopMeasR	<=	stopMeas;
@@ -1061,14 +1063,13 @@ PulseGenMux
 	.MuxOut_o		(pgMuxedOut[j])
 );	
 
-PulseGenNew
+PulseGen
 #(	
 	.CmdRegWidth	(CmdRegWidth)
 )
 PulseGenerator
 (
 	.Rst_i			(initRst|pGenRst[j]|pGenMeasRst[j]),
-	// .Rst_i			(initRst|pGenMeasRst[j]),
 	.Clk_i			(gclk),
 	.EnPulse_i		(pgMuxedOut[j]),
 	
@@ -1084,6 +1085,29 @@ PulseGenerator
 	
 	.Pulse_o		(pulseBus[j])
 );	
+
+// PulseGenNew
+// #(	
+// 	.CmdRegWidth	(CmdRegWidth)
+// )
+// TestPgen
+// (
+// 	.Rst_i			(initRst|pGenRst[j]|pGenMeasRst[j]),
+// 	.Clk_i			(gclk),
+// 	.EnPulse_i		(pgMuxedOut[j]),
+	
+// 	.PulsePol_i		(pgPulsePolArray[j]),
+// 	.EnEdge_i		(pgEnEdgeArray[j]),
+// 	.Mode_i			(pgModeArray[j]),
+// 	.P1Del_i		(pgP1DelArray[j]),
+// 	.P2Del_i		(pgP2DelArray[j]),
+// 	.P3Del_i		(pgP3DelArray[j]),
+// 	.P1Width_i		(pgP1WidthArray[j]),
+// 	.P2Width_i		(pgP2WidthArray[j]),
+// 	.P3Width_i		(pgP3WidthArray[j]),
+	
+// 	.Pulse_o		(pulseBus[j])
+// );	
 end
 endgenerate