Раньше для генерации композитного видеосигнала требовались схемотехнические решения, а теперь задачу можно решить, используя микроконтроллер и цифроаналоговый преобразователь.

Производительности микроконтроллера хватает для генерирования сигнала с достаточной степенью дискретизации, а цифроаналоговый преобразователь можно собрать, используя минимум электронных компонентов. Естественно, качество такого композитного видеосигнала будет невысоким, но думаю, эффект «Wow» и почва для экспериментов будут обеспечены.

Идея генерации композитного сигнала может показаться банальной, так как в интернете без труда можно найти примеры генерации. Но я не встречал системного описания этой темы и хочу исправить этот недочёт. Изначально я хотел это оформить в виде одной статьи, но потом решил, что лучше это оформить в виде серии из двух статей, так как объём одной получился отпугивающим.

В школе нам давали знания, но редко говорили, где они могут пригодиться. Ещё раз я убедился, что знание — это сила. Знание линейной алгебры, тригонометрии, дифференциального исчисления, оптики, электромагнетизма, биологии, физиологии и других дисциплин позволило человечеству создать телевидение.

К сожалению, всё включить даже в серию статей невозможно, как и невозможно включить ощущения в моменты озарения, когда во вроде бы уже знакомой теме находишь что-то новое. Я надеюсь, что и читатели узнают что-то новое.

Кому интересно скоротать несколько вечеров, хочется улучшить свои знания и умения, добро пожаловать далее.

Умение формировать композитный видеосигнал затрагивает много дисциплин, которые изучают в школе и институте, а понимание позволяет систематизировать знания и междисциплинарные связи.

В этой статье мы ограничимся только теоретическими сведениями, следующая будет посвящена тому, как именно получить видеосигнал на Raspberry Pi Pico.

Я помню картину из детства, когда телемастер с дипломатом приходил чинить наш телевизор. Тогда казалось, что телемастер обладает знаниями, граничащими с волшебством; это ощущение у меня остаётся частично и сейчас, но я хочу немного раскрыть секреты этого волшебства.

При изложении обширной темы всегда возникает вопрос о выборе наиболее оптимальной последовательности изложения материала. У меня получилась следующая. Всегда рад конструктивной критике и советам по улучшению.

Далее я буду называть композитный сигнал сигналом CVBS (Composite Video Baseband Signal). Это «чистый» аналоговый видеосигнал до его модуляции перед передачей по радиоканалу или кабельным сетям. Сейчас уже аналоговое телевидение, за некоторыми исключениями, не используется в эфире. А вот сигнал CVBS продолжает использоваться в камерах видеонаблюдения, при оцифровке старого видео с видеокассет и в ретро-консолях.

Введение в аналоговые видеосигналы

Сигнал — это способ передачи информации при помощи изменения величины. То, какие величины изменяются и каким образом, определяет природу сигнала — он может быть аналоговым или дискретным. Видеосигнал несёт информацию об изображении, может быть аналоговым, когда величины изменяются плавно и цифровым, когда величины изменяются дискретно. Какая величина именно изменяется, зависит от среды передачи. Если среда передачи — электрическая цепь, то обычно это напряжение. В статье рассматривается именно такой видеосигнал.

Почему полезно знать аналоговые видеосигналы

Сейчас в основном используются цифровые видеосигналы, но понимание аналоговых важно, так как современные технологии базируются на математическом аппарате и стандартах, используемых для последних.

В современном цифровом видео используются:

  • цветовые пространства и принципы кодирования цветовой информации (RGB, YUV, YIQ, основные цвета, точка белого, цветовой охват);

  • развёртка, вертикальная и горизонтальная синхронизация;

  • испытательные таблицы (SMPTE Color Bars или EBU Color Bars).

Аналоговые видеосигналы используются в камерах заднего вида автомобилей, в системах видеонаблюдения и FPV-дронах. Аналоговые технологии продолжают быть актуальными в ретрогейминге, реставрации старых телевизоров и энтузиастских проектах.

Разнообразие сигналов, стандартов кодирования и интерфейсов подключения

Следует отличать видеосигнал от телевизионного сигнала. Телевизионный сигнал — это видеосигнал, смодулированный для передачи на радиочастотах. В этой статье я его не рассматриваю.

Видеосигналы бывают чёрно-белые и цветные. Чёрно-белые были разработаны раньше — в 30-х годах, и лишь в 50-х телевидение стало цветным. Сложность цветного видеосигнала заключается в том, что необходимо передавать информацию о цвете.

Цветное изображение можно представить при помощи комбинаций красного, зелёного и синего цветов. На телевизорах и мониторах вы можете рассмотреть множество крохотных точек красного, зелёного и синего цвета. Существуют стандарты, где действительно передаётся информация о красном, зелёном и синем цвете: RGBS, RGBHV, VGA.

Для цветных видеосигналов, используемых в телевидении, более привычна передача яркости (Y) и двух цветоразностных сигналов (обычно обозначаемых как U и V). Такое решение было принято для обеспечения совместимости с чёрно-белым телевидением и экономии полосы частот, так как телесигнал использует радиочастоты.

Сигнал может быть в разных системах цветного кодирования: NTSC, PAL, SECAM. Современные телевизоры являются мультисистемными, и пользователь может даже не догадываться, в какой системе цветности у него сигнал.

Мне известно о трёх стандартах NTSC:

  • NTSC-M,

  • NTSC-J,

  • NTSC 4.43.

