04-19-2009 01:57 PM
i am using convolutional encoder in a simple program. the inputs of this vi are, 1. bitstream, 2. rate(k/n) 3. constraint length.
i gave a bit stream 100010100001111000.... of 30 elements to it. i set the rate as 1/2, and the constraint length as 5.
i than decoded this input bit stream with a convolutional decoder, but the output of that decoder was not matching my input bit stream. it was having only 5 elements. what do you think is the problem.
block diagram: input bit stream-------------> convolutional encoder( with the above mentioned rate and constraint length)....................>convolutional decoder( with same rate & constraint length) but the output is not the same as the input that i gave. only 5 elements showed up.
is there a condition b/w the number of input bits and constraint length which has to be met??? etc
04-22-2009 04:55 AM - edited 04-22-2009 05:04 AM
Hello irish_sunset,
Are you by any chance padding your bitstream after the encoding? At the output of the convolutional encoder? If you are, try padding before the encoding instead, so that you pad the input to the encoder.
This has been seen before and with this change you should get the expected bits at the decoder output.
Let me know if this helps,
Kind Regards,
Michael S.
Applications Engineer
NI UK & Ireland
05-20-2009 11:02 PM
05-21-2009 04:53 AM
Hello Sidhu88,
It seems that the 50% puncturing you are doing gives you 50% error, so I would say they are very much related.
The puncturing and depuncturing VIs are very well documented and you should probably revise their functionality to see where in your code the error is stemming from.
Attached is a little example one of my colleagues wrote a while ago, but please refer to the Help documentation for details.
I hope this helps,
Kind Regards,
Michael S.
Applications Engineer
NI UK & Ireland
05-21-2009 08:35 AM
05-22-2009 10:54 AM
Hello Sidhu88,
Have a look at the help file for the VIs that are used in the example and you will find that the "erasure value" replaces the missing elements with whatever you set it to. It stands as an equivalent to inserting a null symbol in the position of the input data stream that was previously punctured using the MT Puncture VI. If you select '0' for an erasure value, then this will be inserted into your stream.
The help files will be your best resource for what you are looking to achieve, which is standard functionality for these VIs. However please do not hesitate to post back if these do not sufficiently cover your needs.
I hope this helps,
Kind Regards,
Michael S.
Applications Engineer
NI UK & Ireland
05-25-2009 01:03 AM