Jelajahi Sumber

Отлажено вычитывание на частотах(60-26.6 МГц)

Anatoliy Chigirinskiy 2 tahun lalu
induk
melakukan
c16ea0c5a5

File diff ditekan karena terlalu besar
+ 181 - 50
constrs_1/new/S5443_3.xdc


+ 9 - 9
sources_1/ip/ClkDiv/ClkDiv.xci

@@ -205,7 +205,7 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT5_USED">1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_1">0000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_2">0000</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_ACTUAL_FREQ">29.98125</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_ACTUAL_FREQ">26.65000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_DRIVES">BUFG</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_DUTY_CYCLE">50.0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT6_MATCHED_ROUTING">false</spirit:configurableElementValue>
@@ -219,10 +219,10 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_DRIVES">BUFG</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_DUTY_CYCLE">50.0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_MATCHED_ROUTING">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_OUT_FREQ">29.98125</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_OUT_FREQ">26.65000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_PHASE">0.000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_REQUESTED_OUT_FREQ">30.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_REQUESTED_OUT_FREQ">26.666</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_CLKOUT7_USED">1</spirit:configurableElementValue>
@@ -248,7 +248,7 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DIVIDE4_AUTO">1.6666666666666667</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DIVIDE5_AUTO">2.0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DIVIDE6_AUTO">2.5</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DIVIDE7_AUTO">3.3333333333333335</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DIVIDE7_AUTO">3.7500937523438087</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DOUT_PORT">dout</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DRDY_PORT">drdy</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DWE_PORT">dwe</spirit:configurableElementValue>
@@ -316,7 +316,7 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT5_PHASE">0.000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT5_USE_FINE_PS">FALSE</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_DIVIDE">40</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_DIVIDE">45</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_DUTY_CYCLE">0.500</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_PHASE">0.000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MMCM_CLKOUT6_USE_FINE_PS">FALSE</spirit:configurableElementValue>
@@ -338,7 +338,7 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW4">clk_out4__59.96250______0.000______50.0______123.604_____85.478</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW5">clk_out5__49.96875______0.000______50.0______128.250_____85.478</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW6">clk_out6__39.97500______0.000______50.0______134.251_____85.478</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW7">clk_out7__29.98125______0.000______50.0______142.568_____85.478</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OUTCLK_SUM_ROW7">clk_out7__26.65000______0.000______50.0______146.187_____85.478</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OVERRIDE_MMCM">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OVERRIDE_PLL">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_O_MAX">128.000</spirit:configurableElementValue>
@@ -508,11 +508,11 @@
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT6_USED">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_DRIVES">BUFG</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_JITTER">142.568</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_JITTER">146.187</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_MATCHED_ROUTING">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_PHASE_ERROR">85.478</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_DUTY_CYCLE">50.000</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_OUT_FREQ">30.000</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_OUT_FREQ">26.666</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_REQUESTED_PHASE">0.000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_SEQUENCE_NUMBER">1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.CLKOUT7_USED">true</spirit:configurableElementValue>
@@ -595,7 +595,7 @@
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_DUTY_CYCLE">0.500</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_PHASE">0.000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT5_USE_FINE_PS">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE">40</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DIVIDE">45</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_DUTY_CYCLE">0.500</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_PHASE">0.000</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MMCM_CLKOUT6_USE_FINE_PS">false</spirit:configurableElementValue>

+ 15 - 11
sources_1/ip/DataFifoRx/DataFifoRx.xci

@@ -241,8 +241,8 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OPTIMIZATION_MODE">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_OVERFLOW_LOW">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_POWER_SAVING_MODE">0</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRELOAD_LATENCY">1</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRELOAD_REGS">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRELOAD_LATENCY">0</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRELOAD_REGS">1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_FIFO_TYPE">2kx18</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_FIFO_TYPE_AXIS">1kx18</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_FIFO_TYPE_RACH">512x36</spirit:configurableElementValue>
@@ -250,14 +250,14 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_FIFO_TYPE_WACH">512x36</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_FIFO_TYPE_WDCH">1kx36</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_FIFO_TYPE_WRCH">512x36</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL">5</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL">6</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL_AXIS">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL_RACH">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL_RDCH">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL_WACH">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL_WDCH">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_ASSERT_VAL_WRCH">1022</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_NEGATE_VAL">6</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_THRESH_NEGATE_VAL">7</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_TYPE">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_TYPE_AXIS">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_TYPE_RACH">0</spirit:configurableElementValue>
@@ -265,14 +265,14 @@
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_TYPE_WACH">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_TYPE_WDCH">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_EMPTY_TYPE_WRCH">0</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL">2038</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL">2039</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL_AXIS">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL_RACH">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL_RDCH">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL_WACH">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL_WDCH">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_ASSERT_VAL_WRCH">1023</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_NEGATE_VAL">2037</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_THRESH_NEGATE_VAL">2038</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_TYPE">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_TYPE_AXIS">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PROG_FULL_TYPE_RACH">0</spirit:configurableElementValue>
@@ -349,14 +349,14 @@
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Disable_Timing_Violations">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Disable_Timing_Violations_AXI">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Dout_Reset_Value">0</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value">5</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value">6</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value_axis">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value_rach">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value_rdch">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value_wach">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value_wdch">1022</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value_wrch">1022</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Negate_Value">6</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Empty_Threshold_Negate_Value">7</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_Common_Overflow">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_Common_Underflow">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Enable_Data_Counts_axis">false</spirit:configurableElementValue>
@@ -391,14 +391,14 @@
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FIFO_Implementation_wrch">Common_Clock_Block_RAM</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Fifo_Implementation">Independent_Clocks_Builtin_FIFO</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Flags_Reset_Value">0</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value">2038</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value">2039</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value_axis">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value_rach">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value_rdch">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value_wach">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value_wdch">1023</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value_wrch">1023</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Negate_Value">2037</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Full_Threshold_Negate_Value">2038</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.HAS_ACLKEN">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.HAS_TKEEP">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.HAS_TSTRB">false</spirit:configurableElementValue>
@@ -435,7 +435,7 @@
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Overflow_Sense">Active_High</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Overflow_Sense_AXI">Active_High</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PROTOCOL">AXI4</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Performance_Options">Standard_FIFO</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Performance_Options">First_Word_Fall_Through</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Programmable_Empty_Type">No_Programmable_Empty_Threshold</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Programmable_Empty_Type_axis">No_Programmable_Empty_Threshold</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Programmable_Empty_Type_rach">No_Programmable_Empty_Threshold</spirit:configurableElementValue>
@@ -556,13 +556,17 @@
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Data_Count_Width" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Empty_Threshold_Assert_Value" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Empty_Threshold_Negate_Value" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Enable_ECC" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Enable_Safety_Circuit" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Fifo_Implementation" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Full_Flags_Reset_Value" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Full_Threshold_Assert_Value" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Full_Threshold_Negate_Value" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Input_Data_Width" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Input_Depth" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Output_Data_Width" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Output_Depth" xilinx:valueSource="user"/>
+            <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Performance_Options" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Read_Clock_Frequency" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Read_Data_Count_Width" xilinx:valueSource="user"/>
             <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.Reset_Type" xilinx:valueSource="user"/>

