DSPRelated.com
Forums

Upsampling / Downsampling doubt

Started by maha devi November 20, 2009
Hi ,

I am working with 16-QAM transmitter/receiver . The problem is I encounter
some extra symbols after downsampling ( INPUT - 1000 SYMBOLS , OUTPUT-1012
SYMBOLS). Let me say in detail.

I send 4000 bits/s -> *QAM Coder* -> 1000symbols/s -> *upsampling* (factor=8
, length becomes 8000 samples) ->*Transmit SRRC* ( delay 6, filter length 97 samples) -> *pulse shaped output* (length = 8096 samples) -> *Channel*(just
added noise) -> *Receiver SRRC* (delay 6, filter length = 97 samples)
-> *output
-RxFiltOut*(length = 8192 samples) -> *system delay samples* ->
*Downsampling
( RxFiltOut(97:8:end)).* Now I end up with 1012 symbols (( 8192- 97 ) / 8).
How should I intepret this. What should I do the extra symbols. Which 12
symbols should I reject from downsampled output?. I have to finish my
project in a week.Your reply would be of very great help at this point of
time..Thank you so much.

Regards,
Mahadevi.
Hi,

I know your problem... been there, done that... Hope I can be of any help.

First, let me see if I understood well: on transmission, that is delay 6 and filtering, first you have 0 in the delay element, and at the end, you keep adding 0 to fill up the register. Is this the case?

Well, you have the extra 12 samples which actually result from the delay element(shift register) in the filter: 6 on the transmit end and 6 on the receive end. This is natural at this point. The problem is that you cannot just reject those 12 samples because they contain filtered information.

My solution was as follows: Filtering on teh receive end started only when the shift register was full. In your case that means that 6 samples should have arrived the moment you start filtering, so this reduces the first 6 samples without loss of information at the receptor.

With the other 6 samples: you either stop filtering the moment the last sample arrived - on the receive end, or, you stop filtering the moment teh last sample entered teh shift register - on teh transmit end.

Those extra 12 samples actually contain redundant information.

Regards,
Paul

Hi ,
>
>I am working with 16-QAM transmitter/receiver . The problem is I encounter
>some extra symbols after downsampling ( INPUT - 1000 SYMBOLS , OUTPUT-1012
>SYMBOLS). Let me say in detail.
>
>I send 4000 bits/s -> *QAM Coder* -> 1000symbols/s -> *upsampling* (factor=8
>, length becomes 8000 samples) -> *Transmit SRRC* ( delay 6, filter length >97 samples) -> *pulse shaped output* (length = 8096 samples) -> *Channel*(just
>added noise) -> *Receiver SRRC* (delay 6, filter length = 97 samples)
>-> *output
>-RxFiltOut*(length = 8192 samples) -> *system delay samples* ->
>*Downsampling
>( RxFiltOut(97:8:end)).* Now I end up with 1012 symbols (( 8192- 97 ) / 8).
>How should I intepret this. What should I do the extra symbols. Which 12
>symbols should I reject from downsampled output?. I have to finish my
>project in a week.Your reply would be of very great help at this point of
>time..Thank you so much.
>
>Regards,
>Mahadevi.
I'm not sure, but don't you only have to downsample the first 8000 samples
from RxFiltOut and discard the rest, i.e., use RxFiltOut(1:8000) only, since
your block of desired data (as sent from the Tx) is only 8000 samples? The
remaining samples are the result of convolution with filters and perhaps do
not need to be considered in this case.

I think that you need to be concerned with the samples RxFiltOut(8001:end)
only if you have additional blocks of data being sent after the first block
and hence the additional 192 samples after the initial 8000 will act as
interference to the following block of Tx-ed data samples (i.e., they will
cause "inter-symbol interference" to the following block of 8000 samples)

Sameer
On Wed, Nov 18, 2009 at 7:58 PM, maha devi wrote:

