瀏覽代碼

Обновлён тестбенч, исправил названия.

Anatoliy Chigirinskiy 1 年之前
父節點
當前提交
571938cc08

文件差異過大導致無法顯示
+ 82 - 122
constrs_1/new/S5443_3.xdc


+ 2 - 4
sources_1/new/DataFifo/DataFifoWrapper.v

@@ -17,8 +17,8 @@ module DataFifoWrapper
 	input   SmcAre_i,
 	input	SmcAwe_i,
 	input	[AddrRegWidth-1:0]	SmcAddr_i,
-	input   [7:0] TxFifoWrdCnt_i,
-	input   [7:0] RxFifoWrdCnt_i,
+	// input   [7:0] TxFifoWrdCnt_i,
+	// input   [7:0] RxFifoWrdCnt_i,
 
 	input	ToFifoVal_i,
 	input	[CmdRegWidth-1:0]	ToFifoData_i,
@@ -79,8 +79,6 @@ module DataFifoWrapper
 		.ToFifoRxWriteVal_i	(ToFifoRxWriteVal_i),
 		.ToFifoRxReadVal_i	(!SmcAre_i),
 		.SmcAddr_i			(SmcAddr_i),
-		.TxFifoWrdCnt_i		(TxFifoWrdCnt_i),
-		.RxFifoWrdCnt_i		(RxFifoWrdCnt_i),
 		.FifoTxFull_i		(fullFlagTx),
 		.FifoTxRst_i		(FifoTxRst_i),
 		.FifoRxRst_i		(FifoRxRst_i),

+ 0 - 2
sources_1/new/DataFifo/FifoCtrl.v

@@ -23,8 +23,6 @@ module FifoCtrl #(
     input FifoRxEmpty_i,
     input [11:0] SmcAddr_i,
 
-    input   [7:0] TxFifoWrdCnt_i,
-    input   [7:0] RxFifoWrdCnt_i,
 
     input FifoTxWrClock_i,
     input FifoTxRdClock_i,

+ 2 - 2
sources_1/new/MMCM/MmcmWrapper.v

@@ -1,7 +1,7 @@
 
 module MmcmWrapper 
 #(
-	parameter	SpiNum	=	7
+	parameter	SpiNum	=	7,
    parameter   STAGES   =  3
 )
 (
@@ -121,7 +121,7 @@ wire [SpiNum-1:0] spiClk;
          ClkDivSync #(
             .WIDTH(4),
             .STAGES(STAGES)
-         )(
+         ) ClkDiv_Inst (
             .ClkFast_i(Clk_i),
             .ClkSlow_i(clk1out),
             .ClkDiv_i(clkDiv[i]),

+ 1 - 0
sources_1/new/Mux/DataMuxer.v

@@ -164,6 +164,7 @@ module DataMuxer
 									end
 				endcase
 				ToRegMapAddr_o	<=	0;
+				ToRegMapVal_o	<=	0;
 			end	else	begin
 				ToRegMapVal_o	<=	SmcVal_i;
 				ToFifoVal_o		<=	7'h0;

+ 82 - 83
sources_1/new/QuadSPI/QuadSPIm.v

@@ -6,7 +6,6 @@ module QuadSPIm(
     input EmptyFlag_i,
     input ClockPhase_i,
     input [31:0] SpiData_i,
-    input SpiDataVal_i,
     input SelSt_i,
     input [1:0] WidthSel_i,
     input  Lag_i,
@@ -14,10 +13,10 @@ module QuadSPIm(
     input EndianSel_i,
     input [5:0] Stop_i,
     input PulsePol_i,   
-    output reg Mosi0_i,
-    output reg Mosi1_i,
-    output reg Mosi2_i,
-    output reg Mosi3_i,
+    output reg Mosi0_o,
+    output reg Mosi1_o,
+    output reg Mosi2_o,
+    output reg Mosi3_o,
     output reg  Sck_o,
     output reg Val_o,
     output Ss_o 
@@ -306,56 +305,56 @@ module QuadSPIm(
             if (EndianSel_i) begin 
                 case (WidthSel_i) 
                     0 : begin 
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i) ) ? (mosiReg3[0]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i) ) ? (mosiReg3[0]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                     1 : begin 
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                     2 : begin 
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                     3 : begin 
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                 endcase
             end
             else begin 
                 case (WidthSel_i)
                     0 : begin
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[1]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[1]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[1]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[1]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[1]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[1]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[1]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[1]):1'b0;
                     end
                     1 : begin
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[3]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[3]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[3]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt >Lag_i))? (mosiReg3[3]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[3]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[3]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[3]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt >Lag_i))? (mosiReg3[3]):1'b0;
                     end
                     2 : begin
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[5]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[5]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[5]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[5]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[5]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[5]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
                     end
                     3 : begin
-                        Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[7]):1'b0;
-                        Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[7]):1'b0;
-                        Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[7]):1'b0;
-                        Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[7]):1'b0;
+                        Mosi0_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[7]):1'b0;
+                        Mosi1_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[7]):1'b0;
+                        Mosi2_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[7]):1'b0;
+                        Mosi3_o = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[7]):1'b0;
                     end
                 endcase
             end
