OpenCores
URL https://opencores.org/ocsvn/sgmii/sgmii/trunk

Subversion Repositories sgmii

[/] [sgmii/] [trunk/] [src/] [mReceive.v] - Diff between revs 5 and 15

Only display areas with differences | Details | Blame | View Log

Rev 5 Rev 15
/*
/*
Developed By Subtleware Corporation Pte Ltd 2011
Developed By Subtleware Corporation Pte Ltd 2011
File            :
File            :
Description     :
Description     :
Remarks         :
Remarks         :
Revision        :
Revision        :
        Date    Author          Description
        Date    Author          Description
02/09/12        Jefflieu
02/09/12        Jefflieu
*/
*/
`include "SGMIIDefs.v"
`include "SGMIIDefs.v"
 
 
module mReceive(
module mReceive(
 
 
        input   [07:00] i8_RxCodeGroupIn,
        input   [07:00] i8_RxCodeGroupIn,
        input   i_RxCodeInvalid,
        input   i_RxCodeInvalid,
        input   i_RxCodeCtrl,
        input   i_RxCodeCtrl,
        input   i_RxEven,
        input   i_RxEven,
        input   i_IsComma,
        input   i_IsComma,
        input   [02:00] i3_Xmit,
        input   [02:00] i3_Xmit,
 
 
        input   i_OrderedSetValid,
        input   i_OrderedSetValid,
        input   i_IsI1Set,
        input   i_IsI1Set,
        input   i_IsI2Set,
        input   i_IsI2Set,
        input   i_IsC1Set,
        input   i_IsC1Set,
        input   i_IsC2Set,
        input   i_IsC2Set,
        input   i_IsTSet,
        input   i_IsTSet,
        input   i_IsVSet,
        input   i_IsVSet,
        input   i_IsSSet,
        input   i_IsSSet,
        input   i_IsRSet,
        input   i_IsRSet,
 
 
        input   i_CheckEndKDK,
        input   i_CheckEndKDK,
        input   i_CheckEndKD21_5D0_0,
        input   i_CheckEndKD21_5D0_0,
        input   i_CheckEndKD2_2D0_0,
        input   i_CheckEndKD2_2D0_0,
        input   i_CheckEndTRK,
        input   i_CheckEndTRK,
        input   i_CheckEndTRR,
        input   i_CheckEndTRR,
        input   i_CheckEndRRR,
        input   i_CheckEndRRR,
        input   i_CheckEndRRK,
        input   i_CheckEndRRK,
        input   i_CheckEndRRS,
        input   i_CheckEndRRS,
 
 
 
 
        output  reg     [15:00] o16_RxConfigReg,
        output  reg     [15:00] o16_RxConfigReg,
        output  o_RUDIConfig,
        output  o_RUDIConfig,
        output  o_RUDIIdle,
        output  o_RUDIIdle,
        output  o_RUDIInvalid,
        output  o_RUDIInvalid,
 
 
        output  reg o_RxDV,
        output  reg o_RxDV,
        output  reg o_RxER,
        output  reg o_RxER,
        output  reg [07:00] o8_RxD,
        output  reg [07:00] o8_RxD,
        output  reg o_Invalid,
        output  reg o_Invalid,
        output  reg o_Receiving,
        output  reg o_Receiving,
 
 
 
 
        input   i_Clk,
        input   i_Clk,
        input   i_ARst_L
        input   i_ARst_L
);
);
 
 
localparam      stWAIT_FOR_K    = 21'h000001,
localparam      stWAIT_FOR_K    = 21'h000001,
                        stRX_K                  = 21'h000002,
                        stRX_K                  = 21'h000002,
                        stRX_CB                 = 21'h000004,
                        stRX_CB                 = 21'h000004,
                        stRX_CC                 = 21'h000008,
                        stRX_CC                 = 21'h000008,
                        stRX_CD                 = 21'h000010,
                        stRX_CD                 = 21'h000010,
                        stRX_INVALID    = 21'h000020,
                        stRX_INVALID    = 21'h000020,
                        stIDLE_D                = 21'h000040,
                        stIDLE_D                = 21'h000040,
                        stCARRIER_DTEC  = 21'h000080,
                        stFALSE_CARRIER = 21'h000080,
                        stFALSE_CARRIER = 21'h000100,
                        stSTART_OF_PKT  = 21'h000100,
                        stSTART_OF_PKT  = 21'h000200,
                        stEARLY_END             = 21'h000200,
                        stRECEIVE               = 21'h000400,
                        stTRI_RRI               = 21'h000400,
                        stEARLY_END             = 21'h000800,
                        stTRR_EXTEND    = 21'h000800,
                        stTRI_RRI               = 21'h001000,
                        stPKT_BURST_RRS = 21'h001000,
                        stTRR_EXTEND    = 21'h002000,
                        stRX_DATA_ERR   = 21'h002000,
                        stEPD2_CHK_END  = 21'h004000,
                        stRX_DATA               = 21'h004000,
                        stPKT_BURST_RRS = 21'h008000,
                        stEARLY_END_EXT = 21'h008000,
                        stRX_DATA_ERR   = 21'h010000,
                        stEXT_ERROR             = 21'h010000;
                        stRX_DATA               = 21'h020000,
 
                        stEARLY_END_EXT = 21'h040000,
 
                        stEXT_ERROR             = 21'h080000,
 
                        stLINK_FAILED   = 21'h100000;
 
 
 
