|
|
@@ -1,4 +1,4 @@
|
|
|
-`timescale 1ns / 1ps
|
|
|
+`timescale 10ns / 10ps
|
|
|
|
|
|
//=============================================================================================================
|
|
|
|
|
|
@@ -31,64 +31,73 @@
|
|
|
//=============================================================================================================
|
|
|
module S5443TopPulseProfileTb;
|
|
|
|
|
|
- localparam [3:0] EP1MUXCMD = 4'd1;
|
|
|
- localparam [3:0] EP2MUXCMD = 4'd1;
|
|
|
- localparam [3:0] EP3MUXCMD = 4'd1;
|
|
|
- localparam [3:0] EP4MUXCMD = 4'd1;
|
|
|
- localparam [3:0] EP5MUXCMD = 4'd1;
|
|
|
- localparam [3:0] EP6MUXCMD = 4'd1;
|
|
|
-
|
|
|
- localparam [3:0] PG1MUXCMD = 4'd13;
|
|
|
- localparam [3:0] PG2MUXCMD = 4'd0;
|
|
|
- localparam [3:0] PG3MUXCMD = 4'd0;
|
|
|
- localparam [3:0] PG4MUXCMD = 4'd0;
|
|
|
- localparam [3:0] PG5MUXCMD = 4'd0;
|
|
|
- localparam [3:0] PG6MUXCMD = 4'd0;
|
|
|
- localparam [3:0] PG7MUXCMD = 4'd0;
|
|
|
-
|
|
|
- localparam [2:0] PG1MODE = 3'd1;
|
|
|
+ parameter IsSim = 1'b1;
|
|
|
+ localparam [4:0] EP1MUXCMD = 5'd14;
|
|
|
+ localparam [4:0] EP2MUXCMD = 5'd1;
|
|
|
+ localparam [4:0] EP3MUXCMD = 5'd1;
|
|
|
+ localparam [4:0] EP4MUXCMD = 5'd1;
|
|
|
+ localparam [4:0] EP5MUXCMD = 5'd1;
|
|
|
+ localparam [4:0] EP6MUXCMD = 5'd1;
|
|
|
+
|
|
|
+ localparam [4:0] PG1MUXCMD = 5'd13;
|
|
|
+ localparam [4:0] PG2MUXCMD = 5'd0;
|
|
|
+ localparam [4:0] PG3MUXCMD = 5'd18;
|
|
|
+ localparam [4:0] PG4MUXCMD = 5'd18;
|
|
|
+ localparam [4:0] PG5MUXCMD = 5'd0;
|
|
|
+ localparam [4:0] PG6MUXCMD = 5'd0;
|
|
|
+ localparam [4:0] PG7MUXCMD = 5'd0;
|
|
|
+
|
|
|
+ localparam [2:0] PG1MODE = 3'd5;
|
|
|
localparam [2:0] PG2MODE = 3'd1;
|
|
|
- localparam [2:0] PG3MODE = 3'd0;
|
|
|
+ localparam [2:0] PG3MODE = 3'd3;
|
|
|
localparam [2:0] PG4MODE = 3'd4;
|
|
|
localparam [2:0] PG5MODE = 3'd0;
|
|
|
- localparam [2:0] PG6MODE = 3'd3;
|
|
|
- localparam [2:0] PG7MODE = 3'd0;
|
|
|
+ localparam [2:0] PG6MODE = 3'd0;
|
|
|
+ localparam [2:0] PG7MODE = 3'd3;
|
|
|
|
|
|
localparam PG1POL = 1'b0;
|
|
|
localparam PG2POL = 1'b0;
|
|
|
- localparam PG3POL = 1'b1;
|
|
|
+ localparam PG3POL = 1'b0;
|
|
|
localparam PG4POL = 1'b0;
|
|
|
localparam PG5POL = 1'b0;
|
|
|
localparam PG6POL = 1'b0;
|
|
|
localparam PG7POL = 1'b0;
|
|
|
|
|
|
- localparam [3:0] EXTTRIGMUXCMD = 4'd15;
|
|
|
- localparam [3:0] MODMUXCMD = 4'd1;
|
|
|
- localparam [3:0] GATINGMUXCMD = 4'd2;
|
|
|
- localparam [3:0] SMPLSTRBMUXCMD = 4'd3;
|
|
|
+ localparam [4:0] EXTTRIGMUXCMD = 5'd15;
|
|
|
+ localparam [4:0] DSPTRIGINCMD = 5'h8;
|
|
|
+ localparam [4:0] MUXSLOWMODCMD = 5'd1;
|
|
|
+ localparam [4:0] MUXFASTMODCMD = 5'd1;
|
|
|
+ localparam [4:0] GATINGMUXCMD = 5'd2;
|
|
|
+ localparam [4:0] SMPLSTRBMUXCMD = 5'd3;
|
|
|
|
|
|
//COMMANDS FOR REG_MAP
|
|
|
- parameter [31:0] MeasCmd = {8'h11,8'h0,8'h55,8'h0};
|
|
|
- // parameter [31:0] MeasCmd = {8'h11,8'h0,8'h64,8'h0};
|
|
|
+ parameter [31:0] MeasCmdBypass = {8'h11,8'h0,8'h63,8'h1};
|
|
|
+ parameter [31:0] MeasCmdFft = {8'h11,8'h0,8'h63,7'h5,1'b1};
|
|
|
+ // parameter [31:0] MeasCmd = {8'h11,8'h0,8'h53,8'h0};
|
|
|
+ parameter [31:0] MeasCmd = {8'h11,6'h0,8'h63,4'h0,4'h0,2'h2};
|
|
|
+ parameter [23:0] testCmd = {6'h0,8'h63,4'h0,4'h0,2'h2};
|
|
|
parameter [31:0] AdcCtrl = {8'h12,24'h2};
|
|
|
- parameter [31:0] IfFtwH = {8'h15,16'h0,8'h38};
|
|
|
- parameter [31:0] IfFtwL = {8'h16,24'h51eb85};
|
|
|
+ parameter [31:0] SensCtrlCmd = {1'b0,27'h0,4'b1};
|
|
|
+ // parameter [31:0] DitherCmd = {8'h0E,24'h100192};
|
|
|
+ parameter [31:0] DitherCmd = {8'h0E,8'd9,4'h0,4'h1,4'd11,4'h3};
|
|
|
+ parameter [31:0] IfFtwH = {8'h15,16'h0,8'h40};
|
|
|
+ parameter [31:0] IfFtwL = {8'h16,24'h000000};
|
|
|
parameter [31:0] FilterCorrCmdH = {8'h17,24'hD70A3D};
|
|
|
parameter [31:0] FilterCorrCmdL = {8'h18,24'hD70A3D};
|
|
|
|
|
|
//PG7 Cmd
|
|
|
parameter [31:0] PG7P1DelayRegCmd = {8'h20,24'd0};
|
|
|
- parameter [31:0] PG7P2DelayRegCmd = {8'h21,24'd0};
|
|
|
- parameter [31:0] PG7P3DelayRegCmd = {8'h22,24'd0};
|
|
|
- parameter [31:0] PG7P123DelayRegCmd = {8'h23,24'd0};
|
|
|
+ parameter [31:0] PG7P2DelayRegCmd = {8'h21,24'd1};
|
|
|
+ parameter [31:0] PG7P3DelayRegCmd = {8'h22,24'd5};
|
|
|
+ parameter [31:0] PG7P123DelayRegCmd = {8'h23,24'd15};
|
|
|
parameter [31:0] PG7P1WidthRegCmd = {8'h24,24'd1};
|
|
|
- parameter [31:0] PG7P2WidthRegCmd = {8'h25,24'd0};
|
|
|
- parameter [31:0] PG7P3WidthRegCmd = {8'h26,24'd0};
|
|
|
+ parameter [31:0] PG7P2WidthRegCmd = {8'h25,24'd3};
|
|
|
+ parameter [31:0] PG7P3WidthRegCmd = {8'h26,24'd5};
|
|
|
parameter [31:0] PG7P123WidthRegCmd = {8'h27,24'd0};
|
|
|
|
|
|
//PG1 Cmd
|
|
|
- parameter [31:0] PG1P1DelayRegCmd = {8'h28,24'd1};
|
|
|
- parameter [31:0] PG1P2DelayRegCmd = {8'h29,24'd0};
|
|
|
+ parameter [31:0] PG1P1DelayRegCmd = {8'h28,24'd0};
|
|
|
+ parameter [31:0] PG1P2DelayRegCmd = {8'h29,24'd400};
|
|
|
parameter [31:0] PG1P3DelayRegCmd = {8'h2a,24'd0};
|
|
|
parameter [31:0] PG1P123DelayRegCmd = {8'h2b,24'd0};
|
|
|
parameter [31:0] PG1P1WidthRegCmd = {8'h2c,24'd1};
|
|
|
@@ -97,80 +106,105 @@ module S5443TopPulseProfileTb;
|
|
|
parameter [31:0] PG1P123WidthRegCmd = {8'h2f,24'd0};
|
|
|
|
|
|
//PG2 Cmd
|
|
|
- parameter [31:0] PG2P1DelayRegCmd = {8'h30,24'd1500};
|
|
|
- parameter [31:0] PG2P2DelayRegCmd = {8'h31,24'd0};
|
|
|
- parameter [31:0] PG2P3DelayRegCmd = {8'h32,24'd0};
|
|
|
- parameter [31:0] PG2P123DelayRegCmd = {8'h33,24'd0};
|
|
|
- parameter [31:0] PG2P1WidthRegCmd = {8'h34,24'd3000};
|
|
|
- parameter [31:0] PG2P2WidthRegCmd = {8'h35,24'd0};
|
|
|
- parameter [31:0] PG2P3WidthRegCmd = {8'h36,24'd0};
|
|
|
- parameter [31:0] PG2P123WidthRegCmd = {8'h37,24'd0};
|
|
|
+ parameter [31:0] PG2P1DelayRegCmd = {8'h20,24'd0};
|
|
|
+ parameter [31:0] PG2P2DelayRegCmd = {8'h21,24'd1};
|
|
|
+ parameter [31:0] PG2P3DelayRegCmd = {8'h22,24'd5};
|
|
|
+ parameter [31:0] PG2P123DelayRegCmd = {8'h23,24'd15};
|
|
|
+ parameter [31:0] PG2P1WidthRegCmd = {8'h24,24'd1};
|
|
|
+ parameter [31:0] PG2P2WidthRegCmd = {8'h25,24'd3};
|
|
|
+ parameter [31:0] PG2P3WidthRegCmd = {8'h26,24'd5};
|
|
|
+ parameter [31:0] PG2P123WidthRegCmd = {8'h27,24'd0};
|
|
|
|
|
|
//PG3 Cmd
|
|
|
- parameter [31:0] PG3P1DelayRegCmd = {8'h38,24'd6};
|
|
|
- parameter [31:0] PG3P2DelayRegCmd = {8'h39,24'd0};
|
|
|
- parameter [31:0] PG3P3DelayRegCmd = {8'h3a,24'd0};
|
|
|
- parameter [31:0] PG3P123DelayRegCmd = {8'h3b,24'd0};
|
|
|
- parameter [31:0] PG3P1WidthRegCmd = {8'h3c,24'd31};
|
|
|
- parameter [31:0] PG3P2WidthRegCmd = {8'h3d,24'd0};
|
|
|
- parameter [31:0] PG3P3WidthRegCmd = {8'h3e,24'd0};
|
|
|
- parameter [31:0] PG3P123WidthRegCmd = {8'h3f,24'd0};
|
|
|
+ parameter [31:0] PG3P1DelayRegCmd = {8'h20,24'd0};
|
|
|
+ parameter [31:0] PG3P2DelayRegCmd = {8'h21,24'd1};
|
|
|
+ parameter [31:0] PG3P3DelayRegCmd = {8'h22,24'd5};
|
|
|
+ parameter [31:0] PG3P123DelayRegCmd = {8'h23,24'd15};
|
|
|
+ parameter [31:0] PG3P1WidthRegCmd = {8'h24,24'd1};
|
|
|
+ parameter [31:0] PG3P2WidthRegCmd = {8'h25,24'd3};
|
|
|
+ parameter [31:0] PG3P3WidthRegCmd = {8'h26,24'd5};
|
|
|
+ parameter [31:0] PG3P123WidthRegCmd = {8'h27,24'd0};
|
|
|
|
|
|
//PG4 Cmd
|
|
|
- parameter [31:0] PG4P1DelayRegCmd = {8'h40,24'd1};
|
|
|
- parameter [31:0] PG4P2DelayRegCmd = {8'h41,24'd65};
|
|
|
+ parameter [31:0] PG4P1DelayRegCmd = {8'h40,24'd0};
|
|
|
+ parameter [31:0] PG4P2DelayRegCmd = {8'h41,24'd3};
|
|
|
parameter [31:0] PG4P3DelayRegCmd = {8'h42,24'd0};
|
|
|
parameter [31:0] PG4P123DelayRegCmd = {8'h43,24'd0};
|
|
|
- parameter [31:0] PG4P1WidthRegCmd = {8'h44,24'd4};
|
|
|
- parameter [31:0] PG4P2WidthRegCmd = {8'h45,24'd100};
|
|
|
+ parameter [31:0] PG4P1WidthRegCmd = {8'h44,24'd1};
|
|
|
+ parameter [31:0] PG4P2WidthRegCmd = {8'h45,24'd10};
|
|
|
parameter [31:0] PG4P3WidthRegCmd = {8'h46,24'd7};
|
|
|
parameter [31:0] PG4P123WidthRegCmd = {8'h47,24'd0};
|
|
|
|
|
|
//PG5 Cmd
|
|
|
- parameter [31:0] PG5P1DelayRegCmd = {8'h48,24'd5};
|
|
|
- parameter [31:0] PG5P2DelayRegCmd = {8'h49,24'd15};
|
|
|
- parameter [31:0] PG5P3DelayRegCmd = {8'h4a,24'd30};
|
|
|
+ parameter [31:0] PG5P1DelayRegCmd = {8'h48,24'd0};
|
|
|
+ parameter [31:0] PG5P2DelayRegCmd = {8'h49,24'd0};
|
|
|
+ parameter [31:0] PG5P3DelayRegCmd = {8'h4a,24'd0};
|
|
|
parameter [31:0] PG5P123DelayRegCmd = {8'h4b,24'd0};
|
|
|
- parameter [31:0] PG5P1WidthRegCmd = {8'h4c,24'd5};
|
|
|
- parameter [31:0] PG5P2WidthRegCmd = {8'h4d,24'd6};
|
|
|
- parameter [31:0] PG5P3WidthRegCmd = {8'h4e,24'd7};
|
|
|
+ parameter [31:0] PG5P1WidthRegCmd = {8'h4c,24'd0};
|
|
|
+ parameter [31:0] PG5P2WidthRegCmd = {8'h4d,24'd0};
|
|
|
+ parameter [31:0] PG5P3WidthRegCmd = {8'h4e,24'd0};
|
|
|
parameter [31:0] PG5P123WidthRegCmd = {8'h4f,24'd0};
|
|
|
|
|
|
//PG6 Cmd
|
|
|
- parameter [31:0] PG6P1DelayRegCmd = {8'h50,24'd5};
|
|
|
- parameter [31:0] PG6P2DelayRegCmd = {8'h51,24'd15};
|
|
|
- parameter [31:0] PG6P3DelayRegCmd = {8'h52,24'd30};
|
|
|
+ parameter [31:0] PG6P1DelayRegCmd = {8'h50,24'd0};
|
|
|
+ parameter [31:0] PG6P2DelayRegCmd = {8'h51,24'd5};
|
|
|
+ parameter [31:0] PG6P3DelayRegCmd = {8'h52,24'd15};
|
|
|
parameter [31:0] PG6P123DelayRegCmd = {8'h53,24'd0};
|
|
|
- parameter [31:0] PG6P1WidthRegCmd = {8'h54,24'd5};
|
|
|
- parameter [31:0] PG6P2WidthRegCmd = {8'h55,24'd6};
|
|
|
- parameter [31:0] PG6P3WidthRegCmd = {8'h56,24'd7};
|
|
|
+ parameter [31:0] PG6P1WidthRegCmd = {8'h54,24'd1};
|
|
|
+ parameter [31:0] PG6P2WidthRegCmd = {8'h55,24'd3};
|
|
|
+ parameter [31:0] PG6P3WidthRegCmd = {8'h56,24'd5};
|
|
|
parameter [31:0] PG6P123WidthRegCmd = {8'h57,24'd0};
|
|
|
|
|
|
- parameter [31:0] MeasNum0RegCmd = {8'h58,24'd30};
|
|
|
- parameter [31:0] MeasNum1RegCmd = {8'h59,24'd0};
|
|
|
+ parameter [31:0] MeasNum0RegCmd = {8'h58,24'd10};
|
|
|
+ parameter [31:0] MeasNum1RegCmd = {8'h59,MUXSLOWMODCMD,MUXFASTMODCMD,DSPTRIGINCMD,25'd0};
|
|
|
parameter [31:0] PGMode0RegCmd = {8'h0b,3'b0,PG7MODE,PG6MODE,PG5MODE,PG4MODE,PG3MODE,PG2MODE,PG1MODE};
|
|
|
- parameter [31:0] PGMode1RegCmd = {8'h1b,7'b0000000,PG7POL,PG6POL,PG5POL,PG4POL,PG3POL,PG2POL,PG1POL,10'b0};
|
|
|
+ parameter [31:0] PGMode1RegCmd = {8'h1b,7'b0000000,PG7POL,PG6POL,PG5POL,PG4POL,PG3POL,PG2POL,PG1POL,10'h0};
|
|
|
|
|
|
- parameter [31:0] MuxCtrl1RegCmd = {8'h1c,PG6MUXCMD,PG5MUXCMD,PG4MUXCMD,PG3MUXCMD,PG2MUXCMD,PG1MUXCMD};
|
|
|
- parameter [31:0] MuxCtrl2RegCmd = {8'h1d,4'b0,SMPLSTRBMUXCMD,GATINGMUXCMD,MODMUXCMD,EXTTRIGMUXCMD,PG7MUXCMD};
|
|
|
- parameter [31:0] MuxCtrl3RegCmd = {8'h1e,EP6MUXCMD,EP5MUXCMD,EP4MUXCMD,EP3MUXCMD,EP2MUXCMD,EP1MUXCMD};
|
|
|
+ parameter [31:0] MuxCtrl1RegCmd = {8'h1c,4'h0,PG7MUXCMD,PG6MUXCMD,PG5MUXCMD,PG4MUXCMD};
|
|
|
+ parameter [31:0] MuxCtrl2RegCmd = {8'h1d,4'h0,PG3MUXCMD,PG2MUXCMD,PG1MUXCMD,SMPLSTRBMUXCMD};
|
|
|
+ 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] DirectAdc1Access = {8'h13,24'hA};
|
|
|
+ parameter [31:0] DirectAdc2Access = {8'h14,24'hA};
|
|
|
+
|
|
|
+ parameter [31:0] PortSelRegCmd = {8'h19,8'h0,4'h3,4'h3,4'h3,4'h3};
|
|
|
+ parameter [31:0] MuxCtrl6RegCmd = {8'h1a,4'h0,5'd17,5'd17,5'd17,5'd17};
|
|
|
+ parameter [31:0] MuxCtrl7RegCmd = {8'h5a,4'h0,5'd17,5'd17,5'd17,5'd17};
|
|
|
//=================================================================================================================================================================================================================
|
|
|
|
|
|
+ wire spiRst = 1'b1;
|
|
|
+ // wire spiRst = 1'b0;
|
|
|
+
|
|
|
reg Clk41;
|
|
|
reg Clk50;
|
|
|
reg Clk70;
|
|
|
|
|
|
reg [31:0] tb_cnt=4'd0;
|
|
|
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 ss_i;
|
|
|
+ reg ss;
|
|
|
reg clk_i = 1'b0;
|
|
|
|
|
|
-
|
|
|
reg [31:0] DspSpiData;
|
|
|
reg startCalcCmdReg;
|
|
|
+ wire startCalcSlaveFpga;
|
|
|
+ wire startMeasS;
|
|
|
+ wire dspReadySlaveFpga;
|
|
|
|
|
|
wire [17:0] cos_value;
|
|
|
wire [17:0] sin_value;
|
|
|
@@ -193,6 +227,8 @@ module S5443TopPulseProfileTb;
|
|
|
assign trig0R = trig0;
|
|
|
assign trig1R = trig1;
|
|
|
|
|
|
+
|
|
|
+
|
|
|
//==========================================================================================
|
|
|
//clocks gen
|
|
|
always #10 Clk50 = ~Clk50;
|
|
|
@@ -201,6 +237,7 @@ module S5443TopPulseProfileTb;
|
|
|
always #(24.390243902439/2) Clk41 = ~Clk41;
|
|
|
|
|
|
wire sck_i;
|
|
|
+
|
|
|
//==========================================================================================
|
|
|
initial begin
|
|
|
Clk50 = 1'b1;
|
|
|
@@ -224,12 +261,9 @@ wire endMeasNeg = !endMeas&endMeasReg;
|
|
|
|
|
|
always @(posedge Clk70) begin
|
|
|
if (!rst) begin
|
|
|
- if (!endMeas) begin
|
|
|
- if (tb_cnt == 3501) begin
|
|
|
- startCalcCmdReg <= 1'b1;
|
|
|
- end
|
|
|
- end else begin
|
|
|
- startCalcCmdReg <= 1'b0;
|
|
|
+ // if (tb_cnt == 3550 | tb_cnt == 3950 |tb_cnt == 4505) begin
|
|
|
+ if (tb_cnt == 3550) begin
|
|
|
+ startCalcCmdReg <= 1'b1;
|
|
|
end
|
|
|
end else begin
|
|
|
startCalcCmdReg <= 1'b0;
|
|
|
@@ -247,8 +281,8 @@ end
|
|
|
wire Adc1DataDa0P;
|
|
|
wire Adc1DataDa1P;
|
|
|
|
|
|
-// wire [31:0] test = 32'h2351eb85;
|
|
|
-wire [31:0] test = 32'h3851eb85;
|
|
|
+wire [31:0] test = 32'h2351eb85;
|
|
|
+// wire [31:0] test = 32'h40000000;
|
|
|
CordicNco
|
|
|
#( .ODatWidth (18),
|
|
|
.PhIncWidth (32),
|
|
|
@@ -269,10 +303,12 @@ ncoInst
|
|
|
);
|
|
|
|
|
|
|
|
|
-S5443Top
|
|
|
-uut (
|
|
|
- .Clk_i (Clk50),
|
|
|
- .Led_o (),
|
|
|
+S5443Top
|
|
|
+#(.IsSim (IsSim))
|
|
|
+MasterFpga
|
|
|
+(
|
|
|
+ .ClkP_i (Clk50),
|
|
|
+ .ClkN_i (~Clk50),
|
|
|
//------------------------------------------
|
|
|
.Adc1FclkP_i (),
|
|
|
.Adc1FclkN_i (),
|
|
|
@@ -305,125 +341,48 @@ uut (
|
|
|
.Adc1InitCs_o (),
|
|
|
.Adc2InitCs_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 (),
|
|
|
.LpOutFs_o (),
|
|
|
.LpOutData_o (),
|
|
|
|
|
|
//fpga-dsp signals
|
|
|
- .StartMeas_i (startCalcCmdReg),
|
|
|
- .StartMeas_o (startMeasS),
|
|
|
- .EndMeas_o (endMeas),
|
|
|
- .TimersClk_o (),
|
|
|
-
|
|
|
- .Trig6to1_io (),
|
|
|
- .Trig6to1Dir_o (trigDir),
|
|
|
-
|
|
|
- .DspTrigOut_i (dspTrigOut), //Trig from DSP
|
|
|
- .DspTrigIn_o (), //Trig To DSP
|
|
|
-
|
|
|
- .OverloadS_i (1'b0),
|
|
|
- .Overload_o (),
|
|
|
-
|
|
|
- .PortSel_o (),
|
|
|
- .PortSelDir_o (),
|
|
|
-
|
|
|
- //mod out line
|
|
|
-
|
|
|
- .Mod_o (),
|
|
|
-
|
|
|
- //gain lines
|
|
|
- .SensEnM_io (sensEn),
|
|
|
- .AmpEn_o (), // 0-adc1ChA 1-adc1ChB 2-adc2ChA 3-adc2ChB
|
|
|
- .AdcData_i (sin_value[17-:14])
|
|
|
-);
|
|
|
+ .StartMeasDsp_i (startCalcCmdReg),
|
|
|
+ .StartMeasEvent_i (startCalcCmdReg),
|
|
|
|
|
|
+ .Overload_o (),
|
|
|
|
|
|
-//comment for stupid vivado
|
|
|
-S5443TopS SlaveFpga
|
|
|
-(
|
|
|
- //common ports
|
|
|
- .Clk_i (Clk50),
|
|
|
-
|
|
|
- //fpga-adc1 data interface
|
|
|
- .Adc1FclkP_i (),
|
|
|
- .Adc1FclkN_i (),
|
|
|
-
|
|
|
- .Adc1DataDa0P_i (),
|
|
|
- .Adc1DataDa0N_i (),
|
|
|
- .Adc1DataDa1P_i (),
|
|
|
- .Adc1DataDa1N_i (),
|
|
|
-
|
|
|
- .Adc1DataDb0P_i (),
|
|
|
- .Adc1DataDb0N_i (),
|
|
|
- .Adc1DataDb1P_i (),
|
|
|
- .Adc1DataDb1N_i (),
|
|
|
-
|
|
|
- //fpga-adc2 data interface
|
|
|
- .Adc2FclkP_i (),
|
|
|
- .Adc2FclkN_i (),
|
|
|
-
|
|
|
- .Adc2DataDa0P_i (),
|
|
|
- .Adc2DataDa0N_i (),
|
|
|
- .Adc2DataDa1P_i (),
|
|
|
- .Adc2DataDa1N_i (),
|
|
|
-
|
|
|
- .Adc2DataDb0P_i (),
|
|
|
- .Adc2DataDb0N_i (),
|
|
|
- .Adc2DataDb1P_i (),
|
|
|
- .Adc2DataDb1N_i (),
|
|
|
-
|
|
|
- //fpga-adc's initialization interface
|
|
|
- .AdcInitMosi_o (),
|
|
|
- .AdcInitClk_o (),
|
|
|
- .Adc1InitCs_o (),
|
|
|
- .Adc2InitCs_o (),
|
|
|
- .AdcInitRst_o (),
|
|
|
-
|
|
|
- //ditherCtrl
|
|
|
- .DitherCtrlCh1_o (),
|
|
|
- .DitherCtrlCh2_o (),
|
|
|
-
|
|
|
- //fpga-dsp cmd interface
|
|
|
- .Mosi_i (mosi_i),
|
|
|
- .Sck_i (~sck_i),
|
|
|
- .Ss_i (ss_i),
|
|
|
- // .Miso_i,
|
|
|
- .Miso_o (),
|
|
|
-
|
|
|
- //fpga-dsp data interface
|
|
|
- .LpOutClk_o (),
|
|
|
- .LpOutFs_o (),
|
|
|
- .LpOutData_o (),
|
|
|
-
|
|
|
- //fpga-dsp signals
|
|
|
- .StartMeasEvent_i (startMeasS), //"high"- start meas, "low"-stop meas
|
|
|
- //overload lines
|
|
|
- .Overload_o (),
|
|
|
-
|
|
|
- //gain lines
|
|
|
- .SensEnS_io (sensEn),
|
|
|
+ .DspReadyForRx_i (1'b0),
|
|
|
.AmpEn_o (), // 0-adc1ChA 1-adc1ChB 2-adc2ChA 3-adc2ChB
|
|
|
-
|
|
|
- ///test port for testbench
|
|
|
.AdcData_i (sin_value[17-:14])
|
|
|
+ // .AdcData_i (Data_i)
|
|
|
);
|
|
|
|
|
|
-parameter IDLE = 2'h0;
|
|
|
-parameter CMD = 2'h1;
|
|
|
-parameter TX = 2'h2;
|
|
|
-parameter PAUSE = 2'h3;
|
|
|
|
|
|
-reg [1:0] txCurrState;
|
|
|
-reg [1:0] txNextState;
|
|
|
+parameter IDLE = 3'h0;
|
|
|
+parameter CMD = 3'h1;
|
|
|
+parameter STX = 3'h2;
|
|
|
+parameter QTX = 3'h3;
|
|
|
+parameter PAUSE = 3'h4;
|
|
|
+
|
|
|
+reg [2:0] txCurrState;
|
|
|
+reg [2:0] txNextState;
|
|
|
|
|
|
wire txWork = tb_cnt >= 23;
|
|
|
-wire txStop = cmdCnt >= 70;
|
|
|
+// wire txStop = (cmdCnt >= 90) & (cmdCnt >= 70) & (cmdCnt >= 71);
|
|
|
+wire txStop = (cmdCnt >= 150);
|
|
|
|
|
|
|
|
|
reg [6:0] txCnt;
|
|
|
@@ -443,7 +402,7 @@ end
|
|
|
|
|
|
always @(posedge Clk41) begin
|
|
|
if (!rst) begin
|
|
|
- if (txCurrState == TX) begin
|
|
|
+ if (txCurrState == STX || txCurrState == QTX) begin
|
|
|
txCnt <= txCnt+1;
|
|
|
end else begin
|
|
|
txCnt <= 0;
|
|
|
@@ -589,7 +548,7 @@ always @(posedge Clk41) begin
|
|
|
end else if (cmdCnt == 59) begin
|
|
|
DspSpiData <= PG7P3WidthRegCmd;
|
|
|
end else if (cmdCnt == 60) begin
|
|
|
- DspSpiData <= PG7P123WidthRegCmd;
|
|
|
+ DspSpiData <= PortSelRegCmd;
|
|
|
end else if (cmdCnt == 61) begin
|
|
|
DspSpiData <= MeasNum0RegCmd;
|
|
|
end else if (cmdCnt == 62) begin
|
|
|
@@ -606,34 +565,53 @@ always @(posedge Clk41) begin
|
|
|
DspSpiData <= MuxCtrl3RegCmd;
|
|
|
end else if (cmdCnt == 68) begin
|
|
|
DspSpiData <= AdcCtrl;
|
|
|
- end
|
|
|
- end else if (txCurrState == TX) begin
|
|
|
+ end else if (cmdCnt == 99) begin
|
|
|
+ DspSpiData <= MuxCtrl6RegCmd;
|
|
|
+ end else if (cmdCnt == 100) begin
|
|
|
+ DspSpiData <= MuxCtrl7RegCmd;
|
|
|
+ end else begin
|
|
|
+ DspSpiData <= 32'hfffffff;
|
|
|
+ end
|
|
|
+ end else if (txCurrState == STX||txCurrState == QTX) begin
|
|
|
DspSpiData <= DspSpiData<<1;
|
|
|
end
|
|
|
end
|
|
|
|
|
|
always @(posedge Clk41) begin
|
|
|
- if (txCurrState == TX) begin
|
|
|
+ if (txCurrState == STX) begin
|
|
|
if (txCnt >= 7'd0) begin
|
|
|
- mosi_i <= DspSpiData[31];
|
|
|
+ mosi0 <= DspSpiData[31];
|
|
|
end else begin
|
|
|
- mosi_i <= 1'b1;
|
|
|
+ mosi0 <= 1'b1;
|
|
|
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
|
|
|
|
|
|
always @(posedge Clk41) begin
|
|
|
- if (txCurrState == TX) begin
|
|
|
- ss_i <= 1'b0;
|
|
|
+ if (txCurrState == STX || txCurrState == QTX) begin
|
|
|
+ ss <= 1'b0;
|
|
|
end else begin
|
|
|
- ss_i <= 1'b1;
|
|
|
+ ss <= 1'b1;
|
|
|
end
|
|
|
end
|
|
|
|
|
|
-assign sck_i = Clk41;
|
|
|
-
|
|
|
always @(posedge Clk41) begin
|
|
|
if (rst) begin
|
|
|
txCurrState <= IDLE;
|
|
|
@@ -649,24 +627,36 @@ always @(*) begin
|
|
|
IDLE : begin
|
|
|
if (txWork) begin
|
|
|
txNextState = CMD;
|
|
|
- end else begin
|
|
|
+ end else begin
|
|
|
txNextState = IDLE;
|
|
|
end
|
|
|
end
|
|
|
|
|
|
CMD : 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;
|
|
|
end
|
|
|
end
|
|
|
|
|
|
- TX : begin
|
|
|
+ STX : begin
|
|
|
if (txCnt==6'd31) begin
|
|
|
txNextState = PAUSE;
|
|
|
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
|
|
|
|
|
|
@@ -680,28 +670,24 @@ always @(*) begin
|
|
|
endcase
|
|
|
end
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ reg [13:0] Data_i;
|
|
|
+ real pi = 3.14159265358;
|
|
|
+ real phase = 0;
|
|
|
+ real phaseInc = 0.001;
|
|
|
+ real signal;
|
|
|
+ always @ (posedge Clk50)
|
|
|
+ begin
|
|
|
+ if (tb_cnt >= 4505)
|
|
|
+ begin
|
|
|
+ phase = phase + phaseInc;
|
|
|
+ phaseInc <= phaseInc + 0.0005;
|
|
|
+ signal = $sin(2*pi*phase);
|
|
|
+ Data_i = 2**12 * signal;
|
|
|
+ end
|
|
|
+ else
|
|
|
+ Data_i = 0;
|
|
|
+ end
|
|
|
+
|
|
|
endmodule
|
|
|
|
|
|
|