Forums

Few questions on a Modem implementation using qpsk modulation on C6713 DSK

Started by kart...@gmail.com May 18, 2010
Hello

I am trying to implement a modem using 2 separate Spectrum Digital c6713 boards, one setup as a transmitter and the other as receiver. The idea is basically connecting my iPod output to the line in of transmitter, do some modulation and pulseshaping, then send it out the line out, which goes into the linein of the second dsk.

The following are the parameter that I'm (initially) planning on using.

Modulation: QPSK [zeros mapped to -1 and ones mapped to +1]
sampling freq = 8k samples/sec
carrier freq = 2k Hz
samples/symbol = 4

I'm a beginner to real time processing, and have a few questions. Please correct me wherever I am wrong.

1) The ADC produces samples which are 16 bits per sample on L and R channels as 16 bit signed integers. So, per sample, I have 8 QPSK symbols. Can I use bit masks masking off 2 bits at a time to extract the symbols, and store them into an array? something like
int sample;
#define 8 masks for symbols
sym[index] = sample& mask;
?

2) If the sampling rate = 8k s/sec, then the bit rate would be 16 * 8 = 128 kbps, and the consequent symbol rate would be 64 k sym/sec. I would shape these symbols using a sqrt raised cosine pulse shaping filter and output them to the DAC. Is there a way that the input rate and output rate can be different as in this case?

I did think about Lowpass filtering the input samples to lower the rate, then downsampling them and then doing the bit-symbol mapping, modulation and pulse shaping. I don't know how feasible this is.

3) I want to skip the codec altogether, and use HPI for Digital IO for communication between the two DSKs. I have been trying to get information on how to do this on the internet and so far, I'm totally lost. *Any* help with this will be totally appreciated. I don't know how to use HPI or the required code for using it.

Thank you for bearing with me on this long post! Right now I just need to get the transmitter working. I have the receiver functions (demod, cordic, carrier pll, timing pll , etc) all ready and can't wait to test them out!

Thanks again.

_____________________________________
Thank you for your reply and insight Jeff. I appreciate your help.

- You're right. If i want the entire audio content, then I'm going to have to use a higher sampling rate.

- The modem part actually IS the project. Why I was inclined to explore HPI is because I wanted to see if we can achieve a sampling rate greater than 96 Khz, which is the limit of the AIC23. Do you think this can be done? And by communication between the 2 DSKs, I meant actual modulated data. ie the shaping filter output at one DSK and the same received at the other DSK via the alternate interface. can this be done?

- lastly, I'm having trouble (am confused) regarding the rates at input and output. I'm doing the following and i'm sure it's wrong.
I'm using bit masks to extract symbols from the 16 bit input sample on one channel. i'm storing these (8) symbols into an array, and doing the pulse shaping on them after upsampling by 4. trouble is , I'm doing an output 4 times per input. ( I've seen people getting upset for bugging them by posting code so i refrained from it. But I will post the code if the above problem is confusing.)

Thank you!

_____________________________________
karthik,

I cannot see why anyone would get upset over the posting of code.

I have found that well commented code is understood in minutes while hours of words to read often fail to tell me just what the problem is.

Therefore, post the main areas of the code.

BTW:
Rulph Chassaing's book has examples of coding BPSK and of PSK that may be of assistance in coding your project of QPST.

One last thing, please do not clip the thread, It can be very time consuming to search back through the older posts on c6x to find what has already been discussed on the thread (the e2e forum is much nicer for reviewing the older posts on the thread, however; I don't go there often).

R. Williams

---------- Original Message -----------
From: k...@gmail.com
To: c...
Sent: Tue, 18 May 2010 20:15:09 -0400
Subject: [c6x] Re: Few questions on a Modem implementation using qpsk modulation on C6713 DSK

>
>
> Thank you for your reply and insight Jeff. I appreciate your help.
>
> - You're right. If i want the entire audio content, then I'm going to have to use a higher sampling rate.
>
> - The modem part actually IS the project. Why I was inclined to explore HPI is because I wanted to see if we can achieve a sampling rate greater than 96 Khz, which is the limit of the AIC23. Do you think this can be done? And by communication between the 2 DSKs, I meant actual modulated data. ie the shaping filter output at one DSK and the same received at the other DSK via the alternate interface. can this be done?
>
> - lastly, I'm having trouble (am confused) regarding the rates at input and output. I'm doing the following and i'm sure it's wrong.
> I'm using bit masks to extract symbols from the 16 bit input sample on one channel. i'm storing these (8) symbols into an array, and doing the pulse shaping on them after upsampling by 4. trouble is , I'm doing an output 4 times per input. ( I've seen people getting upset for bugging them by posting code so i refrained from it. But I will post the code if the above problem is confusing.)
>
> Thank you!
Karthik-

> Thank you for your reply and insight Jeff. I appreciate your help.
>
> - You're right. If i want the entire audio content, then I'm
> going to have to use a higher sampling rate.
>
> - The modem part actually IS the project. Why I was inclined to
> explore HPI is because I wanted to see if we can
> achieve a sampling rate greater than 96 Khz, which is the limit
> of the AIC23. Do you think this can be done? And by
> communication between the 2 DSKs, I meant actual modulated data.
> ie the shaping filter output at one DSK and the same
> received at the other DSK via the alternate interface. can this
> be done?

Sure you can go way faster than 96 kHz with HPI. But your Prof may say this is not acceptable. Why? Because HPI
will implicitly synchronize the receiver and transmitter to exact sample boundaries, which doesn't happen in the real
world. In reality your receive and transmit clocks run independently and your algorithm must recover timing (you
mentioned a PLL in your previous post I think).

> - lastly, I'm having trouble (am confused) regarding the rates
> at input and output. I'm doing the following and i'm
> sure it's wrong.
> I'm using bit masks to extract symbols from the 16 bit input
>sample on one channel. i'm storing these (8) symbols
> into an array, and doing the pulse shaping on them after
> upsampling by 4.

I thought you said 4 symbols per sample? (You cut your previous text and I'm not going to go back and look for it,
but that's what I recall.) Why are you upsampling on the receiver? I don't get that.

> trouble is , I'm doing an output 4 times
> per input.

Again, not sure what you mean here. Input is the receiver, output is transmit. If somehow you're still referring to
your iPod as "input" you need to forget that. After sampling the iPod you simply have "data" -- data that could come
from anywhere -- irrevelant to keep referring to the data source. Or maybe you mean your output sampling rate is 32
kHz and your input rate is 8 kHz? If so that's another change from your last post. You have to be more clear in
your explanation.

-Jeff

_____________________________________