Quellcode durchsuchen

Добавил задержку в один такт на линии Cs

Anatoliy Chigirinskiy vor 8 Monaten
Ursprung
Commit
250d21ed99
2 geänderte Dateien mit 44 neuen und 14 gelöschten Zeilen
  1. 42 13
      src/src/SPIm/SpiM.v
  2. 2 1
      src/src/WrapFifoChain/LmxWrapper.v

+ 42 - 13
src/src/SPIm/SpiM.v

@@ -17,7 +17,8 @@
 //
 ////////////////////////////////////////////////////////////////////////////////////////////
 module SpiM #(
-    parameter DATA_WIDTH = 24
+    parameter DATA_WIDTH = 24,
+    parameter IS_LMX_DELAY = 0
 )(
     input Clk_i,
     input Rst_i,
@@ -58,8 +59,17 @@ reg	ssReg;
 //  ASSIGNMENTS
 //================================================================================
 assign Ss_o = ssReg;
-assign Mosi_o = (!ssReg) ? mosiReg[DATA_WIDTH-1] : 1'b0;
-assign Sck_o = (!ssReg) ? Clk_i : 1'b0;
+generate 
+    if (IS_LMX_DELAY) begin 
+        assign Sck_o = (!ssReg && ssCnt < DATA_WIDTH) ? Clk_i : 1'b0;
+        assign Mosi_o = (!ssReg && ssCnt < DATA_WIDTH) ? mosiReg[DATA_WIDTH-1] : 1'b0;
+    end
+    else begin 
+        assign Sck_o = (!ssReg) ? Clk_i : 1'b0;
+        assign Mosi_o = (!ssReg) ? mosiReg[DATA_WIDTH-1] : 1'b0;
+    end
+endgenerate
+
 assign Busy_o = !ssReg;
 
 //================================================================================
@@ -94,18 +104,37 @@ always @(negedge Clk_i) begin
     end
 end
 
-always @(negedge Clk_i) begin 
-    if (Rst_i) begin 
-        ssReg <= 1'b1;
+generate 
+    if (IS_LMX_DELAY) begin 
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                ssReg <= 1'b1;
+            end
+            else begin 
+                if (Val_i) begin
+                    ssReg <= 0;
+                end
+                if (ssCnt == DATA_WIDTH) begin
+                    ssReg <= 1;
+                end
+            end
+        end
     end
     else begin 
-        if (Val_i) begin
-			ssReg <= 0;
-		end
-		if (ssCnt == DATA_WIDTH-1) begin
-			ssReg <= 1;
-		end
+        always @(negedge Clk_i) begin 
+            if (Rst_i) begin 
+                ssReg <= 1'b1;
+            end
+            else begin 
+                if (Val_i) begin
+                    ssReg <= 0;
+                end
+                if (ssCnt == DATA_WIDTH - 1 ) begin
+                    ssReg <= 1;
+                end
+            end
+        end
     end
-end
+endgenerate
 
 endmodule

+ 2 - 1
src/src/WrapFifoChain/LmxWrapper.v

@@ -190,7 +190,8 @@ FifoLMX FifoLMX_inst (
 );
 
 SpiM #(
-	.DATA_WIDTH	(DATA_WIDTH)
+	.DATA_WIDTH	(DATA_WIDTH),
+	.IS_LMX_DELAY(1'b1)
 )SpiMLmx(
 	.Clk_i		(RdClk_i),
 	.Rst_i		(Rst_i),