NTSC-M — это американский вариант NTSC. NTSC-J — это система цветного телевидения Японии и некоторых других стран; система отличается большей консервативностью. NTSC 4.43 — это NTSC, который для модулирования сигнала цветности использует частоты сигнала цветности PAL.

Современный телевизор может принимать аналоговые и цифровые теле- и видеосигналы. Поэтому часто при осмотре задней панели телевизора рябит в глазах.

Например, даже мой телевизор, которому уже больше десяти лет, содержит следующие входы:

  • высокочастотный вход для кабельного и обычного телевидения (RF);

  • несколько низкочастотных входов для сигналов CVBS;

  • компонентный видеовход;

  • VGA-видеовход;

  • несколько HDMI-входов.

Но не пугайтесь, мы будем рассматривать только цветной сигнал CVBS с системой кодирования NTSC-М и нам только нужен разъём RCA жёлтого цвета на телевизоре.

Развёртка

Изображение на экране телевизора — это последовательность прямоугольных кадров, которые состоят из строк. Развёртка (scan) преобразует двумерное изображение (кадр) в одномерную последовательность строк, которая передаётся.

Изначально развёртка была предназначена для электронно-лучевых трубок (кинескопов), где изображение рисовалось электронным лучом. Для луча было необходимо время для перемещения на начало строки или в начало экрана. Интервалы времени, выделяемые на эти перемещения, называются вертикальным и горизонтальным синхронизирующими интервалами.

Такие интервалы не нужны в случае цифровых дисплеев, используемых в настоящее время. Т.e. можно было организовать вывод изображения без них, но интервалы оставлены для совместимости.

Развёртка бывает прогрессивная и чересстрочная. При прогрессивной развёртке строки передаются последовательно — одна за другой. При чересстрочной развёртке сначала передаются нечётные строки кадра, потом чётные строки кадра. Все чётные или нечётные строки кадра называются полями. Т.е. сначала передаётся поле, содержащее нечётные строки кадра, потом поле, содержащее чётные строки кадра.

В зависимости от стандарта сигнала CVBS (NTSC, PAL, SECAM) используется разное количество строк для кадра. В случае NTSC это 525 строк. Т.е. каждое поле содержит 262,5 строки.

В случае чересстрочной развёртки нечётные поля начинаются с целой строки, чётные — с половины строки; благодаря этому декодер сигнала понимает, какое поле передаётся в настоящий момент — чётное или нечётное. Не все 262,5 строки отображаются на экране и являются изображением.

Схематично, как выглядят два вида развёртки, приведено на рисунке.

Схема развёртки
Схема развёртки

Пунктирные линии показывают обратный ход луча, когда он гасится. На самом деле траектория погашенного луча другая; на схеме она упрощена для понимания.

Цветной видеосигнал CVBS

Формализация понятий цвета и яркости

Полноценное понимание цветного сигнала CVBS невозможно без формализации понятия цвета, поэтому рассмотрим её.

Что из себя представляет цвет? Этому посвящена целая дисциплина — колориметрия. Немало книг, статей, и видео создано на эту тему. На Хабре тоже есть ряд статей. Я ограничусь лишь базовыми понятиями, а в полезных ссылках укажу, где можно найти дополнительную информацию.

Я думаю, нет человека, который не видел радугу и не знает, как называются цвета, которые в ней присутствуют.

Видимый свет с точки зрения физики — это электромагнитные волны с диапазоном от 380 до 780 нанометров. Они могут излучаться, отражаться и поглощаться. Излучение или отражение волн с определёнными длинами воспринимается нами как цвет.

Цветов, на самом деле, существует бесконечное множество, и человек различает лишь их часть. В радуге мы видим так называемые монохроматические цвета, т.е. те, которые получаются при излучении или отражении света с одной длиной волны. Цвета, которые мы видим в повседневной жизни, содержат в себе волны различной длины и имеют сложный спектр излучения.

Из школьного курса биологии известно, что в глазах человека для восприятия света существуют палочки и три вида колбочек. Человеческий глаз имеет различную чувствительность к красному, синему и зелёному.

В 1931 году международной комиссией по освещению (CIE) был проведён колориметрический эксперимент. Он заключался в создании функций соответствия цвета (color matching functions), которые описывают, как цвета видимого спектра могут быть представлены через комбинацию яркостей трёх монохроматических цветов. Этот эксперимент стал основой для разработки системы CIE 1931 XYZ, которая стандартизировала восприятие цвета человеком.

Как выглядит хроматическая диаграмма CIE 1931, знают многие, а вот что она показывает и зачем нужна — нет.

Хроматическая диаграмма CIE 1931
Хроматическая диаграмма CIE 1931

Диаграмма показывает все цвета, которые воспринимаются человеком при максимальной яркости.

Цветность — это сочетание оттенка и насыщенности.

Цвет (без яркостной составляющей) на диаграмме определяется двумя координатами: x и y. Если на диаграмме выбрать три точки, то треугольник, ими образованный, будет содержать все цвета, которые можно создать, смешивая три цвета его вершин в различных пропорциях. Эти три точки называются основными цветами (color primaries).

Цвета, лежащие внутри этого треугольника, определяют цветовой охват (gamut).

Ещё важна четвёртая точка, которая называется точкой белого. Она показывает, как будет восприниматься цвет, у которого насыщенность равна 0.

