High bit-rate data acquisition via FPGA  - Page 1
Forum section: electronics / projects

author: bobwidlar
author_rank: Contributor
timestamp: May 09, 2014, 06:48:16 pm
content: Hi all,I'm working on a test board to measure my custom designed ADC, which has a output rate of 75 Mbit/sec. So, I'm looking of ways to acquire that data to Matlab or python to process. I was using NI DAQ boards so far for that, but I just don't like to work with labview. Besides, I'm working at a university so I can ask for any FPGA board from Xilinx for free.So, I searched on ways to acquire data to PC via FPGA. Some FPGA demo boards have usb-to-UART devices like CP21xx of Silicon Labs on Xilinx boards. You can use Virtual Com Port driver of that chip for easy communication. So far, this is the easiest one I found. Another way is to use USB 2.0 directly which I have no idea how it works and it seems it requires quite some understanding and effort on both host and client to make it work. Third option is to use ethernet of course, but I have no idea how easy that is.So, I would like to hear your ideas on the problem. I give the links of the possible boards I can get for free down here:Xilinx Artix-7 FPGA AC701 Evaluation Kit:http://www.xilinx.com/products/boards-and-kits/EK-A7-AC701-G.htmXilinx Kintex UltraScale FPGA KCU105 Evaluation Kit:http://www.xilinx.com/products/boards-and-kits/KCU105.htmXilinx Zynq-7000 All Programmable SoC ZC702 Evaluation Kit (this has a ULPI transceiver):http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC702-G.htm

author: Marco
author_rank: Super Contributor
timestamp: May 09, 2014, 07:38:04 pm
content: The Zynq, you can just run Linux on it.

author: Dongulus
author_rank: Regular Contributor
timestamp: May 09, 2014, 09:08:57 pm
content: I don't know much about using LabView, but it's probably less work the get the NI DAQ working than it is to put something together in a FPGA.I think any of those board are totally overkill for this purpose. It sounds like all you need is a FIFO to hold data samples and a state machine to either offload the data into RAM or, even easier, send it directly out through some PC interface. The CP21xx is easy to use and a UART transmitter is probably readily availible on OpenCores. However, the CP21xx has a maximum baud rate of 2 Mbaud, so you wouldn't be able to send your samples to a PC in real-time, if that is what you would want. I think your choice would depend on how many samples you want to take in one shot and the number of bits per sample. Check the total available RAM in the FPGA and to see how many samples of data you could potentially fit within the FPGA.I'm not sure what program you would need run to recover the samples on the PC, though it wouldn't need to do much. This is just a guess, but I would check a client terminal program like Putty or TeraTerm to see if it could write data to a Hex file. I'm pretty sure Matlab can import data from a Hex file if possible. Otherwise you can encode your data values in ASCII and print that data into a text file. It's pretty easy to read from a Text file in Matlab then extract the information you want using C language string operators.

author: jeremy
author_rank: Super Contributor
timestamp: May 09, 2014, 11:54:05 pm
content: Using a FT2232 board, you can put it in 8bit synchronous FIFO mode and get 40MB (yes, megaBYTES) per second of transfer over USB. These chips were designed to take a whole lot of data from an FPGA and send it over USB.http://www.ftdichip.com/Products/ICs/FT2232H.htmI'm with you on the labview

author: nctnico
author_rank: Super Contributor
timestamp: May 10, 2014, 12:12:36 am
content: I use a logic analyser for testing data acquisition. My TLA700 series has an API to retrieve the data from it into several languages.

author: bobwidlar
author_rank: Contributor
timestamp: May 10, 2014, 04:11:28 pm
content: Yeah, logic analyzer is also an option. Actually I don't have a logic analyzer on the lab (well, it's an analog precision lab) but I think I can use agilent's high-end scopes' logic analyzer interface to acquire data. Never tried that though.Regarding FTDI chips, I know that it is very handy. Still I need to use it's API to get that high data rates right? Is it possible to get 40 MB/s in virtual com port mode?I'm quite suprised that with all that fancy FPGA boards, it's still rather complicated to transfer data to PC at a reasonable data rate.

author: FrankBuss
author_rank: Unknown
timestamp: May 10, 2014, 04:38:49 pm
content: Seehttp://www.makestuff.eu/wordpress/software/fpgalink/for a high speed USB native connection from FPGAs to your own programs on a PC.

author: jeremy
author_rank: Super Contributor
timestamp: May 10, 2014, 11:02:52 pm
content: Quote from: bobwidlar on May 10, 2014, 04:11:28 pmYes you will need to use the API, but libftdi does most of the heavy lifting. I think there is too much overhead in the standard VCP protocol to get really fast transfers.

author: TerraHertz
author_rank: Super Contributor
timestamp: May 11, 2014, 02:39:03 am
content: There's a good description in Bunnie's 'Hacking the X-Box', of using an FPGA plus a custom buffered probe and logic analyzer to de-serialize and analyze the CPU to Northbridge low pin count bus in the X-Box. Which (from memory) runs around 900MHz.The book is online free now, as well as cheap to buy paper copies.http://bunniefoo.com/nostarch/HackingTheXbox_Free.pdfThe book, released by bunnie for free distribution. 18 MBhttps://archive.org/details/HackingTheXboxAnIntroductionToReverseEngineeringHacking the Xbox, An introduction to Reverse Engineeringhttp://www.abebooks.com/servlet/SearchResults?sts=t&tn=Hacking+the+Xbox%2C+An+introduction+to+Reverse+Engineeringhttp://www.bunniestudios.com/bunnie's blog