FPGARelated.com
Forums

gigabit ethernet problem

Started by salimbaba September 22, 2011
Hi,
I am using xilinx spartan3 xc3s4000 in my design. It is interfaced with 2
national Gigabit PHYs. So i receive a packet from phy A and transmit it to
PHY B and vice versa. Now the problem i am facing is that one of the bytes
in the packet randomly gets corrupt after a while.. 

First the packet drop was very frequent at high speeds, then i checked the
power requirements of my PHYs and got to know that my regulator couldn't
source that much current. Then i changed the regulator and now the problem
occurs very rarely or it doesnt occur at all.

I have some checks in the RTL to identify if the error is FCS or buffer
overflow.So every time the packet drops, my fcs flag is raised. So i viewed
the incoming packet and saw that it always had some random corrupt byte.
Like i was sending packets with known pattern, so after a while some random
byte is getting corrupt. I don't know what to look for from now onwards. 
I thought maybe it was the heat issue so used heat gun but nah it wasn't
the heat problem.
My ground noise is 80mv peak-to-peak.

Need some pointers..

Regards
	   
					
---------------------------------------		
Posted through http://www.FPGARelated.com
hi 
have your problem solved, cause i 'm facing the same problem with Realtek
RTL8201 chip at the receive section,i connected RXD to TXD and RXDV to TXE
to test the chip in loopback through fpga xilinx spartan 3 xc3s400, in this
test i got 4 out of 50 packets with fcs error at the pc. what's the issue?
tnx for any help
>Hi, >I am using xilinx spartan3 xc3s4000 in my design. It is interfaced with 2 >national Gigabit PHYs. So i receive a packet from phy A and transmit it
to
>PHY B and vice versa. Now the problem i am facing is that one of the
bytes
>in the packet randomly gets corrupt after a while.. > >First the packet drop was very frequent at high speeds, then i checked
the
>power requirements of my PHYs and got to know that my regulator couldn't >source that much current. Then i changed the regulator and now the
problem
>occurs very rarely or it doesnt occur at all. > >I have some checks in the RTL to identify if the error is FCS or buffer >overflow.So every time the packet drops, my fcs flag is raised. So i
viewed
>the incoming packet and saw that it always had some random corrupt byte. >Like i was sending packets with known pattern, so after a while some
random
>byte is getting corrupt. I don't know what to look for from now onwards. >I thought maybe it was the heat issue so used heat gun but nah it wasn't >the heat problem. >My ground noise is 80mv peak-to-peak. > >Need some pointers.. > >Regards > > >--------------------------------------- >Posted through http://www.FPGARelated.com >
--------------------------------------- Posted through http://www.FPGARelated.com
On 22/09/2011 20:21, salimbaba wrote:
> Hi, > I am using xilinx spartan3 xc3s4000 in my design. It is interfaced with 2 > national Gigabit PHYs. So i receive a packet from phy A and transmit it to > PHY B and vice versa. Now the problem i am facing is that one of the bytes > in the packet randomly gets corrupt after a while.. > > First the packet drop was very frequent at high speeds, then i checked the > power requirements of my PHYs and got to know that my regulator couldn't > source that much current. Then i changed the regulator and now the problem > occurs very rarely or it doesnt occur at all. > > I have some checks in the RTL to identify if the error is FCS or buffer > overflow.So every time the packet drops, my fcs flag is raised. So i viewed > the incoming packet and saw that it always had some random corrupt byte. > Like i was sending packets with known pattern, so after a while some random > byte is getting corrupt. I don't know what to look for from now onwards. > I thought maybe it was the heat issue so used heat gun but nah it wasn't > the heat problem. > My ground noise is 80mv peak-to-peak. > > Need some pointers.. > > Regards > > > --------------------------------------- > Posted through http://www.FPGARelated.com
Can you please describe the hardware setup in more detail - is it your own board or a known good board. Has this hardware setup ever worked (ie been error free ?). Is there any pattern in the 'random' corruption (eg is it always bit 0 or a 1 seen as 0 (or a 0 seen as 1) etc etc. Is it always the nth byte in a packet etc. Michael Kellett
i designed and rout the pcb board,i have one RTL8201BL as lan phy layer and
Xilinx Spartan 3 XC3s400 as controller. i transmit raw packets. i don't
have any error in sending packets, i tested transmit section at 95%
bandwidth without a packet loss, but at receive there are random error
receiving packets. the bytes that are corrupt are also random and does not
have a pattern. only when the packet length become large(about 1400 Bytes),
the error occur more frequent about (3-4 out of 20 packets),
i don't know how i can debug the problem, 
tnx in advanced for help :)

	   
					