> Hi ,
>
> I am working with 16-QAM transmitter/receiver . The problem is I encounter
> some extra symbols after downsampling ( INPUT - 1000 SYMBOLS , OUTPUT-1012
> SYMBOLS). Let me say in detail.
>
> I send 4000 bits/s -> *QAM Coder* -> 1000symbols/s -> *upsampling*(factor=8 , length becomes 8000 samples) ->
> *Transmit SRRC* ( delay 6, filter length = 97 samples) -> *pulse shaped
> output* (length = 8096 samples) -> *Channel*(just added noise) -> *Receiver
> SRRC* (delay 6, filter length = 97 samples) -> *output -RxFiltOut*(length
> = 8192 samples) -> *system delay samples* -> *Downsampling (
> RxFiltOut(97:8:end)).* Now I end up with 1012 symbols (( 8192- 97 ) / 8).
> How should I intepret this. What should I do the extra symbols. Which 12
> symbols should I reject from downsampled output?. I have to finish my
> project in a week.Your reply would be of very great help at this point of
> time..Thank you so much.
>
> Regards,
> Mahadevi.
>
>
>

--
----
Our greatest glory consists not in never falling, but in rising every time
we fall.
-Oliver Goldsmith
Hey Sameer,

Thanks for the reply. Actually the system delay I mentioned is due to BOTH
Transmit SRRC and Receiver SRRC filters as you said. My filter length is 97.
So,group delay is (N-1)/2H samples. so total delay is 48+48 samples. So
I decided to sample from 97th sample which is where the first sample is
actually delayed to because of filtering. This is how I understood. Lets see
if we are getting any other answers. If I get to know the answer from some
other source, i will pass on the answer to you. if you get to know , please
do pass it on to me..It would be of great help...Thanks again!!

Thanks,
Mahadevi.

On Fri, Nov 20, 2009 at 9:44 PM, Sameer Herlekar wrote:

> Mahadevi,
>
> I could be wrong in this and I'm not sure. I'm copying this reply to the
> group in case someone has a better answer..
>
> I feel that your total system delay is due to BOTH Transmit SRRC and
> Receiver SRRC filters, and not just 97 samples. Hence the last 96+96 = 192
> samples need to be discarded since the desired (upsampled) data begins from
> sample1 and continues until sample8000 and all samples from sample8001
> inclusive till the end are only a result of the data being sent through (Tx
> and Rx) filters. Unless you have additional blocks of upsampled data (each
> of which are also filtered by the Transmit SRRC) following the first block,
> I don't think that you need to worry about the last 192 samples. If you DO
> have additional blocks, and you are transmitting as (filtered
> block)-by-(filtered block) then the first 96 samples of the second received
> block will be corrupted by the first block's trailing 96 samples, where
> these trailing 96 samples have been caused by the Receiver SRRC.
>
> My contention is that you need to downsample the first 8000 samples which
> you receive, i.e., downsample(RxFiltOut(1:8000)), which will give you 1000
> samples. If you find the correct answer, do let me know!
>
> Sameer
>
> On Fri, Nov 20, 2009 at 3:12 PM, maha devi wrote:
>
>> Hi Sameer,
>>
>> Thank you for the reply. How can I take RxFiltOut(1:8000) and sample it. I
>> should consider the total delay of my system and start sampling it from the
>> point of delay. ..isn't it?..total delay of my system was 97. that's why i
>> performed downsampling as *( RxFiltOut(97:8:end)) where 97 is system
>> delay.* so basically i have 8096 samples and when i sample i end up
>> getting 1012 symbols. so do you mean i should just neglect the last 12
>> symbols?
>>
>> Thanks a lot for your time,
>>
>> Mahadevi.
>> On Fri, Nov 20, 2009 at 2:59 PM, Sameer Herlekar wrote:
>>
>>> I'm not sure, but don't you only have to downsample the first 8000
>>> samples from RxFiltOut and discard the rest, i.e., use RxFiltOut(1:8000)
>>> only, since your block of desired data (as sent from the Tx) is only 8000
>>> samples? The remaining samples are the result of convolution with filters
>>> and perhaps do not need to be considered in this case.
>>>
>>> I think that you need to be concerned with the samples
>>> RxFiltOut(8001:end) only if you have additional blocks of data being sent
>>> after the first block and hence the additional 192 samples after the initial
>>> 8000 will act as interference to the following block of Tx-ed data samples
>>> (i.e., they will cause "inter-symbol interference" to the following block of
>>> 8000 samples)
>>>
>>> Sameer
>>>
>>>
>>> On Wed, Nov 18, 2009 at 7:58 PM, maha devi >>> > wrote:
>>>
>>>>
>>>>
>>>>
>>>>
>>>> Hi ,
>>>>
>>>> I am working with 16-QAM transmitter/receiver . The problem is I
>>>> encounter some extra symbols after downsampling ( INPUT - 1000 SYMBOLS ,
>>>> OUTPUT-1012 SYMBOLS). Let me say in detail.
>>>>
>>>> I send 4000 bits/s -> *QAM Coder* -> 1000symbols/s -> *upsampling*(factor=8 , length becomes 8000 samples) ->
>>>> *Transmit SRRC* ( delay 6, filter length = 97 samples) -> *pulse shaped
>>>> output* (length = 8096 samples) -> *Channel*(just added noise) -> *Receiver
>>>> SRRC* (delay 6, filter length = 97 samples) -> *output -RxFiltOut*(length
>>>> = 8192 samples) -> *system delay samples* -> *Downsampling (
>>>> RxFiltOut(97:8:end)).* Now I end up with 1012 symbols (( 8192- 97 ) /
>>>> 8). How should I intepret this. What should I do the extra symbols. Which 12
>>>> symbols should I reject from downsampled output?. I have to finish my
>>>> project in a week.Your reply would be of very great help at this point of
>>>> time..Thank you so much.
>>>>
>>>> Regards,
>>>> Mahadevi.
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> ----
>>> Our greatest glory consists not in never falling, but in rising every
>>> time we fall.
>>> -Oliver Goldsmith
>>>
> --
>
> ----
> Our greatest glory consists not in never falling, but in rising every time
> we fall.
> -Oliver Goldsmith
>
Mahadevi,