@@ -364,56 +363,56 @@ module QuadSPIm(
             if (EndianSel_i) begin 
                 case (WidthSel_i) 
                     0 : begin 
-                        Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i) )?(mosiReg3[0]):1'b0;
-                        Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
-                        Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i) )?(mosiReg3[0]):1'b0;
+                        Mosi1_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
+                        Mosi2_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                     1 : begin 
-                        Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
-                        Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
-                        Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
+                        Mosi1_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
+                        Mosi2_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                     2 : begin
-                        Mosi0_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
-                        Mosi1_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
-                        Mosi2_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
+                        Mosi1_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
+                        Mosi2_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                     3 : begin 
-                        Mosi0_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
-                        Mosi1_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
-                        Mosi2_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
-                        Mosi3_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
+                        Mosi0_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
+                        Mosi1_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
+                        Mosi2_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
+                        Mosi3_o = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
                     end
                 endcase
             end
             else begin 
                 case (WidthSel_i)
                     0 : begin
-                        Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[1]):1'b0;
-                        Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[1]):1'b0;
-                        Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[1]):1'b0;
-                        Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[1]):1'b0;
+                        Mosi0_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[1]):1'b0;
+                        Mosi1_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[1]):1'b0;
+                        Mosi2_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[1]):1'b0;
+                        Mosi3_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[1]):1'b0;
                     end
                     1 : begin
-                        Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[3]):1'b0;
-                        Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[3]):1'b0;
-                        Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[3]):1'b0;
-                        Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt >Lag_i))? (mosiReg3[3]):1'b0;
+                        Mosi0_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[3]):1'b0;
+                        Mosi1_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[3]):1'b0;
+                        Mosi2_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[3]):1'b0;
+                        Mosi3_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt >Lag_i))? (mosiReg3[3]):1'b0;
                     end
                     2 : begin
-                        Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[5]):1'b0;
-                        Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[5]):1'b0;
-                        Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[5]):1'b0;
-                        Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
+                        Mosi0_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[5]):1'b0;
+                        Mosi1_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[5]):1'b0;
+                        Mosi2_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[5]):1'b0;
+                        Mosi3_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
                     end
                     3 : begin
-                        Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[7]):1'b0;
-                        Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[7]):1'b0;
-                        Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[7]):1'b0;
-                        Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[7]):1'b0;
+                        Mosi0_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[7]):1'b0;
+                        Mosi1_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[7]):1'b0;
+                        Mosi2_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[7]):1'b0;
+                        Mosi3_o = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[7]):1'b0;
                     end
                 endcase
             end
