Explorar o código

Добавлен инстанс Gpio2Read. Актуализирован тестбенч

Anatoliy Chigirinskiy hai 1 ano
pai
achega
aae3b2416d
Modificáronse 2 ficheiros con 28 adicións e 7 borrados
  1. 15 2
      src/src/Top/TopSbTmsg.v
  2. 13 5
      src/src/Top/TopSbTmsgTb.sv

+ 15 - 2
src/src/Top/TopSbTmsg.v

@@ -120,6 +120,7 @@ module TopSbTmsg
 	wire flagDirectTemp;
 
 	wire misoTemp;
+	wire misoGpio2;
 	wire anyFlag;
 
 	reg misoReg;	
@@ -153,7 +154,7 @@ assign RfSw1_o 				= gpio1CtrlData[0];
 assign anyFlag = flagDirectTemp | flagDirectMax | flagDirectDds | flagDirectLmx | flagDirectGpio2;
 
 assign RfLd_o = MisoLdLmx_i && MisoLdMax2870_i;
-assign Miso1_io = (anyFlag) ? misoReg : 1'bz;
+assign Miso1_io = misoReg;
 
 //================================================================================
 //  CODING
@@ -174,8 +175,11 @@ always @(*) begin
 		else if (flagDirectTemp) begin 
 			misoReg = misoTemp;
 		end
+		else if (flagDirectGpio2) begin 
+			misoReg = misoGpio2;
+		end
 		else begin 
-			misoReg = 1'b0;
+			misoReg = 1'bz;
 		end
 	end
 end
@@ -395,5 +399,14 @@ Gpio1Ctrl Gpio1Ctrl
 	.GpioReg_o				(gpio1CtrlData)
 );
 
+Gpio2Read Gpio2Read (
+	.Clk_i				(gclk100),
+	.Rst_i				(Rst_i),
+	.ClkSpi_i			(Sck_i),
+	.LdMax_i			(MisoLdMax2870_i),
+	.LdLmx_i			(MisoLdLmx_i),
+	.FlagDirectGpio2_i	(flagDirectGpio2),
+	.MisoGpio2_o		(misoGpio2)
+);
 
 endmodule

+ 13 - 5
src/src/Top/TopSbTmsgTb.sv

@@ -23,6 +23,7 @@ module TopSbTmsgTb;
     logic EndianSel_i;
     logic [5:0] Stop_i;
     logic PulsePol_i;
+    logic MisoLdLmx_i;
 
     // Outputs
     wire Mosi0_o;
@@ -91,14 +92,18 @@ localparam [4:0]  DeviceIdDac = 5'h3;
 localparam [4:0]  DeviceIdAtt = 5'h4;
 localparam [4:0]  DeviceIdShReg = 5'h5;
 localparam [4:0]  DeviceIdMax2870 = 5'h6;
-localparam [4:0]  DeviceIdGPIO = 5'h7;
+localparam [4:0]  DeviceIdGpio1 = 5'h7;
+localparam [4:0]  DeviceIdTemp = 5'h8;
+localparam [4:0]  DeviceIdGpio2 = 5'h9;
 
-localparam [16:0] GpioInitWordNum = 17'd1;
+localparam [16:0] Gpio1InitWordNum = 17'd1;
+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 [23:0] InitGpioHeader        = {1'h0, DeviceIdGPIO, GpioInitWordNum, 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] 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};
@@ -120,6 +125,7 @@ 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 MisoLdLmx_i = 1'b1;
 
 assign emptyFlagTx = (trCnt > 187) ? 1'b1 : 1'b0;
 assign QSPITotalWordNum = LMXWordNum + DDSWordNum + POTWordNum + DACWordNum + ATTWordNum + ShRegWordNum + MaxWordNum + GPIOWordNum; 
@@ -237,10 +243,10 @@ always_comb begin
     else begin 
         // if (!rstInit && locked) begin
             if (trCnt == 0) begin 
-                SPIdata = InitGpioHeader;
+                SPIdata = InitGpio2Header;
             end
             else if (trCnt == 2) begin 
-                SPIdata = InitGpioHeader;
+                SPIdata = InitGpio2Header;
             end
             else if (trCnt == 4) begin
                 SPIdata = InitLMX2594Header;
@@ -334,6 +340,8 @@ always_comb begin
         .Rst_i(rstForFPGA),
         .Sck_i(Sck_o),
         .Ss_i(Ss_o),
+        .MisoLdLmx_i(1'b1),
+        .MisoLdMax2870_i(1'b1),
         .Mosi0_i(Mosi0_o),
         .Mosi1_io(Mosi1_o),
         .Mosi2_i(Mosi2_o),