Точка белого для цветовой модели xyY, для которой и была построена диаграмма CIE 1931, имеет координаты ⅓, ⅓. Но в цветовых моделях, используемых в телевидении и фотографии, она имеет другие координаты. Часто для точки белого используется комбинация букв и цифр. Например, Е, С или D65

Кодирование цветного изображения

Сигнал яркости (Luma)

Классическая формула, которая связывает цвета и яркость, имеет вид:

Y=0.299R + 0.587G + 0.114B

Где:

Y — значение яркости,
R — значение красного цвета,
G — значение зелёного цвета,
B — значение синего цвета.

Изначально эта формула использовалась в системе NTSC, но PAL и SECAM используют её для кодирования яркости. Если вы углубитесь в изучение темы, формула для других стандартов (PAL и SECAM) немного некорректно отражает зависимость.

Коэффициенты при R, G, B не взяты с потолка — их можно вывести математически; оставляю читателю эту увлекательную задачу.

Формулу удобно использовать для быстрого преобразования цветного изображения в чёрно-белое. К сожалению, обратный процесс получения цветного изображения из чёрно-белого не такой простой, но ИИ сейчас показывает неплохие результаты.

Сигнал цветности (Chroma)

Чтобы указать цвет, нужно знать его расположение в цветовом пространстве. В аналоговом телевидении используются цветовые пространства YUV и YIQ.

В NTSC можно не использовать цветовое пространство YIQ, а использовать YUV. Особенно это справедливо для получения цвета ретроконсолями.

Для кодирования цвета нужно три значения, но не обязательно это должны быть значения красного, зелёного и синего.

В пространствах YUV и YIQ это яркость, а также разности между синим и яркостью и красным и яркостью.

Чтобы выполнить преобразование из пространства RGB в YUV, используются следующие формулы:

Y=0.299R + 0.587G + 0.114B

U=0.493(B - Y)

V=0.877(R - Y)

Коэффициенты 0.493 и 0.877 были подобраны так, чтобы амплитуда сигнала цветности попадала в определённый интервал.

Диапазон значения R, G, B и Y может быть любым, но обычно это значения [0..1], [0..100] или [0..255].

А где же значения для зелёного цвета? Его можно определить из формулы яркости.

Цветовое пространство YIQ отличается от YUV тем, что оси I и Q — это повёрнутые на угол 33° оси V и U. Поворот на 33° был определён экспериментально таким образом, чтобы ось совпадала с линией оранжево-синих тонов. Эта линия называется skin tone line.

Цветоразностные сигналы хорошо рассмотреть на следующей диаграмме.

Сигнал цветности в полярных координатах
Сигнал цветности в полярных координатах

Угол поворота вектора \theta определяет цветовой оттенок (hue), а его длина — насыщенность (saturation).

Hue=\theta =\arctan\left(\frac{V}{U}\right) Saturation=\sqrt{U^2 + V^2}

Угол \theta лежит в диапазоне [0, 360°], но \arctan(V/U) может быть [-π/2, π/2].

Поэтому для получения правильного \theta в диапазоне [0, 360°] необходимо учитывать квадрант (знаки U и V) и преобразовать результат \arctan, добавляя π или 2π при необходимости.

Зная основы тригонометрии и линейной алгебры, можно вывести коэффициенты в формулах для I и Q. Для этого используют матрицу поворота:

\begin{bmatrix}I\\Q\end{bmatrix} = \begin{bmatrix}\cos 33^\circ &-\sin 33^\circ\\\sin 33^\circ&\phantom{-}\cos 33^\circ\end{bmatrix}\begin{bmatrix}V\\U\end{bmatrix}=\begin{bmatrix}-\sin 33^\circ&\cos 33^\circ\\\cos 33^\circ&\sin 33^\circ\end{bmatrix}\begin{bmatrix}U\\V\end{bmatrix}\approx\begin{bmatrix}-0.54464 & 0.83867 \\0.83867 & 0.54464 \end{bmatrix}\begin{bmatrix} U \\ V \end{bmatrix}

Также можно её записать в более привычной форме системы линейных уравнений:

I=&-0.54464U+0.83867V\\Q=&0.83867U+0.54464V

Зная Y, U и V, можно получить значения R, G, B.

\begin{bmatrix} R \\ G \\ B \end{bmatrix}&=\begin{bmatrix}1 & 0 & 1.13983 \\1 & -0.39465 & -0.58060 \\1 & 2.03211 & 0\end{bmatrix}\begin{bmatrix} Y \\ U \\ V\end{bmatrix}.

Цвет удобно представить на цветовом круге, где точка с координатами U и V имеет цвет RGB в зависимости от Y, которая изменяется от 0 до максимального значения. Т.е. цветовой круг на самом деле цветовой цилиндр, но обычно изображают цветовой круг, фиксируя яркость, так как с двумерным изображением удобнее работать.

Цветовой круг
Цветовой круг

Кодирование яркости

Мы уже рассматривали, что яркость кодируется следующим образом:

Y=0.299R + 0.587G + 0.114B

В случае кодирования сигнала NTSC, R, G и B могут принимать значения от 0 до 100 IRE. Максимальное значение яркости, которое получается по этой формуле, равно 100 IRE. О том, что такое IRE, позже.

Кодирование цветности

Для передачи цветности используются два цветоразностных сигнала, но при NTSC, так же как и при PAL, они упаковываются в один сигнал цветности. Это становится возможным при использовании квадратурно-амплитудной модуляции (QAM) цветоразностных сигналов.

