|
@@ -163,20 +163,38 @@ module S5443TopPulseProfileTb;
|
|
|
parameter [31:0] MuxCtrl3RegCmd = {8'h1e,4'h0,GATINGMUXCMD,EXTTRIGMUXCMD,EP2MUXCMD,EP1MUXCMD};
|
|
parameter [31:0] MuxCtrl3RegCmd = {8'h1e,4'h0,GATINGMUXCMD,EXTTRIGMUXCMD,EP2MUXCMD,EP1MUXCMD};
|
|
|
parameter [31:0] MuxCtrl4RegCmd = {8'h1f,4'h0,EP6MUXCMD,EP5MUXCMD,EP4MUXCMD,EP3MUXCMD};
|
|
parameter [31:0] MuxCtrl4RegCmd = {8'h1f,4'h0,EP6MUXCMD,EP5MUXCMD,EP4MUXCMD,EP3MUXCMD};
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ parameter [31:0] DirectAdc1Access = {8'h13,24'hA};
|
|
|
|
|
+ parameter [31:0] DirectAdc2Access = {8'h14,24'hA};
|
|
|
|
|
+
|
|
|
//=================================================================================================================================================================================================================
|
|
//=================================================================================================================================================================================================================
|
|
|
|
|
|
|
|
|
|
+ wire spiRst = 1'b1;
|
|
|
|
|
+ // wire spiRst = 1'b0;
|
|
|
|
|
+
|
|
|
reg Clk41;
|
|
reg Clk41;
|
|
|
reg Clk50;
|
|
reg Clk50;
|
|
|
reg Clk70;
|
|
reg Clk70;
|
|
|
|
|
|
|
|
reg [31:0] tb_cnt=4'd0;
|
|
reg [31:0] tb_cnt=4'd0;
|
|
|
reg rst;
|
|
reg rst;
|
|
|
- reg mosi_i = 1'b0;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ reg mosi0;
|
|
|
|
|
+ reg mosi1;
|
|
|
|
|
+
|
|
|
|
|
+ wire miso0_mosi2;
|
|
|
|
|
+ wire miso1_mosi3;
|
|
|
|
|
+
|
|
|
|
|
+ reg mosi2;
|
|
|
|
|
+ reg mosi3;
|
|
|
|
|
+
|
|
|
|
|
+ assign miso0_mosi2 = (spiRst)? 1'bz:mosi2;
|
|
|
|
|
+ assign miso1_mosi3 = (spiRst)? 1'bz:mosi3;
|
|
|
|
|
+
|
|
|
reg Miso_i = 1'b0;
|
|
reg Miso_i = 1'b0;
|
|
|
- reg ss_i;
|
|
|
|
|
|
|
+ reg ss;
|
|
|
reg clk_i = 1'b0;
|
|
reg clk_i = 1'b0;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
reg [31:0] DspSpiData;
|
|
reg [31:0] DspSpiData;
|
|
|
reg startCalcCmdReg;
|
|
reg startCalcCmdReg;
|
|
|
|
|
|
|
@@ -201,6 +219,8 @@ module S5443TopPulseProfileTb;
|
|
|
assign trig0R = trig0;
|
|
assign trig0R = trig0;
|
|
|
assign trig1R = trig1;
|
|
assign trig1R = trig1;
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
//==========================================================================================
|
|
//==========================================================================================
|
|
|
//clocks gen
|
|
//clocks gen
|
|
|
always #10 Clk50 = ~Clk50;
|
|
always #10 Clk50 = ~Clk50;
|
|
@@ -209,6 +229,7 @@ module S5443TopPulseProfileTb;
|
|
|
always #(24.390243902439/2) Clk41 = ~Clk41;
|
|
always #(24.390243902439/2) Clk41 = ~Clk41;
|
|
|
|
|
|
|
|
wire sck_i;
|
|
wire sck_i;
|
|
|
|
|
+
|
|
|
//==========================================================================================
|
|
//==========================================================================================
|
|
|
initial begin
|
|
initial begin
|
|
|
Clk50 = 1'b1;
|
|
Clk50 = 1'b1;
|
|
@@ -279,7 +300,8 @@ ncoInst
|
|
|
|
|
|
|
|
S5443Top MasterFpga
|
|
S5443Top MasterFpga
|
|
|
(
|
|
(
|
|
|
- .Clk_i (Clk50),
|
|
|
|
|
|
|
+ .ClkP_i (Clk50),
|
|
|
|
|
+ .ClkN_i (~Clk50),
|
|
|
.Led_o (),
|
|
.Led_o (),
|
|
|
//------------------------------------------
|
|
//------------------------------------------
|
|
|
.Adc1FclkP_i (),
|
|
.Adc1FclkP_i (),
|
|
@@ -313,11 +335,18 @@ S5443Top MasterFpga
|
|
|
.Adc1InitCs_o (),
|
|
.Adc1InitCs_o (),
|
|
|
.Adc2InitCs_o (),
|
|
.Adc2InitCs_o (),
|
|
|
.AdcInitRst_o (),
|
|
.AdcInitRst_o (),
|
|
|
|
|
+
|
|
|
|
|
+ .DitherCtrlCh1_o (),
|
|
|
|
|
+ .DitherCtrlCh2_o (),
|
|
|
//------------------------------------------
|
|
//------------------------------------------
|
|
|
|
|
|
|
|
- .Mosi_i (mosi_i),
|
|
|
|
|
- .Sck_i (~sck_i),
|
|
|
|
|
- .Ss_i (ss_i),
|
|
|
|
|
|
|
+ .Mosi0_i (mosi0),
|
|
|
|
|
+ .Mosi1_i (mosi1),
|
|
|
|
|
+ .Miso0_Mosi2_io (miso0_mosi2),
|
|
|
|
|
+ .Miso1_Mosi3_io (miso1_mosi3),
|
|
|
|
|
+ .SpiRst_i (spiRst),
|
|
|
|
|
+ .Sck_i (Clk41),
|
|
|
|
|
+ .Ss_i (ss),
|
|
|
|
|
|
|
|
.LpOutClk_o (),
|
|
.LpOutClk_o (),
|
|
|
.LpOutFs_o (),
|
|
.LpOutFs_o (),
|
|
@@ -339,11 +368,12 @@ S5443Top MasterFpga
|
|
|
.Overload_o (),
|
|
.Overload_o (),
|
|
|
|
|
|
|
|
.PortSel_o (),
|
|
.PortSel_o (),
|
|
|
- .PortSelDir_o (),
|
|
|
|
|
|
|
+ // .PortSelDir_o (),
|
|
|
|
|
|
|
|
//mod out line
|
|
//mod out line
|
|
|
|
|
|
|
|
- .Mod_o (),
|
|
|
|
|
|
|
+ .FastMod_o (),
|
|
|
|
|
+ .StartMeasDsp_o (),
|
|
|
|
|
|
|
|
//gain lines
|
|
//gain lines
|
|
|
.DspReadyForRx_i (1'b0),
|
|
.DspReadyForRx_i (1'b0),
|
|
@@ -353,13 +383,14 @@ S5443Top MasterFpga
|
|
|
// .AdcData_i (Data_i)
|
|
// .AdcData_i (Data_i)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
-parameter IDLE = 2'h0;
|
|
|
|
|
-parameter CMD = 2'h1;
|
|
|
|
|
-parameter TX = 2'h2;
|
|
|
|
|
-parameter PAUSE = 2'h3;
|
|
|
|
|
|
|
+parameter IDLE = 3'h0;
|
|
|
|
|
+parameter CMD = 3'h1;
|
|
|
|
|
+parameter STX = 3'h2;
|
|
|
|
|
+parameter QTX = 3'h3;
|
|
|
|
|
+parameter PAUSE = 3'h4;
|
|
|
|
|
|
|
|
-reg [1:0] txCurrState;
|
|
|
|
|
-reg [1:0] txNextState;
|
|
|
|
|
|
|
+reg [2:0] txCurrState;
|
|
|
|
|
+reg [2:0] txNextState;
|
|
|
|
|
|
|
|
wire txWork = tb_cnt >= 23;
|
|
wire txWork = tb_cnt >= 23;
|
|
|
// wire txStop = (cmdCnt >= 90) & (cmdCnt >= 70) & (cmdCnt >= 71);
|
|
// wire txStop = (cmdCnt >= 90) & (cmdCnt >= 70) & (cmdCnt >= 71);
|
|
@@ -383,7 +414,7 @@ end
|
|
|
|
|
|
|
|
always @(posedge Clk41) begin
|
|
always @(posedge Clk41) begin
|
|
|
if (!rst) begin
|
|
if (!rst) begin
|
|
|
- if (txCurrState == TX) begin
|
|
|
|
|
|
|
+ if (txCurrState == STX || txCurrState == QTX) begin
|
|
|
txCnt <= txCnt+1;
|
|
txCnt <= txCnt+1;
|
|
|
end else begin
|
|
end else begin
|
|
|
txCnt <= 0;
|
|
txCnt <= 0;
|
|
@@ -409,9 +440,9 @@ end
|
|
|
always @(posedge Clk41) begin
|
|
always @(posedge Clk41) begin
|
|
|
if (txCurrState == CMD) begin
|
|
if (txCurrState == CMD) begin
|
|
|
if (cmdCnt == 0) begin
|
|
if (cmdCnt == 0) begin
|
|
|
- DspSpiData <= MeasCmd;
|
|
|
|
|
|
|
+ DspSpiData <= DirectAdc1Access;
|
|
|
end else if (cmdCnt == 1) begin
|
|
end else if (cmdCnt == 1) begin
|
|
|
- DspSpiData <= IfFtwH;
|
|
|
|
|
|
|
+ DspSpiData <= DirectAdc2Access;
|
|
|
end else if (cmdCnt == 2) begin
|
|
end else if (cmdCnt == 2) begin
|
|
|
DspSpiData <= IfFtwL;
|
|
DspSpiData <= IfFtwL;
|
|
|
end else if (cmdCnt == 3) begin
|
|
end else if (cmdCnt == 3) begin
|
|
@@ -553,33 +584,46 @@ always @(posedge Clk41) begin
|
|
|
end else begin
|
|
end else begin
|
|
|
DspSpiData <= 32'hfffffff;
|
|
DspSpiData <= 32'hfffffff;
|
|
|
end
|
|
end
|
|
|
- end else if (txCurrState == TX) begin
|
|
|
|
|
|
|
+ end else if (txCurrState == STX||txCurrState == QTX) begin
|
|
|
DspSpiData <= DspSpiData<<1;
|
|
DspSpiData <= DspSpiData<<1;
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
always @(posedge Clk41) begin
|
|
always @(posedge Clk41) begin
|
|
|
- if (txCurrState == TX) begin
|
|
|
|
|
|
|
+ if (txCurrState == STX) begin
|
|
|
if (txCnt >= 7'd0) begin
|
|
if (txCnt >= 7'd0) begin
|
|
|
- mosi_i <= DspSpiData[31];
|
|
|
|
|
|
|
+ mosi0 <= DspSpiData[31];
|
|
|
end else begin
|
|
end else begin
|
|
|
- mosi_i <= 1'b1;
|
|
|
|
|
|
|
+ mosi0 <= 1'b1;
|
|
|
end
|
|
end
|
|
|
- end else begin
|
|
|
|
|
- mosi_i <= 1'b1;
|
|
|
|
|
|
|
+ end else if (txCurrState == QTX) begin
|
|
|
|
|
+ if (txCnt >= 7'd0) begin
|
|
|
|
|
+ mosi0 <= DspSpiData[7];
|
|
|
|
|
+ mosi1 <= DspSpiData[15];
|
|
|
|
|
+ mosi2 <= DspSpiData[23];
|
|
|
|
|
+ mosi3 <= DspSpiData[31];
|
|
|
|
|
+ end else begin
|
|
|
|
|
+ mosi0 <= 1'b1;
|
|
|
|
|
+ mosi1 <= 1'b1;
|
|
|
|
|
+ mosi2 <= 1'b1;
|
|
|
|
|
+ mosi3 <= 1'b1;
|
|
|
|
|
+ end
|
|
|
|
|
+ end else begin
|
|
|
|
|
+ mosi0 <= 1'b1;
|
|
|
|
|
+ mosi1 <= 1'b1;
|
|
|
|
|
+ mosi2 <= 1'b1;
|
|
|
|
|
+ mosi3 <= 1'b1;
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
always @(posedge Clk41) begin
|
|
always @(posedge Clk41) begin
|
|
|
- if (txCurrState == TX) begin
|
|
|
|
|
- ss_i <= 1'b0;
|
|
|
|
|
|
|
+ if (txCurrState == STX || txCurrState == QTX) begin
|
|
|
|
|
+ ss <= 1'b0;
|
|
|
end else begin
|
|
end else begin
|
|
|
- ss_i <= 1'b1;
|
|
|
|
|
|
|
+ ss <= 1'b1;
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-assign sck_i = Clk41;
|
|
|
|
|
-
|
|
|
|
|
always @(posedge Clk41) begin
|
|
always @(posedge Clk41) begin
|
|
|
if (rst) begin
|
|
if (rst) begin
|
|
|
txCurrState <= IDLE;
|
|
txCurrState <= IDLE;
|
|
@@ -595,24 +639,36 @@ always @(*) begin
|
|
|
IDLE : begin
|
|
IDLE : begin
|
|
|
if (txWork) begin
|
|
if (txWork) begin
|
|
|
txNextState = CMD;
|
|
txNextState = CMD;
|
|
|
- end else begin
|
|
|
|
|
|
|
+ end else begin
|
|
|
txNextState = IDLE;
|
|
txNextState = IDLE;
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
CMD : begin
|
|
CMD : begin
|
|
|
if (!txStop) begin
|
|
if (!txStop) begin
|
|
|
- txNextState = TX;
|
|
|
|
|
- end else begin
|
|
|
|
|
|
|
+ if (spiRst) begin
|
|
|
|
|
+ txNextState = STX;
|
|
|
|
|
+ end else begin
|
|
|
|
|
+ txNextState = QTX;
|
|
|
|
|
+ end
|
|
|
|
|
+ end else begin
|
|
|
txNextState = IDLE;
|
|
txNextState = IDLE;
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
- TX : begin
|
|
|
|
|
|
|
+ STX : begin
|
|
|
if (txCnt==6'd31) begin
|
|
if (txCnt==6'd31) begin
|
|
|
txNextState = PAUSE;
|
|
txNextState = PAUSE;
|
|
|
end else begin
|
|
end else begin
|
|
|
- txNextState = TX;
|
|
|
|
|
|
|
+ txNextState = STX;
|
|
|
|
|
+ end
|
|
|
|
|
+ end
|
|
|
|
|
+
|
|
|
|
|
+ QTX : begin
|
|
|
|
|
+ if (txCnt==6'd7) begin
|
|
|
|
|
+ txNextState = PAUSE;
|
|
|
|
|
+ end else begin
|
|
|
|
|
+ txNextState = QTX;
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
|
|