@@ -454,19 +453,19 @@ module QuadSPIm(
     end
     
     
-    always @(*) begin 
-        if (Rst_i) begin 
-            oldDataFlag = 1'b0;
-        end
-        else begin 
-            if (spiDataR == SpiData_i && (SpiData_i != 0) || EmptyFlag_i ) begin 
-                oldDataFlag = 1'b1;
-            end
-            else begin 
-                oldDataFlag = 1'b0;
-            end
-        end
-    end
+    // always @(*) begin 
+    //     if (Rst_i) begin 
+    //         oldDataFlag = 1'b0;
+    //     end
+    //     else begin 
+    //         if (spiDataR == SpiData_i && (SpiData_i != 0) || EmptyFlag_i ) begin 
+    //             oldDataFlag = 1'b1;
+    //         end
+    //         else begin 
+    //             oldDataFlag = 1'b0;
+    //         end
+    //     end
+    // end
     
     
     
@@ -475,7 +474,7 @@ module QuadSPIm(
             startFlag = 1'b0;
         end
         else begin 
-            if (Start_i && !stopFlag && !EmptyFlag_i  && !oldDataFlag ) begin 
+            if (Start_i && !stopFlag && !EmptyFlag_i ) begin 
                 startFlag = 1'b1;
             end
             else begin 

+ 47 - 31
sources_1/new/S5443_3Top.v

@@ -25,7 +25,7 @@ module S5443_3Top
     parameter CmdRegWidth = 32,
     parameter AddrRegWidth = 12,
     parameter STAGES = 3,
-    parameter SpiNum = 1
+    parameter SpiNum = 7
 
 )
 (
@@ -285,6 +285,11 @@ module S5443_3Top
     wire [SpiNum-1: 0] emptyFlagTx;
 
     wire [SpiNum-1:0] spiEn;
+
+
+    reg [SpiNum-1:0] ssReg;
+    reg [SpiNum-1:0] ssFlashReg;
+
     //================================================================================
     //  ASSIGNMENTS
     //================================================================================
@@ -308,13 +313,14 @@ module S5443_3Top
     // assign Ss_o[5] = (assel[5])? ((chipSelFpga[5])? ssMuxed[5]:~ssMuxed[5]):chipSelFpga[5];
     // assign Ss_o[6] = (assel[6])? ((chipSelFpga[6])? ssMuxed[6]:~ssMuxed[6]):chipSelFpga[6];
 
-    assign Ss_o[0] = (assel[0]) ? ssMuxed[0] : chipSelFpga[0];
-    assign Ss_o[1] = (assel[1]) ? ssMuxed[1] : chipSelFpga[1];
-    assign Ss_o[2] = (assel[2]) ? ssMuxed[2] : chipSelFpga[2];
-    assign Ss_o[3] = (assel[3]) ? ssMuxed[3] : chipSelFpga[3];
-    assign Ss_o[4] = (assel[4]) ? ssMuxed[4] : chipSelFpga[4];
-    assign Ss_o[5] = (assel[5]) ? ssMuxed[5] : chipSelFpga[5];
-    assign Ss_o[6] = (assel[6]) ? ssMuxed[6] : chipSelFpga[6];
+    assign Ss_o[0] = (assel[0]) ? (chipSelFpga[0] ? ssMuxed[0] : 1'b1) : chipSelFpga[0];
+    assign Ss_o[1] = (assel[1]) ? (chipSelFpga[1] ? ssMuxed[1] : 1'b1) : chipSelFpga[1];
+    assign Ss_o[2] = (assel[2]) ? (chipSelFpga[2] ? ssMuxed[2] : 1'b1) : chipSelFpga[2];
+    assign Ss_o[3] = (assel[3]) ? (chipSelFpga[3] ? ssMuxed[3] : 1'b1) : chipSelFpga[3];
+    assign Ss_o[4] = (assel[4]) ? (chipSelFpga[4] ? ssMuxed[4] : 1'b1) : chipSelFpga[4];
+    assign Ss_o[5] = (assel[5]) ? (chipSelFpga[5] ? ssMuxed[5] : 1'b1) : chipSelFpga[5];
+    assign Ss_o[6] = (assel[6]) ? (chipSelFpga[6] ? ssMuxed[6] : 1'b1) : chipSelFpga[6];
+
 
 
     // assign SsFlash_o[0] = (assel[0])?(chipSelFlash[0]? ssMuxed[0]:~ssMuxed[0]):chipSelFlash[0];
@@ -325,13 +331,26 @@ module S5443_3Top
     // assign SsFlash_o[5] = (assel[5])?(chipSelFlash[5]? ssMuxed[5]:~ssMuxed[5]):chipSelFlash[5];
     // assign SsFlash_o[6] = (assel[6])?(chipSelFlash[6]? ssMuxed[6]:~ssMuxed[6]):chipSelFlash[6];
 
-    assign SsFlash_o[0] = (assel[0]) ? ssMuxed[0] : chipSelFlash[0];
-    assign SsFlash_o[1] = (assel[1]) ? ssMuxed[1] : chipSelFlash[1];
-    assign SsFlash_o[2] = (assel[2]) ? ssMuxed[2] : chipSelFlash[2];
-    assign SsFlash_o[3] = (assel[3]) ? ssMuxed[3] : chipSelFlash[3];
-    assign SsFlash_o[4] = (assel[4]) ? ssMuxed[4] : chipSelFlash[4];
-    assign SsFlash_o[5] = (assel[5]) ? ssMuxed[5] : chipSelFlash[5];
-    assign SsFlash_o[6] = (assel[6]) ? ssMuxed[6] : chipSelFlash[6];
+    // assign SsFlash_o[0] = (assel[0]) ? ssMuxed[0] : chipSelFlash[0];
+    // assign SsFlash_o[1] = (assel[1]) ? ssMuxed[1] : chipSelFlash[1];
+    // assign SsFlash_o[2] = (assel[2]) ? ssMuxed[2] : chipSelFlash[2];
+    // assign SsFlash_o[3] = (assel[3]) ? ssMuxed[3] : chipSelFlash[3];
+    // assign SsFlash_o[4] = (assel[4]) ? ssMuxed[4] : chipSelFlash[4];
+    // assign SsFlash_o[5] = (assel[5]) ? ssMuxed[5] : chipSelFlash[5];
+    // assign SsFlash_o[6] = (assel[6]) ? ssMuxed[6] : chipSelFlash[6];
+
+
+
+
+    assign SsFlash_o[0] = (assel[0]) ? (chipSelFlash[0] ? ssMuxed[0] : 1'b1) : chipSelFlash[0];
+    assign SsFlash_o[1] = (assel[1]) ? (chipSelFlash[1] ? ssMuxed[1] : 1'b1) : chipSelFlash[1];
+    assign SsFlash_o[2] = (assel[2]) ? (chipSelFlash[2] ? ssMuxed[2] : 1'b1) : chipSelFlash[2];
+    assign SsFlash_o[3] = (assel[3]) ? (chipSelFlash[3] ? ssMuxed[3] : 1'b1) : chipSelFlash[3];
+    assign SsFlash_o[4] = (assel[4]) ? (chipSelFlash[4] ? ssMuxed[4] : 1'b1) : chipSelFlash[4];
+    assign SsFlash_o[5] = (assel[5]) ? (chipSelFlash[5] ? ssMuxed[5] : 1'b1) : chipSelFlash[5];
+    assign SsFlash_o[6] = (assel[6]) ? (chipSelFlash[6] ? ssMuxed[6] : 1'b1) : chipSelFlash[6];
+
+
 
 
 
@@ -436,13 +455,13 @@ module S5443_3Top
     assign baudRate[6] = spi6Clk[7:0];
     
     
-    assign SpiRst_o[0] = GPIOASync[0];
-    assign SpiRst_o[1] = GPIOASync[1];
-    assign SpiRst_o[2] = GPIOASync[2];
-    assign SpiRst_o[3] = GPIOASync[3];
-    assign SpiRst_o[4] = GPIOASync[4];
-    assign SpiRst_o[5] = GPIOASync[5];
-    assign SpiRst_o[6] = GPIOASync[6];
+    assign SpiRst_o[0] = GPIOA[0];
+    assign SpiRst_o[1] = GPIOA[1];
+    assign SpiRst_o[2] = GPIOA[2];
+    assign SpiRst_o[3] = GPIOA[3];
+    assign SpiRst_o[4] = GPIOA[4];
+    assign SpiRst_o[5] = GPIOA[5];
+    assign SpiRst_o[6] = GPIOA[6];
     
     assign fifoRxRstRdPtr[0] = spi0RxFifoCtrl[0];
     assign fifoRxRstRdPtr[1] = spi1RxFifoCtrl[0];
@@ -899,8 +918,6 @@ module S5443_3Top
                 .SmcAre_i(SmcAre_i),
                 .SmcAwe_i(SmcAwe_i),
                 .SmcAddr_i(addrExt),
-                .TxFifoWrdCnt_i(wordCntTx[i]),
-                .RxFifoWrdCnt_i(wordCntRx[i]),
     			.ToFifoVal_i(toFifoVal[i]),
                 .ToFifoRxData_i(dataToRxFifo[i]),
                 .ToFifoRxWriteVal_i(valToRxFifo[i]),
@@ -910,7 +927,6 @@ module S5443_3Top
     			.TxFifoCtrlReg_o(txFifoCtrlReg[i]),
                 .RxFifoCtrlReg_o(rxFifoCtrlReg[i]),
                 .EmptyFlagTx_o(emptyFlagTx[i]),
-    			.ToSpiVal_o(toSpiVal[i]),
                 .DataFromRxFifo_o(dataFromRxFifo[i]),
     			.ToSpiData_o(toSpiData[i])
     		);
@@ -938,11 +954,12 @@ module S5443_3Top
     
             SPIs SPIs_inst (
                 .Clk_i(spiClkBus[i]),
-                .Rst_i(initRstGen[i]|SpiRst_o[i]| spiMode[i]),
+                .Rst_i(initRstGen[i] | spiMode[i]),
                 .Sck_i(sckR[i]),
                 .Ss_i(ssR[i]),
                 .Mosi0_i(Mosi1_io[i]),
                 .WidthSel_i(widthSel[i]),
+                .EndianSel_i(endianSel[i]),
                 .SelSt_i(selSt[i]),
                 .DataToRxFifo_o(dataToRxFifoR[i]),
                 .Val_o(valToRxR[i])
@@ -953,14 +970,13 @@ module S5443_3Top
                 .Start_i(spiTxEnSync[i]),
                 .Rst_i(initRstGen[i]| !spiMode[i] | !spiEn[i]),
                 .EmptyFlag_i(emptyFlagTx[i]),
-    			.SpiDataVal_i(toSpiVal),
                 .SpiData_i(toSpiData[i]),
                 .Sck_o(sckQ[i]),
                 .Ss_o(ssQ[i]),
-                .Mosi0_i(mosi0Q[i]),
-                .Mosi1_i(mosi1[i]),
-                .Mosi2_i(mosi2[i]),
-                .Mosi3_i(mosi3[i]),
+                .Mosi0_o(mosi0Q[i]),
+                .Mosi1_o(mosi1[i]),
+                .Mosi2_o(mosi2[i]),
+                .Mosi3_o(mosi3[i]),
                 .WidthSel_i(widthSel[i]),
                 .PulsePol_i(clockPol[i]),
                 .ClockPhase_i(clockPhase[i]),

+ 283 - 238
sources_1/new/S5443_3_tb.v

@@ -17,15 +17,218 @@ wire [1:0] SmcBe_i;
 reg SmcAoe_i;
 
 reg [31:0] tb_cnt;
-
 wire [15:0] smcData;
+reg mosi1reg;
+//***********************************************
+//	           SPI0 Adresses
+//***********************************************
 
+// Address map for SPI0
+localparam [10:0] BaseAddr0 = 11'h0;
+localparam [10:0] Spi0CtrlAddr = BaseAddr0;
+localparam [10:0] Spi0ClkAddr = (BaseAddr0 + 4)>>1;
+localparam [10:0] Spi0CsDelayAddr = (BaseAddr0 + 8)>>1;
+localparam [10:0] Spi0CsCtrlAddr = (BaseAddr0 + 12)>>1;
+localparam [10:0] Spi0TxFifoCtrlAddr = (BaseAddr0 + 16)>>1;
+localparam [10:0] Spi0RxFifoCtrlAddr = (BaseAddr0 + 20)>>1;
+localparam [10:0] Spi0TxFifoAddrL = (BaseAddr0 + 24)>>1;
+localparam [10:0] Spi0TxFifoAddrM = (BaseAddr0 + 26)>>1;
+localparam [10:0] Spi0RxFifoAddrL = (BaseAddr0 + 28)>>1;
+localparam [10:0] Spi0RxFifoAddrM = (BaseAddr0 + 30)>>1;
+
+// Data for SPI0CtrlReg 
+
+
+//***********************************************
+//	           SPI0 Ctrl Reg Data
+//***********************************************
+localparam SpiEn0 = 1'b1;//1 for enable, 0 for disable
+localparam ClockPhase0 = 1'b0;//
+localparam ClockPolarity0 = 1'b0;//0 for active high, 1 for active low
+localparam Assel0 = 1'b1;//0 for software control, 1 for hardware control
+localparam SelSt0 = 1'b1; //1 - assert slave select(low), 0 - deassert slave select(high)
+localparam Size0 = 2'd2; //0 - 8 bits, 1 - 16 bits, 2 - 24 bits, 3 - 32 bits
+localparam Mode0 = 1'b0; // 1 - 4 Mosi, 0 - 1 Mosi
+localparam LSBF0 = 1'b0; // 1 - LSB first, 0 - MSB first
+
+localparam [15:0] Spi0CtrlRegData = {8'h0,LSBF0, Mode0, Size0, SelSt0, Assel0, ClockPolarity0, ClockPhase0, SpiEn0};
+
+
+//***********************************************
+//	           SPI0 Clk Reg Data
+//***********************************************
+
+localparam Div = 4'd1; // Custom divider value(input clock frequency = 80 MHz)
+localparam Mux0 = 1'b1; // 0 - input clock, 1 - MMCM output clock
+localparam Mux1 = 3'd0; // MMCM output clock number
+
+localparam Spi0ClkRegData = {8'h0, Mux1, Mux0, Div};
+
+
+//***********************************************
+//	           SPI0 Cs Delay Reg Data
+//***********************************************
+localparam Lag0 = 1'b0; //Extended SPI clock lag control, 0 - Disable, 1 - Enable
+localparam Lead0 = 1'b0; //Extended SPI clock lead control, 0 - Disable, 1 - Enable
+localparam Stop0 = 6'd0; //Number of clock cycles to wait after CS is deasserted
+
+localparam [15:0] Spi0CsDelayRegData = {8'h0, Stop0, Lead0, Lag0};
+
+//***********************************************
+//	           SPI0 Cs Ctrl Reg Data
+//***********************************************
+localparam CS0 = 1'b1; // 1 - device selected, 0 - device deselected
+localparam CS1 = 1'b1; // 1 - device selected, 0 - device deselected
+
+localparam [15:0] Spi0CsCtrlRegData = {14'h0, CS1, CS0};
+
+//***********************************************
+//	           SPI0 Tx Fifo Ctrl Reg Data
+//***********************************************
+localparam RstTxFifo0 = 1'b1; // 1 - Reset Tx FIFO, 0 - Normal operation
+// at least 5 clock cycles of a slow clock
+
+localparam [15:0] Spi0TxFifoCtrlRegDataRstOn = {15'h0, RstTxFifo0};
+localparam [15:0] Spi0TxFifoCtrlRegDataRstOff = {15'h0, 1'b0};
+
+//***********************************************
+//	           SPI0 Rx Fifo Ctrl Reg Data
+//***********************************************
+localparam RstRxFifo0 = 1'b1; // 1 - Reset Rx FIFO, 0 - Normal operation
+
+localparam [15:0] Spi0RxFifoCtrlRegDataRstOn = {15'h0, RstRxFifo0};
+localparam [15:0] Spi0RxFifoCtrlRegDataRstOff = {15'h0, 1'b0};
+
+//***********************************************
+//	           SPITXRX Enable Register
+//***********************************************
+localparam SpiTxRxEn0 = 1'b1;
+localparam SpiTxRxEn1 = 1'b0;
+localparam SpiTxRxEn2 = 1'b0;
+localparam SpiTxRxEn3 = 1'b0;
+localparam SpiTxRxEn4 = 1'b0;
+localparam SpiTxRxEn5 = 1'b0;
+localparam SpiTxRxEn6 = 1'b0;
+
+localparam [15:0] SpiTxRxEnRegData = {8'h0, SpiTxRxEn6, SpiTxRxEn5, SpiTxRxEn4, SpiTxRxEn3, SpiTxRxEn2, SpiTxRxEn1, SpiTxRxEn0};
+
+
+
+//***********************************************
+//	           GPIO Reg Data
+//***********************************************
+localparam RstForSbTmsg = 1'b1; // 1 - Reset for SB TMSG, 0 - Normal operation
+
+
+localparam [15:0] GPIORegDataRstOn = {15'h0, RstForSbTmsg};
+localparam [15:0] GPIORegDataRstOff = {15'h0, 1'b0};
+
+
+//***********************************************
+//	           SPI1HEADERS
+//***********************************************
+localparam [10:0] BaseAddr1 = 11'h50;
+localparam [10:0] Spi1CtrlAddr = BaseAddr1;
+localparam [10:0] Spi1ClkAddr = BaseAddr1 + 4;
+localparam [10:0] Spi1CsDelayAddr = BaseAddr1 + 8;
+localparam [10:0] Spi1CsCtrlAddr = BaseAddr1 + 12;
+localparam [10:0] Spi1TxFifoCtrlAddr = BaseAddr1 + 16;
+localparam [10:0] Spi1RxFifoCtrlAddr = BaseAddr1 + 20;
+localparam [10:0] Spi1TxFifoAddr = BaseAddr1 + 24;
+localparam [10:0] Spi1RxFifoAddr = BaseAddr1 + 28;
+
+//***********************************************
+//	           SPI2HEADERS
+//***********************************************
+localparam [10:0] BaseAddr2 = 11'hF0;
+localparam [10:0] Spi2CtrlAddr = BaseAddr2;
+localparam [10:0] Spi2ClkAddr = BaseAddr2 + 4;
+localparam [10:0] Spi2CsDelayAddr = BaseAddr2 + 8;
+localparam [10:0] Spi2CsCtrlAddr = BaseAddr2 + 12;
+localparam [10:0] Spi2TxFifoCtrlAddr = BaseAddr2 + 16;
+localparam [10:0] Spi2RxFifoCtrlAddr = BaseAddr2 + 20;
+localparam [10:0] Spi2TxFifoAddr = BaseAddr2 + 24;
+localparam [10:0] Spi2RxFifoAddr = BaseAddr2 + 28;
+
+//***********************************************
+//	           SPI3HEADERS
+//***********************************************
+localparam [10:0] BaseAddr3 = 11'h140;
+localparam [10:0] Spi3CtrlAddr = BaseAddr3;
+localparam [10:0] Spi3ClkAddr = BaseAddr3 + 4;
+localparam [10:0] Spi3CsDelayAddr = BaseAddr3 + 8;
+localparam [10:0] Spi3CsCtrlAddr = BaseAddr3 + 12;
+localparam [10:0] Spi3TxFifoCtrlAddr = BaseAddr3 + 16;
+localparam [10:0] Spi3RxFifoCtrlAddr = BaseAddr3 + 20;
+localparam [10:0] Spi3TxFifoAddr = BaseAddr3 + 24;
+localparam [10:0] Spi3RxFifoAddr = BaseAddr3 + 28;
+
+//***********************************************
+//	           SPI4HEADERS
+//***********************************************
+localparam [10:0] BaseAddr4 = 11'h190;
+localparam [10:0] Spi4CtrlAddr = BaseAddr4;
+localparam [10:0] Spi4ClkAddr = BaseAddr4 + 4;
+localparam [10:0] Spi4CsDelayAddr = BaseAddr4 + 8;
+localparam [10:0] Spi4CsCtrlAddr = BaseAddr4 + 12;
+localparam [10:0] Spi4TxFifoCtrlAddr = BaseAddr4 + 16;
+localparam [10:0] Spi4RxFifoCtrlAddr = BaseAddr4 + 20;
+localparam [10:0] Spi4TxFifoAddr = BaseAddr4 + 24;
+localparam [10:0] Spi4RxFifoAddr = BaseAddr4 + 28;
+
+//***********************************************
+//	           SPI5HEADERS
+//***********************************************
+localparam [10:0] BaseAddr5 = 11'h1E0;
+localparam [10:0] Spi5CtrlAddr = BaseAddr5;
+localparam [10:0] Spi5ClkAddr = BaseAddr5 + 4;
+localparam [10:0] Spi5CsDelayAddr = BaseAddr5 + 8;
+localparam [10:0] Spi5CsCtrlAddr = BaseAddr5 + 12;
+localparam [10:0] Spi5TxFifoCtrlAddr = BaseAddr5 + 16;
+localparam [10:0] Spi5RxFifoCtrlAddr = BaseAddr5 + 20;
+localparam [10:0] Spi5TxFifoAddr = BaseAddr5 + 24;
+localparam [10:0] Spi5RxFifoAddr = BaseAddr5 + 28;
+
+
+//***********************************************
+//	           SPI5HEADERS
+//***********************************************
+localparam [10:0] BaseAddr6 = 11'h230;
+localparam [10:0] Spi6CtrlAddr = BaseAddr6;
+localparam [10:0] Spi6ClkAddr = BaseAddr6 + 4;
+localparam [10:0] Spi6CsDelayAddr = BaseAddr6 + 8;
+localparam [10:0] Spi6CsCtrlAddr = BaseAddr6 + 12;
+localparam [10:0] Spi6TxFifoCtrlAddr = BaseAddr6 + 16;
+localparam [10:0] Spi6RxFifoCtrlAddr = BaseAddr6 + 20;
+localparam [10:0] Spi6TxFifoAddr = BaseAddr6 + 24;
+localparam [10:0] Spi6RxFifoAddr = BaseAddr6 + 28;
+
+
+//***********************************************
+//	           SPITXRX Enable Reg Adress
+//***********************************************
+
+localparam SpiTxRxEnAddr = 11'h780;
+
+//***********************************************
+//	           GPIO Reg Adress
+//***********************************************
+
+localparam GPIOAddr = 11'hFF0;
+
+//***********************************************
+//	           ASSIGNS
+//***********************************************
 assign SmcBe_i = (tb_cnt >0 && tb_cnt <=44) ? 2'b00 : 2'b11;
 assign SmcAmsN_i = (tb_cnt > 0 && tb_cnt <= 44) ? 1'b0 : 1'b1;
 assign smcData = SmcData_i;
+assign mosi1_io = (!Mode0) ? mosi0_o : 1'bz;
 
-always #(CLK_PERIOD/2) Clk_i = ~Clk_i;
+//***********************************************
+//	           CLOCK GENERATION
+//***********************************************
 
+always #(CLK_PERIOD/2) Clk_i = ~Clk_i;
 
     S5443_3Top uut (
         .Clk123_i(Clk_i), 
@@ -37,8 +240,8 @@ always #(CLK_PERIOD/2) Clk_i = ~Clk_i;
         .SmcBe_i(SmcBe_i), 
         .SmcAoe_i(SmcAoe_i), 
         .Led_o(), 
-        .Mosi0_o(), 
-        .Mosi1_io(), 
+        .Mosi0_o(mosi0_o), 
+        .Mosi1_io(mosi1_io), 
         .Mosi2_o(), 
         .Mosi3_o(), 
         .Ss_o(), 
@@ -56,249 +259,113 @@ always @(posedge Clk_i) begin
         SmcAwe_i <= 1'b1;
     end
     else begin 
-        case (tb_cnt)
-        0: begin 
-            SmcAwe_i <= 1'b1;
-        end 
-        1: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        2: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        3: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        4: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        5: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        6: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        7: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        8: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        9: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        10: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        11: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        12: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        13: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        14: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        15: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        16: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        17: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        18: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        19: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        20: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        21: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        22: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        23: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        24: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        25: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        26: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        27: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        28: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        29: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        30: begin 
-            SmcAwe_i <= 1'b1;
+        if (tb_cnt > 0 && tb_cnt <= 44) begin 
+            if (tb_cnt % 2 != 0) begin 
+                SmcAwe_i <= 1'b1;
+            end
+            else begin 
+                SmcAwe_i <= 1'b0;
+            end
         end
-        31: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        32: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        33: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        34: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        35: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        36: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        37: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        38: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        39: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        40: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        41: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        42: begin 
-            SmcAwe_i <= 1'b1;
-        end
-        43: begin 
-            SmcAwe_i <= 1'b0;
-        end
-        44: begin 
-            SmcAwe_i <= 1'b1;
-        end
-    endcase
     end
 end
 
+    
+
 
 
 
 always @(posedge Clk_i) begin 
     if (Rst_i) begin 
         SmcAddr_i <= 0;
-        SmcData_i <= 0;
     end
     else begin
+        if (tb_cnt < 27) begin
         case (tb_cnt)
         0: begin 
-            SmcAddr_i <= 12'h00f;
-            SmcData_i <= 16'h0000;
+            SmcAddr_i <= BaseAddr0;
         end
         3: begin 
-            SmcAddr_i <= 12'h7fc;
-            SmcData_i <= 16'h0001;
+            SmcAddr_i <= Spi0ClkAddr;
         end
         5: begin 
-            SmcAddr_i <= 12'h7fd;
-            SmcData_i <= 16'h0000;
+            SmcAddr_i <= Spi0CsDelayAddr;
         end
         7: begin 
-            SmcAddr_i <= 12'h7fe;
-            SmcAddr_i <= 16'h0000;
-        end
-        8: begin 
-            SmcAddr_i <= 12'h0;
-            SmcData_i <= 16'h7f;
-        end
-        10: begin 
-            SmcAddr_i <= 12'h1;
-            SmcData_i <= 16'h0;
-        end
-        12: begin 
-             SmcAddr_i <= 12'h2;
-             SmcData_i <= 16'hd1;
-        end
-        14: begin 
-            SmcAddr_i <= 12'h3;
-            SmcData_i <= 16'h0;
+            SmcAddr_i <= Spi0CsCtrlAddr;
         end
-        16: begin 
-            SmcAddr_i <= 12'h4;
-            SmcData_i <= 16'h0;
-        end
-        18: begin 
-            SmcAddr_i <= 12'h5;
-            SmcData_i <= 16'h0;
-        end
-        20: begin 
-             SmcAddr_i <= 12'h6;
-             SmcData_i <= 16'h3;
-        end
-        22:  begin 
-            SmcAddr_i <= 12'h7;
-            SmcData_i <= 16'h0;
-        end
-        24: begin
-             SmcAddr_i <= 12'h8;
-             SmcData_i <= 16'h1;
-        end
-        26: begin 
-            SmcAddr_i <= 12'h9;
-            SmcData_i <= 16'h0;
-        end
-        28: begin 
-             SmcAddr_i <= 12'ha;
-             SmcData_i <= 16'h1;
-        end
-        30: begin 
-             SmcAddr_i <= 12'hb;
-             SmcData_i <= 16'h0;
+        9: begin 
+            SmcAddr_i <= Spi0TxFifoCtrlAddr;
         end
-        32: begin 
-             SmcAddr_i <= 12'h780;
-             SmcData_i <= 16'h1;
+        11: begin 
+            SmcAddr_i <= Spi0RxFifoCtrlAddr;
         end
-        34: begin
-             SmcAddr_i <= 12'h781;
-             SmcData_i <= 16'h0;
+        19 : begin 
+            SmcAddr_i <= Spi0TxFifoCtrlAddr;
         end
-        36: begin
-             SmcAddr_i <= 12'h7f8;
-             SmcData_i <= 16'h0;
+        21 : begin 
+            SmcAddr_i <= Spi0RxFifoCtrlAddr;
         end
-        38: begin 
-             SmcAddr_i <= 12'h7f9;
-             SmcData_i <= 16'h0;
+        23 : begin 
+            SmcAddr_i <= SpiTxRxEnAddr;
         end
-        40: begin 
-            SmcAddr_i <= 12'h00c;
-            SmcData_i <= 16'h1;
+        endcase
         end
-        42: begin 
-            SmcAddr_i <= 12'h00d;
-            SmcData_i <= 16'h0;
+        else begin 
+            if (tb_cnt % 2 != 0) begin 
+                SmcAddr_i <= Spi0TxFifoAddrL;
+            end
+            else begin 
+                SmcAddr_i <= Spi0TxFifoAddrM;
+            end
         end
-    endcase
     end
 end
 
 
+always @(posedge Clk_i) begin 
+    if (Rst_i) begin 
+        SmcData_i <= 16'h0;
+    end
+    else begin
+        if (tb_cnt < 27 ) begin  
+            case (tb_cnt)
+            0 : begin 
+                SmcData_i <= Spi0CtrlRegData;
+            end
+            3 : begin 
+                SmcData_i <= Spi0ClkRegData;
+            end
+            5 : begin 
+                SmcData_i <= Spi0CsDelayRegData;
+            end
+            7 : begin 
+                SmcData_i <= Spi0CsCtrlRegData;
+            end
+            9 : begin 
+                SmcData_i <= Spi0TxFifoCtrlRegDataRstOn;
+            end
+            11 : begin 
+                SmcData_i <= Spi0RxFifoCtrlRegDataRstOn;
+            end
+            19 : begin 
+                SmcData_i <= Spi0TxFifoCtrlRegDataRstOff;
+            end
+            21 : begin 
+                SmcData_i <= Spi0RxFifoCtrlRegDataRstOff;
+            end
+            23 : begin 
+                SmcData_i <= SpiTxRxEnRegData;
+            end
+            endcase
+        end
+        else begin
+            else begin  
+                SmcData_i <= $urandom_range(0, 8'hFF);
+            end
+        end
+    end
+end
 
 always @(posedge Clk_i) begin 
     if (Rst_i) begin 
@@ -309,34 +376,12 @@ always @(posedge Clk_i) begin
     end
 end
 
-
-// always @(*) begin 
-//     txNextState = IDLE;
-//     case(txCurrState)
-//     IDLE : begin 
-//             if (txWork) begin 
-//                 txNextState = CMD;
-//             end
-//             else begin 
-//                 txNextState = IDLE;
-//             end
-//         end
-//     WRITE : begin 
-//             if () begin 
-//                 txNextState = WRITE;
-//             end
-//             else begin 
-//                 txNextState = IDLE;
-//             end
-//         end
-
-
 initial begin 
     Clk_i = 1'b0;
     Rst_i = 1'b1;
     SmcAre_i = 1'b1;
     SmcAoe_i = 1'b1;
-    #(CLK_PERIOD*10) Rst_i = 1'b0;
+    #(CLK_PERIOD*300) Rst_i = 1'b0;
 
 
 

+ 78 - 33
sources_1/new/SpiR/SPIs.v

@@ -42,7 +42,6 @@ module SPIs (
     	ssRegR	<=	ssReg;
     end
 
-
     always @(*) begin 
         if (Rst_i) begin
           shiftRegM = 32'h0;
@@ -65,8 +64,6 @@ module SPIs (
         end
     end
 
-
-
     always @(posedge Clk_i) begin 
         if (Rst_i) begin 
             Data_o <= 24'h0;
@@ -103,27 +100,50 @@ module SPIs (
         end
     end
 
-
-
-
-    always @(posedge Sck_i or posedge Rst_i) begin 
+    always @(posedge Sck_i) begin 
         if (Rst_i) begin 
             shiftReg<= 32'h0;
         end
         else begin
             if (!EndianSel_i) begin 
                 if (SelSt_i) begin   
-                    if (!Ss_i) begin 
-                        shiftReg<= {shiftReg[30:0], Mosi0_i};
+                    if (!Ss_i) begin
+                        case (WidthSel_i)
+                            0: begin 
+                                shiftReg<= {shiftReg[6:0], Mosi0_i};
+                            end
+                            1: begin 
+                                shiftReg<= {shiftReg[14:0], Mosi0_i};
+                            end
+                            2: begin 
+                                shiftReg<= {shiftReg[22:0], Mosi0_i};
+                            end
+                            3: begin 
+                                shiftReg<= {shiftReg[30:0], Mosi0_i};
+                            end
+                        endcase
                     end
                     else begin 
                         shiftReg<= 32'h0;
                     end
                 end
                 else begin 
-                    if (Ss_i) begin 
-                        shiftReg<= {shiftReg[30:0], Mosi0_i};
-                    end
+                    if (Ss_i) begin
+                        case (WidthSel_i)
+                            0: begin 
+                                shiftReg<= {shiftReg[6:0], Mosi0_i};
+                            end
+                            1: begin 
+                                shiftReg<= {shiftReg[14:0], Mosi0_i};
+                            end
+                            2: begin 
+                                shiftReg<= {shiftReg[22:0], Mosi0_i};
+                            end
+                            3: begin 
+                                shiftReg<= {shiftReg[30:0], Mosi0_i};
+                            end
+                        endcase
+                    end 
                     else begin 
                         shiftReg<= 32'h0;
                     end
@@ -131,16 +151,42 @@ module SPIs (
             end
             else begin 
                 if (SelSt_i) begin   
-                    if (!Ss_i) begin 
-                        shiftReg<= {Mosi0_i, shiftReg[31:1]};
+                    if (!Ss_i) begin
+                        case (WidthSel_i)
+                            0: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[7:1]};
+                            end
+                            1: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[15:1]};
+                            end
+                            2: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[23:1]};
+                            end
+                            3: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[31:1]};
+                            end
+                        endcase
                     end
                     else begin 
                         shiftReg<= 32'h0;
                     end
                 end
                 else begin 
-                    if (Ss_i) begin 
-                        shiftReg<= {Mosi0_i, shiftReg[31:1]};
+                    if (Ss_i) begin
+                        case (WidthSel_i)
+                            0: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[7:1]};
+                            end
+                            1: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[15:1]};
+                            end
+                            2: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[23:1]};
+                            end
+                            3: begin 
+                                shiftReg<= {Mosi0_i, shiftReg[31:1]};
+                            end
+                        endcase
                     end
                     else begin 
                         shiftReg<= 32'h0;
@@ -150,29 +196,28 @@ module SPIs (
         end
     end
 
-
-
-
     always @(posedge Clk_i) begin
-        if (SelSt_i) begin 
-            if (ssReg && !ssRegR) begin 
-                Val_o <= 1'b1;
-            end
-            else begin 
-                Val_o <= 1'b0;
-            end
+        if (Rst_i) begin 
+            Val_o <= 1'b0;
         end
-        else begin 
-            if (!ssReg&& ssRegR) begin 
-                Val_o <= 1'b1;
+        else begin
+            if (SelSt_i) begin 
+                if (ssReg && !ssRegR) begin 
+                    Val_o <= 1'b1;
+                end
+                else begin 
+                    Val_o <= 1'b0;
+                end
             end
             else begin 
-                Val_o <= 1'b0;
+                if (!ssReg&& ssRegR) begin 
+                    Val_o <= 1'b1;
+                end
+                else begin 
+                    Val_o <= 1'b0;
+                end
             end
         end
     end
 
-
-
-
     endmodule