DSPRelated.com
Forums

How to begin with DSPs

Started by lanbaba December 16, 2006
Hi all

I have implemented a non-realtime DVB-T receiver in C++ and tested it
successfully with signals off the air. Now I have to implement a real-time
receiver. The baseband signal processing includes time and frequendy
synchronization, channel estimation, coherent demodulation and docoding.
The corresponding caculations are
- arithmatic calculation
- correlation
- FFT and IFFT
- matrix inversion and multiplication
- diversity combining
- FIR filtering
- Interleaving and Deinterleaving
- soft/hard decision Viterbi decoding 
- Reed-Solomon decoding
- MPEG-2 decoding

I think I need DSPs from TI, but I need advises from experts. My questions
are
- What type of DSP should I choose from TI? How many DSPs do I need to
realize a DVB-T receiver including the operations above?
- Are there any good literatures or sources to learn programming TI-DSPs
in a short time? I have never programmed a DSP, rather experienced in
algorithms.

Cheers, LBB
"lanbaba" <lanbaba@gmx.ch> writes:

> Hi all > > I have implemented a non-realtime DVB-T receiver in C++ and tested it > successfully with signals off the air. Now I have to implement a real-time > receiver. The baseband signal processing includes time and frequendy > synchronization, channel estimation, coherent demodulation and docoding. > The corresponding caculations are > - arithmatic calculation > - correlation > - FFT and IFFT > - matrix inversion and multiplication > - diversity combining > - FIR filtering > - Interleaving and Deinterleaving > - soft/hard decision Viterbi decoding > - Reed-Solomon decoding > - MPEG-2 decoding > > I think I need DSPs from TI, but I need advises from experts. My questions > are > - What type of DSP should I choose from TI? How many DSPs do I need to > realize a DVB-T receiver including the operations above? > - Are there any good literatures or sources to learn programming TI-DSPs > in a short time? I have never programmed a DSP, rather experienced in > algorithms.
That's a question that has several potential answers depending on your goals. One of the key issues in doing this sort of conversion is whether or not you port to fixed-point and continue with floating-point. Generally a fixed-point processor is going to be cheaper/smaller/less power, but it can take a lot of time reimplementing your algorithms in integer arithmetic. If you don't give a hoot about cost/power/board-space and want to spend the minimum time possible, my opinion is that a TI C67x would be appropriate. This is a floating-point processor, so you could almost literally just retarget your C++ code using the TI compiler. Regarding how many, I would suggest you first retarget on the C67x and then benchmark the total MIPS required. If it's less than the processor's capability, you're done. If not, then breakdown MIPS by each of the major algorithm blocks so you can see where the MIPS are being spent. Then think if there's ways to optimize. If optimized code still exceeds a single C67x, then the logical place to split the design is between the air interface and the MPEG2 codec. There's only so much you can try to anticipate up front. This might help get you going. -- % Randy Yates % "I met someone who looks alot like you, %% Fuquay-Varina, NC % she does the things you do, %%% 919-577-9882 % but she is an IBM." %%%% <yates@ieee.org> % 'Yours Truly, 2095', *Time*, ELO http://home.earthlink.net/~yatescr
Randy Yates <yates@ieee.org> writes:

> One of the key issues in doing this sort of conversion is whether or not > you port to fixed-point and continue with floating-point.
That should've been, "...whether or not you port to fixed-point OR continue with floating-point." -- % Randy Yates % "Rollin' and riding and slippin' and %% Fuquay-Varina, NC % sliding, it's magic." %%% 919-577-9882 % %%%% <yates@ieee.org> % 'Living' Thing', *A New World Record*, ELO http://home.earthlink.net/~yatescr
"lanbaba" <lanbaba@gmx.ch> writes:

> Hi all > > I have implemented a non-realtime DVB-T receiver in C++ and tested it > successfully with signals off the air. Now I have to implement a real-time > receiver. The baseband signal processing includes time and frequendy > synchronization, channel estimation, coherent demodulation and docoding. > The corresponding caculations are > - arithmatic calculation > - correlation > - FFT and IFFT > - matrix inversion and multiplication > - diversity combining > - FIR filtering > - Interleaving and Deinterleaving > - soft/hard decision Viterbi decoding > - Reed-Solomon decoding > - MPEG-2 decoding > > I think I need DSPs from TI, but I need advises from experts. My questions > are > - What type of DSP should I choose from TI? How many DSPs do I need to > realize a DVB-T receiver including the operations above? > - Are there any good literatures or sources to learn programming TI-DSPs > in a short time? I have never programmed a DSP, rather experienced in > algorithms.
PS: My intuition tells me this should be doable on a PC using a modern processor (e.g., a 3.8 GHz AMD Athlon 64). Have you tried? Benchmarking and optimizing at this stage (before going to DSP) can be very beneficial. -- % Randy Yates % "Bird, on the wing, %% Fuquay-Varina, NC % goes floating by %%% 919-577-9882 % but there's a teardrop in his eye..." %%%% <yates@ieee.org> % 'One Summer Dream', *Face The Music*, ELO http://home.earthlink.net/~yatescr
Randy Yates wrote:
> "lanbaba" <lanbaba@gmx.ch> writes: > > >>Hi all >> >>I have implemented a non-realtime DVB-T receiver in C++ and tested it >>successfully with signals off the air. Now I have to implement a real-time >>receiver. The baseband signal processing includes time and frequendy >>synchronization, channel estimation, coherent demodulation and docoding. >>The corresponding caculations are >>- arithmatic calculation >>- correlation >>- FFT and IFFT >>- matrix inversion and multiplication >>- diversity combining >>- FIR filtering >>- Interleaving and Deinterleaving >>- soft/hard decision Viterbi decoding >>- Reed-Solomon decoding >>- MPEG-2 decoding >> >>I think I need DSPs from TI, but I need advises from experts. My questions >>are >>- What type of DSP should I choose from TI? How many DSPs do I need to >>realize a DVB-T receiver including the operations above? >>- Are there any good literatures or sources to learn programming TI-DSPs >>in a short time? I have never programmed a DSP, rather experienced in >>algorithms. > > > PS: My intuition tells me this should be doable on a PC using a modern > processor (e.g., a 3.8 GHz AMD Athlon 64). Have you tried? Benchmarking > and optimizing at this stage (before going to DSP) can be very beneficial.
If you go that route, and you're within 2x of where you need to be, look at using MMX instructions (or whatever they've morphed into). Doing portions of the code in fixed point using MMX may gain you some processing speed. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Posting from Google? See http://cfaj.freeshell.org/google/ "Applied Control Theory for Embedded Systems" came out in April. See details at http://www.wescottdesign.com/actfes/actfes.html
lanbaba wrote:

