UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Adventurer
Adventurer
6,534 Views
Registered: ‎05-23-2010

TEMAC 1000 Mbps does not respond

Hello,

I am trying to implement echo server from xapp1206 using LL_TEMAC(1 Gbps) core with Spartan3ADSP FPGA. I am using DP83865DVH as the PHY chip. Following is the partial mhs file:

BEGIN microblaze
 PARAMETER INSTANCE = microblaze_0
 PARAMETER C_INTERCONNECT = 1
 PARAMETER HW_VER = 7.10.d
 PARAMETER C_DEBUG_ENABLED = 1
 PARAMETER C_AREA_OPTIMIZED = 1
 PARAMETER C_USE_ICACHE = 1
 PARAMETER C_USE_DCACHE = 1
 PARAMETER C_DCACHE_BYTE_SIZE = 4096
 PARAMETER C_ICACHE_BASEADDR = 0x82000000
 PARAMETER C_ICACHE_HIGHADDR = 0x82ffffff
 PARAMETER C_DCACHE_BASEADDR = 0x82000000
 PARAMETER C_DCACHE_HIGHADDR = 0x82ffffff
 PARAMETER C_USE_BARREL = 1
 PARAMETER C_FAMILY = spartan3adsp
 PARAMETER C_INSTANCE = microblaze_0
 PARAMETER C_NUMBER_OF_PC_BRK = 1
 PARAMETER C_NUMBER_OF_RD_ADDR_BRK = 0
 PARAMETER C_NUMBER_OF_WR_ADDR_BRK = 0
 BUS_INTERFACE DLMB = dlmb
 BUS_INTERFACE ILMB = ilmb
 BUS_INTERFACE DPLB = mb_plb
 BUS_INTERFACE IPLB = mb_plb
 BUS_INTERFACE ixcl = ixcl
 BUS_INTERFACE dxcl = dxcl
 BUS_INTERFACE DEBUG = microblaze_0_dbg
 PORT MB_RESET = mb_reset
 PORT Interrupt = Interrupt
END

BEGIN xps_ll_temac
 PARAMETER INSTANCE = Hard_Ethernet_MAC
 PARAMETER HW_VER = 1.01.b
 PARAMETER C_SPLB_CLK_PERIOD_PS = 14285
 PARAMETER C_PHY_TYPE = 1
 PARAMETER C_TEMAC1_ENABLED = 0
 PARAMETER C_TEMAC0_PHYADDR = 0b00001
 PARAMETER C_TEMAC_TYPE = 2
 PARAMETER C_TEMAC0_TXFIFO = 2048
 PARAMETER C_TEMAC0_RXFIFO = 2048
 PARAMETER C_BUS2CORE_CLK_RATIO = 1
 PARAMETER C_BASEADDR = 0x81c00000
 PARAMETER C_HIGHADDR = 0x81c0ffff
 BUS_INTERFACE SPLB = mb_plb
 BUS_INTERFACE LLINK0 = Hard_Ethernet_MACllink0
 PORT TemacPhy_RST_n = fpga_0_Hard_Ethernet_MAC_TemacPhy_RST_n
 PORT GMII_TXD_0 = fpga_0_Hard_Ethernet_MAC_GMII_TXD_0
 PORT GMII_TX_EN_0 = fpga_0_Hard_Ethernet_MAC_GMII_TX_EN_0
 PORT GMII_TX_ER_0 = fpga_0_Hard_Ethernet_MAC_GMII_TX_ER_0
 PORT GMII_TX_CLK_0 = fpga_0_Hard_Ethernet_MAC_GMII_TX_CLK_0
 PORT GMII_RXD_0 = fpga_0_Hard_Ethernet_MAC_GMII_RXD_0
 PORT GMII_RX_DV_0 = fpga_0_Hard_Ethernet_MAC_GMII_RX_DV_0
 PORT GMII_RX_ER_0 = fpga_0_Hard_Ethernet_MAC_GMII_RX_ER_0
 PORT GMII_RX_CLK_0 = fpga_0_Hard_Ethernet_MAC_GMII_RX_CLK_0
 PORT MII_TX_CLK_0 = fpga_0_Hard_Ethernet_MAC_MII_TX_CLK_0
 PORT MDC_0 = fpga_0_Hard_Ethernet_MAC_MDC_0
 PORT MDIO_0 = fpga_0_Hard_Ethernet_MAC_MDIO_0
 PORT GTX_CLK_0 = temac_clk_s
 PORT LlinkTemac0_CLK = sys_clk_s
 PORT TemacIntc0_Irpt = Hard_Ethernet_MAC_TemacIntc0_Irpt
