05-06-2011 06:53 AM
Hello everybody, I'm looking for an UDP/IP stack written in VHDL language (I have to implement it in Spartan-6 FPGA). I'm looking for a one, as simple as possible, with these features:
-written in VHDL language ONLY, not Verilog
-to be implement in a Spartan-6
-no use of other processors or devices (as Microblaze, PowerPC and others)
-no use of external memory, no DDR or external ports, should be use only distributed memory or block ram, no other possibilities
-obviously a free UDP/IP Stack is the best but also a licensed one could be fine
Is there anywhere an UDP/IP stack with these features?
Thank you very much!
05-06-2011 02:25 PM
I've just done a google and found a lot of links to this, including xilinx Xapps,
05-06-2011 04:06 PM
I needed a custom implementation of UDP a while ago (Verilog, no processor). Researching available cores didn't produce any good results, so I've implemented the stack from scratch. Depending on the features you want it can be relatively simple or complex. Do you want IP fragmentation or not; how do you assign IP: static or DHCP; do you need ARP; do you need an application protocol on top of UDP (like TFTP), and several other considerations.
05-07-2011 03:27 AM
If you just want to periodically generate UDP packets, it's very easy to do this with a fairly simple state machine.
You're welcome to look at the example I've written, at http://tristesse.org/DigilentAtlysResources that does just this. It's running successfully on a Spartan 6. It's written in Verilog, but the UDP/IP/Ethernet part alone would be trivial to rewrite in VHDL if you so desired.
05-11-2011 07:58 AM
I Download your code in spartan 6 Atlys Board I change the physical address and Ip address and than simulate and burn on board it cannot send any data on th UDP
Please guide me how yor code will work on my board
05-11-2011 02:57 PM
05-13-2011 10:32 AM
Same problem i have faced, How can i calculate the checksum? i just change the IP addrs and Mc addrs, do i need to change any other thing?
When i burn the code the LAN leds goes on but i didn't see any thing on wireshark. Can you guide me how i can add the calculation steps into the state machine which you are talking about.
05-14-2011 01:53 AM
I calculated it manually and updated the HDL, but for any "real" application you'll want to implement this calculation in HDL so that you can change the IP header at will. Let me know if you have any trouble figuring it out and I'll dig up my code when I'm back at work next week.
05-14-2011 07:37 AM
i calculated the checksum and i have tried but did get any thing
can you tell me what i m doing wrong
05-14-2011 07:53 AM
Your checksum is wrong. I get:
4500 + 0023 +1234 + 0000 + 4011 + 0000 + c0a8 + 0103 + c0a8 + 0108
2 + 1AC3 = 1AC5
Things to note:
- When doing the calculation, set the IP checksum to zero
- You only checksum the IP header. Skip the MAC addresses and hwtype. Start from 4500. Assuming you used a normal header with no options, you'll stop after the dstip. srcport is the first part of the UDP header.