Суть этой модуляции в том, что сначала выполняется амплитудная модуляция двух сигналов, после чего фаза одного смодулированного сигнала сдвигается относительно другого на 90°, а потом они складываются.

S(t) = I (t) \cos (2 \pi f_0 t) + Q (t) \sin (2 \pi f_0 t)

Где I(t) — синфазная составляющая, Q(t) — квадратурная составляющая.

Использование I и Q в этой формуле немного сбивает с толку, так как если I и Q — это цветоразностные сигналы NTSC, то формула имеет вид:

С(t) = I (t) \cos (2 \pi f_{sc} t + 33^\circ\pi/180^\circ) + Q (t) \sin (2 \pi f_{sc} t + 33^\circ\pi/180^\circ)

Если мы передаём цветоразностные сигналы U и V, то V модулирует синфазную несущую, а U — квадратурную несущую.

С(t) = V (t) \cos (2 \pi f_{sc} t) + U (t) \sin (2 \pi f_{sc} t)

Я специально использовал S(t) и C(t), чтобы различать общий случай QAM-модуляции (S(t)) и QAM-модуляцию цветоразностных сигналов (C(t)).

Ранее мы рассматривали, что при кодировании цвета поворот вектора определяет оттенок цвета, а длина вектора — насыщенность. В случае синусоидального сигнала, полученного после квадратурной модуляции, угол — это фаза, а длина вектора — это амплитуда.

Так как цветоразностные сигналы модулировались с использованием одной частоты — при константном значении результатом будет синусоидальный сигнал, а при изменении значений сигналом будет кусочная функция из синусоид с изменяющимися фазами.

Красота квадратурно-амплитудной модуляции заключается в том, что амплитуды двух сигналов превращаются в фазу и амплитуду.

Видеосигнал NTSC

В Советском Союзе использовалась система цветности SECAM; попытки использовать NTSC были только на заре цветного телевидения. Литературу по телевидению, выпущенную в СССР, нужно читать с осторожностью. Русскоязычная терминология в отношении телевизионных сигналов не такая устоявшаяся, как англоязычная. Терминология определяется ГОСТ 21879-88. Я считаю, что англоязычная лучше отражает суть, и тут сложный вопрос, как использовать терминологию, не вводя в заблуждение читателя. Но я думаю, когда вы поймёте суть видеосигналов и прочтёте пару книг, эта проблема исчезнет сама.

Структура композитного сигнала NTSC

Ранее мы получили общее представление о развёртке и кодировании цвета. Перейдём к конкретной имплементации — NTSC.

Композитный сигнал называется композитным, потому что он содержит в себе несколько сигналов:

  • сигнал яркости (luma),

  • сигнал цветности (chroma),

  • сигналы синхронизации (горизонтальной, вертикальной и цветовой).

Уровни сигнала и единицы IRE

Сигнал — это изменение величины во времени, которое передаёт информацию. В зависимости от среды передачи это могут быть различные физические величины.

В NTSC величиной является абстрактная единица IRE. 100 IRE означает максимальную яркость (уровень белого), 7,5 IRE — минимальную яркость (уровень чёрного), а 0 IRE — отсутствие сигнала яркости (Blank Level).

В общем случае значение сигнала может изменяться от -40 IRE до 133 IRE.

Отрицательные значения (-40 IRE) используются для передачи синхронизирующих импульсов. Значения импульса цветной синхронизации могут быть в диапазоне от −20 IRE до 20 IRE.

Значения от 100 IRE до 133 IRE получаются только при передаче цветовой информации.

В случае передачи сигнала с помощью напряжения 140 IRE равно 1В. Соответственно, 1 IRE приблизительно равен 0,713 мВ.

Наглядно IRE можно увидеть при рассмотрении осциллограммы для одной строки CVBS-сигнала NTSC.

Осциллограмма CVBS-сигнала NTSC для одной строки

Чтобы лучше понять видеосигнал NTSC, приведу осциллограмму для одной строки изображения. Скорее всего, многое будет непонятно, но по мере чтения статьи у вас будет приходить понимание, и вы её сможете нарисовать по памяти.

Осциллограмма одной строки NTSC
Осциллограмма одной строки NTSC

Эта осциллограмма важна, так как она наглядно показывает, как представляется строка изображения в виде сигнала. Это особенно полезно для анализа структуры сигнала, проверки таймингов, уровней и фазы цветовой поднесущей. Как правило, анализируют осциллограммы, построенные для тестовых изображений SMPTE Color Bars и EBU Color Bars. SMPTE Color Bars позволяет проверить больше параметров сигнала.

Также привожу осциллограмму в упрощённом виде, без нагромождений для лучшего понимания.

Яркость и цветность

CVBS-сигнал NTSC является суммой яркостного сигнала Y, сигнала цветности С и синхронизирующих сигналов. Но в стандарте NTSC есть ещё уровень Setup, равный 7.5 IRE, который определяет уровень сигнала при передаче чёрного цвета. Поэтому формула будет выглядеть следующим образом:

N(t) = 0.925(Y(t) + V (t) \cos (2 \pi f_{sc} t) + U (t) \sin (2 \pi f_{sc} t)) + 7.5

Или:

N(t) = 0.925(Y(t) + I (t) \cos (2 \pi f_{sc} t + 33^\circ) + Q (t) \sin (2 \pi f_{sc} t + 33^\circ)) + 7.5

