Hello. Would you please to get me some information about how can i realize UDP transmition with Spartan 3E Starter Kit? Can i use IP supplied with EDK in conjunction with Microblaze. Can I solve the problem without using Microblaze? And last questions: what is difference between AccelDSP and System Generator and can I convert some dsp floating point algorithm available in C in VHDL block?
Spartan 3E Sarter Kit Ethernet
Jan 05, 2008
6 Replies
Look at this site, there are some information:
formatting link
Yes you can, but it would be easier with the Microblaze, or a sufficiently powerful soft processor.
I think AccelDSP works with Simulink (MATLAB), not with C code. System Generator should be a tool for developing DSP apps, probably it's best suited for your needs.
Andrew
You transmitt ethernet packets by waiting for the PHY transmitt clock to go low "always @(negedge E_TX_CLK)". Then set E_TX_EN=1 and E_TXD[3:0]=first nibble. Then for every event set next nibble. Once you have supplied all data. Set E_TX_EN=0 to complete packet. You have to wait 24 cycles at 100M before sending a new one. The nibbles shall be 555555555555555D - packet data - crc32. Crc32 is calculated from packet data only.
If it is acceptable to hardwire the IP and MAC addresses, then a fairly straightforward state machine, in combination with a prepared header can transmit UDP frames. This can be a reasonable solution for a quick hack on a lab.
For local networks it is also reasonably safe to omit the UDP checksum. This can be done by setting it to an all-zeroes value. By doing so, you can avoid making an extra pass over the data.
However, if you need things like ARP, DHCP or IP routing, using a Microblaze (or another core of your choice) would make more sense.
Actually, you can calculate the CRC on the fly because it is transmitted last.
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl
The Ethernet layer CRC-32 is transmitted last, but the UDP checksum is in the header.
Beware that omitting the UDP checksum removes protection against data corruption inside the FPGA, e.g. a bug in the transmit path before the CRC-32 is applied.
You can do this a number of ways, but the easiest would be to use a processor based subsystem. Build a system using BSB with MicroBlaze + ethernet. Add lwIP for a TCP/UDP software stack.
The right solution would depend on your application ofcourse.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required