Help in trying to send parallel 8 bit output from an ADC to a computer

Thread Starter

c1rcu1ts

Joined Oct 19, 2013
62
Hello all,

I need a bit of help sending data to a computer. Please note that i am open to other methods of doing so. My situation is as follows,

My circuit sweeps frequency between 1-25MHz. I have an ADC ( 8bit parallel output) which samples at a fixed 50MHz. I am thinking of a method involving the use of a bluetooth module to send the samples to the computer (hopefully i could retrieve it in the form of a text file or csv or any form that i can easily manipulate). I know i need to use a parallel to serial shift register between the ADC and the bluetooth module. Is this a viable option?

I am honestly not sure how to conduct calculations to determine if the bluetooth module can really do this. Can someone help?

My other questions are as follows,
Do you know of any other method of sending data to the computer from a parallel 8bit output ADC which samples at a rate of 50MHz that you think would work easier?
How do i compensate for the propagation delay from the shift register if i was using the method above?
 

DickCappels

Joined Aug 21, 2008
10,171
I suspect that you are planning to write your own software to deal with the incoming stream. If that is the case then you might want to consider using a serial disk drive protocol such as SATA (serial ATA).

If you do not plan to write your own software, start with the package you plant to use and work you way toward the I/O avalilabe on your computer.
 

Thread Starter

c1rcu1ts

Joined Oct 19, 2013
62
I have attached a pdf showing the entire schematic of my system. The question that i am asking revolves around the sampling circuitry. I am not sure how to work past the ADC and get data back to the computer.

