Tuesday, 29 May 2012 1:37 AM
Hi, everyone. I have a question about Viterbi decodig and expect you can answer for me.
I see that demodulating and Viterbi decoding are implemented with two different threads, and the data for decoding is pushed into viterbi buffer(vb in FIFO) while the decoding process reads data from viterbi buffer to output the decoded bits. But I'm puzzled how these two threads synchronize. Since Viterbi decoding thread has been set to run after header demodulation, each time 48 bits (for 6M rate) is pushed into viterbi buffer and Viterbi decoding thread will immediately use them for decoding. But It seems that we cannot ensure they are synchronized.
Waiting for your answer. Thanks.
Thursday, 31 May 2012 5:57 AMAnswererYou can check the definition of struct VB_DCBLOCK. One burst of Viterbi input data is stored in 'data' array, and it is synchronized by the volatile field 'isValid' in the same VB_DCBLOCK.
- Marked As Answer by Jiansong zhangMicrosoft Employee, Moderator Saturday, 2 June 2012 4:00 AM
Friday, 1 June 2012 3:25 AMOK, thanks.