I could be wrong in this and I'm not sure. I'm copying this reply to the
group in case someone has a better answer..

I feel that your total system delay is due to BOTH Transmit SRRC and
Receiver SRRC filters, and not just 97 samples. Hence the last 96+96 = 192
samples need to be discarded since the desired (upsampled) data begins from
sample1 and continues until sample8000 and all samples from sample8001
inclusive till the end are only a result of the data being sent through (Tx
and Rx) filters. Unless you have additional blocks of upsampled data (each
of which are also filtered by the Transmit SRRC) following the first block,
I don't think that you need to worry about the last 192 samples. If you DO
have additional blocks, and you are transmitting as (filtered
block)-by-(filtered block) then the first 96 samples of the second received
block will be corrupted by the first block's trailing 96 samples, where
these trailing 96 samples have been caused by the Receiver SRRC.

My contention is that you need to downsample the first 8000 samples which
you receive, i.e., downsample(RxFiltOut(1:8000)), which will give you 1000
samples. If you find the correct answer, do let me know!

Sameer
On Fri, Nov 20, 2009 at 3:12 PM, maha devi wrote:

> Hi Sameer,
>
> Thank you for the reply. How can I take RxFiltOut(1:8000) and sample it. I
> should consider the total delay of my system and start sampling it from the
> point of delay. ..isn't it?..total delay of my system was 97. that's why i
> performed downsampling as *( RxFiltOut(97:8:end)) where 97 is system
> delay.* so basically i have 8096 samples and when i sample i end up
> getting 1012 symbols. so do you mean i should just neglect the last 12
> symbols?
>
> Thanks a lot for your time,
>
> Mahadevi.
> On Fri, Nov 20, 2009 at 2:59 PM, Sameer Herlekar wrote:
>
>> I'm not sure, but don't you only have to downsample the first 8000 samples
>> from RxFiltOut and discard the rest, i.e., use RxFiltOut(1:8000) only, since
>> your block of desired data (as sent from the Tx) is only 8000 samples? The
>> remaining samples are the result of convolution with filters and perhaps do
>> not need to be considered in this case.
>>
>> I think that you need to be concerned with the samples RxFiltOut(8001:end)
>> only if you have additional blocks of data being sent after the first block
>> and hence the additional 192 samples after the initial 8000 will act as
>> interference to the following block of Tx-ed data samples (i.e., they will
>> cause "inter-symbol interference" to the following block of 8000 samples)
>>
>> Sameer
>> On Wed, Nov 18, 2009 at 7:58 PM, maha devi wrote:
>>
>>>
>>>
>>>
>>>
>>> Hi ,
>>>
>>> I am working with 16-QAM transmitter/receiver . The problem is I
>>> encounter some extra symbols after downsampling ( INPUT - 1000 SYMBOLS ,
>>> OUTPUT-1012 SYMBOLS). Let me say in detail.
>>>
>>> I send 4000 bits/s -> *QAM Coder* -> 1000symbols/s -> *upsampling*(factor=8 , length becomes 8000 samples) ->
>>> *Transmit SRRC* ( delay 6, filter length = 97 samples) -> *pulse shaped
>>> output* (length = 8096 samples) -> *Channel*(just added noise) -> *Receiver
>>> SRRC* (delay 6, filter length = 97 samples) -> *output -RxFiltOut*(length
>>> = 8192 samples) -> *system delay samples* -> *Downsampling (
>>> RxFiltOut(97:8:end)).* Now I end up with 1012 symbols (( 8192- 97 ) /
>>> 8). How should I intepret this. What should I do the extra symbols. Which 12
>>> symbols should I reject from downsampled output?. I have to finish my
>>> project in a week.Your reply would be of very great help at this point of
>>> time..Thank you so much.
>>>
>>> Regards,
>>> Mahadevi.
>>>
>>>
>>> --
>>
>> ----
>> Our greatest glory consists not in never falling, but in rising every time
>> we fall.
>> -Oliver Goldsmith
>>
--
----
Our greatest glory consists not in never falling, but in rising every time
we fall.
-Oliver Goldsmith
Hi all,