Обычно в литературе для NTSC указывается, что используется цветовое пространство YIQ, но на самом деле это может быть YUV в случае equiband encoding. Поворот I и Q на 33° важен для более точной передачи оттенков кожи, но часто для упрощения этим пренебрегают.

В формуле, где используются I и Q, радианы складываются с градусами, что математически не верно, но именно так она приведена в спецификации NTSC.

Оттенок цвета определяется фазовым сдвигом сигнала цветности относительно цветовой поднесущей (например, красный: 103.5°, жёлтый: 167.5°). Опорная фаза для декодирования сигнала цветности задаётся цветовым синхронизирующим импульсом.

Горизонтальный и вертикальный гасящие импульсы

В англоязычной литературе горизонтальный и вертикальный гасящие импульсы называются Horizontal Blanking Interval (HBI) и Vertical Blanking Interval (VBI), что более точно отражает их суть, так как делается упор на интервал, а не на импульс.

Во время VBI электронный луч гасится и перемещается на первую строку кадра или поля, во время HBI электронный луч гасится и перемещается на следующую строку.

Horizontal Blanking Interval часто называют HBLANK, а Vertical Blanking Interval — VBI.

HBI состоит из:

  • передней площадки (front porch),

  • синхронизирующего импульса (sync pulse),

  • задней площадки (back porch).

В случае цветного видеосигнала back porch содержит импульс цветовой синхронизации, но об этом позже.

HBI выглядит следующим образом:

Горизонтальный гасящий импульс (HBI)
Горизонтальный гасящий импульс (HBI)

Или упрощённая осциллограмма, для ясности:

Горизонтальный гасящий импульс. Упрощённая осциллограмма
Горизонтальный гасящий импульс. Упрощённая осциллограмма

VBI имеет более сложную структуру, чем HBI. Он состоит из:

  • уравнивающих импульсов (pre-equalizing and post-equalizing pulse intervals),

  • кадровых синхроимпульсов (serrations),

  • строчных синхроимпульсов (h-sync).

Согласно спецификации, композитный сигнал NTSC использует чересстрочную развёртку. Синхронизирующие схемы телевизора должны корректно работать для чётных и нечётных полей, поэтому перед и после сигнала вертикальной синхронизации передаются выравнивающие импульсы с частотой в два раза больше частоты строк. Так как сигнал вертикальной синхронизации занимает интервал, равный периоду 3 строк, чтобы не сбивались синхронизирующие схемы, в него включают кадровые синхроимпульсы (serrations) тоже с частотой в два раза большей периода одной строки.

VBI выглядит следующим образом:

Вертикальный гасящий импульс (VBI)
Вертикальный гасящий импульс (VBI)

В VBI можно передавать дополнительную цифровую информацию, например, телетекст.

Полное понимание VBI требует более подробного рассмотрения устройства декодера видеосигнала, поэтому ограничимся вышеприведёнными сведениями.

При использовании псевдопрогрессивной развёртки VBI можно упростить, что и делали разработчики бытовых компьютеров и игровых консолей прошлого.

Цветовая поднесущая

Для инженеров, разрабатывавших стандарт NTSC, одной из основных задач было найти способ передачи информации о цвете. Эта задача была решена при помощи амплитудно-квадратурной модуляции (QAM) цветоразностными сигналами несущей частоты, которую называют цветовой поднесущей.

Согласно БСЭ, несущая частота — это частота гармонических колебаний, подвергаемых модуляции сигналами с целью передачи информации. В самих колебаниях с низкой частотой не содержится информации, они лишь «несут» её. Гармонические колебания с несущей частотой называют несущей.

В большинстве источников используется термин цветовая поднесущая. Однако я считаю этот термин некорректным применительно к CVBS, так как CVBS — это базовый сигнал без общей несущей. Поэтому в контексте CVBS, наверное, правильнее говорить «цветовая несущая», тогда как в радиочастотном ТВ-сигнале уместен термин «поднесущая», но я не буду отказываться от общепринятой терминологии.

В NTSC для передачи сигнала цветности используется квадратурно-амплитудная модуляция (QAM), что подразумевает подавление несущей частоты, т.е. для демодуляции сигнала цветности приёмнику необходимо определить эту частоту. Для каждой строки изображения передаётся только опорный сигнал с частотой цветовой поднесущей в виде импульса из 9 гармонических колебаний (от 8 до 10) с фазой, сдвинутой на 180°. Этот импульс в англоязычных источниках называется colorburst.

Частота цветовой поднесущей в стандарте NTSC — 3,579545 МГц.

Импульс цветовой синхронизации

Импульс цветовой синхронизации несёт в себе информацию о частоте и фазе цветовой поднесущей. Он передаётся в каждой строке развёртки, за исключением строк с уравнивающими импульсами и импульсами вертикальной синхронизации. В чёрно-белом телевидении необходимости в нём не было.

Он начинается после 19 периодов поднесущей от начала импульса горизонтальной синхронизации (horizontal reference point). Имеет размах 40 IRE от -20 IRE до 20 IRE.

При использовании чересстрочной развёртки в строке помещается 227,5 периода цветовой поднесущей. Это приводит к тому, что фаза цветовой поднесущей относительно горизонтальной референсной точки меняется на 180° каждую строку.

Горизонтальная опорная точка

Для того, чтобы указать расположение импульсов синхронизации видеосигнала во времени, нужна точка отсчёта. В NTSC она называется горизонтальная опорная точка (horizontal reference point). Она используется как эталон для синхронизации начала каждой строки телевизионного сигнала и определяет момент, от которого отсчитываются все временные параметры в строке, включая синхроимпульсы, colorburst и активную часть видеосигнала.

