2
\$\begingroup\$

I'm implementing an analog video decoder on FPGA. I find some difficulties during chrominance decoding. I appreciate if you can help me. These are the steps as I'm doing:

  1. I generate an NTSC ColorBar signal from a TV pattern Generator. I do acquisition through an RF board with the following parameters:: Local Oscillator=500 MHz, Sampling frequency=54 MHz(4*13.5 MHz), BW=6 MHz, ADC resolution: 12 bits

enter image description here

  1. After inverting the signal, I implement a digital LPF+bandpass FIR to separate luma and chroma.

enter image description here

  1. I'm generating localling, through a DDS, the chroma subcarrier signal (3.579545 MHz (NTSC)). Actually, it's a SIN + COS signals coded on 16 bits.

enter image description here

  1. I multiply, through an IP from Xilinx, the chrominance signal by COSINUS (V), and by another multiplier, the same chrominance by SINUS (U) in order to create a 90° phase between them.

enter image description here

  1. After that, I'm using 2 LPF with a cutoff frequency of 500 kHz and 1.3 MHz for U and V, respectively. Then, I get Red and Blue signals as below:

enter image description here

enter image description here

source

At this stage, it's OK.

PROBLEM: I'm expecting to have the same output on all video lines! Or it's only the case for 4 or 5 successive lines, then, it changes and it doesn't represent Red and Blue levels. This is an extract from what I get:

enter image description here

Any explanation please? Thanks in advance.

\$\endgroup\$
3
  • 2
    \$\begingroup\$ Have you locked on to the colorburst and keep it synchronized to it every line? Also on NTSC the phase will alternate on each line, as there is 227.5 color carrier cycles per line. Or at least there should be, but who knows how your video source works, if it is asynchronous. \$\endgroup\$
    – Justme
    Commented Aug 18, 2020 at 12:37
  • \$\begingroup\$ @Justme: how to lock in practice to the colorburst? I suppose that it means to apply the same phase and frequency of the burst, each line. For the frequency, my sampling rate is 54MHz (4xfs). I cannot do better, thus, I cannot determine with high precision the exact burst's frequency. I suppose that it shoudn't derive much from the 3.58MHz. That's why I'm using a DDS with a fixed freq, About the phase, I tried to invert DDS signal (offset of 180°) each line, but I was getting the waveform above, inverted one line per two. Do you have another approach how to implement the synchronization? \$\endgroup\$
    – tgharbi
    Commented Aug 18, 2020 at 15:01
  • \$\begingroup\$ It might help to think about how exactly the color burst is used in an analog set. The color burst would excite a tank circuit containing a crystal at the color burst frequency. That oscillation then would be used to I/Q demodulate the color signal. So when you decode color you need to pay attention to phase. \$\endgroup\$
    – mng
    Commented Aug 20, 2020 at 2:31

1 Answer 1

2
\$\begingroup\$

You need to adjust the DDS generated subcarrier to match the actual colorburst reference signal. So they must be compared (frequency and phase) and based on the result the DDS phase increment is tuned so that the generated burst matches burst of the sampled video do match. How to actually do that, there might be many ways, and there are many video technology books that describe digital decoding of sampled composite video.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.