-3
\$\begingroup\$

I want to digitize a 10MhZ signal to 16 or 32 bits, then multiple that number with about 200 different complex numbers then keep a running sum of each of the 200 results. If I don't do this in real time the data will grow by about a terabyte each day. Can I use a micro controller (any suggestions)? Do I hook it up to a server or laptop to control and store the results every second or every hour. I want this to run 24x7.

Thanks everyone so much for your comments. You have really helped me think about the problem.

To give some more details, what I really want to do is measure the phase noise on a 10MHz sine wave.

I found an expensive 200Msps 16 bit ADC that plugs right into a motherboard. Placing the output into a messaging que I can process the output using CPUs. With 16 cores and 2GHZ and 64 bit processing I should be able to get 128Gflops on 16 bits.

What is the best way to measure the phase noise. I can sample many time per cycle, but how to I time the samples, when the 10MHz signal will have a much more stable frequency than the higher sampling frequency. If I want the phase noise, I need another stable reference.

Can I have two stable 10MHz sine waves, one to sample and the other to trigger the sample. However what can I do if one of the sine waves drifts in frequency?

Thanks

\$\endgroup\$

closed as unclear what you're asking by Keelan, Leon Heller, helloworld922, Voltage Spike, uint128_t Mar 14 '17 at 20:23

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    \$\begingroup\$ When you say "10MZ" do you mean "10 MHz"? \$\endgroup\$ – The Photon Mar 14 '17 at 18:06
  • 1
    \$\begingroup\$ Welcome to EE.SE. If you could give an example, that would help a lot (you can still edit your post). As it stands, it is difficult to tell what is being asked here. \$\endgroup\$ – Keelan Mar 14 '17 at 18:10
  • 1
    \$\begingroup\$ Good luck with that. Based on how you wrote this question, this is beyond you. \$\endgroup\$ – pgvoorhees Mar 14 '17 at 18:14
  • 1
    \$\begingroup\$ What is your sample rate. RE: "200 different complex numbers" How complex? Micro controllers are not the best at doing math unless you use a DSP processor. You would probably just use the micro's ADC to read the value then transfer the measurement to another computer to do the calculations. It depends on your sample rate as to how many bits per second must be transferred. My son does IT work at the University of Florida in a research dept with super computers which they rent cheap. I don't know how much, I know you can rent their electron microscope for $50/hr. They cannot profit off you. \$\endgroup\$ – Misunderstood Mar 14 '17 at 18:27
  • 3
    \$\begingroup\$ Without knowing more about your application, I would have to assume you would need to sample your 10 MHz signal at a 30 MHz rate. Then, I believe, you want to multiply each sample by 200 different complex numbers. Thus you need to perform about 6 billion complex multiplies and additions per second. I think you need to more carefully look over your requirements as you are beyond what any microcontroller or laptop can perform. \$\endgroup\$ – Barry Mar 14 '17 at 18:39
5
\$\begingroup\$

I want to digitize a 10MZ signal to 16 or 32 bits,

With all due respect, no you don't. Consider that, for a 50 ohm termination, a 10 MHz bandwidth produces about 2.8 uV of thermal noise. Multiply by 65536 (16 bits), and you get a minimum full-scale signal amplitude of about 0.19 volt in order for your lsb to be equal to the input noise. This is pretty reasonable, and Analog Devices makes quite a few ADCs that will do the job. A 32-bit requirement is simply not doable at 10 MHz. First, there simply aren't any such ADCs available, and if there were noise would kill you. A 1-volt signal digitized at 32 bits has an lsb value of about 250 pV, and is so far below the noise threshold as to be completely unusable.

then multiple that number with about 200 different complex numbers then keep a running sum of each of the 200 results.

Since you are starting with a real number, multiplying by a fixed real or imaginary component will produce a total which never changes sign. As a result, the running total of each component will increase or decrease depending on the sign of the ADC output, and you might just as well keep track of the ADC total and multiply after the fact.

Or are you suggesting that you are going to i/q conversion and then use 2 ADCs to produce real and imaginary components which are then multiplied by 200 fixed complex quantities?

If I don't do this in real time the data will grow by about a terabyte each day. Can I use a micro controller (any suggestions)?

To do this you'll need an array of FPGAs. Probably a simple one to run the ADC and serve as a distribution hub, then several others to act as MACs. As has been mentioned in comment, you'll need an ADC rate in the vicinity of 25 to 30 MHz. Assuming serial transfer between the ADC and MACs implies a bit rate of about 480 Mb/sec, and you're not going to support this in any normal microcontroller.

Do I hook it up to a server or laptop to control and store the results every second or every hour.

You tell us. What do you want to do with the data? What sample rate of the running total do you require?

I want this to run 24x7.

Once you define your requirements this is probably quite doable.

So, why don't you tell us what you want to do, in the larger sense. What is producing your signal, and why do you think you might want 32 bit resolution? Why 16 bits? Why 10 MHz? What do you want to do with the data? What drives your requirements?

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.