reg             [20:00] r21_State;
 
reg             [20:00] r21_NxtState;
 
 
 
 
reg             [16:00] r17_State;
 
reg             [16:00] r21_NxtState;
 
 
wire    wSUDIK28_5;
wire    wSUDIK28_5;
wire    wSUDID21_5;
wire    wSUDID21_5;
wire    wSUDID2_2;
wire    wSUDID2_2;
wire    wCarrierDtect;//what is this
wire    wCarrierDtect;//what is this
wire    wSUDI;
wire    wSUDI;
 
 
wire    w_IsC1Set;
wire    w_IsC1Set;
wire    w_IsC2Set;
wire    w_IsC2Set;
wire    w_IsI1Set;
wire    w_IsI1Set;
wire    w_IsI2Set;
wire    w_IsI2Set;
wire    w_IsRSet;
wire    w_IsRSet;
wire    w_IsSSet;
wire    w_IsSSet;
wire    w_IsTSet;
wire    w_IsTSet;
wire    w_IsVSet;
wire    w_IsVSet;
 
 
        //synthesis translate_off
        //synthesis translate_off
        reg [8*30-1:0] rvStateName;
        reg [8*30-1:0] rvStateName;
        always@(*)
        always@(*)
        begin
        begin
                case(r21_State)
                case(r17_State)
                stWAIT_FOR_K    :       rvStateName <= "Wait For K";
                stWAIT_FOR_K    :       rvStateName <= "Wait For K";
                stRX_K                  :       rvStateName <= "RX K";
                stRX_K                  :       rvStateName <= "RX K";
                stRX_CB                 :       rvStateName <= "RX CB";
                stRX_CB                 :       rvStateName <= "RX CB";
                stRX_CC                 :       rvStateName <= "RX CC";
                stRX_CC                 :       rvStateName <= "RX CC";
                stRX_CD                 :       rvStateName <= "RX CD";
                stRX_CD                 :       rvStateName <= "RX CD";
                stRX_INVALID    :       rvStateName <= "RX Invalid";
                stRX_INVALID    :       rvStateName <= "RX Invalid";
                stIDLE_D                :       rvStateName <= "IDLE D";
                stIDLE_D                :       rvStateName <= "IDLE D";
                stCARRIER_DTEC  :       rvStateName <= "CARRIER DETECT";
                //stCARRIER_DTEC        :       rvStateName <= "CARRIER DETECT";
                stFALSE_CARRIER :       rvStateName <= "FALSE CARRIER";
                stFALSE_CARRIER :       rvStateName <= "FALSE CARRIER";
                stSTART_OF_PKT  :       rvStateName <= "Start of Packet";
                stSTART_OF_PKT  :       rvStateName <= "Start of Packet";
                stRECEIVE               :       rvStateName <= "Receiving";
                //stRECEIVE             :       rvStateName <= "Receiving";
                stEARLY_END             :       rvStateName <= "Early End";
                stEARLY_END             :       rvStateName <= "Early End";
                stTRI_RRI               :       rvStateName <= "TRI RRI";
                stTRI_RRI               :       rvStateName <= "TRI RRI";
                stTRR_EXTEND    :       rvStateName <= "TRR Extend";
                stTRR_EXTEND    :       rvStateName <= "TRR Extend";
                stEPD2_CHK_END  :       rvStateName <= "EPD2 Check End";
                //stEPD2_CHK_END        :       rvStateName <= "EPD2 Check End";
                stPKT_BURST_RRS :       rvStateName <= "PKT BURST RRS";
                stPKT_BURST_RRS :       rvStateName <= "PKT BURST RRS";
                stRX_DATA_ERR   :       rvStateName <= "RX DATA Error";
                stRX_DATA_ERR   :       rvStateName <= "RX DATA Error";
                stRX_DATA               :       rvStateName <= "RX DATA";
                stRX_DATA               :       rvStateName <= "RX DATA";
                stEARLY_END_EXT :       rvStateName <= "Early End Ext";
                stEARLY_END_EXT :       rvStateName <= "Early End Ext";
                stEXT_ERROR             :       rvStateName <= "Ext Error";
                stEXT_ERROR             :       rvStateName <= "Ext Error";
                stLINK_FAILED   :       rvStateName <= "Link Failed";
                //stLINK_FAILED :       rvStateName <= "Link Failed";
                endcase
                endcase
                //$display("mReceive State: %s",rvStateName);
                //$display("mReceive State: %s",rvStateName);
        end
        end
        //synthesis translate_on
        //synthesis translate_on
 
 
 
 
        assign w_IsSSet = i_OrderedSetValid && i_IsRSet;
        assign w_IsSSet = i_OrderedSetValid && i_IsRSet;
        assign wSUDI    = ~i_RxCodeInvalid;
        assign wSUDI    = ~i_RxCodeInvalid;
        assign wCarrierDtect = i_IsRSet|i_IsSSet|i_IsTSet|i_IsVSet;
        assign wCarrierDtect = i_IsRSet|i_IsSSet|i_IsTSet|i_IsVSet;
 
 
        always@(posedge i_Clk or negedge i_ARst_L)
        always@(posedge i_Clk or negedge i_ARst_L)
        if(i_ARst_L==1'b0) begin
        if(i_ARst_L==1'b0) begin
                r21_State <= stWAIT_FOR_K;
                r17_State <= stWAIT_FOR_K;
        end else begin
        end else begin
                r21_State <= r21_NxtState;
                r17_State <= r21_NxtState;
        end
        end
 
 
        assign wSUDIK28_5 = (!i_RxCodeInvalid) && (i_RxCodeCtrl) && (i8_RxCodeGroupIn==`K28_5);
        assign wSUDIK28_5 = (!i_RxCodeInvalid) && (i_RxCodeCtrl) && (i8_RxCodeGroupIn==`K28_5);
        assign wSUDID21_5 = (!i_RxCodeInvalid) && (!i_RxCodeCtrl) && (i8_RxCodeGroupIn==`D21_5);
        assign wSUDID21_5 = (!i_RxCodeInvalid) && (!i_RxCodeCtrl) && (i8_RxCodeGroupIn==`D21_5);
        assign wSUDID2_2 = (!i_RxCodeInvalid) && (!i_RxCodeCtrl) && (i8_RxCodeGroupIn==`D2_2);
        assign wSUDID2_2 = (!i_RxCodeInvalid) && (!i_RxCodeCtrl) && (i8_RxCodeGroupIn==`D2_2);
        always@(*)
        always@(*)
        begin
        begin
                case(r21_State)
                case(r17_State)
                stWAIT_FOR_K: if(i_IsComma && i_RxEven) r21_NxtState <= stRX_K; else r21_NxtState<=stWAIT_FOR_K;
                stWAIT_FOR_K: if(i_IsComma && i_RxEven) r21_NxtState <= stRX_K; else r21_NxtState<=stWAIT_FOR_K;
                stRX_K          : if(wSUDID21_5||wSUDID2_2)
                stRX_K          : if(wSUDID21_5||wSUDID2_2)
                                                r21_NxtState <= stRX_CB; else
                                                r21_NxtState <= stRX_CB; else
                                                if((!i_RxCodeInvalid) && (i_RxCodeCtrl) && i3_Xmit!=`cXmitDATA)
                                                if((!i_RxCodeInvalid) && (i_RxCodeCtrl) && i3_Xmit!=`cXmitDATA)
                                                r21_NxtState <= stRX_INVALID; else
                                                r21_NxtState <= stRX_INVALID; else
                                                        if(((!i_RxCodeInvalid) && (!i_RxCodeCtrl) && i3_Xmit!=`cXmitDATA && i8_RxCodeGroupIn!=`D21_5 && i8_RxCodeGroupIn!=`D2_2)||
                                                        if(((!i_RxCodeInvalid) && (!i_RxCodeCtrl) && i3_Xmit!=`cXmitDATA && i8_RxCodeGroupIn!=`D21_5 && i8_RxCodeGroupIn!=`D2_2)||
                                                                ((!i_RxCodeInvalid) && i3_Xmit==`cXmitDATA && ((i8_RxCodeGroupIn!=`D21_5 && i8_RxCodeGroupIn!=`D2_2 && (!i_RxCodeCtrl))||i_RxCodeCtrl)))
                                                                ((!i_RxCodeInvalid) && i3_Xmit==`cXmitDATA && ((i8_RxCodeGroupIn!=`D21_5 && i8_RxCodeGroupIn!=`D2_2 && (!i_RxCodeCtrl))||i_RxCodeCtrl)))
                                                                r21_NxtState <= stIDLE_D; else
                                                                r21_NxtState <= stIDLE_D; else
                                                                r21_NxtState <= stRX_K;
                                                                r21_NxtState <= stRX_K;
                stRX_CB         :       if((!i_RxCodeInvalid) && (!i_RxCodeCtrl)) r21_NxtState <= stRX_CC; else r21_NxtState <= stRX_INVALID;
                stRX_CB         :       if((!i_RxCodeInvalid) && (!i_RxCodeCtrl)) r21_NxtState <= stRX_CC; else r21_NxtState <= stRX_INVALID;
                stRX_CC         :       if((!i_RxCodeInvalid) && (!i_RxCodeCtrl)) r21_NxtState <= stRX_CD; else r21_NxtState <= stRX_INVALID;
                stRX_CC         :       if((!i_RxCodeInvalid) && (!i_RxCodeCtrl)) r21_NxtState <= stRX_CD; else r21_NxtState <= stRX_INVALID;
                stRX_CD         :       if((!i_RxCodeInvalid) && (i_RxCodeCtrl) && i8_RxCodeGroupIn==`K28_5 && i_RxEven)
                stRX_CD         :       if((!i_RxCodeInvalid) && (i_RxCodeCtrl) && i8_RxCodeGroupIn==`K28_5 && i_RxEven)
                                                        r21_NxtState <= stRX_K;
                                                        r21_NxtState <= stRX_K;
                                                        else
                                                        else
                                                        r21_NxtState <= stRX_INVALID;
                                                        r21_NxtState <= stRX_INVALID;
 
 
                stRX_INVALID:   if(wSUDIK28_5 && i_RxEven)
                stRX_INVALID:   if(wSUDIK28_5 && i_RxEven)
                                                        r21_NxtState <= stRX_K;
                                                        r21_NxtState <= stRX_K;
                                                        else
                                                        else
                                                        r21_NxtState <= stWAIT_FOR_K;
                                                        r21_NxtState <= stWAIT_FOR_K;
 
 
                stIDLE_D        :       if(!wSUDIK28_5 && (i3_Xmit!=`cXmitDATA))
                stIDLE_D        :       if(!wSUDIK28_5 && (i3_Xmit!=`cXmitDATA))
                                                        r21_NxtState <= stRX_INVALID;
                                                        r21_NxtState <= stRX_INVALID;
                                                else if(!i_RxCodeInvalid && i3_Xmit==`cXmitDATA && i_IsSSet)
                                                else if(!i_RxCodeInvalid && i3_Xmit==`cXmitDATA && i_IsSSet)
                                                        r21_NxtState <= stSTART_OF_PKT;
                                                        r21_NxtState <= stSTART_OF_PKT;
                                                else if((!i_RxCodeInvalid && i3_Xmit==`cXmitDATA && (~wCarrierDtect)) || (wSUDIK28_5 && i_RxEven))
                                                else if((!i_RxCodeInvalid && i3_Xmit==`cXmitDATA && (~wCarrierDtect)) || (wSUDIK28_5 && i_RxEven))
                                                        r21_NxtState <= stRX_K;
                                                        r21_NxtState <= stRX_K;
                                                else
                                                else
                                                        r21_NxtState <= stFALSE_CARRIER;
                                                        r21_NxtState <= stFALSE_CARRIER;
 
 
                /*stCARRIER_DTEC: if(i_OrderedSetValid && i_IsSSet)
                /*stCARRIER_DTEC: if(i_OrderedSetValid && i_IsSSet)
                                                        r21_NxtState <= stSTART_OF_PKT;
                                                        r21_NxtState <= stSTART_OF_PKT;
                                                else
                                                else
                                                        r21_NxtState <= stFALSE_CARRIER;*/
                                                        r21_NxtState <= stFALSE_CARRIER;*/
                stFALSE_CARRIER : if(wSUDIK28_5 && i_RxEven) r21_NxtState <= stRX_K; else r21_NxtState <= stFALSE_CARRIER;
                stFALSE_CARRIER : if(wSUDIK28_5 && i_RxEven) r21_NxtState <= stRX_K; else r21_NxtState <= stFALSE_CARRIER;
 
 
                stSTART_OF_PKT  : if(wSUDI)
                stSTART_OF_PKT  : if(wSUDI)
                                                        begin
                                                        begin
                                                                if(~i_RxCodeCtrl) r21_NxtState <= stRX_DATA; else
                                                                if(~i_RxCodeCtrl) r21_NxtState <= stRX_DATA; else
                                                                if((i_CheckEndKDK||i_CheckEndKD21_5D0_0||i_CheckEndKD2_2D0_0) &&i_RxEven)
                                                                if((i_CheckEndKDK||i_CheckEndKD21_5D0_0||i_CheckEndKD2_2D0_0) &&i_RxEven)
                                                                        r21_NxtState <= stEARLY_END; else
                                                                        r21_NxtState <= stEARLY_END; else
                                                                if(i_CheckEndTRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndTRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndTRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndTRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stEARLY_END_EXT; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stEARLY_END_EXT; else
                                                                r21_NxtState <= stRX_DATA_ERR;
                                                                r21_NxtState <= stRX_DATA_ERR;
                                                        end
                                                        end
                                                  else r21_NxtState <= stRX_DATA_ERR;
                                                  else r21_NxtState <= stRX_DATA_ERR;
                //stRECEIVE             : //zero cycle state
                //stRECEIVE             : //zero cycle state
                stRX_DATA               : if(wSUDI)
                stRX_DATA               : if(wSUDI)
                                                        begin
                                                        begin
                                                                if(~i_RxCodeCtrl) r21_NxtState <= stRX_DATA; else
                                                                if(~i_RxCodeCtrl) r21_NxtState <= stRX_DATA; else
                                                                if((i_CheckEndKDK||i_CheckEndKD21_5D0_0||i_CheckEndKD2_2D0_0) &&i_RxEven)
                                                                if((i_CheckEndKDK||i_CheckEndKD21_5D0_0||i_CheckEndKD2_2D0_0) &&i_RxEven)
                                                                        r21_NxtState <= stEARLY_END; else
                                                                        r21_NxtState <= stEARLY_END; else
                                                                if(i_CheckEndTRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndTRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndTRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndTRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stEARLY_END_EXT; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stEARLY_END_EXT; else
                                                                r21_NxtState <= stRX_DATA_ERR;
                                                                r21_NxtState <= stRX_DATA_ERR;
                                                        end
                                                        end
                                                  else r21_NxtState <= stRX_DATA_ERR;
                                                  else r21_NxtState <= stRX_DATA_ERR;
                stRX_DATA_ERR   : if(wSUDI)
                stRX_DATA_ERR   : if(wSUDI)
                                                        begin
                                                        begin
                                                                if(~i_RxCodeCtrl) r21_NxtState <= stRX_DATA; else
                                                                if(~i_RxCodeCtrl) r21_NxtState <= stRX_DATA; else
                                                                if((i_CheckEndKDK||i_CheckEndKD21_5D0_0||i_CheckEndKD2_2D0_0) &&i_RxEven)
                                                                if((i_CheckEndKDK||i_CheckEndKD21_5D0_0||i_CheckEndKD2_2D0_0) &&i_RxEven)
                                                                        r21_NxtState <= stEARLY_END; else
                                                                        r21_NxtState <= stEARLY_END; else
                                                                if(i_CheckEndTRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndTRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndTRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndTRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stEARLY_END_EXT; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stEARLY_END_EXT; else
                                                                r21_NxtState <= stRX_DATA_ERR;
                                                                r21_NxtState <= stRX_DATA_ERR;
                                                        end
                                                        end
                                                  else r21_NxtState <= stRX_DATA_ERR;
                                                  else r21_NxtState <= stRX_DATA_ERR;
                stEARLY_END             : if(wSUDID21_5||wSUDID2_2) r21_NxtState <= stRX_CB; else r21_NxtState <= stIDLE_D;
                stEARLY_END             : if(wSUDID21_5||wSUDID2_2) r21_NxtState <= stRX_CB; else r21_NxtState <= stIDLE_D;
                stTRI_RRI               : if(wSUDIK28_5) r21_NxtState <= stRX_K; else r21_NxtState <= stTRI_RRI;
                stTRI_RRI               : if(wSUDIK28_5) r21_NxtState <= stRX_K; else r21_NxtState <= stTRI_RRI;
                stTRR_EXTEND    : if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                stTRR_EXTEND    : if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                                                        if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                        if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                         if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                                                         if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                                                          if(i_IsVSet) r21_NxtState <= stEXT_ERROR; else
                                                          if(i_IsVSet) r21_NxtState <= stEXT_ERROR; else
                                                                r21_NxtState <= stTRR_EXTEND;
                                                                r21_NxtState <= stTRR_EXTEND;
                stEARLY_END_EXT : if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                stEARLY_END_EXT : if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                                                        if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                        if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                         if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                                                         if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                                                          if(i_IsVSet) r21_NxtState <= stEXT_ERROR; else
                                                          if(i_IsVSet) r21_NxtState <= stEXT_ERROR; else
                                                                r21_NxtState <= stEARLY_END_EXT;
                                                                r21_NxtState <= stEARLY_END_EXT;
                //This is zero cycle state
                //This is zero cycle state
                //stEPD2_CHK_END        : if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                //stEPD2_CHK_END        : if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                //                                      if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                //                                      if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                //                                       if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                //                                       if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                //                                        r21_NxtState <= stEXT_ERROR; 
                //                                        r21_NxtState <= stEXT_ERROR; 
                stPKT_BURST_RRS : if(i_IsSSet && i_OrderedSetValid && wSUDI) r21_NxtState <= stSTART_OF_PKT; else r21_NxtState <= stPKT_BURST_RRS;
                stPKT_BURST_RRS : if(i_IsSSet && i_OrderedSetValid && wSUDI) r21_NxtState <= stSTART_OF_PKT; else r21_NxtState <= stPKT_BURST_RRS;
                stEXT_ERROR             : if(i_IsSSet && i_OrderedSetValid && wSUDI) r21_NxtState <= stSTART_OF_PKT; else
                stEXT_ERROR             : if(i_IsSSet && i_OrderedSetValid && wSUDI) r21_NxtState <= stSTART_OF_PKT; else
                                                        if(wSUDIK28_5 && i_RxEven) r21_NxtState <= stRX_K; else
                                                        if(wSUDIK28_5 && i_RxEven) r21_NxtState <= stRX_K; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndRRR) r21_NxtState <= stTRR_EXTEND; else
                                                                if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndRRK && i_RxEven) r21_NxtState <= stTRI_RRI; else
                                                                if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                                                                if(i_CheckEndRRS) r21_NxtState <= stPKT_BURST_RRS; else
                                                                r21_NxtState <= stEXT_ERROR;
                                                                r21_NxtState <= stEXT_ERROR;
                endcase
                endcase
        end
        end
 
 
        assign o_RUDIConfig = (r21_State==stRX_CD               )?1'b1:1'b0;
        assign o_RUDIConfig = (r17_State==stRX_CD               )?1'b1:1'b0;
        assign o_RUDIIdle       = (r21_State==stIDLE_D          )?1'b1:1'b0;
        assign o_RUDIIdle       = (r17_State==stIDLE_D          )?1'b1:1'b0;
        assign o_RUDIInvalid= (r21_State==stRX_INVALID && i3_Xmit==`cXmitCONFIG)?1'b1:1'b0;
        assign o_RUDIInvalid= (r17_State==stRX_INVALID && i3_Xmit==`cXmitCONFIG)?1'b1:1'b0;
 
 
        always@(posedge i_Clk or negedge i_ARst_L)
        always@(posedge i_Clk or negedge i_ARst_L)
        if(i_ARst_L==1'b0) begin
        if(i_ARst_L==1'b0) begin
                o_Receiving <= 1'b0;
                o_Receiving <= 1'b0;
                o_RxDV          <= 1'b0;
                o_RxDV          <= 1'b0;
                o_RxER          <= 1'b0;
                o_RxER          <= 1'b0;
                o8_RxD          <= 8'h0;
                o8_RxD          <= 8'h0;
                o16_RxConfigReg <= 16'h00;
                o16_RxConfigReg <= 16'h00;
        end else begin
        end else begin
 
 
                case(r21_NxtState)
                case(r21_NxtState)
                //stWAIT_FOR_K  :       
                //stWAIT_FOR_K  :       
                stRX_K                  :       begin
                stRX_K                  :       begin
                                                        o_Receiving <= 1'b0;
                                                        o_Receiving <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        end
                                                        end
                //stRX_CB                       :  
                //stRX_CB                       :  
                stRX_CC                 :   o16_RxConfigReg[07:00] <= i8_RxCodeGroupIn;
                stRX_CC                 :   o16_RxConfigReg[07:00] <= i8_RxCodeGroupIn;
                stRX_CD                 :       o16_RxConfigReg[15:08] <= i8_RxCodeGroupIn;
                stRX_CD                 :       o16_RxConfigReg[15:08] <= i8_RxCodeGroupIn;
                stRX_INVALID    :       if(i3_Xmit==`cXmitDATA) o_Receiving <= 1'b1;
                stRX_INVALID    :       if(i3_Xmit==`cXmitDATA) o_Receiving <= 1'b1;
                stIDLE_D                :       begin
                stIDLE_D                :       begin
                                                        o_Receiving <= 1'b0;
                                                        o_Receiving <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        end
                                                        end
 
 
                //stCARRIER_DTEC:       o_Receiving <= 1'b1;
                //stCARRIER_DTEC:       o_Receiving <= 1'b1;
                stFALSE_CARRIER :       begin
                stFALSE_CARRIER :       begin
                                                        o_RxER          <= 1'b1;
                                                        o_RxER          <= 1'b1;
                                                        o8_RxD          <= 8'h0E;
                                                        o8_RxD          <= 8'h0E;
                                                        end
                                                        end
                stSTART_OF_PKT  :       begin
                stSTART_OF_PKT  :       begin
                                                        o_Receiving <= 1'b1;
                                                        o_Receiving <= 1'b1;
                                                        o_RxDV          <= 1'b1;
                                                        o_RxDV          <= 1'b1;
                                                        o_RxER          <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        o8_RxD          <= 8'h55;
                                                        o8_RxD          <= 8'h55;
                                                        end
                                                        end
                //stRECEIVE             :       
                //stRECEIVE             :       
                stEARLY_END             :       o_RxER <= 1'b1;
                stEARLY_END             :       o_RxER <= 1'b1;
                stTRI_RRI               :       begin
                stTRI_RRI               :       begin
                                                        o_Receiving <= 1'b0;
                                                        o_Receiving <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        end
                                                        end
                stTRR_EXTEND    :       begin
                stTRR_EXTEND    :       begin
                                                        o_RxER          <= 1'b1;
                                                        o_RxER          <= 1'b1;
                                                        o_RxDV          <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o8_RxD          <= 8'h0F;
                                                        o8_RxD          <= 8'h0F;
                                                        end
                                                        end
                //stEPD2_CHK_END        :       
                //stEPD2_CHK_END        :       
                stPKT_BURST_RRS :       begin
                stPKT_BURST_RRS :       begin
                                                        o_RxDV          <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o8_RxD          <= 8'b0000_1111;
                                                        o8_RxD          <= 8'b0000_1111;
                                                        end
                                                        end
                stRX_DATA_ERR   :       o_RxER          <= 1'b1;
                stRX_DATA_ERR   :       o_RxER          <= 1'b1;
                stRX_DATA               :       begin
                stRX_DATA               :       begin
                                                        o_RxER          <= 1'b0;
                                                        o_RxER          <= 1'b0;
                                                        o8_RxD          <= i8_RxCodeGroupIn;
                                                        o8_RxD          <= i8_RxCodeGroupIn;
                                                        end
                                                        end
                stEARLY_END_EXT :       o_RxER          <= 1'b1;
                stEARLY_END_EXT :       o_RxER          <= 1'b1;
                stEXT_ERROR             :       begin
                stEXT_ERROR             :       begin
                                                        o_RxDV          <= 1'b0;
                                                        o_RxDV          <= 1'b0;
                                                        o8_RxD          <= 8'b0001_1111;
                                                        o8_RxD          <= 8'b0001_1111;
                                                        end
                                                        end
                stLINK_FAILED   :       begin
                // stLINK_FAILED        :       begin
                                                        if(o_Receiving==1'b1)
                                                        // if(o_Receiving==1'b1) 
                                                                begin
                                                                // begin 
                                                                o_Receiving <= 1'b0;
                                                                // o_Receiving <= 1'b0;
                                                                o_RxER <= 1'b1;
                                                                // o_RxER <= 1'b1; 
                                                                end else
                                                                // end else
                                                                begin
                                                                // begin
                                                                o_RxDV <= 1'b0;
                                                                // o_RxDV <= 1'b0;
                                                                o_RxER <= 1'b0;
                                                                // o_RxER <= 1'b0;
                                                                end
                                                                // end
                                                        if(i3_Xmit!=`cXmitDATA)         o_Invalid <= 1'b1;
                                                        // if(i3_Xmit!=`cXmitDATA)      o_Invalid <= 1'b1;
                                                        end
                                                        // end
                endcase
                endcase
        end
        end
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.