|
|
@@ -1,6 +1,6 @@
|
|
|
`timescale 1ns/1ps
|
|
|
|
|
|
-module TopSbTmsgTb;
|
|
|
+module TopSbTmsgTb(inout Mosi1_io);
|
|
|
parameter CLK_PERIOD = 8.13; // Clock period in ns
|
|
|
|
|
|
// Inputs
|
|
|
@@ -28,12 +28,12 @@ module TopSbTmsgTb;
|
|
|
// Outputs
|
|
|
wire Mosi0_o;
|
|
|
wire Mosi1_o;
|
|
|
- wire Mosi1_io;
|
|
|
wire Mosi2_o;
|
|
|
wire Mosi3_o;
|
|
|
wire Sck_o;
|
|
|
wire Ss_o;
|
|
|
wire Val_o;
|
|
|
+ wire anyFlag;
|
|
|
|
|
|
wire valR;
|
|
|
wire valQ;
|
|
|
@@ -101,9 +101,11 @@ localparam [16:0] Gpio2InitWordNum = 17'd1;
|
|
|
localparam [16:0] Lmx2594InitWordNum = 17'd113;
|
|
|
localparam [16:0] DDSInitWordNum = 17'd37;
|
|
|
localparam [16:0] MaxInitWordNum = 17'd6;
|
|
|
+localparam [16:0] TempSensWordNum = 17'd1;
|
|
|
|
|
|
-localparam [23:0] InitGpio1Header = {1'h0, DeviceIdGpio1, Gpio1InitWordNum, 1'h1};
|
|
|
-localparam [23:0] InitGpio2Header = {1'b0, DeviceIdGpio2,Gpio2InitWordNum,1'h1 };
|
|
|
+localparam [23:0] InitGpio1Header = {1'h0, DeviceIdGpio1, Gpio1InitWordNum, 1'h1};
|
|
|
+localparam [23:0] InitGpio2Header = {1'b0, DeviceIdGpio2,Gpio2InitWordNum,1'h1 };
|
|
|
+localparam [23:0] TempSensHeader = {1'h0, DeviceIdTemp, TempSensWordNum, 1'h1};
|
|
|
localparam [23:0] InitLMX2594Header = {1'h0, DeviceIdLmx2594, Lmx2594InitWordNum, 1'h1};
|
|
|
localparam [23:0] InitDDSHeader = {1'h0, DeviceIdDDS, DDSInitWordNum, 1'h1};
|
|
|
localparam [23:0] InitMAX2870Header = {1'h0, DeviceIdMax2870, MaxInitWordNum, 1'h1};
|
|
|
@@ -125,9 +127,10 @@ assign Val_o = (modeSel) ? valQ : valR;
|
|
|
assign Sck_o = (modeSel) ? SckQ : SckR;
|
|
|
assign Ss_o = (modeSel) ? SsQ : SsR;
|
|
|
assign Mosi0_o = (modeSel) ? mosi0Q : mosi0R;
|
|
|
+assign Mosi1_io = (anyFlag) ? 1'bz : Mosi1_o;
|
|
|
assign MisoLdLmx_i = 1'b1;
|
|
|
|
|
|
-assign emptyFlagTx = (trCnt > 187) ? 1'b1 : 1'b0;
|
|
|
+assign emptyFlagTx = (trCnt > 189) ? 1'b1 : 1'b0;
|
|
|
assign QSPITotalWordNum = LMXWordNum + DDSWordNum + POTWordNum + DACWordNum + ATTWordNum + ShRegWordNum + MaxWordNum + GPIOWordNum;
|
|
|
|
|
|
//***********************************************
|
|
|
@@ -248,19 +251,22 @@ always_comb begin
|
|
|
else if (trCnt == 2) begin
|
|
|
SPIdata = InitGpio2Header;
|
|
|
end
|
|
|
- else if (trCnt == 4) begin
|
|
|
+ else if (trCnt == 4) begin
|
|
|
+ SPIdata = TempSensHeader;
|
|
|
+ end
|
|
|
+ else if (trCnt == 6) begin
|
|
|
SPIdata = InitLMX2594Header;
|
|
|
end
|
|
|
// else if (trCnt > 0 && trCnt < 114) begin
|
|
|
// SPIdata = pkt.data;
|
|
|
// end
|
|
|
- else if (trCnt == 118) begin
|
|
|
+ else if (trCnt == 120) begin
|
|
|
SPIdata = InitDDSHeader;
|
|
|
end
|
|
|
- else if (trCnt == 156) begin
|
|
|
+ else if (trCnt == 158) begin
|
|
|
SPIdata = InitMAX2870Header;
|
|
|
end
|
|
|
- else if (trCnt > 156 && trCnt < 163) begin
|
|
|
+ else if (trCnt > 158 && trCnt < 165) begin
|
|
|
// if (trCnt % 2 == 0) begin
|
|
|
// SPIdata = 32'haaaaaaaa;
|
|
|
// end
|
|
|
@@ -270,7 +276,7 @@ always_comb begin
|
|
|
SPIdata = 32'haaaaaaaa;
|
|
|
// SPIdata = pkt.data32;
|
|
|
end
|
|
|
- else if (trCnt == 163) begin
|
|
|
+ else if (trCnt == 165) begin
|
|
|
SPIdata = AllDevQSPIHeader;
|
|
|
end
|
|
|
else begin
|
|
|
@@ -334,6 +340,13 @@ always_comb begin
|
|
|
.Ss_o(SsQ),
|
|
|
.Val_o(valQ)
|
|
|
);
|
|
|
+
|
|
|
+ ExtI2cSlaveEmul ExtI2cSlaveEmul_inst (
|
|
|
+ .scl (i2cScl),
|
|
|
+ .sda (i2cSda)
|
|
|
+ );
|
|
|
+
|
|
|
+ pullup p2(i2cSda); // pullup sda line
|
|
|
|
|
|
TopSbTmsg TopSbTmsg_inst (
|
|
|
.Clk_i(Clk24),
|
|
|
@@ -342,8 +355,11 @@ always_comb begin
|
|
|
.Ss_i(Ss_o),
|
|
|
.MisoLdLmx_i(1'b1),
|
|
|
.MisoLdMax2870_i(1'b1),
|
|
|
+ .I2cScl_o(i2cScl),
|
|
|
+ .I2cSda_io(i2cSda),
|
|
|
+ .AnyFlag_o(anyFlag),
|
|
|
.Mosi0_i(Mosi0_o),
|
|
|
- .Mosi1_io(Mosi1_o),
|
|
|
+ .Mosi1_io(Mosi1_io),
|
|
|
.Mosi2_i(Mosi2_o),
|
|
|
.Mosi3_i(Mosi3_o)
|
|
|
);
|