LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cores > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: des00 at opencores.org<des00@o...>
    Date: Thu May 24 17:06:09 CEST 2007
    Subject: [oc] Question on Ethernet MAC 10/100 Mbps
    Top
    Hi everybody!

    Could you explain: how this MAC will be processed Pause frames in a
    mode r_PassAll = 0?

    In eth_maccontrol i found follow condition

    // Rx Done Interrupt
    always @ (posedge WB_CLK_I or posedge Reset)
    begin
    if(Reset)
    RxB_IRQ <=#Tp 1'b0;
    else
    if(RxStatusWrite & RxIRQEn & ReceivedPacketGood &
    (~ReceivedPauseFrm | ReceivedPauseFrm & r_PassAll & (~r_RxFlow)))
    RxB_IRQ <=#Tp (~RxError);
    else
    RxB_IRQ <=#Tp 1'b0;
    end

    As I understand in a mode r_PassAll = 0 signal RxB_IRQ should not be
    exposed, but ReceivedPauseFrm is not Level signal in r_PassAll = 0
    mode. Becouse in eth_recivercontorl there is

    // Pause Frame received
    always @ (posedge MRxClk or posedge RxReset)
    begin
    if(RxReset)
    ReceivedPauseFrm <=#Tp 1'b0;
    else
    if(RxStatusWriteLatched_sync2 & r_PassAll | ReceivedPauseFrm &
    (~r_PassAll))
    ReceivedPauseFrm <=#Tp 1'b0;
    else
    if(ByteCntEq16 & TypeLengthOK & OpCodeOK)
    ReceivedPauseFrm <=#Tp 1'b1;
    end

    ReceivedPauseFrm is 1 cycle pulse signal in mode r_PassAll = 0 and
    cannot be registred in

    assign RxStatusIn = {ReceivedPauseFrm, AddressMiss, RxOverrun,
    InvalidSymbol, DribbleNibble, ReceivedPacketTooBig, ShortFrame,
    LatchedCrcError, RxLateCollision};

    always @ (posedge MRxClk or posedge Reset)
    begin
    if(Reset)
    RxStatusInLatched <=#Tp 'h0;
    else
    if(LoadRxStatus)
    RxStatusInLatched <=#Tp RxStatusIn;
    end

    becouse LoadRxStatus is valid at the end of frame recive process.

    As i understant at reception of a PAUSE frame RxB_IRQ interrupt will
    be exposed! But that is not correct!


    Could somebody help me please ? :)

    Denis


     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.