0
votes

I am new one to FPGA and this is my first time I am trying to transfer files between FPGA board and PC. I have Digilent Atlys spartan 6 xc6slx45 board.

I have tried a lot of google but I wasn't able to find any value-able information. All information contained some ambiguous things.

I was only able to find the manual for communication of Vertix 5 board. http://www.fpgadeveloper.com/2008/10/tri-mode-ethernet-mac.html

Can anyone provide me with any link or some information, so that I can do more work on this.

Right now, I am just trying to write any file and read the stored data in FPGA board. I am ok with any device communication like USB or HDMI or USB or serial port.

Thanks!

2
There are lots of ways to do this... The answer depends on how complicated the types of files you're using are and how flexible you want this to be. Are the files just a few bytes? If so it might be easier to send them over a UART and store them in a Dual Port Memory on your FPGA. - Russell
I want to upload both type of files i.e. few bytes and also more than kilo bytes. I want to perform some mathematical operations on these file values. And I'll be uploading only txt files. - Awais Hussain
Sounds to me like you'll have the most luck interfacing to a UART. They are easiest for FPGA newbies. Send the file out your computer serially to the FPGA. If you need to do complicated text parsing or anything with the files, you might consider putting a soft-core down in your FPGA and writing C code to target it. - Russell

2 Answers

1
votes

Your Digilent board comes with a software (Adept) that provides simple (remote) I/O and also a file transfer function => Adept screenshot for ATLYS.

Alternatively you can add a UART to you system. For example the UART6 macros from Xilinx developed by Ken Chapman => PicoBlaze example design incl. UART macros These macros scale up to circa 1,25 MByte/s. Your ATLYS board's USB-UART bridge supports up to 12 MBit/s. But most terminal software is limited to 921 or 115,2 kBit/s.

If you need more bandwidth, you can use Gigabit Ethernet and transfer raw Ethernet frames or you can add a simple IPv4/UDP stack. UDP provides a simple and remote usable software interface, because almost every programming language/library supports socket communication.

1
votes

Paebbels is correct, Adept is the way to go. However, you will need to take a look inside the Adept SDK. The software alone will only work with the default bitstream.

Caution: some sample designs don't contain the necessary interface and drive unused pins... You'll then short your board, which might damage it. The Atlys designs should be fine though!)

You'll find all necessary information in the SDK doc folder. Take note of the synchronous and asynchronous interface descriptions. These two interfaces are included on many Digilent boards. For high bandwidths, you should use the synchronous interface whenever possible.

To get you started immediately, take a look in the samples directory at the DEPP sample design. Once you include the sample design in your HDL, you can use the Adept software to transfer files, i.e. perform byte writes/reads to a fixed address.

Alternatively, you can use the included libraries and headers to write custom software for your needs.