[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [ethmac] ??: [ethmac]about clock
Hi,
I'm not familar with the exact detail of this implementation however :
1.
the RX and TX work both on the same speed meaning either 10M or 100M (1G,
10G etc).
2.
usualy the Pause timer is done in the RX domain which is also where the
packet recive decoding is done and a single signal is trasfer (tho'
syncornizer) to the trasmite side which indicate wether we should enter a
pause duration or not.
have a nice day
Illan
-----Original Message-----
From: XiaYun [mailto:xiayun@magima.com.cn]
Sent: Sunday, November 03, 2002 5:08 PM
To: ethmac@opencores.org
Subject: [ethmac] ??: [ethmac]about clock
I think the pause timer is used in MTxClk domain. Then why don't use
MTxClk in stead of MRxClk? If the Ethernet transfer at 100Mbps but
receive at 10Mbps, why should I wait the slot time at the 10Mbps domain?
-----邮件原件-----
发件人: owner-ethmac@opencores.org [mailto:owner-ethmac@opencores.org]
代表 zjli@technologist.com
发送时间: 2002年11月1日 20点14
收件人: xiayun@magima.com.cn; ethmac@opencores.org
主题: Re: [ethmac]about clock
I do not see anything wrong. Divider2 and SlotTimer are only used to
support PauseTimer:
always @ (posedge MRxClk or posedge RxReset)
begin
if(RxReset)
PauseTimer[15:0] <= #Tp 16'h0;
else
if(SetPauseTimer)
PauseTimer[15:0] <= #Tp LatchedTimerValue[15:0];
else
if(DecrementPauseTimer)
PauseTimer[15:0] <= #Tp PauseTimer[15:0] - 1'b1;
end
assign PauseTimerEq0 = ~(|PauseTimer[15:0]);
PauseTimer is set from MRxClk domain, and PauseTimerEq0 is passed into
MTxClk domain. Why should PauseTimer itself be in MTxClk domain? Is it
important to consider cases where the 2 clocks are at different
frequencies or one of them is stopped?
Jeff
----- Original Message -----
From: "XiaYun" <xiayun@m... >
To: <ethmac@o... >
Date: Wed, 30 Oct 2002 13:52:20 +0800
Subject: [ethmac]about clock
> Hello,
>
> In file eth_receivecontrol.v, I think the following block should
> use MTxClk in stead of MRxClk, an I right?
>
>
>
> // Divider2 is used for incrementing the Slot timer every other
> clock
>
> always @ (posedge MRxClk or posedge RxReset)
>
> begin
>
> if(RxReset)
>
> Divider2 <= #Tp 1'b0;
>
> else
>
> if(|PauseTimer[15:0] & RxFlow)
>
> Divider2 <= #Tp ~Divider2;
>
> else
>
> Divider2 <= #Tp 1'b0;
>
> end
>
>
>
> // SlotTimer
>
> always @ (posedge MRxClk or posedge RxReset)
>
> begin
>
> if(RxReset)
>
> SlotTimer[5:0] <= #Tp 6'h0;
>
> else
>
> if(ResetSlotTimer)
>
> SlotTimer[5:0] <= #Tp 6'h0;
>
> else
>
> if(IncrementSlotTimer)
>
> SlotTimer[5:0] <= #Tp SlotTimer[5:0] + 1'b1;
>
> End
>
>
>
> Thanks in advance,
>
>
>
> Regards,
>
>
>
> XiaYun
>
>
>
--
To unsubscribe from ethmac mailing list please visit
http://www.opencores.org/mailinglists.shtml
--
To unsubscribe from ethmac mailing list please visit
http://www.opencores.org/mailinglists.shtml
--
To unsubscribe from ethmac mailing list please visit http://www.opencores.org/mailinglists.shtml