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

Subversion Repositories sgmii

[/] [sgmii/] [trunk/] [src/] [mSGMII.v] - Diff between revs 13 and 15

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 13 Rev 15
Line 1... Line 1...
/*
/*
Developed By Jeff Lieu (lieumychuong@gmail.com)
Copyright � 2012 JeffLieu-lieumychuong@gmail.com
 
 
 
        This file is part of SGMII-IP-Core.
 
    SGMII-IP-Core is free software: you can redistribute it and/or modify
 
    it under the terms of the GNU General Public License as published by
 
    the Free Software Foundation, either version 3 of the License, or
 
    (at your option) any later version.
 
 
 
    SGMII-IP-Core is distributed in the hope that it will be useful,
 
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
    GNU General Public License for more details.
 
 
 
    You should have received a copy of the GNU General Public License
 
    along with SGMII-IP-Core.  If not, see <http://www.gnu.org/licenses/>.
 
 
File            :
File            :
Description     :
Description     :
        This core implements:
        This core implements:
        B1000-X Standard
        B1000-X Standard
        PCS/PMA of SGMII MAC Side
        PCS/PMA of SGMII MAC Side
Line 108... Line 123...
        wire    w_TxForceNegDisp;
        wire    w_TxForceNegDisp;
        wire    w_PllLocked;
        wire    w_PllLocked;
        wire    [20:00] w21_LinkTimer;
        wire    [20:00] w21_LinkTimer;
        wire    w_TxEN,w_TxER,w_RxER, w_RxDV;
        wire    w_TxEN,w_TxER,w_RxER, w_RxDV;
        wire    [07:00] w8_RxD, w8_TxD;
        wire    [07:00] w8_RxD, w8_TxD;
 
        wire    w_BitSlip;
 
        wire    w_Invalid;//Not Used
 
        wire    w_TxEven;//Not Used
 
        wire    w_CurrentParity;
 
 
        //MII Clock Gen
        //MII Clock Gen
        reg [6:0]        r7_Cntr;
        reg [6:0]        r7_Cntr;
        reg r_MIIClk;
        reg r_MIIClk;
        reg r_MIIClk_D;
        reg r_MIIClk_D;
Line 144... Line 163...
        .i8_RxD                 (w8_RxD));
        .i8_RxD                 (w8_RxD));
 
 
        generate
        generate
                genvar STAGE;
                genvar STAGE;
                for(STAGE=0;STAGE<3;STAGE=STAGE+1)
                for(STAGE=0;STAGE<3;STAGE=STAGE+1)
                begin
                begin:PreCheck
                        assign w3_PreCheckIsComma[STAGE]        = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b1 && r8_RxCodeGroup[STAGE]==`K28_5)?1'b1:1'b0;
                        assign w3_PreCheckIsComma[STAGE]        = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b1 && r8_RxCodeGroup[STAGE]==`K28_5)?1'b1:1'b0;
                        assign w3_PreCheckIsTSet[STAGE]         = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b1 && r8_RxCodeGroup[STAGE]==`K29_7)?1'b1:1'b0;
                        assign w3_PreCheckIsTSet[STAGE]         = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b1 && r8_RxCodeGroup[STAGE]==`K29_7)?1'b1:1'b0;
                        assign w3_PreCheckIsRSet[STAGE]         = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b1 && r8_RxCodeGroup[STAGE]==`K23_7)?1'b1:1'b0;
                        assign w3_PreCheckIsRSet[STAGE]         = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b1 && r8_RxCodeGroup[STAGE]==`K23_7)?1'b1:1'b0;
                        assign w3_PreCheckIsD21_5[STAGE]        = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b0 && r8_RxCodeGroup[STAGE]==`D21_5)?1'b1:1'b0;
                        assign w3_PreCheckIsD21_5[STAGE]        = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b0 && r8_RxCodeGroup[STAGE]==`D21_5)?1'b1:1'b0;
                        assign w3_PreCheckIsD2_2[STAGE]         = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b0 && r8_RxCodeGroup[STAGE]==`D2_2)?1'b1:1'b0;
                        assign w3_PreCheckIsD2_2[STAGE]         = (r_RxCgInvalid[STAGE]==1'b0 && r_RxCgCtrl[STAGE]==1'b0 && r8_RxCodeGroup[STAGE]==`D2_2)?1'b1:1'b0;
Line 191... Line 210...
        .i_WEn                  (i_WEn),
        .i_WEn                  (i_WEn),
        .i8_Addr                (iv_Addr),
        .i8_Addr                (iv_Addr),
        .i32_WrData             (i32_WrData),
        .i32_WrData             (i32_WrData),
        .o32_RdData             (o32_RdData),
        .o32_RdData             (o32_RdData),
        .o_Ack                  (o_Ack),
        .o_Ack                  (o_Ack),
        .o_Stall                (o_Stall),
        .o_Stall                (),
 
 
        .io_Mdio                (io_Mdio),
        .io_Mdio                (io_Mdio),
        .i_Mdc                  (i_Mdc),
        .i_Mdc                  (i_Mdc),
 
 
        //Register in and out,
        //Register in and out,
Line 296... Line 315...
        .o_RUDIInvalid          (w_RUDIInvalid),
        .o_RUDIInvalid          (w_RUDIInvalid),
 
 
        .o_RxDV                         (w_RxDV ),
        .o_RxDV                         (w_RxDV ),
        .o_RxER                         (w_RxER ),
        .o_RxER                         (w_RxER ),
        .o8_RxD                         (w8_RxD ),
        .o8_RxD                         (w8_RxD ),
        .o_Invalid                      (o_Invalid),
        .o_Invalid                      (w_Invalid),
        .o_Receiving            (w_Receiving),
        .o_Receiving            (w_Receiving),
        .i_Clk                          (w_ClkSys),
        .i_Clk                          (w_ClkSys),
        .i_ARst_L                       (w_ARstLogic_L));
        .i_ARst_L                       (w_ARstLogic_L));
 
 
        mANCtrl u0ANCtrl(
        mANCtrl u0ANCtrl(
Line 370... Line 389...
        .o_SerTx                        (o_SerTx                        ),
        .o_SerTx                        (o_SerTx                        ),
 
 
        .i_RefClk125M           (i_RefClk125M           ),
        .i_RefClk125M           (i_RefClk125M           ),
        .o_CoreClk                      (w_ClkSys                       ),
        .o_CoreClk                      (w_ClkSys                       ),
        .i_GxBPwrDwn            (w_GxBPowerDown         ),
        .i_GxBPwrDwn            (w_GxBPowerDown         ),
        .i_XcverDigitalRst      (~w_ARstLogic_L         ),
        .i_XcverDigitalRst      (~i_ARstHardware_L      ),
        .o_PllLocked            (w_PllLocked            ),
        .o_PllLocked            (w_PllLocked            ),
        .i_RxBitSlip            (w_BitSlip                      ),
        .i_RxBitSlip            (w_BitSlip                      ),
 
 
        .o_SignalDetect         (),
        .o_SignalDetect         (),
        .o8_RxCodeGroup         (w8_RxCode                      ),
        .o8_RxCodeGroup         (w8_RxCode                      ),
Line 382... Line 401...
        .o_RxCodeCtrl           (w_RxCodeCtrl           ),
        .o_RxCodeCtrl           (w_RxCodeCtrl           ),
 
 
        .i8_TxCodeGroup         (w8_TxCode                      ),
        .i8_TxCodeGroup         (w8_TxCode                      ),
        .i_TxCodeValid          (w_TxCodeValid          ),
        .i_TxCodeValid          (w_TxCodeValid          ),
        .i_TxCodeCtrl           (w_TxCodeCtrl           ),
        .i_TxCodeCtrl           (w_TxCodeCtrl           ),
        .i_TxForceNegDisp       (w_TxForceNegDisp       ),
        .i_TxForceNegDisp       (1'b0   ),
        .o_RunningDisparity     (w_CurrentParity));
        .o_RunningDisparity     (w_CurrentParity));
 
 
        assign o_GMIIClk = w_ClkSys;
        assign o_GMIIClk = w_ClkSys;
 
 
        always@(posedge w_ClkSys or negedge i_ARstHardware_L )
        always@(posedge w_ClkSys or negedge i_ARstHardware_L )

powered by: WebSVN 2.1.0

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