DSPRelated.com
Forums

AIC23 oversampling on the TMS320C6455DSK

Started by ckle...@tuks.co.za October 8, 2007
Good day, thanks for all the quick replies on my previous questions.

I am using the TMS320C6455DSK to do some signal processing and I use the AIC23 to sample the signal that I generated from the PC in Matlab. I generated a 500 Hz signal in Matlab and use a WAV file to play the audio data to the board to do some testing.

I connect a male-to-male mini-audio jack between the audio line out of the PC and the audio line in of the DSP board (AIC23 inputs). I used the AIC23 configurations that were used in the "tone" example that came with the board - I just ensured it sampled at 48 ksps (as the WAV file was generated using the same audio bit rate).

When I viewed my buffer using the Graph tool from CCSv3.2, I saw that the same sine wave formed - but the wave didn't look smooth, there were almost 100 values that were the same each time (forming a kind of quantized signal). When I only used each 80th value, it produced the smooth output signal (and the number of samples it took for an oscillation reduced to closely represent the file generated using Matlab).

Is there a setting that I can remove this oversampling and that it automatically finds the mean? What values should I look out to see how many times the single sample was oversampled?

Thank you for your time,
Christo Kleu
Sorry if I completely lost the plot, let me explain in better order what I am trying to do:

Purpose:
Development of a hardware platform to decode the information channels of a DRM (Digital Radio Mondiale) signal

Simulating the signal:
To generate the DRM signal, I use Matlab. DRM uses Coded OFDM. I wrote a software transmitter/receiver that contains the information channels that I need to extract (as in the specifications). All the simulations and processing occurs at baseband.

Hardware implementation:
I started to develop the hardware platform (on the TMS320C6455DSK) using CCSv3.2. For easier debugging, I use the data I generated in my software transmitter simulation and injected them directly into the memory using the FileIO functionality.

Some of the specifications:
For this project, a single OFDM symbol is 1280 samples long (sampled at 48000 samples/sec). It consists of a 256 cyclic prefix (5.33ms) and then 1024 data samples (26.66ms). After the symbol timing offset estimation is performed, a 1024-FFT is performed to extract the data needed.

My intentions:
After designing the system in "debugging"-mode (injecting the data directly into memory), I wanted to switch over to a real-time implementation that continuously samples the signal.
To generate a signal for input, I use my Matlab simulations again - but instead of writing it into a DAT-file and use FileIO to transfer it, the data is dumped into a WAV-file (16-bit/48000 sampling rate) and then played out of my PC's Audio Line Out. I connect this line DIRECTLY to the AIC23 Audio Line Input(as it already contains active/passive anti-aliasing filters).

The problem:
The timing offset estimation does NOT work (which causes everything to malfunction). After inspecting the sampling buffer, and compared it to the buffer I had in "debugging"-mode: the buffers varied completely. The sampling_buffer looked like a quantized signal.

If anyone have used the AIC23 and occurred similar problems, any help would be appreciated - I have come to a dead-stop in my development and have very little time to finish the project.

Thank you very much,
Christo Kleu
Christo-

It's unclear to me what is your basic objective -- are you trying to sample data
continuously on the DSK 6455 board (48 kHz, 16-bit samples) and see it in MATLAB, in
real-time?

You mention AIC23 ADC settings (i.e. A/D conversion), but then you mention
"transmitting a signal from the PC", "importing a .dat file generated in MATLAB" and
other operations that either conflict or will tend to obscure your problem with
real-time sampling. If you're really trying to do all this at once, then I suggest
you test basic sampling first, by disconnecting MATLAB / PC data transfer and looking
at results in DSP memory using CCS. Then send the data to the PC, and test only
those two steps together, etc.

To debug, you need to simplify -- not only to solve the problem, but to explain it to
others.

-Jeff

c...@tuks.co.za wrote:
>
> Just to give some more information:
>
> I saw that the dsk6455_aic23.h and the aic23 data sheet didn't correspond at the Sample rate control (clock mode select). The header file used 0 for USB and 1 for normal, but according to the header file, it should be in reverse.
>
> I used the clock mode select at USB(=1) speed. I am transmitting a COFDM signal from the PC at baseband - but the actual sampling does not work. I have always used the FileIO to import a .dat file I generated in Matlab, and everything worked fine (from the symbol timing offset acquisition to the final CRC-comparison stage).
>
> Instead of using the FileIO, I want to do the actual sampling. I have simulated my system (using the FileIO) with various SNR, and it still worked fine. I generated a WAV-file (16-bit PCM, 48ksps), where each sample corresponds to one of the samples I normally injected into the memory. I set the AIC23 settings to sample at 48000 samples/sec (ADC).
>
> Here is some pictures to graphically show the problem I have at the moment:
> Photo Sharing and Video Hosting at Photobucket
> Photo Sharing and Video Hosting at Photobucket The first picture refers to how the data look after I have injected it into the memory using FileIO, the second picture shows how the sampled signal looks (it looks as if the signal is quantized, but each of the "steps" correspond to between 80 and 150 samples).
>
> Thank you,
> Christo Kleu
Just to give some more information:

I saw that the dsk6455_aic23.h and the aic23 data sheet didn't correspond at the Sample rate control (clock mode select). The header file used 0 for USB and 1 for normal, but according to the header file, it should be in reverse.

I used the clock mode select at USB(=1) speed. I am transmitting a COFDM signal from the PC at baseband - but the actual sampling does not work. I have always used the FileIO to import a .dat file I generated in Matlab, and everything worked fine (from the symbol timing offset acquisition to the final CRC-comparison stage).

Instead of using the FileIO, I want to do the actual sampling. I have simulated my system (using the FileIO) with various SNR, and it still worked fine. I generated a WAV-file (16-bit PCM, 48ksps), where each sample corresponds to one of the samples I normally injected into the memory. I set the AIC23 settings to sample at 48000 samples/sec (ADC).

Here is some pictures to graphically show the problem I have at the moment:
Photo Sharing and Video Hosting at Photobucket
Photo Sharing and Video Hosting at Photobucket

The first picture refers to how the data look after I have injected it into the memory using FileIO, the second picture shows how the sampled signal looks (it looks as if the signal is quantized, but each of the "steps" correspond to between 80 and 150 samples).

Thank you,
Christo Kleu