File diff ditekan karena terlalu besar
+ 18 - 17
sources_1/ip/DataFifoTx/DataFifoTx.xci


+ 10 - 15
sources_1/new/CDC/Cdc.v

@@ -54,22 +54,17 @@ always @(posedge Clk_i) begin
     Spi0TxFifoCtrlR <= Spi0TxFifoCtrlReg_i;
     Spi0RxFifoCtrlR <= Spi0RxFifoCtrlReg_i;
     ansDataR <= AnsData_i;
-    Spi0CtrlRR <= Spi0CtrlR;
-    Spi0ClkRegRR <= Spi0ClkRegR;
-    Spi0CsDelayRR <= Spi0CsDelayR;
-    Spi0CsCtrlRR  <= Spi0CsCtrlR;
-    Spi0TxFifoCtrlRR <= Spi0TxFifoCtrlR;
-    Spi0RxFifoCtrlRR <= Spi0RxFifoCtrlR;
-    ansDataRR <= ansDataR;
-    Spi0CtrlRR_o <=Spi0CtrlRR;
-    Spi0ClkRR_o <= Spi0ClkRegRR;
-    Spi0CsDelayRR_o <= Spi0CsDelayRR;
-    Spi0CsCtrlRR_o  <= Spi0CsCtrlRR;
-    Spi0TxFifoCtrlRR_o <= Spi0TxFifoCtrlRR;
-    Spi0RxFifoCtrlRR_o <= Spi0RxFifoCtrlRR;
-    AnsDataRR_o <= ansDataRR;
+    Spi0CtrlRR_o <= Spi0CtrlR;
+    Spi0ClkRR_o <= Spi0ClkRegR;
+    Spi0CsDelayRR_o <= Spi0CsDelayR;
+    Spi0CsCtrlRR_o <= Spi0CsCtrlR;
+    Spi0TxFifoCtrlRR_o <= Spi0TxFifoCtrlR;
+    Spi0RxFifoCtrlRR_o <= Spi0RxFifoCtrlR;
+    AnsDataRR_o <= ansDataR;
 end
-    
+
+
+
 
 
 

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

@@ -13,6 +13,7 @@ module DataFifoWrapper
 	input	FifoTxRst_i,
 	input   SmcAre_i,
 	input	SmcAwe_i,
+	input	[AddrRegWidth-1:0]	SmcAddr_i,
 
 	input	ToFifoVal_i,
 	input	[CmdRegWidth-1:0]	ToFifoData_i,