Ранее на схематической осциллограмме для HBI я её показал. Пусть вас не смущает, что она является линией. В реальности значения сигнала не меняются мгновенно, и фронты сигнала не являются строго вертикальными. Точкой она называется, потому что находится она на фронте, когда он достигнет 50% порога.

Тестирование композитного видеосигнала

Я не рассматривал, как аппаратно кодируется и декодируется видеосигнал, так как в следущей статье мы рассмотрим программную генерацию. А пока лишь немного расскажу, как и при помощи чего проверяют корректность видеосигнала.

Видеосигналы тестируются с использованием телевизионных испытательных таблиц (test patterns). Например, таких как EBU color bars и SMPTE color bars. Вы их видели, когда прерывалась телевизионная передача из-за непредвиденных обстоятельств на телецентре.

Можно, конечно, визуально оценить качество получаемой картинки, но для более глубокого анализа композитного видеосигнала используются осциллограммы и векторограммы. Они дополняют друг друга и позволяют получить полное представление о структуре и качестве сигнала.

Осциллограммы

Осциллограмма показывает амплитуду видеосигнала во временной области. Она используется для анализа таймингов и уровней сигнала, а также наличия различных шумов в сигнале.

С её помощью контролируются уровни синхроимпульсов, уровень «чёрного» (setup), «белого» и амплитуды цветоразностного сигнала, а также длительность импульсов, частота строк, наличие джиттера.

Векторограммы

Векторограмма отображает цветовую информацию сигнала в полярных координатах, показывая фазу и амплитуду цветовой поднесущей. Она используется для анализа цветности и проверки цветового баланса. На ней можно проверить, что у colorburst верная фаза, что у цветных полос настроечной таблицы корректные фазы. Векторограмма позволяет проверить корректность фазы и амплитуды цветности.

Изображение SMPTE color bars и векторограмма для него приведены ниже.

Векторограмма для SMPTE Color Bars
Векторограмма для SMPTE Color Bars
SMPTE Color Bars
SMPTE Color Bars

Линии, которые вы видите на векторограмме, возникают потому, что вектороскоп не гасит луч при переходе от одного цвета к другому.

Так как вектороскоп наглядно отображает фазу и амплитуду сигнала цветности, белый и чёрный цвета на вектороскопе будут отображаться одной и той же точкой в центре векторограммы.

Colorburst and оси I и Q можно отобразить на векторограмме; достаточно в изображении сгенерировать цвета с такой же фазой, как у colorburst, и I и Q ненулевой амплитудой.

Несмотря на то, что я создавал кодировщик NTSC, для проверки работы я использовал тестовое изображение, близкое к EBU Color Bars, которое используется для сигнала PAL.

EBU Color Bars
EBU Color Bars

Заключение

Ну вот и подошла к концу первая статья из серии. Надеюсь, вы не заскучали и узнали что-то новое. Обещаю, следующая статья будет интереснее, так как в ней я расскажу уже о том, как сгенерировать СVBS-сигнал.

В этой статье вы увидели, что аналоговые видеосигналы затрагивают различные дисциплины и являются хорошим примером применения знаний, которые мы получали в школе и институте. Также мы рассмотрели базовые понятия колориметрии, которая применяется при работе с фото- и видеоизображениями.

Для ясности я включал в статью только ту информацию, которая нам понадобится в следующей статье. В ней вы увидите, как применять технологии, используемые в микроконтроллерах, чтобы сгенерировать видеосигнал.

А пока можете углубить свои знания, заглянув в источники, которые я привожу ниже.

Полезные ссылки

Печатные издания

  1. Wyszecki, G., Stiles, W. S. Color Science: Concepts and Methods, Quantitative Data and Formulae. — 2nd ed. — New York: Wiley, 1982. — 950 p.

  2. Colorimetry: Understanding the CIE System / ed. by J. Schanda. — Hoboken, NJ: Wiley-Interscience, 2007. — 459 p.

  3. Benson, K. B., Whitaker, J. C. Television Engineering Handbook: Featuring HDTV Systems. — Rev. ed. — New York: McGraw-Hill, 1992. — 1500 p.

  4. Conrac Corp. Raster Graphics Handbook. 2nd ed. New York: Van Nostrand Reinhold, 1985. 345 p.

  5. Jack, K. Video Demystified: A Handbook for the Digital Engineer. — 5th ed. — Oxford: Newnes, 2005. — 928 p.

  6. Айсберг, Е. Д., Дури, Ж. Цветное телевидение?… Это почти просто! — 2-е изд. — М.: Знание, 1975. — 144 с.

  7. Мамчев, Г. В. Основы радиосвязи и телевидения: учебное пособие. — М.: Горячая линия - Телеком, 2007. — 416 с.

  8. Tektronix 1725 (SN B040000 and Above) PAL/NTSC Vectorscope: Instruction Manual [Электронный ресурс]. — Beaverton, OR: Tektronix, Inc., 1994. — 150 p. — URL: https://download.tek.com/manual/070763504_0.pdf (дата обращения: 06.10.2025).