Thank you so much for the reply. I understood it now from where the extra
symbols are coming. I fixed it in my program and its working fine now..Thank
you all

Regards,
Mahadevi.

On Sun, Nov 29, 2009 at 11:26 PM, Amit Shaw wrote:

> Hi Mahadevi,
>
> A samples of length N passed though a filter of length L will produce an
> output sample vector of length N+L-1.
>
> If filter has a delay of M then the first M samples will be rising edge of
> the output samples and the rest L-1-M will be falling edge.
>
> So your extra samples are nothing bit the falling edge samples.
>
> In your calculation the delay should have been 12 (6+6).
>
> Hope this gives some input to your confusion..
>
> Thanks and Regards,
>
> Amit Shaw
>
> *From:* m... [mailto:m...] *On Behalf
> Of *maha devi
> *Sent:* Thursday, November 19, 2009 9:28 AM
> *To:* m...
> *Subject:* [matlab] Upsampling / Downsampling doubt
>
> Hi ,
>
> I am working with 16-QAM transmitter/receiver . The problem is I encounter
> some extra symbols after downsampling ( INPUT - 1000 SYMBOLS , OUTPUT-1012
> SYMBOLS). Let me say in detail.
> I send 4000 bits/s -> *QAM Coder* -> 1000symbols/s -> *upsampling*(factor=8 , length becomes 8000 samples) ->
> *Transmit SRRC* ( delay 6, filter length = 97 samples) -> *pulse shaped
> output* (length = 8096 samples) -> *Channel*(just added noise) -> *Receiver
> SRRC* (delay 6, filter length = 97 samples) -> *output -RxFiltOut*(length
> = 8192 samples) -> *system delay samples* -> *Downsampling (
> RxFiltOut(97:8:end)).* Now I end up with 1012 symbols (( 8192- 97 ) / 8).
> How should I intepret this. What should I do the extra symbols. Which 12
> symbols should I reject from downsampled output?. I have to finish my
> project in a week.Your reply would be of very great help at this point of
> time..Thank you so much.
>
> Regards,
>
> Mahadevi.