---------------------------------------		
Posted through http://www.FPGARelated.com
On 21/02/2012 05:04, nba83 wrote:
> i designed and rout the pcb board,i have one RTL8201BL as lan phy layer and > Xilinx Spartan 3 XC3s400 as controller. i transmit raw packets. i don't > have any error in sending packets, i tested transmit section at 95% > bandwidth without a packet loss, but at receive there are random error > receiving packets. the bytes that are corrupt are also random and does not > have a pattern. only when the packet length become large(about 1400 Bytes), > the error occur more frequent about (3-4 out of 20 packets), > i don't know how i can debug the problem, > tnx in advanced for help :) > > > > --------------------------------------- > Posted through http://www.FPGARelated.com
I can only make the most general suggestions. How are you generating the test packets - are you sure they are good. Can you check the signal integrity on either side of the PHY. Are the errors similar to those you got when the power supply was poor. Is the position of the errored byte at the start or end of the packet or just anywhere. Do you ever get more than one error per packet. Does it get worse or better with any boundary cases: ie does it never fail with a minimum length packet or fail lots more often with maximum length. Is there any sensitivity to packet contents. Is there any sensitivity to rate of packets. MK
On Feb 20, 9:04=A0pm, "nba83"
<nba_baheri@n_o_s_p_a_m.n_o_s_p_a_m.yahoo.com> wrote:
> i designed and rout the pcb board,i have one RTL8201BL as lan phy layer a=
nd
> Xilinx Spartan 3 XC3s400 as controller. i transmit raw packets. i don't > have any error in sending packets, i tested transmit section at 95% > bandwidth without a packet loss, but at receive there are random error > receiving packets. the bytes that are corrupt are also random and does no=
t
> have a pattern. only when the packet length become large(about 1400 Bytes=
),
> the error occur more frequent about (3-4 out of 20 packets), > i don't know how i can debug the problem, > tnx in advanced for help :) > > --------------------------------------- > Posted throughhttp://www.FPGARelated.com
Have you checked all your timing? Making setup/hold times for the Rx side of GigE can be tough with a Spartan. Been there, done that, you need to be very careful. John P
>On Feb 20, 9:04=A0pm, "nba83" ><nba_baheri@n_o_s_p_a_m.n_o_s_p_a_m.yahoo.com> wrote: >> i designed and rout the pcb board,i have one RTL8201BL as lan phy layer
a=
>nd >> Xilinx Spartan 3 XC3s400 as controller. i transmit raw packets. i don't >> have any error in sending packets, i tested transmit section at 95% >> bandwidth without a packet loss, but at receive there are random error >> receiving packets. the bytes that are corrupt are also random and does
no=
>t >> have a pattern. only when the packet length become large(about 1400
Bytes=
>), >> the error occur more frequent about (3-4 out of 20 packets), >> i don't know how i can debug the problem, >> tnx in advanced for help :) >> >> --------------------------------------- >> Posted throughhttp://www.FPGARelated.com > >Have you checked all your timing? Making setup/hold times for the Rx >side of GigE can be tough with a Spartan. Been there, done that, you >need to be very careful. > >John P >
no i don't know how to do that? i don't know what are setup/hold times for Rx, and my Phy layer is 100MHz not Gig, I used RTL8201BL and i wrote a simple loopback program in which i connected RXDV to TXE and RXD to TXD at the corresponding TXCLK and RXCLK, do i need to do some timing for this simple program?? here is my code: always @ (posedge RTL_RXCLK) begin data <= RTL_RXD; en <= RTL_RXDV; end always @ (posedge RTL_TXCLK) begin RTL_TXD_I <= data; RTL_TXE_I <= en; end --------------------------------------- Posted through http://www.FPGARelated.com
"nba83" <nba_baheri@n_o_s_p_a_m.n_o_s_p_a_m.yahoo.com> wrote in message 
news:H5qdnQ4pDqAm-tnSnZ2dnUVZ_q-dnZ2d@giganews.com...
> here is my code: > > always @ (posedge RTL_RXCLK) > begin > data <= RTL_RXD; > en <= RTL_RXDV; > end > > always @ (posedge RTL_TXCLK) > begin > RTL_TXD_I <= data; > RTL_TXE_I <= en; > end
Huh? I havent been reading this thread in details, but how are these clocks syncronized? Maybe they arent, hence your problem.
>"nba83" <nba_baheri@n_o_s_p_a_m.n_o_s_p_a_m.yahoo.com> wrote in message >news:H5qdnQ4pDqAm-tnSnZ2dnUVZ_q-dnZ2d@giganews.com... >> here is my code: >> >> always @ (posedge RTL_RXCLK) >> begin >> data <= RTL_RXD; >> en <= RTL_RXDV; >> end >> >> always @ (posedge RTL_TXCLK) >> begin >> RTL_TXD_I <= data; >> RTL_TXE_I <= en; >> end > >Huh? I havent been reading this thread in details, but how are these
clocks
>syncronized? Maybe they arent, hence your problem. > > > >
i write it in two processes to ensure if the two clk are not syncronized the data won't read and transmited bad. --------------------------------------- Posted through http://www.FPGARelated.com
"nba83" <nba_baheri@n_o_s_p_a_m.n_o_s_p_a_m.yahoo.com> wrote in message 
news:dtKdneQMFslBK9nSnZ2dnUVZ_hudnZ2d@giganews.com...
> >"nba83" <nba_baheri@n_o_s_p_a_m.n_o_s_p_a_m.yahoo.com> wrote in message >>news:H5qdnQ4pDqAm-tnSnZ2dnUVZ_q-dnZ2d@giganews.com... >>> here is my code: >>> >>> always @ (posedge RTL_RXCLK) >>> begin >>> data <= RTL_RXD; >>> en <= RTL_RXDV; >>> end >>> >>> always @ (posedge RTL_TXCLK) >>> begin >>> RTL_TXD_I <= data; >>> RTL_TXE_I <= en; >>> end >> >>Huh? I havent been reading this thread in details, but how are these > clocks >>syncronized? Maybe they arent, hence your problem. >> >> >> >> > i write it in two processes to ensure if the two clk are not syncronized > the data won't read and transmited bad.
So you are trying to send some data grabbed in one clock domain into a different? You know that will fail? If the clocks are almost similar, it will work for periods when the clock phases are close. If txclk is derived from rxclk, you may get it to work, but first make a common domain.