Стандарты

  1. SMPTE 170M-2004. Television — Composite analog video signal — NTSC for studio applications / Society of Motion Picture and Television Engineers. — White Plains, NY : SMPTE, 2004.

  2. SMPTE EG 27:2004. Supplemental Information for SMPTE 170M and Background on the Development of NTSC Color Standards / Society of Motion Picture and Television Engineers. — White Plains, NY : SMPTE, 2004.

  3. ГОСТ 24375-80. Радиосвязь. Термины и определения. — Введ. 01.01.1982. — М. : Изд-во стандартов, 1980. — 53 с.

  4. ГОСТ 21879-88. Телевидение вещательное. Термины и определения. — Введ. 01.01.1990. — М. : Изд-во стандартов, 1988. — 23 с.

Интернет-ссылки

  1. ICCV 2019 Tutorial: Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision — https://www.eecs.yorku.ca/~mbrown/ICCV19_Tutorial_MSBrown.pdf

  2. Цвет: от шестнадцатеричных кодов до глаза — https://habr.com/ru/articles/353582/

  3. Color: From Hexcodes to Eyeballs — https://jamie-wong.com/post/color/

  4. Аддитивные цветовые пространства в колориметрии — https://habr.com/ru/articles/332776/

  5. Квадратурная модуляция — https://radioprog.ru/post/415

  6. Understanding I/Q Signals and Quadrature Modulation — https://www.allaboutcircuits.com/textbook/radio-frequency-analysis-design/

  7. Video Basics — https://www.analog.com/en/resources/technical-articles/basics-of-analog-video.html

  8. Composite Video Signals (CVBS) — https://www.ni.com/docs/en-US/bundle/video-measurement-suite/page/nivms/signals_cvbs.html

  9. Главы из книги Raster Graphics Handbook — https://ece-classes.usc.edu/ee459/library/documents/RS170.pdf

  10. How to interpret this NTSC color waveform? — https://electronics.stackexchange.com/questions/428353/how-to-interpret-this-ntsc-color-waveform

  11. Composite Video Signals (CVBS) — https://www.ni.com/docs/en-US/bundle/video-measurement-suite/page/nivms/signals_cvbs.html

  12. Standard Color Bars — https://www.mivs.com/standard-color-bars/

© 2025 ООО «МТ ФИНАНС»

