I am working on a ISDB-T receiver implemented in software on my laptop. I am only interested in a 1-seg receiver at this point (1-seg is the single OFDM segment 422-carrier reduced BW part of the Japanese ISDB-T spec). I have an ADC connected to a Xilinx Spartan 3 FPGA and Cypress USB chip. The ADC samples the low-IF output of a tuner chip, the FPGA does the I/Q down-conversion to baseband, and also throttles the FIFOs in the USB chip. My laptop receives baseband I/Q via USB, and in C code I am implementing the remainder of the OFDM receiver. So far I have AFC and symbol timing working (kind of) using the auto-correlation technique. On my laptop I can view the OFDM spectrum in real-time and see the scattered pilot, AC1, and TMCC carriers with thier slightly larger amplitudes (4/3) no problem. Okay, that's my long-winded intro. Now on to the questions. For simplicity I am starting with the DBPSK TMCC carriers. Later I will tackle the data carriers which require coherent demod. But for the life of me, I cannot get the signal constellations to stand still. I suspect that this may be due to the AFC "control voltage" to the "local osc" not being low-pass filtered. But it may also be due to the start-of-symbol timing detection bobbling around. Can anyone shed some light on details of the AFC loop control, or point to good articles, and also start-of-symbol timing conrol info as well. For now I don't mind if the constellations have some tilt, or if I don't know what point is the zero phase ref for coherent demod. I would be happy if I could just get the constellations to sit still! Any info is greatly appreciated! If I am being too vague in any of the above, I am happy to clarify. Regards, Greg
OFDM receiver on my laptop -- and questions
Started by ●November 1, 2006
Reply by ●November 2, 20062006-11-02
You didnt mention how constellation disbursed. Based on that I can suggest. Ravi N>I am working on a ISDB-T receiver implemented in software on my laptop.I>am only interested in a 1-seg receiver at this point (1-seg is thesingle>OFDM segment 422-carrier reduced BW part of the Japanese ISDB-T spec). I >have an ADC connected to a Xilinx Spartan 3 FPGA and Cypress USB chip.The>ADC samples the low-IF output of a tuner chip, the FPGA does the I/Q >down-conversion to baseband, and also throttles the FIFOs in the USBchip.> > >My laptop receives baseband I/Q via USB, and in C code I am implementing >the remainder of the OFDM receiver. So far I have AFC and symbol timing >working (kind of) using the auto-correlation technique. On my laptop Ican>view the OFDM spectrum in real-time and see the scattered pilot, AC1,and>TMCC carriers with thier slightly larger amplitudes (4/3) no problem. > >Okay, that's my long-winded intro. Now on to the questions. Forsimplicity>I am starting with the DBPSK TMCC carriers. Later I will tackle the data >carriers which require coherent demod. But for the life of me, I cannot >get the signal constellations to stand still. I suspect that this may be >due to the AFC "control voltage" to the "local osc" not being low-pass >filtered. But it may also be due to the start-of-symbol timing detection >bobbling around. Can anyone shed some light on details of the AFC loop >control, or point to good articles, and also start-of-symbol timingconrol>info as well. For now I don't mind if the constellations have some tilt,or>if I don't know what point is the zero phase ref for coherent demod. I >would be happy if I could just get the constellations to sit still! Any >info is greatly appreciated! If I am being too vague in any of theabove,>I am happy to clarify. > >Regards, >Greg > > > > > > >
Reply by ●November 4, 20062006-11-04
Hi Ravi, The constellations are rotating. The direction of rotation and rate of rotation both are not constant. I suspect what I need to do is detect a zero phase reference, and use that to fix the phase on the fft output. But I am wondering if this kind of behavior is normal. I have applied low-pass filtering to both the local oscillator control that does the frequency offset correction, and also the start-of-symbol timing. These are both very stable. Greg
Reply by ●November 4, 20062006-11-04
overkamp wrote:> Hi Ravi, > > The constellations are rotating. The direction of rotation and rate of > rotation both are not constant. I suspect what I need to do is detect a > zero phase reference, and use that to fix the phase on the fft output. But > I am wondering if this kind of behavior is normal. I have applied low-pass > filtering to both the local oscillator control that does the frequency > offset correction, and also the start-of-symbol timing. These are both > very stable. > > Greg >Have you tried looking at the channel impulse response? It might be worth checking the peak position and variation from symbol to symbol.
Reply by ●November 4, 20062006-11-04
>Have you tried looking at the channel impulse response? It might be >worth checking the peak position and variation from symbol to symbol. >No I have not done that yet, but I know it is something I must do. My vague understanding is that I have to look at the scattered pilots and get their amplitude and phase across frequency, then perhaps interpolate across frequency, then do inverse fft to get the impulse response. Is that correct? The scattered pilots are scattered in both time and frequency. Across time, they appear every fourth symbol. And for different frequencies they don't appear at the same time. This is for the ISDB-TV spec, but other specs are probably similar. I am not sure how I sync up to the scattered pilots. That is, for a particular freq, if a pilot occurs every fourth symbol, how do I isolate it. Must I do some kind of frequency-domain convolution? Suppose that I can get the channel impulse response. Is the peak supposed to be used to adjust the start-of-symbol timing? Greg
Reply by ●November 5, 20062006-11-05
overkamp wrote:>> Have you tried looking at the channel impulse response? It might be >> worth checking the peak position and variation from symbol to symbol. >> > > No I have not done that yet, but I know it is something I must do. My > vague understanding is that I have to look at the scattered pilots and get > their amplitude and phase across frequency, then perhaps interpolate across > frequency, then do inverse fft to get the impulse response. Is that > correct?Sounds about right. If your signal is good, you can do a basic interpolation to keep complexity down.> > The scattered pilots are scattered in both time and frequency. Across > time, they appear every fourth symbol. And for different frequencies they > don't appear at the same time. This is for the ISDB-TV spec, but other > specs are probably similar. I am not sure how I sync up to the scattered > pilots. That is, for a particular freq, if a pilot occurs every fourth > symbol, how do I isolate it. Must I do some kind of frequency-domain > convolution?Correlation. Look at symbols four apart. The scattered pilots are the same, so will stand out. From this you can sync to the repeating pattern of four.> > Suppose that I can get the channel impulse response. Is the peak supposed > to be used to adjust the start-of-symbol timing? >Yes, you can use this. How you use it can get a bit complicated though. I assume you are already using sample rate conversion to remove the error between transmitter and receiver sample clocks? Do you have access to good literature on this subject, or already have papers covering this from the web? This part of ISDB-T is pretty much identical to DVB-T, so you can use info for DVB-T. The TMCC is different but you can't do much with this anyway until you can get constellation data reliably. Where is your ISDB-T signal coming from?
Reply by ●November 6, 20062006-11-06
Hi nahn. Sorry I got your name wrong two posts back. Thanks for the info about the scattered pilot correlation. Initially I thought I should correlate the scattered pilots to a known, stored sequence. But from your post, it sounds like I should correlate the current symbol with the symbol spaced four symbols back in time (or multiple symbols spaced four apart). Is that right? In the past I have done time-domain auto-correlation (it is used for the carrier offset adjustment and start-of-symbol timing), but I have not done a correlation in the freq domain using real/imag or amp/phase values. Can you say a bit about how this is done? I have not done anything about differences in transmitter/receiver sample clock. From papers I have read, it was mentioned that carrier offset and symbol timing had far stronger effects than sample clock differences. So currently I have a fixed ADC clock with no attempt in software to do sample rate conversion. All of the literature I am using has been pulled off the web. Most of the papers are OFDM papers, and not specific to ISDB. The few ISDB-related papers I have do not go into the OFDM receiver. I do have the ISDB spec as well. If you have any papers/docs that are favorites, I would be very interesting in hearing about them. As for signal source, I am using both a live signal from an antennna, and also a cheap, used Tektronix RTX100. It is not very flexible compared to what is out there now, but the price was right. I have some new results as well. I am able to get stable constellations using a very simple technique. It will be adequate for decoding the DBPSK TMCC carriers, but will not work for the coherent QPSK carriers. But at least it was very cool to see DBPSK constellations that are not rotating. I took a single TMCC carrier and squared it to removed the modulation. I use this as a phase ref to do phase correction on the FFT output. Of course I have no way to tell what phase is zero degrees and what is 180 degrees, but it doesn't matter for the differential BPSK carriers. It does matter for the QPSK carriers, for which I will need to do the full-blown phase detection of the scattered pilots. Greg
Reply by ●November 11, 20062006-11-11
overkamp wrote:> Hi nahn. Sorry I got your name wrong two posts back. > > Thanks for the info about the scattered pilot correlation. Initially I > thought I should correlate the scattered pilots to a known, stored > sequence. But from your post, it sounds like I should correlate the > current symbol with the symbol spaced four symbols back in time (or > multiple symbols spaced four apart). Is that right? In the past I have > done time-domain auto-correlation (it is used for the carrier offset > adjustment and start-of-symbol timing), but I have not done a correlation > in the freq domain using real/imag or amp/phase values. Can you say a bit > about how this is done? >For each of the four possible positions of the scattered pilot sequences, complex conjugate multiply carriers spaced 12 apart with the same carrier from four symbols earlier, and accumulate the result. Largest magnitude accumulation result tells you which of the four patterns was in use. Stay synced to this sequence and you know which carriers are the scattered pilots in any symbol. This is different from the time-domain auto-correlation, and is only to work out which carriers are the scattered pilots. Then you are able to us them for frequency and sample timing offset estimation. You can also calculate the channel impulse response from the scattered pilots and use this to adjust start-of-symbol timing.> I have not done anything about differences in transmitter/receiver sample > clock. From papers I have read, it was mentioned that carrier offset and > symbol timing had far stronger effects than sample clock differences. So > currently I have a fixed ADC clock with no attempt in software to do > sample rate conversion.You might want to look into this a bit more, see references below.> > All of the literature I am using has been pulled off the web. Most of the > papers are OFDM papers, and not specific to ISDB. The few ISDB-related > papers I have do not go into the OFDM receiver. I do have the ISDB spec as > well. If you have any papers/docs that are favorites, I would be very > interesting in hearing about them. >A lot of papers reference Speth, Fechtel, Foch, Meyer papers on Optimum receiver design. I don't know if you can get hold of these but if you can they will pretty much cover all the detail you need, apart from ISDB specifics.> As for signal source, I am using both a live signal from an antennna, and > also a cheap, used Tektronix RTX100. It is not very flexible compared to > what is out there now, but the price was right. > > I have some new results as well. I am able to get stable constellations > using a very simple technique. It will be adequate for decoding the DBPSK > TMCC carriers, but will not work for the coherent QPSK carriers. But at > least it was very cool to see DBPSK constellations that are not rotating. > I took a single TMCC carrier and squared it to removed the modulation. I > use this as a phase ref to do phase correction on the FFT output. Of > course I have no way to tell what phase is zero degrees and what is 180 > degrees, but it doesn't matter for the differential BPSK carriers. It does > matter for the QPSK carriers, for which I will need to do the full-blown > phase detection of the scattered pilots. >Sounds good. I guess there is not much you can do with TMCC data without doing all the other work but it would be satisfying to at least check the TMCC format is received correctly.
Reply by ●November 24, 20062006-11-24