Additional information: The computer initial purpose is to configure the AD5930 via the microcontroller to tell it what waveform to sweep and what frequencies.The impedance meter system is basically an auto-balancing bridge (detailed info could be found: http://cp.literature.agilent.com/litweb/pdf/5950-3000.pdf). I am taking two important parameters (Vin and Vout) and sending it to the computer to determine the impedance (while knowing the feedback resistance of course). The Devices Under Test are different concentrations of a solution. The amplifier i would more than be likely using is the THS4505.

Shteii01,

The data sheet for the ADC: http://www.ti.com/lit/ds/symlink/adc1175-50.pdf
The data sheet for the waveform generator:http: //www.analog.com/media/en/technical-documentation/data-sheets/AD5930.pdf
I am not too sure how to choose the shift register. I honestly think the most important spec is that it shifts the 8 parallel bits into the serial data at 50 MHz. Therefore 50 MHz is the important spec. The shift register i am looking at is: http://www.nxp.com/documents/data_sheet/74HC_HCT597.pdf
The bluetooth module i am looking at using would be: http://www.amazon.com/Pass-Through-...&sr=1-2&keywords=bluetooth+module+for+arduino

Tell me if you need any more

DickCappels,

I do not plan on writing my software. The previous plan i had in mind was to send the data from the ADC to the micro controller and then send that to the computer. However, the micro controller that i am using is the Arduino MEGA 2560. How can i send data in at 50MHz when the clock is about 16MHz on the microcontroller. I did not know how to get around this so i started to dig into areas i am not familiar with.

~Thanks both of you very much
 

Attachments

dannyf

Joined Sep 13, 2015
2,197
have an ADC ( 8bit parallel output) which samples at a fixed 50MHz.
There isn't a good chance you can process that kind of a bit rate with most mcus. You are likely talking about fpga or a mcu with dma and lots of processing power

Or you set more realistic goals.
 

Thread Starter

c1rcu1ts

Joined Oct 19, 2013
62
Hey dannyf,

Thanks for the response. I did not think the MCU approach would have worked either way. Although i was thinking of using a buffer as a temporary storage for the incoming bits. From there the i would have send the data back to the computer.
 

djsfantasi

Joined Apr 11, 2010
9,163
Buffers don't work when the processing rate is less than the data rate. Imagine a barrel, which is being filled with a five gallon bucket by a friend (the data rate). You have a five gallon bucket as a buffer, and you're filling it from the barrel with a coffee cup. Five gallons in; one coffee cup out. Somethings gotta give, and it will be the barrel which overflows and causes data, errr, water loss.

A buffer is useful when performing an operation such as serial to parallel conversion.
 

dannyf

Joined Sep 13, 2015
2,197
Your setup is quite similar to the front end of a digital scope - mostly done via adc + fpga.

There are mcus that run in the 100Mhz+ range with DMA, both in and out. Those can be quite helpful to serve as a buffer, or as a controller during data collection, and then processor afterwards.
 

AnalogKid

Joined Aug 1, 2013
11,043
50 MHz x 8 bits = 0.4 Gb/s, x 2 = 0.8 Gb/s, not counting coding, framing and error correction overhead. Moving gigahertz data over copper is hard enough; wirelessly is very difficult. Does the data path have to be wireless?

ak
 

ifixit

Joined Nov 20, 2008
652
How much data do you need to collect at a time?

Perhaps if you buffer it you can send wirelessly at a much lower rate.
E.g. collect 50 megabyte in 1 second, then stop collecting and take a minute to send on wifi at 1 megabyte per second which is easy to do.
 

ifixit

Joined Nov 20, 2008
652
You would feed the high speed 8 bit data stream from the ADC directly into a buffer memory. A local Micro controller (Ardino?) Would trigger the start / stop and then after, read through the data collected, send via wifi or blue tooth to where ever you want using standard, inexpensive protocols and data rates. There are high speed ADC cards with memory included available. A digital storage scope is a good example of this process.

Buy an off the shelf card that can capture at 1Gbs with as deep a capture memory as you need. 1 second at 50 megabyte/s is a lot. Can you get away with less collection time?

Ifixit
 

Thread Starter

c1rcu1ts

Joined Oct 19, 2013
62
The only way i can get away with the collection time in this case would depend on the frequency right? That should mean that i would have to decrease the bandwidth. I do not mind dropping the bandwidth to like 10MHz.

My post #4 has The parts i was looking at. Could the ADC i chose work for the application? Could you suggest me a buffer? Do you know parts that you think would work better than this theoretically?

Thanks alot, i am beginning to feel a glimmer of hope in this method again.
 
Last edited:

ifixit

Joined Nov 20, 2008
652
Your sample rate must stay at 50ms/s to sample signals at up to 25mhz. If you collect data 50ms/s then you will have 50 megabytes of data to store in high memory. The more memory you can afford then the more you can store. If you had only 10Mbyte of memory than your max sample time will be 200ms.

Once a sample is collected then you have to read it out, usually at a much slower rate, process it and get ready for the next sample. So, how frequently you can do sample will depend on how long it takes to process the data.

This not a quick simple design. A lot of planning needs to go into it.

Here is an example of a hi speed FIFO buffer that may work with the ADC you... http://www.cypress.com/documentatio...2v-183672-mbit-programmable-multi-queue-fifos

Can you use a pocket DSO scope module? The high speed design work is already done.

Ifixit
 

Thread Starter

c1rcu1ts

Joined Oct 19, 2013
62
Thanks Bob but i am developing circuitry to do this, not buy and oscilloscope. "You could not build it for 10 times that.". I still have to try even if it means reducing the bandwidth. I will do my best to get it to work! :)

ifixit, this may work but seems to be very complex. I do not think that this is practical given that the deadline is 5 weeks from now (alot of other stuff to be done in parallel). I would have to lower the bandwidth (i understand that it may be significantly lower but hopefully still greater than 2MHz).

I have an arduino Due (clock = 84MHz, https://www.arduino.cc/en/Main/ArduinoBoardDue) and an arduino MEGA 2560(clock=16MHz, https://www.arduino.cc/en/Main/ArduinoBoardMega2560). Maybe i could get one of this to work and it would not have to be wireless. This would mean that i would have to:
  • Use the Shift register to convert the Parallel into Serial Data (from the ADC, which in this case would be chosen based on the new bandwidth i am working with).
  • Send the Data into the Arduino.
  • Send the Data into the computer.
I am not too sure how to calculate the new bandwidth based on the specifications and limitations of the arduino. Can you assist me?
 
Top