@@ -56,6 +57,7 @@ FifoCtrl FifoCtrl_inst (
 	.ToFifoTxReadVal_i (ToFifoTxReadVal_i),
 	.ToFifoRxWriteVal_i	(ToFifoRxWriteVal_i),
 	.ToFifoRxReadVal_i	(!SmcAre_i),
+	.SmcAddr_i	(SmcAddr_i),
 	.FifoTxFull_i		(fullFlagTx),
 	.FifoTxEmpty_i		(emptyFlagTx),
 	.FifoRxFull_i		(fullFlagRx),
@@ -77,11 +79,11 @@ FifoCtrl FifoCtrl_inst (
 
 
 
-DataFifo	DataFifoTx
+DataFifoTx	DataFifoTx
 ( 
 	.wr_clk		(WrClk_i), 
 	.rd_clk		(RdClk_i), 
-//	.rst		(FifoTxRst_i),
+	.rst		(FifoTxRst_i),
 	.din		(ToFifoData_i), 
 	.wr_en		(txFifoWrEn), 
 	.rd_en		(txFifoRdEn), 
@@ -90,11 +92,11 @@ DataFifo	DataFifoTx
 	.empty		(emptyFlagTx)
 );
 
-DataFifo	DataFifoRx
+DataFifoRx	DataFifoRx
 ( 
 	.wr_clk		(RdClk_i), 
 	.rd_clk		(WrClk_i),
-	//.rst		(FifoRxRst_i), 
+	.rst		(FifoRxRst_i), 
 	.din		(ToFifoRxData_i), 
 	.wr_en		(rxFifoWrEn), 
 	.rd_en		(rxFifoRdEn), 

+ 78 - 20
sources_1/new/DataFifo/DataOutMux.v

@@ -1,18 +1,25 @@
-module DataOutMux (
+module DataOutMux#(
+    parameter	CmdRegWidth	=	32,
+    parameter	AddrRegWidth=	12
+
+
+
+) (
     input Rst_i,
     input Clk_i,
-    input [11:0] Addr_i,
-    input [11:0] ToRegMapAddr_i,
-    input [15:0] DataFromRegMap_i,
-    input [31:0] DataFromRxFifo1_i,
-    input [31:0] DataFromRxFifo2_i,
-    input [31:0] DataFromRxFifo3_i,
-    input [31:0] DataFromRxFifo4_i,
-    input [31:0] DataFromRxFifo5_i,
-    input [31:0] DataFromRxFifo6_i,
-    input [31:0] DataFromRxFifo7_i,
-
-    output [15:0] AnsData_o
+    input SmcAre_i,
+    input [AddrRegWidth-1:0] Addr_i,
+    input [AddrRegWidth-1:0] ToRegMapAddr_i,
+    input [CmdRegWidth/2-1:0] DataFromRegMap_i,
+    input [CmdRegWidth-1:0] DataFromRxFifo1_i,
+    input [CmdRegWidth-1:0] DataFromRxFifo2_i,
+    input [CmdRegWidth-1:0] DataFromRxFifo3_i,
+    input [CmdRegWidth-1:0] DataFromRxFifo4_i,
+    input [CmdRegWidth-1:0] DataFromRxFifo5_i,
+    input [CmdRegWidth-1:0] DataFromRxFifo6_i,
+    input [CmdRegWidth-1:0] DataFromRxFifo7_i,
+
+    output [CmdRegWidth/2-1:0] AnsData_o
 
 );
 
@@ -22,6 +29,15 @@ wire [15:0] dataFromRegMap;
 
 reg [15:0] dataFromRxFifoR;
 
+(* dont_touch = "true" *)reg [CmdRegWidth/2-1:0] dataFromRxFifoR1;
+reg [CmdRegWidth-1:0] dataFromRxFifoR2;
+reg [CmdRegWidth-1:0] dataFromRxFifoR3;
+reg [CmdRegWidth-1:0] dataFromRxFifoR4;
+reg [CmdRegWidth-1:0] dataFromRxFifoR5;
+reg [CmdRegWidth-1:0] dataFromRxFifoR6;
+reg [CmdRegWidth-1:0] dataFromRxFifoR7;
+
+
 
 assign dataFromRxFifo[0] = DataFromRxFifo1_i;
 assign dataFromRxFifo[1] = DataFromRxFifo2_i;
@@ -36,49 +52,91 @@ assign AnsData_o = (ToRegMapAddr_i)?dataFromRegMap:dataFromRxFifoR;
 
 
 
+
+always @(*) begin
+    if (Rst_i) begin
+        dataFromRxFifoR1 = 0;
+        dataFromRxFifoR2 = 0;
+        dataFromRxFifoR3 = 0;
+        dataFromRxFifoR4 = 0;
+        dataFromRxFifoR5 = 0;
+        dataFromRxFifoR6 = 0;
+        dataFromRxFifoR7 = 0;
+    end
+    else begin
+        if (!SmcAre_i) begin  
+            case(Addr_i) 
+                12'h1c : begin
+                    dataFromRxFifoR1 = DataFromRxFifo1_i[31:16];
+                end
+                12'h6c : begin
+                    dataFromRxFifoR2 = DataFromRxFifo2_i;
+                end
+                12'h10c : begin
+                    dataFromRxFifoR3 = DataFromRxFifo3_i;
+                end
+                12'h15c : begin
+                    dataFromRxFifoR4 = DataFromRxFifo4_i;
+                end
+                12'h1ac : begin
+                    dataFromRxFifoR5 = DataFromRxFifo5_i;
+                end
+                12'h1fc : begin
+                    dataFromRxFifoR6 = DataFromRxFifo6_i;
+                end
+                12'h24c : begin
+                    dataFromRxFifoR7 = DataFromRxFifo7_i;
+                end
+            endcase
+        end
+    end
+end
+
+
+
 always @(*) begin 
         case (Addr_i)  
             12'h1c: begin 
                 dataFromRxFifoR = DataFromRxFifo1_i[15:0];
             end
             12'h1e: begin
-                dataFromRxFifoR = DataFromRxFifo1_i[31:16];
+                dataFromRxFifoR = dataFromRxFifoR1;
             end 
             12'h6c: begin 
                 dataFromRxFifoR =  DataFromRxFifo2_i[15:0];
             end
             12'h6e: begin 
-                dataFromRxFifoR = DataFromRxFifo2_i[31:16];
+                dataFromRxFifoR = dataFromRxFifoR2[31:16];
             end
             12'h10c: begin 
                 dataFromRxFifoR =  DataFromRxFifo3_i[15:0];
             end
             12'h10e: begin 
-                dataFromRxFifoR = DataFromRxFifo1_i[31:16];
+                dataFromRxFifoR = dataFromRxFifoR3[31:16];
             end
             12'h15c: begin 
                 dataFromRxFifoR =  DataFromRxFifo4_i[15:0];
             end
             12'h15e: begin 
-                dataFromRxFifoR = DataFromRxFifo4_i[31:16];
+                dataFromRxFifoR = dataFromRxFifoR4[31:16];
             end
             12'h1ac: begin 
                 dataFromRxFifoR =  DataFromRxFifo5_i[15:0];
             end
             12'h1ae: begin 
-                dataFromRxFifoR = DataFromRxFifo5_i[31:16];
+                dataFromRxFifoR = dataFromRxFifoR5[31:16];
             end
             12'h1fc: begin 
                 dataFromRxFifoR =  DataFromRxFifo6_i[15:0];
             end
             12'h1fe: begin 
-                dataFromRxFifoR = DataFromRxFifo6_i[31:16];
+                dataFromRxFifoR = dataFromRxFifoR6[31:16];
             end
             12'h24c: begin 
                 dataFromRxFifoR =  DataFromRxFifo7_i[15:0];
             end
             12'h24e: begin 
-                dataFromRxFifoR = DataFromRxFifo7_i[31:16];
+                dataFromRxFifoR = dataFromRxFifoR7[31:16];
             end
             default: begin
                 dataFromRxFifoR = 16'h0;

+ 25 - 3
sources_1/new/DataFifo/FifoCtrl.v

@@ -1,4 +1,16 @@
-module FifoCtrl (
+module FifoCtrl #(
+    parameter Fifo0ReadMsbAddr		= 12'h0+12'd30,
+	parameter Fifo1ReadMsbAddr		= 12'h50+12'd30,
+	parameter Fifo2ReadMsbAddr		= 12'hf0+12'd30,
+	parameter Fifo3ReadMsbAddr		= 12'h140+12'd30,
+	parameter Fifo4ReadMsbAddr		= 12'h190+12'd30,
+	parameter Fifo5ReadMsbAddr		= 12'h1e0+12'd30,
+	parameter Fifo6ReadMsbAddr		= 12'h230+12'd30
+
+
+
+
+)(
     input ToFifoTxWriteVal_i,
     input ToFifoTxReadVal_i,
     input ToFifoRxWriteVal_i,
@@ -8,7 +20,7 @@ module FifoCtrl (
     input FifoTxEmpty_i,
     input FifoRxFull_i,
     input FifoRxEmpty_i,
-
+    input [11:0] SmcAddr_i,
 
     input FifoTxWrClock_i,
     input FifoTxRdClock_i,
@@ -29,6 +41,16 @@ reg FifoRxWriteEn;
 reg FifoRxReadEn;
 
 
+    wire	requestToFifo0	=(SmcAddr_i == Fifo0ReadMsbAddr)?1'b1:1'b0;
+	wire	requestToFifo1	=(SmcAddr_i == Fifo1ReadMsbAddr)?1'b1:1'b0;
+	wire	requestToFifo2	=(SmcAddr_i == Fifo2ReadMsbAddr)?1'b1:1'b0;
+	wire	requestToFifo3	=(SmcAddr_i == Fifo3ReadMsbAddr)?1'b1:1'b0;
+	wire	requestToFifo4	=(SmcAddr_i == Fifo4ReadMsbAddr)?1'b1:1'b0;
+	wire	requestToFifo5	=(SmcAddr_i == Fifo5ReadMsbAddr)?1'b1:1'b0;
+	wire	requestToFifo6	=(SmcAddr_i == Fifo6ReadMsbAddr)?1'b1:1'b0;
+	wire	requestToFifo	=	(requestToFifo0|requestToFifo1|requestToFifo2|requestToFifo3|requestToFifo4|requestToFifo5|requestToFifo6)?1'b1:1'b0;
+
+
 
 // //================================================================================
 // //	ASSIGNMENTS
@@ -72,7 +94,7 @@ always @(posedge FifoRxWrClock_i) begin
 end
 
 always @(posedge FifoRxRdClock_i) begin 
-    if (ToFifoRxReadVal_i && !FifoRxEmpty_i) begin 
+    if (ToFifoRxReadVal_i && !FifoRxEmpty_i && !requestToFifo) begin 
         FifoRxReadEn <= 1'b1;
     end
     else begin 

+ 0 - 1
sources_1/new/DspSmc/SmcRx.v

@@ -66,7 +66,6 @@ module	SmcRx
 	assign	Be_o	=	beReg;
 	
 	assign	SmcD_i	=	(!SmcAoe_i && !SmcAre_i)?	AnsData_i:16'bz;
-	assign	SmcD_i	=	(!SmcAoe_i && !SmcAre_i)?	AnsData_i:16'bz;
 //================================================================================
 //  CODING
 	

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

@@ -16,7 +16,7 @@ always @(posedge Clk_i) begin
         cnt <= 0;
     end
     else begin 
-        if (cnt == ClkDiv_i+1) begin 
+        if (cnt >= ClkDiv_i-1) begin 
             cnt <= 0;
         end
         else begin 
@@ -25,7 +25,7 @@ always @(posedge Clk_i) begin
     end
 end
 
-assign clk_o = (cnt < ClkDiv_i/2+1) ? 1 : 0;
+assign clk_o = (cnt < ClkDiv_i/2) ? 1 : 0;
 
 
 BUFG BUFG_inst (

+ 44 - 0
sources_1/new/MMCM/ClkGen_tb.v

@@ -0,0 +1,44 @@
+module ClkGen_tb();
+
+
+
+
+
+
+reg Clk_i;
+reg Rst_i;
+
+reg [3:0] clkDiv_i;
+
+
+
+
+
+
+always #(12.5/2) Clk_i = ~Clk_i;
+
+
+
+
+ClkGen ClkGen_inst (
+    .Clk_i(Clk_i), 
+    .Rst_i(Rst_i), 
+    .ClkDiv_i(clkDiv_i), 
+    .Clk_o()
+);
+
+
+
+initial begin 
+    Clk_i = 0;
+    Rst_i = 1;
+    clkDiv_i = 3;
+    #1000;
+    Rst_i = 0;
+
+end
+
+
+
+
+endmodule

+ 37 - 39
sources_1/new/MMCM/MmcmWrapper.v

@@ -16,9 +16,8 @@ module MmcmWrapper
 
 
 
-	output 	[SpiNum-1:0]	SpiClk_o,
-   output	Clk100_o,
-   output   Clk40_o
+	output 	[SpiNum-1:0]	SpiClk_o
+   
 );
 //================================================================================
 //	REG/WIRE
@@ -89,7 +88,6 @@ wire [SpiNum-1:0] spiClk;
    assign SpiClk_o[6] = spiClk[6];
 
    assign Clk100_o = clk0out;
-   assign Clk40_o = clk5out;
 
 
 
@@ -106,41 +104,41 @@ wire [SpiNum-1:0] spiClk;
 
    
 
-// genvar i;
-
-// generate
-//    for (i=0; i < SpiNum; i = i +1) begin : ClkGen
-//       ClkGen ClkGen_inst (
-//          .Clk_i(clk1out),
-//          .ClkDiv_i(clkDiv[i]),
-//          .Rst_i(Rst_i),
-//          .Clk_o(clkMan[i])
-//       );
-
-//       clkOutMMCM clkOutMMCM_inst (
-//          .Rst_i(Rst_i),
-//          .clkNum(clkNum[i]),
-//          .clk0out(clk0out),
-//          .clk1out(clk1out),
-//          .clk2out(clk2out),
-//          .clk3out(clk3out),
-//          .clk4out(clk4out),
-//          .clk5out(clk5out),
-//          .clk6out(clk6out),
-//          .clkOutMMCM(clkOutMMCM[i])
-//       );
-
-//       ClkCh ClkCh_inst (
-//          .Rst_i(Rst_i),
-//          .clkCh(clkCh[i]),
-//          .clkOutMMCM(clkOutMMCM[i]),
-//          .clkMan(clkMan[i]),
-//          .SpiClk_o(spiClk[i])
-//       );
-//    end
-
-
-// endgenerate
+genvar i;
+
+generate
+   for (i=0; i < SpiNum; i = i +1) begin : ClkGen
+      ClkGen ClkGen_inst (
+         .Clk_i(clk1out),
+         .ClkDiv_i(clkDiv[i]),
+         .Rst_i(Rst_i),
+         .Clk_o(clkMan[i])
+      );
+
+      clkOutMMCM clkOutMMCM_inst (
+         .Rst_i(Rst_i),
+         .clkNum(clkNum[i]),
+         .clk0out(clk0out),
+         .clk1out(clk1out),
+         .clk2out(clk2out),
+         .clk3out(clk3out),
+         // .clk4out(clk4out),
+         // .clk5out(clk5out),
+         .clk6out(clk6out),
+         .clkOutMMCM(clkOutMMCM[i])
+      );
+
+      ClkCh ClkCh_inst (
+         .Rst_i(Rst_i),
+         .clkCh(clkCh[i]),
+         .clkOutMMCM(clkOutMMCM[i]),
+         .clkMan(clkMan[i]),
+         .SpiClk_o(spiClk[i])
+      );
+   end
+
+
+endgenerate
 
 
 

+ 26 - 8
sources_1/new/Mux/DataMuxer.v

@@ -28,7 +28,24 @@ module DataMuxer
 	parameter	Fifo5WriteLsbAddr	=	12'h1e0+12'd24,
 	parameter	Fifo5WriteMsbAddr	=	12'h1e0+12'd26,
 	parameter	Fifo6WriteLsbAddr	=	12'h230+12'd24,
-	parameter	Fifo6WriteMsbAddr	=	12'h230+12'd26
+	parameter	Fifo6WriteMsbAddr	=	12'h230+12'd26,
+
+	parameter Fifo0ReadLsbAddr		= 12'h0+12'd28,
+	parameter Fifo0ReadMsbAddr		= 12'h0+12'd30,
+	parameter Fifo1ReadLsbAddr		= 12'h50+12'd28,
+	parameter Fifo1ReadMsbAddr		= 12'h50+12'd30,
+	parameter Fifo2ReadLsbAddr		= 12'hf0+12'd28,
+	parameter Fifo2ReadMsbAddr		= 12'hf0+12'd30,
+	parameter Fifo3ReadLsbAddr		= 12'h140+12'd28,
+	parameter Fifo3ReadMsbAddr		= 12'h140+12'd30,
+	parameter Fifo4ReadLsbAddr		= 12'h190+12'd28,
+	parameter Fifo4ReadMsbAddr		= 12'h190+12'd30,
+	parameter Fifo5ReadLsbAddr		= 12'h1e0+12'd28,
+	parameter Fifo5ReadMsbAddr		= 12'h1e0+12'd30,
+	parameter Fifo6ReadLsbAddr		= 12'h230+12'd28,
+	parameter Fifo6ReadMsbAddr		= 12'h230+12'd30
+
+
 )
 (
     input	Clk_i,
@@ -49,13 +66,13 @@ module DataMuxer
 //================================================================================
 //	REG/WIRE
 //================================================================================
-	wire	requestToFifo0	=	(SmcAddr_i==Fifo0WriteLsbAddr||SmcAddr_i==Fifo0WriteMsbAddr);
-	wire	requestToFifo1	=	(SmcAddr_i==Fifo1WriteLsbAddr||SmcAddr_i==Fifo1WriteMsbAddr);
-	wire	requestToFifo2	=	(SmcAddr_i==Fifo2WriteLsbAddr||SmcAddr_i==Fifo2WriteMsbAddr);
-	wire	requestToFifo3	=	(SmcAddr_i==Fifo3WriteLsbAddr||SmcAddr_i==Fifo3WriteMsbAddr);
-	wire	requestToFifo4	=	(SmcAddr_i==Fifo4WriteLsbAddr||SmcAddr_i==Fifo4WriteMsbAddr);
-	wire	requestToFifo5	=	(SmcAddr_i==Fifo5WriteLsbAddr||SmcAddr_i==Fifo5WriteMsbAddr);
-	wire	requestToFifo6	=	(SmcAddr_i==Fifo6WriteLsbAddr||SmcAddr_i==Fifo6WriteMsbAddr);
+	wire	requestToFifo0	=	((SmcAddr_i==Fifo0WriteLsbAddr||SmcAddr_i==Fifo0WriteMsbAddr)|| (SmcAddr_i==Fifo0ReadLsbAddr||SmcAddr_i==Fifo0ReadMsbAddr));
+	wire	requestToFifo1	=	((SmcAddr_i==Fifo1WriteLsbAddr||SmcAddr_i==Fifo1WriteMsbAddr)|| (SmcAddr_i==Fifo1ReadLsbAddr||SmcAddr_i==Fifo1ReadMsbAddr));
+	wire	requestToFifo2	=	((SmcAddr_i==Fifo2WriteLsbAddr||SmcAddr_i==Fifo2WriteMsbAddr)|| (SmcAddr_i==Fifo2ReadLsbAddr||SmcAddr_i==Fifo2ReadMsbAddr));
+	wire	requestToFifo3	=	((SmcAddr_i==Fifo3WriteLsbAddr||SmcAddr_i==Fifo3WriteMsbAddr)|| (SmcAddr_i==Fifo3ReadLsbAddr||SmcAddr_i==Fifo3ReadMsbAddr));
+	wire	requestToFifo4	=	((SmcAddr_i==Fifo4WriteLsbAddr||SmcAddr_i==Fifo4WriteMsbAddr)|| (SmcAddr_i==Fifo4ReadLsbAddr||SmcAddr_i==Fifo4ReadMsbAddr));
+	wire	requestToFifo5	=	((SmcAddr_i==Fifo5WriteLsbAddr||SmcAddr_i==Fifo5WriteMsbAddr)|| (SmcAddr_i==Fifo5ReadLsbAddr||SmcAddr_i==Fifo5ReadMsbAddr));
+	wire	requestToFifo6	=	((SmcAddr_i==Fifo6WriteLsbAddr||SmcAddr_i==Fifo6WriteMsbAddr)|| (SmcAddr_i==Fifo6ReadLsbAddr||SmcAddr_i==Fifo6ReadMsbAddr));
 	
 	wire	requestToFifo	=	(requestToFifo0|requestToFifo1|requestToFifo2|requestToFifo3|requestToFifo4|requestToFifo5|requestToFifo6);
 //================================================================================
@@ -150,6 +167,7 @@ always	@(posedge	Clk_i	or	posedge	Rst_i)	begin
 			ToFifoVal_o		<=	7'h0;
 			ToRegMapData_o	<=	SmcData_i;
 			ToRegMapAddr_o	<=	SmcAddr_i;
+			ToFifoData_o	<=	0;
 		end
 	end
 end

+ 40 - 23
sources_1/new/S5443_3Top.v

@@ -1,4 +1,3 @@
-
 `timescale 1ns / 1ps
 //////////////////////////////////////////////////////////////////////////////////
 // Company: 
@@ -44,7 +43,7 @@ module S5443_3Top
     output  Led_o,
    
     output  [SpiNum-1:0] Mosi0_o, 
-    output  [SpiNum-1:0] Mosi1_o,//inout: when RSPI mode, input; when QSPI mode output; 
+    inout  [SpiNum-1:0] Mosi1_io,//inout: when RSPI mode, input; when QSPI mode output; 
     output  [SpiNum-1:0] Mosi2_o,
     output  [SpiNum-1:0] Mosi3_o,
     output  [SpiNum-1:0] Ss_o,
@@ -197,7 +196,6 @@ wire [SpiNum-1:0] Assel;
 wire	[SpiNum-1:0]	spiClkBus;
 wire	[SpiNum-1:0]	spiSyncRst;
 
-wire	[1:0]	smcBe;
 wire	[AddrRegWidth-1:0]	smcAddr;
 wire	[CmdRegWidth/2-1:0]	smcData;
 wire	smcVal;
@@ -243,7 +241,13 @@ wire	[CmdRegWidth/2-1:0]	ansData;
 //  ASSIGNMENTS
 //================================================================================
 assign ten = SpiTxRxEn[6:0];
-assign Mosi1_o = Mosi1;
+assign Mosi1_io[0] =(spiMode[0])?Mosi1[0]:1'bz;
+assign Mosi1_io[1] =(spiMode[1])?Mosi1[1]:1'bz;
+assign Mosi1_io[2] =(spiMode[2])?Mosi1[2]:1'bz;
+assign Mosi1_io[3] =(spiMode[3])?Mosi1[3]:1'bz;
+assign Mosi1_io[4] =(spiMode[4])?Mosi1[4]:1'bz;
+assign Mosi1_io[5] =(spiMode[5])?Mosi1[5]:1'bz;
+assign Mosi1_io[6] =(spiMode[6])?Mosi1[6]:1'bz;
 assign Mosi2_o = Mosi2;
 assign Mosi3_o = Mosi3;
 assign Ss_o[0] = (Assel[0])? ((CS0[0])? Ss[0]:~Ss[0]):CS0[0];
@@ -427,13 +431,13 @@ assign Ss[4] = (spiMode[4])? SsQ[4]:SsR[4];
 assign Ss[5] = (spiMode[5])? SsQ[5]:SsR[5];
 assign Ss[6] = (spiMode[6])? SsQ[6]:SsR[6];
 
-assign SpiDir_o[0] = (spiMode[0])? 1'b0 : 1'b1 ;
-assign SpiDir_o[1] = (spiMode[1])? 1'b0 : 1'b1 ;
-assign SpiDir_o[2] = (spiMode[2])? 1'b0 : 1'b1 ;
-assign SpiDir_o[3] = (spiMode[3])? 1'b0 : 1'b1 ;
-assign SpiDir_o[4] = (spiMode[4])? 1'b0 : 1'b1 ;
-assign SpiDir_o[5] = (spiMode[5])? 1'b0 : 1'b1 ;
-assign SpiDir_o[6] = (spiMode[6])? 1'b0 : 1'b1 ;
+assign SpiDir_o[0] = (spiMode[0])? 1'b1 : 1'b0 ;
+assign SpiDir_o[1] = (spiMode[1])? 1'b1 : 1'b0 ;
+assign SpiDir_o[2] = (spiMode[2])? 1'b1 : 1'b0 ;
+assign SpiDir_o[3] = (spiMode[3])? 1'b1 : 1'b0 ;
+assign SpiDir_o[4] = (spiMode[4])? 1'b1 : 1'b0 ;
+assign SpiDir_o[5] = (spiMode[5])? 1'b1 : 1'b0 ;
+assign SpiDir_o[6] = (spiMode[6])? 1'b1 : 1'b0 ;
 
 
 assign Sck[0] =  (spiMode[0])?SckQ[0]:SckR[0];
@@ -452,6 +456,15 @@ assign Mosi0[4] =  (spiMode[4])?Mosi0Q[4]:Mosi0R[4];
 assign Mosi0[5] =  (spiMode[5])?Mosi0Q[5]:Mosi0R[5];
 assign Mosi0[6] =  (spiMode[6])?Mosi0Q[6]:Mosi0R[6];
 
+assign Mosi0_o[0] = Mosi0[0];
+assign Mosi0_o[1] = Mosi0[1];
+assign Mosi0_o[2] = Mosi0[2];
+assign Mosi0_o[3] = Mosi0[3];
+assign Mosi0_o[4] = Mosi0[4];
+assign Mosi0_o[5] = Mosi0[5];
+assign Mosi0_o[6] = Mosi0[6];
+
+
 assign valToTxFifoRead[0] =  (spiMode[0])?valToTxQ[0]:valToTxR[0];
 assign valToTxFifoRead[1] =  (spiMode[1])?valToTxQ[1]:valToTxR[1];
 assign valToTxFifoRead[2] =  (spiMode[2])?valToTxQ[2]:valToTxR[2];
@@ -498,6 +511,7 @@ DataOutMux DataOutMuxer
     .Addr_i  (smcAddr),
     .ToRegMapAddr_i (toRegMapAddr),
     .DataFromRegMap_i (ansDataRR),
+    .SmcAre_i (SmcAre_i),
     .DataFromRxFifo1_i (dataFromRxFifo[0]),
     .DataFromRxFifo2_i (dataFromRxFifo[1]),
     .DataFromRxFifo3_i (dataFromRxFifo[2]),
@@ -529,7 +543,6 @@ SmcRx	SmcRx
 	
 	.AnsData_i	(muxedData),
 	
-	.Be_o		(smcBe),
 	.Data_o		(smcData),
 	.Addr_o		(smcAddr),
 	.Val_o		(smcVal)
@@ -637,7 +650,7 @@ RegMap_inst
 );
 
 
-Cdc Sync (
+        Cdc Sync (
     .Clk_i(gclk),
     .Spi0CtrlReg_i(spi0Ctrl),
     .Spi0ClkReg_i(spi0Clk),
@@ -659,7 +672,11 @@ Cdc Sync (
 
 
 
-MmcmWrapper MainMmcm
+MmcmWrapper #(
+    .SpiNum(SpiNum) 
+
+
+) MainMmcm
 (
 	.Clk_i		(gclk),
 	.Rst_i		(initRst),
@@ -670,9 +687,7 @@ MmcmWrapper MainMmcm
     .BaudRate4_i(baudRate[4]),
     .BaudRate5_i(baudRate[5]),
     .BaudRate6_i(baudRate[6]),
-	.SpiClk_o	(spiClkBus),
-    .Clk100_o   (Clk100_o),
-    .Clk40_o    (Clk40_o)
+	.SpiClk_o	(spiClkBus)
 );
 
 
@@ -684,21 +699,23 @@ generate
 		
         InitRst InitRst_inst
  (
-    .clk_i(Clk40_o),
+    .clk_i(spiClkBus[i]),
     .signal_o(initRstGen[i])
 );
 
 
 
+
 		DataFifoWrapper DataFifoWrapper
 		(
 			.WrClk_i	(gclk),
-			.RdClk_i	(Clk40_o),
+			.RdClk_i	(spiClkBus[i]),
 			// .Rst_i		(spiSyncRst[i] | FifoRxRst[i]),
 			.FifoRxRst_i    (fifoRxRst[i]),
             .FifoTxRst_i    (fifoTxRst[i]),
             .SmcAre_i   (SmcAre_i),
             .SmcAwe_i   (SmcAwe_i),
+            .SmcAddr_i  (smcAddr),
 	
 			.ToFifoVal_i	(toFifoVal[i]),
             .ToFifoRxData_i (dataToRxFifo[i]),
@@ -715,7 +732,7 @@ generate
 
 
         SPIm SPIm_inst (
-            .Clk_i(Clk40_o),
+            .Clk_i(spiClkBus[i]),
             .Start_i(ten[i]),
             .Rst_i(initRstGen[i]| spiMode[i]),
             .SPIdata(toSpiData[i]),
@@ -741,7 +758,7 @@ generate
         );
 
         SPIs SPIs_inst (
-            .Clk_i(Clk40_o),
+            .Clk_i(spiClkBus[i]),
             .Rst_i(initRstGen[i]|SpiRst_o[i]| spiMode[i]),
             .Sck_i(SckR[i]),
             .Ss_i(SsR[i]),
@@ -754,7 +771,7 @@ generate
 
 
         QuadSPIm QuadSPIm_inst (
-            .Clk_i(Clk40_o),
+            .Clk_i(spiClkBus[i]),
             .Start_i(ten[i]),
             .Rst_i(initRstGen[i]| !spiMode[i]),
 			.SpiDataVal_i	(toSpiVal),
@@ -802,4 +819,4 @@ InitRst InitRst_inst
 );
 
 
-endmodule
+endmodule

+ 8 - 8
sources_1/new/S5443_3_tb.v

@@ -39,7 +39,7 @@ always #(CLK_PERIOD/2) Clk_i = ~Clk_i;
         .Ld_i(Ld_i), 
         .Led_o(), 
         .Mosi0_o(), 
-        .Mosi1_o(), 
+        .Mosi1_io(), 
         .Mosi2_o(), 
         .Mosi3_o(), 
         .Ss_o(), 
@@ -71,7 +71,7 @@ always @(posedge Clk_i) begin
             SmcAwe_i <= 1'b0;
         end
         4: begin 
-            SmcAwe_i <= 1'b1;
+            SmcAwe_i <= 1'b0;
         end
         5: begin 
             SmcAwe_i <= 1'b0;
@@ -225,15 +225,15 @@ always @(posedge Clk_i) begin
         end
         8: begin 
             SmcAddr_i <= 12'h0;
-            SmcData_i <= 16'hef;
+            SmcData_i <= 16'h7f;
         end
         10: begin 
             SmcAddr_i <= 12'h1;
-            SmcData_i <= 16'h1;
+            SmcData_i <= 16'h0;
         end
         12: begin 
              SmcAddr_i <= 12'h2;
-             SmcData_i <= 16'h0;
+             SmcData_i <= 16'hc;
         end
         14: begin 
             SmcAddr_i <= 12'h3;
@@ -249,7 +249,7 @@ always @(posedge Clk_i) begin
         end
         20: begin 
              SmcAddr_i <= 12'h6;
-             SmcData_i <= 16'h0;
+             SmcData_i <= 16'h3;
         end
         22:  begin 
             SmcAddr_i <= 12'h7;
@@ -257,7 +257,7 @@ always @(posedge Clk_i) begin
         end
         24: begin
              SmcAddr_i <= 12'h8;
-             SmcData_i <= 16'h0;
+             SmcData_i <= 16'h1;
         end
         26: begin 
             SmcAddr_i <= 12'h9;
@@ -265,7 +265,7 @@ always @(posedge Clk_i) begin
         end
         28: begin 
              SmcAddr_i <= 12'ha;
-             SmcData_i <= 16'h0;
+             SmcData_i <= 16'h1;
         end
         30: begin 
              SmcAddr_i <= 12'hb;

+ 3 - 0
sources_1/new/SRAM/RegMap.v

@@ -1503,6 +1503,9 @@ always @(*) begin
                         end
 					endcase
 				end
+                default:begin 
+                    ansReg = 0;
+                end
 			endcase
 		end
     end