END

BEGIN xps_timer
 PARAMETER INSTANCE = xps_timer_1
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_COUNT_WIDTH = 32
 PARAMETER C_ONE_TIMER_ONLY = 0
 PARAMETER C_BASEADDR = 0x83c00000
 PARAMETER C_HIGHADDR = 0x83c0ffff
 BUS_INTERFACE SPLB = mb_plb
 PORT Interrupt = xps_timer_1_Interrupt
END

BEGIN xps_ll_fifo
 PARAMETER INSTANCE = Hard_Ethernet_MAC_fifo
 PARAMETER HW_VER = 1.01.a
 PARAMETER C_BASEADDR = 0x81a00000
 PARAMETER C_HIGHADDR = 0x81a0ffff
 BUS_INTERFACE LLINK = Hard_Ethernet_MACllink0
 BUS_INTERFACE SPLB = mb_plb
 PORT IP2INTC_Irpt = Hard_Ethernet_MAC_fifo_IP2INTC_Irpt
END

BEGIN xps_intc
 PARAMETER INSTANCE = xps_intc_0
 PARAMETER HW_VER = 1.00.a
 PARAMETER C_BASEADDR = 0x81800000
 PARAMETER C_HIGHADDR = 0x8180ffff
 BUS_INTERFACE SPLB = mb_plb
 PORT Irq = Interrupt
 PORT Intr = Hard_Ethernet_MAC_TemacIntc0_Irpt & xps_timer_1_Interrupt & Hard_Ethernet_MAC_fifo_IP2INTC_Irpt
END


The application is autonegotiating a 1000 Mbps connection. It displays a msg 'tcp echo server started at @ port 7'. The PHY is also enabling the on-board leds for 1Gbps and duplex connection. After this, I get the message 'Temac error interrupt: Rx packet rejected' but not for every packet sent from PC. I also get the message 'tcp_slowtmr: no active pcbs' sometimes.

Using WireShark, I can see no response from the board for ping or iperf. I can see that the PHY is receiving packets as the Rx led blinks. However, when I set a breakpoint in xllfifo_recv_handler as recommended in xapp1206, the breakpoint is not hit. So the TEMAC is not receiving the packets. Probably the PHY is dropping the packets for some reason.

However, if I connect at 100 Mbps, the application works fine.

I also have a doubt about the functionality of PHY_MII_INT port of the TEMAC core. Presently I have connected it to INTERRUPT/ i.e pin 3 of the PHY chip.

In the mhs file, it is declared as

PORT fpga_0_Hard_Ethernet_MAC_PHY_MII_INT_pin = net_vcc, DIR = I (It was declared as DIR = O by EDK)

In the ucf file, it is declared as

Net fpga_0_Hard_Ethernet_MAC_PHY_MII_INT_pin IOSTANDARD = "LVTTL"    |LOC=W18 | PULLUP;
 

I am not sure if the PHY_MII_INT pin is the cause of the problem, but I am mentioning it as I am not sure about it. Can somebody give me pointers as to what could be going wrong.



Regards,

wg

Tags (5)
0 Kudos
5 Replies
Explorer
Explorer
6,486 Views
Registered: ‎10-01-2008

Re: TEMAC 1000 Mbps does not respond

Hi,

 

Can you try increasing your stack size to a much larger value and see if it helps? If not, I will try to have a more throughout analysis of your problem and think about what else could cause this.

 

Thanks,

