IF-RIO

cancel
Showing results for 
Search instead for 
Did you mean: 

AM Signal

I am trying to figure out the best way to clean up an AM signal.

I am testing with an antenna, amplifier, and LP filter with a cutoff freq of 3MHz--this gives about 60mV for a specific radio station. Using the Frequency Translation example provided with the NI5640R, I have translated the specific AM signal to baseband. Before being transmitted through the DAC, I have scaled the output as high as possible without exceeding the DAC's full scale output range of 0.8Vpp. After looking at the O-scope, it appears the AM signal is 425mVpp--more than enough to be able to hear through a speaker (screenshot provided). Unfortunately, the AM station can barely be heard with the volume at max.

I am wondering if the ADC on the card decreases the SNR too much to reproduce a good signal before outputing.

Any suggestions? Digital Filter through HOST?

-Troy
Download All
0 Kudos
Message 1 of 21
(9,127 Views)
Hi Troy
 
I think you have a few things working against you here.
 
First is the Analog out coupling.  It is AC coupled, with the -3 dB frequency being 50 KHz.  The output doesn’t reach the range specified for Passband flatness until 250 KHz.  The Analog Out is not for audio (up to 20 KHz), so you are seeing noise or some type of sampling products.
 
Second, I’m not sure you are going about the demodulation correctly.  The ADC outputs return IQ data, not strictly IF.   If you are acquiring AM, double sideband with carrier, mixing IF down to DC and then filtering is a way to get the audio, but for IQ it will not work correctly.  Since we can’t guarantee the phase of the carrier with respect to the phase of the NCO in the ADCs, we don’t know how much of the data is in the I component or the Q component.
 
The simplest way to do this is to bring the data up to the host for final demodulation.  Have the ADC’s down convert the signal to IQ data, with the smallest sample rate required to maintain the analog bandwidth.  Filtering the data would be a good idea at this point if you want to do it on the FPGA. (A faster sample rate may make the filter design easier.)  Bring the data up to the host, and in floating point, square both the I and the Q components, sum them, and then take the square root.  The data should be an audio signal.
 
The reason for bringing the IQ data up to the host for floating point operation is that there is not a native LabVIEW FPGA function for doing square roots.  You would have to come up with your own method of implementing square roots on the FPGA.
 
Jerry
0 Kudos
Message 2 of 21
(9,098 Views)
Jerry--

Are you sure about the demodulation of an AM signal in terms of I and Q? After demodulating it, I built a waveform to see what i could possibly hear. I set Y as the demoulated signal from I and Q, and dt appropriately according to my chosen decimation of 32--the same value of the dt used for the power spectrum. (in this case, 1/3.125M ~ 0.00000032). The signal looks very peculiar. I'm not sure if this is correct. I figured I did not need to build a filter in order to hear the AM station at all.

As you can tell from the attached picture, I tried to output the waveform using the generate sound.vi as a guide. I'm not familiar with doing it, so it could be something from there.

Thanks for your advice, Jerry.

--Troy
0 Kudos
Message 3 of 21
(9,083 Views)
I forgot the picture
0 Kudos
Message 4 of 21
(9,079 Views)
Hi
 
I don't know if that is sound or noise.
 
Here is a quick example modified from the Freq. Translation example.  It generates a very simple AM double sideband signal as well as acquire it.
 
In terms of the signals that you are looking at, I would use the Spectrum Analyzer example to see what good AM signals the module is seeing with your antenna and location.
 
Jerry
0 Kudos
Message 5 of 21
(9,066 Views)
Jerry--
 
Thank you for the example you shared. Unfortunately, I have not been able to make any progress with it.
 
When you say that the example generates an AM modulated signal, are you referring the signal coming out of the DAC, or the signal being seen on the AM Demod waveform?
 
I tried using the GenerateSound.vi as an example to play the demodulated AM signal (the one used for the waveform), which should be sound if my recieve signal is set at a strong radio station nearby. The AM demod example runs very slow, generating no sound except a bunch of different tones with noise. Eventually the program locks up and shuts down automatically.
 
Another thing, I am trying to understand the Frequency Translation example. I thought I did. Correct me if I am wrong, but the recieve frequency is the frequency you wish to 'translate' to the transmit frequency--meaning if I had an incoming radio signal at 1150k and wanted to change it to 455k i would set the recieve frequency to 1150k and the transmit frequency to 455k.
 
I really feel like I am backtracking and not making much progress. Any other suggestions?
 
--Troy
0 Kudos
Message 6 of 21
(9,029 Views)
Hi Troy
 
In my example, I modified the Frequency Translation example.   I took the Generation part and changed it to generate a simple AM double sideband with carrier signal.  I use this signal to feed into the receive side to have a signal to do a simple AM demodulate.  So, when I said the example generates an AM modulated signal, I meant the signal out of DAC0.
 
I have the same problem, at my desk, I can’t receive any good broadcast AM signals so, I wasn’t able to test it on a real signal.
I’m not an expert on Generate Sound.vi.  There may be a sampling rate mismatch between what is provided as an output of the signal and what you feed to the Generate Sound.vi.  I think the VI expects specific sampling rates for the data.
 
Either way, before you get to that point, you should be able to see a pretty good audio signal before you will get anything you can hear.  The images you attached earlier didn’t look like any type of tones in the 10 KHz and below range to be audible.  If you take the output of DAC0 and feed it to ADC0, you should see a simple sine wave of about 1 KHz or 2 KHz.  Then you can go about getting it to the Generate Sound.vi.
 
I’m not up on broadcast AM so I am not sure if most AM signals are simple DBL sideband with carrier AM signal.  Especially if you are getting AM stereo, etc.
 
You should use the example to see if you are getting a good AM signal to the module.  Depending on you set up, an amplifier may be required on the antenna to boost the signal for the ADC to sample the signal with enough dynamic range to be usable.
 
Jerry
0 Kudos
Message 7 of 21
(9,022 Views)
Hello
 
we initially designed Amplitude modulation using only labview for carrier at 21.4 MHz, it worked sucessfully.
But when coming to the PCI 5640R board, we created a project and in that we added our AM to the FPGA target
and it is giving many errors. So we approached using only FPGA vi's and the FPGA sine generator is limiting our 21.4 MHz
carrier frequency, give me a fine solution starting from the project window to the final checking of the board using
spectrum analyzer. We are in very much urgent and our project is on hold due to this problem.
0 Kudos
Message 8 of 21
(8,584 Views)
Hello,
 
Let me first ask, do you need to do the AM modulation in the FPGA? Because a quick alternative is to do the AM modulation in the host, and then use the NI-5640R driver to download the signal and play it back.
 
Also, it would help if if you could post your code so I can take a look at it.
 
- Mauricio

Message Edited by Mauricio Capistran-Garza on 09-26-2007 08:20 AM

0 Kudos
Message 9 of 21
(8,573 Views)
Hello Mauricio

Yes, we need to do the AM modulation in FPGA.Here Our target is to check the generated AM output from the 5640R card to the input out the external Spectrum alanlyzer.  We have attached our am project and it  has many errors, So give me a precise solution for AM modulation and its verifcation at a carreir of 21.4 MHz.
Because a quick alternative is to do the AM modulation in the host, and then use the NI-5640R driver to download the signal and play it back.
Download All
0 Kudos
Message 10 of 21
(8,521 Views)