> Hi all > > I have implemented a non-realtime DVB-T receiver in C++ and tested it > successfully with signals off the air. Now I have to implement a real-time > receiver. The baseband signal processing includes time and frequendy > synchronization, channel estimation, coherent demodulation and docoding. > The corresponding caculations are > - arithmatic calculation > - correlation > - FFT and IFFT > - matrix inversion and multiplication > - diversity combining > - FIR filtering > - Interleaving and Deinterleaving > - soft/hard decision Viterbi decoding > - Reed-Solomon decoding > - MPEG-2 decoding > > I think I need DSPs from TI, but I need advises from experts. My questions > are > - What type of DSP should I choose from TI? How many DSPs do I need to > realize a DVB-T receiver including the operations above? > - Are there any good literatures or sources to learn programming TI-DSPs > in a short time? I have never programmed a DSP, rather experienced in > algorithms. > > Cheers, LBB
This may also be an algorithm that's amenable to design with FPGAs. If you're comfortable in C++ and you're not trying to build this for production, however, you may want to just stick with processors. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Posting from Google? See http://cfaj.freeshell.org/google/ "Applied Control Theory for Embedded Systems" came out in April. See details at http://www.wescottdesign.com/actfes/actfes.html
>lanbaba wrote: > >> Hi all >> >> I have implemented a non-realtime DVB-T receiver in C++ and tested it >> successfully with signals off the air. Now I have to implement a
real-time
>> receiver. The baseband signal processing includes time and frequendy >> synchronization, channel estimation, coherent demodulation and
docoding.
>> The corresponding caculations are >> - arithmatic calculation >> - correlation >> - FFT and IFFT >> - matrix inversion and multiplication >> - diversity combining >> - FIR filtering >> - Interleaving and Deinterleaving >> - soft/hard decision Viterbi decoding >> - Reed-Solomon decoding >> - MPEG-2 decoding >> >> I think I need DSPs from TI, but I need advises from experts. My
questions
>> are >> - What type of DSP should I choose from TI? How many DSPs do I need to >> realize a DVB-T receiver including the operations above? >> - Are there any good literatures or sources to learn programming
TI-DSPs
>> in a short time? I have never programmed a DSP, rather experienced in >> algorithms. >> >> Cheers, LBB > >This may also be an algorithm that's amenable to design with FPGAs. If >you're comfortable in C++ and you're not trying to build this for >production, however, you may want to just stick with processors. > >-- > >Tim Wescott >Wescott Design Services >http://www.wescottdesign.com > >Posting from Google? See http://cfaj.freeshell.org/google/ > >"Applied Control Theory for Embedded Systems" came out in April. >See details at http://www.wescottdesign.com/actfes/actfes.html >
Randy and Tim Thank you for the information! I am currently running the nonrealtime RX under a PC with P4-2.2G. I can upgrade the PC to a DualCore, but it my not solve my problem as I need much more than 2x speed. The most time consuming part is Viterbi. I read some papers where realtime decoding of certain low data rate modes in DAB has been implemented in PC by optimizing Viterbi, but I doubt if it also works for the data rate of DVB. My preference for TI is mainly due to Viterbi and MPEG decoding. Does it also support RS decoding? FPGA will be probably the next question in this forum when we have success with DSPs:) Then we have to hire new engineers as I don't want to trouble myself with VHDL any more. Cheers, LBB
> Thank you for the information! > I am currently running the nonrealtime RX under a PC with P4-2.2G. I can > upgrade the PC to a DualCore, but it my not solve my problem as I need > much more than 2x speed. The most time consuming part is Viterbi. I read > some papers where realtime decoding of certain low data rate modes in DAB > has been implemented in PC by optimizing Viterbi, but I doubt if it also > works for the data rate of DVB. My preference for TI is mainly due to > Viterbi and MPEG decoding. Does it also support RS decoding?
Unlike the current 67xx floting point devices, some of the 64xx fixed point devices have VCP and TCP (Viterbi and Turbo Code coporcessors). In addition, the processor archtecture of the 64xx is better suited to video applications, including both the register sets and instructions available. Cheers, Howard