Yan Shun Li

0 Kudos
Adventurer
Adventurer
6,454 Views
Registered: ‎05-23-2010

Re: TEMAC 1000 Mbps does not respond

Hello shuns,

I have got the TEMAC working now. I opened a webcase and found out that the Spartan 3ADSP requires a phase shift for TEMAC. When I added the phase shift, it started working. However, now I am facing a different issue. The data transfer speed in 1000 Mbps is the same as that in 100 Mbps. I doubled the TX and RX FIFO size but it didn't make any difference. Do you have any other suggestions to increase the data transfer rate?


Regards,

wg

0 Kudos
Explorer
Explorer
6,445 Views
Registered: ‎10-01-2008

Re: TEMAC 1000 Mbps does not respond

Hi wg,

 

Nice to hear you have it working now.

 

I noticed your system was using ll_fifo. Is it still so? Using DMA should give you better performance.

 

And what kind of performance number are you getting? I looked at the old xapp1026 where there are performance numbers availablefor S3 with xps_ll_temac. Using xps_ll_temac (1G) in Raw mode could achieve a max TCP throughput of about 40Mbps, while xps_emaclite (100M) could only 20Mbps.

 

So another thing is, if you are running in socket mode, changing it to raw mode should also help achieve better performance.

 

Hope it will help. And other people can input into this as well.

 

Thanks,

Yan Shun Li

0 Kudos
Adventurer
Adventurer
6,422 Views
Registered: ‎05-23-2010

Re: TEMAC 1000 Mbps does not respond

Hello shuns,

 

With TEMAC in 1000 Mbps mode, I am getting a transfer rate of around 17Mbps which is the same as I am getting with TEMAC in 100 Mbps mode. I even tried increasing the RX FIFO size to 16384 and TXFIFO size to 8192. But there was no improvement in the transfer rate. I was expecting at least some small improvement. So on the outside, the TEMAC autonegotiates at 1000 Mbps and I can see 1Gbps connection in the LAN icon on PC. Yet it is as if on the inside the TEMAC is functioning in 100 Mbps mode.

 

I am already using RAW mode. I will use SDMA and see if it improves the performance.

 

 

Thanks,

wg

0 Kudos
Adventurer
Adventurer
6,372 Views
Registered: ‎05-23-2010

Re: TEMAC 1000 Mbps does not respond

Hello shuns,

Here's an update on the issue. I tried to use SDMA but I got the following timing closure errors:

WARNING:Par:62 - Your design did not meet timing.  The following are some suggestions to assist you to meet timing in
   your design.

      Review the timing report using Timing Analyzer (In ISE select "Post-Place &
      Route Static Timing Report").  Go to the failing constraint(s) and select
      the "Timing Improvement Wizard" link for suggestions to correct each problem.

   Try the Design Goal and Strategies for Timing Performance (In ISE select Project -> Design Goals & Strategies) to
   ensure the best options are set in the tools for timing closure.

   Use the Xilinx "SmartXplorer" script to try special combinations of
   options known to produce very good results.


2 constraints not met.


Placer: Placement generated during map.
Routing: Completed - No errors found.
Timing: Completed - 233 errors found.


********************************************************************************
ERROR: 2 constraints not met.

PAR could not meet all timing constraints. A bitstream will not be generated.

To disable the PAR timing check:

1> Disable the "Treat timing closure failure as error" option from the Project Options dialog in XPS.

OR

2> Type following at the XPS prompt:
XPS% xset enable_par_timing_error 0
********************************************************************************
make: *** [implementation/TEMAC.bit] Error 1
Done!


Even with FIFO, I was getting timing closure failure erros. But I had disabled the "Treat timing closure failure as error" option and continued with compilation. It had worked properly although with less transfer rate than expected (around 17 Mbps with RxThroughput and 5.76 Mbps with echo server). However, when I disable the same option in the case of SDMA, the compiled application does not respond to ping. I will try to implement the suggestions given by EDK so that the timing closure does not fail and see if SDMA works.


Regards,

wg

0 Kudos