Комментарии (23)


  1. Oangai
    04.11.2025 10:12

    всё ладно, и подробно очень, вот только вопрос: зачем для русскоязычной аудитории заостряться именно на NTSC, не лучше ли было тогда сразу PAL разобрать, как более распространённую везде кроме штатов? Или это перевод без указания автора?

    P.S. а вообще, большинство сохранившихся аналоговых телевизоров кроме совсем уж древних имеют вход SCART на который можно сразу RGB подавать, для потенциальных самодельщиков всяко удобнее


    1. artyomsoft Автор
      04.11.2025 10:12

      Многие современные новоделы игровых приставок используют NTSC. NTSC немного проще для понимания. Целью статьи было донести базовую информацию для генерации композитного видеосигнала.


  1. serafims
    04.11.2025 10:12

    Эх, как тут не хватает анимаций квадратурной модуляции.. Тут момент интересный в том, что цветное ТВ это надстройка над ЧБ, и логично было бы сначала сформировать чб сигнал.


    1. artyomsoft Автор
      04.11.2025 10:12

      У меня тоже была мысль изложить сначала ч/б сигнал. Но так получилась бы статья еще больше. Мне и так пришлось ее разбить на две. А так бы было бы 4.


      1. ChilliWil
        04.11.2025 10:12

        Возможно стоило бы в начале дать очень краткое описание Ч/Б сигнала (буквально один абзац: это сигнал яркости + синхроимпульсы), а потом уже переходить к тому, как на него навешивается цвет - не сильно увеличило объем, но улучшило бы структуру)


        1. artyomsoft Автор
          04.11.2025 10:12

          Спасибо. Я подумаю над этим


  1. ChilliWil
    04.11.2025 10:12

    Какой же гениальный хак придумали инженеры, чтобы впихнуть цветной сигнал в полосу черно-белого, да еще и с обратной совместимостью. По сути спрятали информацию о цвете в фазе и амплитуде высокочастотной поднесущей

    Это просто красиво


  1. VM1989
    04.11.2025 10:12

    их можно вывести математически; оставляю читателю эту увлекательную задачу.

    "Я нашёл этому поистине чудесное доказательство, но поля книги слишком узки для него." Пьер Ферма


  1. aol-nnov
    04.11.2025 10:12

    Лучик света в тёмном царстве иишных статей и статей-твитов... Автор, пожалуйста, не бросай это дело!


  1. sappience
    04.11.2025 10:12

    Схема развёртки

    У вас что, нейросеть рисовала схему развертки? Почему стрелочки изображающие движение луча двунаправленные? Почему строки нечетного поля и четного поля совпадают? И почему на нечетном поле последняя строка заканчивается на середине, а на четном первая начинается с середины?


    1. artyomsoft Автор
      04.11.2025 10:12

      Спасибо за замечания. Нет. Рисовал сам. Сейчас перепроверю.


    1. artyomsoft Автор
      04.11.2025 10:12

      Стрелочки не двунаправленные, это две стрелочки, одна для прямого другая для обратного хода луча. По поводу начала на середине и окончании на середине я еще раз перепроверю, но вроде так и должно быть. Смещения строк исправлю.


      1. sappience
        04.11.2025 10:12

        Ага, со стрелочками понял. Но выглядят как двунаправленные при беглом взгляде. А со смещением на полстроки это же во временной диаграмме только. У одного полукадра строки по времени смещены на половину периода строчной развертки чтобы точно между строками второго полукадра попадать, но они все равно начинаются с левой границы.


        1. sappience
          04.11.2025 10:12

          P.S. Я был не прав. Для нечетного числа строк в кадре (NTSC 525, PAL/SECAM 625), полукадры, если мы хотим иметь кадровую развертку с постоянной частотой, будут иметь не целое число строк. Один действительно будет обрываться на середине горизонтального хода луча. А делать кадровый генератор у которого период колеблется (то 262 строки, то 263) на аналоговой схемотехнике сложнее. А главное, придется как-то маркировать полукадры, который из них четный, а который нечетный. А так все автоматически получается.


          1. 100h
            04.11.2025 10:12

            А вот и оригинальная иллюстрация из 1947 года с разъяснением чересстрочной развертки.


            1. artyomsoft Автор
              04.11.2025 10:12

              Спасибо


          1. artyomsoft Автор
            04.11.2025 10:12

            Мы оба были неправы, но вместе мы разобрались). Исправил рисунок для развертки в статье.


  1. Gudd-Head
    04.11.2025 10:12

    Где I(t) — синфазная составляющая, Q(t) — квадратурная составляющая.

    Везде попадалось I*sin + Q*cos


    1. artyomsoft Автор
      04.11.2025 10:12

      Я тоже так видел. Но I и Q это же функции от времени. Или я не так понимаю?


  1. 100h
    04.11.2025 10:12

    Отличная статья, аж олдскулы свело.
    Я бы добавил где-нибудь в начале параграфа "Видеосигнал NTSC" пару важных, на мой взгляд, абзацев.
    1. Почему информация о цвете была помещена в стандартный к тому времени сигнал ч/б телевидения именно на такой поднесущей:
    Специалисты компании RCA (разработчик NTSC) обнаружили, что если информацией о цвете, имеющей спектр, схожий со пектром сигнала яркости, модулировать поднесущую, частота которой является полуцелым кратным частоты строк, то максимумы спектра модулированной поднесущей будут точно располагаться между максимумами спектра сигнала яркости, и взаимные помехи будут сведены к минимуму. Спектр видеосигнала имеет "гребенчатую" структуру с периодом максимумов, равным частоте строк.
    Полностью устранить их нельзя, однако инерционность люминофора кинескопа и человеческого глаза сведут кажущиеся помехи к минимуму.
    Так же было желательно иметь частоту цветовой поднесущей кратной промежуточной частоте зукового канала (в США это было 4,5 МГц + амплитудная модуляция).
    Таким образом, частота строк в цветном ТВ с 15 750 Гц была снижена до (1/286) 4 500 000 Гц = 15 734,265734266 Гц, частота кадров с 60Гц до 59.94 Гц. Ну а поднесущая цвета стала
    (4 500 000 / 286)
    * (455 / 2) = 3 579 545,(45) Гц.


    1. 100h
      04.11.2025 10:12

      И второе:
      Полоса частот сигналов цетности может быть гораздо уже яркостных сигналов, т.к. разрешающая способность глаза по цвету в разы хуже, чем по яркости (палочки/колбочки). Поэтому детали в цветоразностных сигналах можно отфильтровать и относительно узкополосные результаты поместить куда повыше в спектре сигнала яркости. На ч/б телевизоре будет виден мелкий муар, который из-за несовершенства тогдашних кинескопов будет малозаметен.


  1. 100h
    04.11.2025 10:12

    И еще добавлю -
    а) Есть книжка по НТСЦ, выпущенная в 1950е годы, автор - один из разработчиков НТСЦ.
    https://www.worldradiohistory.com/BOOKSHELF-ARH/Technology/Technology-General/Color-Television-Simplified-Theory-Philco-1956.pdf
    и её русский перевод тех же лет - Дональд Г. Финк, Стандарт цветного телевидения. 1956г.
    https://ir.ozone.ru/s3/multimedia-9/wc1000/6387538857.jpg
    Перевод сделан задолго до появления ПАЛ и СЕКАМ и описывает именно оригинальную систему НТСЦ.
    б) Есть программа hacktv ( https://codeberg.org/fsphil/hacktv ), позволяющая генерировать цветной ТВ сигнал в разных стандартах, используя HackRF.

    Автору - с нетерпением жду следующих статей.
    У меня есть Hi-Fi S-VHS NTSC-only видак Панасоник, приходится для настройки и проверки использовать hacktv, но качество видео, прошедшего через радиоканал, далеко от эталона..

    Может, ваша разработка поможет.


  1. evgen_b
    04.11.2025 10:12

    В самих колебаниях с низкой частотой не содержится информации, они лишь «несут» её.

    Наверное, все же с высокой частотой. А она модулируется сигналом низкой частоты, содержащей информацию (AM-приемник).

    Точкой она называется, потому что находится она на фронте, когда он достигнет 50% порога.

    Возможно, в данном случае лучше добавлять "на отрицательном фронте" (или негативном), чтобы было понятнее, что сигнал спадает, идет вниз.

    А вообще интереснее было бы более подробно увидеть в статье, почему была выбрана именно QAM-модуляция, т.е., как полагаю, она удобно "аппаратно" накладывается на круговое представление цвета на плоскости.

    А еще было бы интересно увидеть продолжение про кодирование PAL на МК, особенно какие недостатки NTSC оно устранило. Про выбор поднесущей уже есть отличный комментарий.