- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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) ?Link Copied
6 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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"- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- 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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
you can code and compress the image
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 ?- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did you progress with that? Wicht bandwidth did you achieve?
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page