Протоколы потокового видео имеют два интервала гашения: horizontal и vertical. Горизонтальный интервал гашения является периодом неактивных циклов между концом одной линии и начало следующей строки. Вертикальный интервал обратного хода луча является периодом неактивных линий между концом системы координат и начало следующей системы координат.
В этой схеме системы координат синие заштрихованные области налево и право на активную систему координат указывают на горизонтальный интервал гашения. Оранжевые заштрихованные области выше и ниже активной системы координат указывают на вертикальный интервал обратного хода луча.
В блоке Frame To Pixels горизонтальный интервал гашения равен Total pixels per line – Active pixels per line или, эквивалентно, Front porch + Back porch. Вертикальный интервал обратного хода луча равен Total video lines – Active video lines или, эквивалентно, Starting active line + Ending active line – Active video lines.
Например, блок Frame To Pixels, параметры которого показывают в этом изображении, имеет горизонтальный интервал гашения 140 пикселей и вертикальный интервал обратного хода луча 80 линий.
Формат потокового видео должен иметь достаточно длинный интервал гашения так, чтобы операция на предыдущей линии или системе координат завершилась перед следующей строкой или системой координат запускается. Несоответствующий горизонтальный или вертикальный интервал обратного хода луча приводит к поврежденным выходным системам координат. Стандартные форматы потокового видео используют горизонтальный интервал гашения приблизительно 25% ширины линии. Этот интервал намного больше, чем задержка типичной операции. Однако, когда вы используете пользовательский формат видео, необходимо включать интервалы гашения, которые вмещают продолжительность операций в проекте.
В этих схемах формы волны главный сигнал показывает состояние пиксельного потока для двух линий системы координат. Заштрихованная область представляет горизонтальный интервал гашения между линиями. Нижний сигнал показывает состояние блока, выполняющего операцию на пиксельном потоке. Занятое состояние указывает, когда блок обрабатывает линию, и состояние ожидания указывает, когда блок доступен, чтобы начать работать над новой строкой. Первая пара сигналов показывает сценарий, где блок закончил работать над первой активной линией, прежде чем вторая линия начнется. Этот интервал гашения достаточно длинен, чтобы гарантировать правильные выходные системы координат, потому что блок доступен, чтобы запуститься, работают над второй линией, когда это прибывает. Вторая пара сигналов показывает сценарий, где блок все еще работает над первой активной линией, когда вторая линия начинается. Выход блока повреждается во втором случае, потому что блок пропускает начало второй линии.
Время, которое операция занимает, чтобы завершиться после конца линии, часто зависит от размера ядра операции. Например, алгоритмы, которые используют буферы линии и применяют дополнительные пиксели к ребру системы координат, требуют, по крайней мере, циклов Kw между линиями, где Kw является шириной ядра. Алгоритм может также иметь конвейерные задержки от операции ядра после буфера. Эти задержки могут быть связаны или не связаны с размером ядра, и могут быть больше или меньшими, чем задержки буфера линии. Время вычислений каждой операции зависит от буферной конвейеризации линии и от конвейеризации операции ядра. Интервал гашения должен быть достаточно длинным, чтобы вместить дольше этих двух задержек. Когда вы используете несколько блоков в цепи обработки, интервал гашения должен снабдить блок самой длинной задержкой.
Рекомендуемый минимальный горизонтальный интервал гашения 2×Kw при использовании дополнения или 12 циклов, когда вы устанавливаете параметр Padding method на None
. Этот интервал включает некоторое поле в течение более длительных времен вычислений ядра сверху задержки буфера линии.
Рекомендуемый вертикальный интервал обратного хода луча является, по крайней мере, высотой ядра, линий Kh. Буфер линии требует этого интервала, использует ли операция дополнение.
Когда интервал гашения слишком мал, вы можете видеть:
Пустые выходные системы координат
Частичные выходные системы координат
Поврежденные пиксельные потоковые шаблоны управляющего сигнала (например, пропуская vEnd
или hEnd
сигналы или дублирующийся End
или Start
сигналы)
То, что алгоритм работает с непрерывными допустимыми входными пикселями на каждой линии, но не, когда разрывы существуют между допустимыми пикселями в линии
То, что алгоритм работает в Simulink®, но перестал работать в симуляции HDL
Аппаратные настройки канала связи модели библиотечных блоков Vision HDL Toolbox™ как задержка, примененная при выходе. В соответствующих реализациях HDL настройки канала связи распределяются на вычислении. Это различие означает, что для данного цикла, блок может быть в занятом состоянии в симуляции HDL, но казаться неактивным в Simulink. Когда время гашения обратного хода слишком коротко, это различие может заставить сгенерированный испытательный стенд HDL показывать несоответствия между Simulink и сигналами HDL, особенно на сигналах элемента управления выводом.
Если вы видите какой-либо из этих признаков, увеличиваете ваши горизонтальные и вертикальные интервалы обратного хода луча до 25% активных размерностей системы координат и повторно выполняете симуляцию. Если этот шаг подтверждает, что также маленький интервал гашения вызывает ваши признаки, можно точно настроить интервалы.
Один способ диагностировать проблемы интервала гашения в Simulink состоит в том, чтобы использовать блок Measure Timing, чтобы наблюдать размерности пиксельного потока до и после вашей операции. Несоответствующие интервалы гашения заставляют блок повреждать управляющие сигналы. В этих случаях выходные системы координат показывают различные размерности, чем входные кадры.
Эта модель показывает блок Image Filter, сконфигурированный с 12 12, ядро фильтра и дополнение ребра включили. Пиксельный потоковый формат является пользовательским форматом, который имеет только 8 горизонтальных пикселей очищения, как показано блоком Measure Timing на входном потоке. Поскольку горизонтальный интервал гашения меньше, чем ширина ядра, выходная система координат является пробелом. Блок Measure Timing на выходе фильтра показывает повреждение формата.
Можно также видеть повреждение путем рассмотрения сигналов элемента управления выводом в приложении Logic Analyzer. Форма волны показывает сигналы ввода и вывода блока Image Filter. Красные стрелки указывают на недостающий hStart
сигналы и различный шаблон на выходе valid
сигнал от блока.
Эта модель показывает блок Edge Detector, сконфигурированный, чтобы использовать 3х3 ядро фильтра Sobel и с включенным дополнением ребра. Этот пиксельный потоковый формат имеет только два горизонтальных пикселя очищения, как показано блоком Measure Timing на входном потоке. В этом случае выходная система координат включает только каждую вторую линию. Блок Measure Timing на выходе фильтра показывает повреждение формата.
Можно также видеть повреждение путем рассмотрения сигналов элемента управления выводом в приложении Logic Analyzer. Форма волны показывает сигналы ввода и вывода блока Edge Detector. Красный круг указывает на недостающий hStart
и hEnd
сигналы и Красная стрела указывают на различный шаблон на выходе valid
сигнал от блока.
Если вы изменяете формат ввода, чтобы иметь горизонтальный интервал гашения 3 пикселей, эта модель возвращает правильные выходные системы координат в Simulink. Однако, когда вы запускаете сгенерированный испытательный стенд HDL, несоответствия отчетов испытательного стенда между сигналами, полученными в Simulink и поведении сигнала в HDL. Это изображение журнала испытательного стенда подсвечивает несоответствие в выходе hEnd
и vEnd
сигналы.
Эта форма волны от симуляции испытательного стенда HDL показывает что hEnd
и vEnd
сигналы в конце первой системы координат отсутствуют. Синими сигналами является ожидаемый выход, как получено от симуляции Simulink. Красными сигналами является выход алгоритма в симуляции HDL. Красные стрелки указывают, где ожидаемые импульсы управляющего сигнала отсутствуют.
Чтобы зафиксировать модель Image Filter и модель Edge Detector, установите горизонтальный интервал гашения на, по крайней мере, 2×Kw пиксели, где Kw является шириной ядра фильтра. Для модели Image Filter, установленной это значение по крайней мере к 24 пикселям. Для модели Edge Detector, установленной это значение по крайней мере к 8 пикселям.
Frame To Pixels | Measure Timing