Browse Source

Исправлена работа trCntMAX для записи в Fifo.

Anatoliy Chigirinskiy 1 year ago
parent
commit
c71158649b
3 changed files with 132 additions and 124 deletions
  1. 8 5
      src/src/Sim/tb_RF_FPGA.v
  2. 65 72
      src/src/Top/RFTop.v
  3. 59 47
      src/src/fifo_top/FifoCtrl.v

+ 8 - 5
src/src/Sim/tb_RF_FPGA.v

@@ -67,7 +67,7 @@ module tb_SPIm;
     assign Mosi1_io = (modeSel) ? Mosi1_o:1'bz;
 
 
-    assign emptyFlagTx = (!locked) ? 1'b1 : 1'b0;
+    assign emptyFlagTx = (!locked || trCnt > 4 ) ? 1'b1 : 1'b0;
 
     // always @(posedge Clk100) begin 
     //     if (Rst_i) begin 
@@ -161,7 +161,7 @@ end
 
 
     QuadSPIm QuadSPIm_inst (
-        .Clk_i(Clk100),
+        .Clk_i(Clk20),
         .Rst_i(Rst_i),
         .Start_i(Start_i),
         .ClockPhase_i(CPHA_i),
@@ -226,7 +226,7 @@ end
         Start_i = 0;
         CPHA_i = 0;
 		SpiDataVal_i = 0;
-        modeSel = 0;
+        modeSel = 1;
         SELST_i = 1;//0:High, 1:Low
         WidthSel_i = 2; // 3-32bit, 2-24bit, 1-16bit, 0-8bit
         LAG_i = 0;
@@ -242,10 +242,13 @@ end
     end
 
     always @(*) begin 
-        if (locked && !rstInit && !modeSel) begin 
+        if (locked && !rstInit && modeSel) begin 
             case(trCnt) 
+            // 0: begin 
+            //     SPIdata = {1'h1, 5'h6, 17'h4, 1'h0};
+            // end
             0: begin 
-                SPIdata = {1'h0, 5'h6, 17'h4, 1'h0};
+                SPIdata = {1'h1,11'h0, 3'h4, 9'h1};
             end
             1 : begin 
                 SPIdata = 24'h04000;

+ 65 - 72
src/src/Top/RFTop.v

@@ -34,8 +34,8 @@ output Clk50_o,
 output [FifoNum-1:0] Ss_o,
 output [FifoNum-1:0] Sck_o,
 output [FifoNum-1:0] Mosi0_o,
-// output Locked_o,
-// output RstInit_o,
+output Locked_o,
+output RstInit_o,
 
 output [21:0] GPIO_o
 
@@ -121,6 +121,7 @@ wire [FifoNum-1:0] valToReadFromRxFifo;
 wire RorQSPIFlag;
 
 wire[FifoNum-1:0] emptyFlag;
+wire WrEnMAX2870Fifo;
 
 
 
@@ -534,11 +535,11 @@ always @(posedge clk100) begin
             configReg1 <=dataToRxFifo;
         end
         else begin 
-            if (modeSel) begin 
-                if ((trCnt == sumForGPIO) && (trCnt != 0)) begin 
-                    configReg1 <= 24'h0;
-                end
-            end
+            // if (modeSel) begin 
+            //     if ((trCnt == sumForGPIO) && (trCnt != 0)) begin 
+            //         configReg1 <= 24'h0;
+            //     end
+            // end
             if (!modeSel) begin 
                 if ((trCnt1Spi == wordNum) && (wordNum != 0)) begin 
                     configReg1 <= 24'h0;
@@ -634,6 +635,9 @@ always @(posedge clk100) begin
             if (valToRxFifo) begin 
                 trCntMAX2870 <= trCntMAX2870 + 1;
             end
+            else if (trCntMAX2870 >= 1 && WrEnMAX2870Fifo) begin 
+                trCntMAX2870 <= 0;
+            end
         end
         else begin 
             trCntMAX2870 <= 0;
@@ -866,6 +870,7 @@ FifoCtrl #(
     .CurrState_i(currState),
     .DDSFifoCnt_i(trCntDDS),
     .MAX2870FifoCnt_i(trCntMAX2870),
+    .WrEnMAX2870Fifo_o(WrEnMAX2870Fifo),
     .CurrStateSync1_i(currStateSync[0]),
     .CurrStateSync2_i(currStateSync[1]),
     .CurrStateSync3_i(currStateSync[2]),
@@ -942,34 +947,31 @@ always @(*) begin
         case(currState)
         IDLE: begin 
             if (modeSel) begin 
-                if ((trCnt == numOfConfigCmds) && (packetNum1 != 0) ) begin
+                if ((trCntReg == numOfConfigCmds) && (packetNum1 != 0) ) begin
                     nextState = LMX2594;
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 != 0) ) begin 
+                else if ((trCntReg == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 != 0) ) begin 
                     nextState = DDS;
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 != 0)) begin 
+                else if ((trCntReg == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 != 0)) begin 
                     nextState = POT; 
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 != 0)) begin 
+                else if ((trCntReg == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 != 0)) begin 
                     nextState = DAC;
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 != 0) ) begin 
+                else if ((trCntReg == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 != 0) ) begin 
                     nextState = ATTENUATOR;
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0)) begin
-                    nextState = SHIFTREG;
-                end
-                else if ((trCnt == numOfConfigCmds)  && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
+                else if ((trCntReg == numOfConfigCmds)  && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
                     nextState = SHIFTREG;
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
+                else if ((trCntReg == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
                     nextState = MAX2870;
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
+                else if ((trCntReg == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
                     nextState = GPIO;
                 end
-                else if ((trCnt == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0 ) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == numOfConfigCmds) && (packetNum1 == 0) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0 ) && (packetNum8 == 0)) begin 
                     nextState = IDLE;
                 end
                 else begin 
@@ -987,34 +989,31 @@ always @(*) begin
         end
         LMX2594: begin
             if (modeSel) begin 
-                if ((trCnt == (sumForLmx)) && (packetNum2 != 0)) begin 
+                if ((trCntReg == (sumForLmx)) && (packetNum2 != 0)) begin 
                     nextState = DDS;
                 end
-                else if ((trCnt == (sumForLmx)) && (packetNum1 == 0)  && (packetNum2 == 0) && (packetNum3 != 0)) begin 
+                else if ((trCntReg == (sumForLmx)) && (packetNum1 == 0)  && (packetNum2 == 0) && (packetNum3 != 0)) begin 
                     nextState = POT;
                 end
-                else if ((trCnt == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 != 0)) begin 
+                else if ((trCntReg == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 != 0)) begin 
                     nextState = DAC;
                 end
-                else if ((trCnt == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 != 0)) begin 
+                else if ((trCntReg == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 != 0)) begin 
                     nextState = ATTENUATOR;
                 end
-                else if ((trCnt == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0)) begin 
+                else if ((trCntReg == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 != 0)) begin 
                     nextState = SHIFTREG; 
                 end
-                else if ((trCnt == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 != 0)) begin 
-                    nextState = SHIFTREG; 
-                end
-                else if ((trCnt == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
+                else if ((trCntReg == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
                     nextState = MAX2870; 
                 end
-                else if ((trCnt == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
+                else if ((trCntReg == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
                     nextState = GPIO; 
                 end
-                else if ((trCnt == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == (sumForLmx)) && (packetNum2 == 0) && (packetNum3 == 0) && (packetNum4 == 0)  && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
                     nextState = IDLE; 
                 end
-                else if (trCnt != (sumForLmx)) begin 
+                else if (trCntReg != (sumForLmx)) begin 
                     nextState = LMX2594;
                 end
             end
@@ -1031,28 +1030,28 @@ always @(*) begin
         end
         DDS: begin
             if (modeSel) begin 
-                if ((trCnt == (sumForDDS)) && (packetNum3 != 0)) begin 
+                if ((trCntReg == (sumForDDS)) && (packetNum3 != 0)) begin 
                     nextState = POT;
                 end
-                else if ((trCnt == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 != 0)) begin 
+                else if ((trCntReg == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 != 0)) begin 
                     nextState = DAC;
                 end
-                else if ((trCnt == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 != 0) ) begin 
+                else if ((trCntReg == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 != 0) ) begin 
                     nextState = ATTENUATOR;
                 end
-                else if ((trCnt == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
+                else if ((trCntReg == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
                     nextState = SHIFTREG;
                 end
-                else if ((trCnt == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0 ) && (packetNum7 != 0)) begin 
+                else if ((trCntReg == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0 ) && (packetNum7 != 0)) begin 
                     nextState = MAX2870;
                 end
-                else if ((trCnt == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0 ) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
+                else if ((trCntReg == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0 ) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
                     nextState = GPIO;
                 end
-                else if ((trCnt == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == (sumForDDS)) && (packetNum3 == 0) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
                     nextState = IDLE;
                 end
-                else if (trCnt != (sumForDDS)) begin 
+                else if (trCntReg != (sumForDDS)) begin 
                     nextState = DDS;
                 end
             end
@@ -1069,28 +1068,25 @@ always @(*) begin
         end
         POT: begin
             if (modeSel) begin 
-                if ((trCnt == (sumForPot)) && (packetNum4 != 0)) begin 
+                if ((trCntReg == (sumForPot)) && (packetNum4 != 0)) begin 
                     nextState = DAC;
                 end
-                else if ((trCnt == (sumForPot)) && (packetNum4 == 0) && (packetNum5 != 0)) begin 
+                else if ((trCntReg == (sumForPot)) && (packetNum4 == 0) && (packetNum5 != 0)) begin 
                     nextState = ATTENUATOR;
                 end
-                else if ((trCnt == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0)) begin 
-                    nextState = SHIFTREG;
-                end
-                else if ((trCnt == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
+                else if ((trCntReg == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
                     nextState = SHIFTREG;
                 end
-                else if ((trCnt == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
+                else if ((trCntReg == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
                     nextState = MAX2870;
                 end
-                else if ((trCnt == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
+                else if ((trCntReg == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
                     nextState = GPIO;
                 end
-                else if ((trCnt == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == (sumForPot)) && (packetNum4 == 0) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
                     nextState = IDLE;
                 end
-                else if (trCnt != (sumForPot)) begin 
+                else if (trCntReg != (sumForPot)) begin 
                     nextState = POT;
                 end
             end
@@ -1107,25 +1103,22 @@ always @(*) begin
         end
         DAC: begin
             if (modeSel) begin 
-                if ((trCnt == (sumForDAC)) && (packetNum5 != 0) ) begin 
+                if ((trCntReg == (sumForDAC)) && (packetNum5 != 0) ) begin 
                     nextState = ATTENUATOR;
                 end
-                else if ((trCnt == (sumForDAC)) && (packetNum5 == 0)) begin 
-                    nextState = SHIFTREG;
-                end
-                else if ((trCnt == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
+                else if ((trCntReg == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 != 0)) begin 
                     nextState = SHIFTREG;
                 end
-                else if ((trCnt == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
+                else if ((trCntReg == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
                     nextState = MAX2870;
                 end
-                else if ((trCnt == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
+                else if ((trCntReg == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
                     nextState = GPIO;
                 end
-                else if ((trCnt == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == (sumForDAC)) && (packetNum5 == 0) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
                     nextState = IDLE;
                 end
-                else if (trCnt != (sumForDAC)) begin 
+                else if (trCntReg != (sumForDAC)) begin 
                     nextState = DAC;
                 end
             end
@@ -1142,19 +1135,19 @@ always @(*) begin
         end
         ATTENUATOR: begin
             if (modeSel) begin 
-                if ((trCnt == (sumForATT)) && (packetNum6 != 0) ) begin 
+                if ((trCntReg == (sumForATT)) && (packetNum6 != 0) ) begin 
                     nextState = SHIFTREG;
                 end
-                else if ((trCnt == (sumForATT)) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
+                else if ((trCntReg == (sumForATT)) && (packetNum6 == 0) && (packetNum7 != 0)) begin 
                     nextState = MAX2870;
                 end
-                else if ((trCnt == (sumForATT)) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
+                else if ((trCntReg == (sumForATT)) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
                     nextState = GPIO;
                 end
-                else if ((trCnt == (sumForATT)) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == (sumForATT)) && (packetNum6 == 0) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
                     nextState = IDLE;
                 end
-                else if (trCnt != (sumForATT)) begin 
+                else if (trCntReg != (sumForATT)) begin 
                     nextState = ATTENUATOR;
                 end
             end
@@ -1171,16 +1164,16 @@ always @(*) begin
         end
         SHIFTREG : begin 
             if (modeSel) begin 
-                if ((trCnt == (sumForShiftReg)) && (packetNum7 != 0) ) begin 
+                if ((trCntReg == (sumForShiftReg)) && (packetNum7 != 0) ) begin 
                     nextState = MAX2870;
                 end
-                else if ((trCnt == (sumForShiftReg)) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
+                else if ((trCntReg == (sumForShiftReg)) && (packetNum7 == 0) && (packetNum8 != 0)) begin 
                     nextState = GPIO;
                 end
-                else if ((trCnt == (sumForShiftReg)) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == (sumForShiftReg)) && (packetNum7 == 0) && (packetNum8 == 0)) begin 
                     nextState = IDLE;
                 end
-                else if (trCnt != (sumForShiftReg)) begin 
+                else if (trCntReg != (sumForShiftReg)) begin 
                     nextState = SHIFTREG;
                 end
             end
@@ -1197,13 +1190,13 @@ always @(*) begin
         end  
         MAX2870 : begin 
             if (modeSel) begin 
-                if ((trCnt == (sumForMAX)) && (packetNum8 != 0))  begin 
+                if ((trCntReg == (sumForMAX)) && (packetNum8 != 0))  begin 
                     nextState = GPIO;
                 end
-                else if ((trCnt == (sumForMAX)) && (packetNum8 == 0)) begin 
+                else if ((trCntReg == (sumForMAX)) && (packetNum8 == 0)) begin 
                     nextState = IDLE;
                 end
-                else if (trCnt != (sumForMAX)) begin 
+                else if (trCntReg != (sumForMAX)) begin 
                     nextState = MAX2870;
                 end
             end
@@ -1220,10 +1213,10 @@ always @(*) begin
         end
         GPIO : begin 
             if (modeSel) begin 
-                if (trCnt == (sumForGPIO)) begin 
+                if (trCntReg == (sumForGPIO)) begin 
                     nextState = IDLE;
                 end
-                else if (trCnt != (sumForGPIO)) begin 
+                else if (trCntReg != (sumForGPIO)) begin 
                     nextState = GPIO;
                 end
             end

+ 59 - 47
src/src/fifo_top/FifoCtrl.v

@@ -25,6 +25,7 @@ input ValToRxFifo_i,
 
 
 output [FifoNum-1:0] EmptyFlag_o,
+output WrEnMAX2870Fifo_o,
 
 output [23:0] DataFromRxFifo1_o,
 output [63:0] DataFromRxFifo2_o,
@@ -84,6 +85,7 @@ assign DataFromShRegFifo_o = dataFromRxFifo[5][0:7];
 assign DataFromAttFifo_o = dataFromRxFifo[4][0:15];
 assign DataFromDacFifo_o = dataFromRxFifo[3][0:15];
 assign DataFromPotFifo_o = dataFromRxFifo[2][0:15];
+assign WrEnMAX2870Fifo_o = rxFifoWrEn[6];
 
 
 
@@ -96,59 +98,69 @@ assign EmptyFlag_o = emptyFlag;
 
 integer k; 
 
-always @(posedge WrClk_i) begin 
-    case (CurrState_i)  
-        5'd1 : begin 
-            dataToRxFifoReg[0] <= DataToRxFifo_i;
+always @(posedge WrClk_i) begin
+    if (Rst_i) begin 
+        for (k = 0; k < FifoNum; k = k + 1) begin 
+            dataToRxFifoReg[k] <= 0;
         end
-        5'd2 : begin
-            if (DDSFifoCnt_i == 3'h0 ) begin 
-                dataToRxFifoReg21 <= DataToRxFifo_i;
+        dataToRxFifoReg21 <= 0;
+        dataToRxFifoReg22 <= 0;
+        dataToRxFifoReg23 <= 0;
+    end
+    else begin  
+        case (CurrState_i)  
+            5'd1 : begin 
+                dataToRxFifoReg[0] <= DataToRxFifo_i;
             end
-            else if (DDSFifoCnt_i == 3'h1) begin 
-                dataToRxFifoReg22 <= DataToRxFifo_i;
+            5'd2 : begin
+                if (DDSFifoCnt_i == 3'h0 ) begin 
+                    dataToRxFifoReg21 <= DataToRxFifo_i;
+                end
+                else if (DDSFifoCnt_i == 3'h1) begin 
+                    dataToRxFifoReg22 <= DataToRxFifo_i;
+                end
+                else if (DDSFifoCnt_i == 3'h3) begin 
+                    dataToRxFifoReg23 <= DataToRxFifo_i;
+                end
             end
-            else if (DDSFifoCnt_i == 3'h3) begin 
-                dataToRxFifoReg23 <= DataToRxFifo_i;
+            5'd3 : begin 
+                dataToRxFifoReg[2] <= DataToRxFifo_i;
             end
-        end
-        5'd3 : begin 
-            dataToRxFifoReg[2] <= DataToRxFifo_i;
-        end
-        5'd4 : begin 
-            dataToRxFifoReg[3] <= DataToRxFifo_i;
-        end
-        5'd5 : begin 
-            dataToRxFifoReg[4] <= DataToRxFifo_i;
-        end
-        5'd6 : begin 
-            dataToRxFifoReg[5] <= DataToRxFifo_i;
-        end
-        5'd7 : begin 
-            case (MAX2870FifoCnt_i) 
-                2'h0 : begin
-                    dataToFifoMax2870Reg[47:24] <= DataToRxFifo_i;
+            5'd4 : begin 
+                dataToRxFifoReg[3] <= DataToRxFifo_i;
+            end
+            5'd5 : begin 
+                dataToRxFifoReg[4] <= DataToRxFifo_i;
+            end
+            5'd6 : begin 
+                dataToRxFifoReg[5] <= DataToRxFifo_i;
+            end
+            5'd7 : begin 
+                case (MAX2870FifoCnt_i) 
+                    2'h0 : begin
+                        dataToFifoMax2870Reg[47:24] <= DataToRxFifo_i;
+                    end
+                    2'h1 : begin
+                        dataToFifoMax2870Reg[23:0] <= DataToRxFifo_i;
+                    end 
+                    // default: begin 
+                    //     dataToFifoMax2870Reg = 0;
+                    // end
+                endcase
+            end
+            5'd8 : begin 
+                dataToRxFifoReg[7] <= DataToRxFifo_i;
+            end
+            default: begin 
+                for (k = 0; k < FifoNum; k = k + 1) begin 
+                    dataToRxFifoReg[k] <= 0;
                 end
-                2'h1 : begin
-                    dataToFifoMax2870Reg[23:0] <= DataToRxFifo_i;
-                end 
-                // default: begin 
-                //     dataToFifoMax2870Reg = 0;
-                // end
-            endcase
-        end
-        5'd8 : begin 
-            dataToRxFifoReg[7] <= DataToRxFifo_i;
-        end
-        default: begin 
-            for (k = 0; k < FifoNum; k = k + 1) begin 
-                dataToRxFifoReg[k] <= 0;
+                dataToRxFifoReg21 <= 0;
+                dataToRxFifoReg22 <= 0;
+                dataToRxFifoReg23 <= 0;
             end
-            dataToRxFifoReg21 <= 0;
-            dataToRxFifoReg22 <= 0;
-            dataToRxFifoReg23 <= 0;
-        end
-    endcase
+        endcase
+    end
 end