Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Honored Contributor I
1,156 Views

DE2-115 Ethernet throughput

I'm trying to send a video flow from my DE2-115 to a PC. To send 320*240 images with 16bit pixels with 25fps, I need a throughput of 320*240*16*25 = 30,720,000bit/s (below the 100Mbit/s offered by the network). 

But when I do my tests, I have only 9fps (320*240*16*9 = 11,059,200bit/s). 

 

I use the design example called "DE2_115_WEB_SERVER_RGMII_ENET1" from Terasic, and the c example "Simple Socket Server (RGMII)" given in Eclipse. I'm working with quartus II 11.1sp1 Web Edition, without license (so with time-limited IP). 

 

I tried the tips given in an 440 (http://www.altera.com/literature/an/an440.pdf), especially to define "TCP_ZEROCOPY", but it didn't improve the throughput. 

 

It's not due to the network, because when I do a transfer from a PC to another, I get 73.8fps (~90Mbit/s). 

 

Is there a way to improve the throughput, or is the DE2 115 limited (not a true hardware MAC for example) ?
0 Kudos
6 Replies
Highlighted
Honored Contributor I
20 Views

You are using TCP with NIOS CPU, right? 

 

Try to make NIOS CPU faster. Use higher clock, faster memory, larger cache, etc.  

Then you could try to use UDP instead of TCP. 

Lastly, you could use hardware streaming instead of TCP/UDP stack. Search for "UDP offload example"
0 Kudos
Highlighted
Honored Contributor I
20 Views

 

--- Quote Start ---  

You are using TCP with NIOS CPU, right? 

--- Quote End ---  

 

Yes 

 

 

--- Quote Start ---  

Try to make NIOS CPU faster. Use higher clock, faster memory, larger cache, etc.  

--- Quote End ---  

 

I already tried to increase clock (from 100MHz to 150MHz), but I got only aboit 10% more throughput.  

I can't increase the clock anymore, because of the memory. 

I will try to increase cache, but I don't think it will increase my throughput enough. 

 

 

--- Quote Start ---  

Then you could try to use UDP instead of TCP. 

Lastly, you could use hardware streaming instead of TCP/UDP stack. Search for "UDP offload example" 

--- Quote End ---  

 

So you think there is no other possibilites ? Maybe with a DE4 ? 

I'm afraid that there will be to many errors if I use UDP or hardware streaming instead of TCP. 

 

Thank you for your help.
0 Kudos
Highlighted
Honored Contributor I
20 Views

you can code and compress the image

0 Kudos
Highlighted
Honored Contributor I
20 Views

I believe your challenge is that the NIOS is a softcore with the same processing power as a CPU from 1997. http://www.tomshardware.com/reviews/mother-cpu-charts-2005,1175.html (http://www.tomshardware.com/reviews/mother-cpu-charts-2005,1175.html

 

Add the TCP/IP stack, interrupt processing etc - it's just gonna be slow. 

 

 

For more speed you would need to interface with the ethernet chip or maybe the TSE core directly - handling framing and higher level protocols yourself. 

 

 

M.
0 Kudos
Highlighted
Honored Contributor I
20 Views

Thank you for your answers. 

 

I increased the instruction and the data caches to the max and gained some fps. I think the bottleneck is the AVALON bus. 

 

Before writing my own transport protocol, I want to try to separate the data and the instruction busses to reduce this bottleneck.  

 

I didn't find any documentation on google for that, and when I try with a simple example (a NIOS, a jtag_uart, and two on_chip memories, with a hello_world_small template) it doesn't work. 

 

Did I miss some documentation ? Do I have to change something in the configuration of the nios compiler ?
0 Kudos
Highlighted
Honored Contributor I
20 Views

Did you progress with that? Wicht bandwidth did you achieve?

0 Kudos