В этом примере показано, как взаимодействовать с пакетными потоками пикселей, такими как из источников DMA и Camera Link ®, используя блок Pixel Stream FIFO.
Система DMACameraSourceHDL.slx показана ниже.
Существует два потока входа пикселей - источник DMA и источник Ссылки Camera. Входные данные для обоих источников загружаются из .mat
файл, в InitFcn
коллбэк. Источник DMA моделирует несмежный поток данных, поступающих из памяти вне чипа. Пиксели приходят короткими пакетами случайной длины со случайными погрешностями между пакетами. Это может происходить, когда существует конфликт на источнике DMA, и поэтому невозможно непрерывно потоковывать пиксели из памяти вне чипа. Источник Camera Link моделирует случай, когда камера транслирует изображение меньшего разрешения, чем максимально допустимое пиксельным временем, и поэтому оставит регулярные погрешности между допустимыми пикселями. Этот интервал позволяет осуществлять потоковую передачу нескольких изображений разрешения с использованием общих часов посредством стробирования validIn.
Источник Camera Link моделирует входящий видеопоток с датчика. Источник DMA моделирует видеопоток из буфера системы координат, в котором предыдущие данные системы координат были обработаны в порядок для создания альфа-канала, что позволяет смешивать предыдущие данные системы координат с текущим потоком.
Подсистема оверлея Pixel Stream показана на схеме ниже. Можно сгенерировать HDL-код из этой подсистемы.
В модели есть четыре основных этапа обработки - буферизация входных данных для удаления поломанности, обнаружение ребра и наложение на поток Camera Link, выравнивание пиксельных потоков и альфа-смешение потока DMA на поток Camera Link.
Блоки Pixel Stream FIFO буферизуют входные данные по мере их потоковой передачи в модель. Pixel Stream FIFO является маскированной подсистемой. Глядя на Pixel Stream FIFO, мы видим, что он состоит из контроллера памяти, счетчиков чтения и записи и двух ОЗУ. Одна ОЗУ сохраняет входящий поток пикселей, а другая сохраняет поток входного сигнала управления. После того, как полная линия была буферизирована в ОЗУ, линия выводится постоянно, удаляя любое лопнувшее поведение, наблюдаемое на входе.
Эта форма волны иллюстрирует различие в пиксельных сигналах управления после Pixel Stream FIFO. Область входа valid
сигнал, DMA_ControlIn(5)
, показывает короткие пакеты допустимых пикселей, в то время как выходной valid
, DMA_ctrlClean(5)
, показывает непрерывную линию допустимых пикселей. Общее количество циклов в каждой линии, показанное временем между hStart
утверждения остаются прежними.
Чтобы дополнительно дифференцировать потоки пикселей, поток Ссылки Camera имеет секцию обнаружения ребра и наложения. Поток пикселей сначала предварительно обрабатывается блоком Belateral Filter. Этот блок сглаживает изображение при сохранении ребер, и поэтому он является хорошим выбором для подавления шума перед обнаружением ребра. Блок Edge Detector обнаруживает ребра с помощью метода Собеля. Затем ребра утончают с помощью операции [2x2] эрозии. Утонченное краевое изображение накладывается на исходное изображение Camera Link.
Теперь потоки Camera Link и DMA-пикселей должны быть выровнены для расчета алгоритмической задержки в пути данных. Выравнивание потоков пикселей просто с помощью блока Pixel Stream Aligner.
Входной поток DMA является вектором [1x4], в то время как вход Camera Link является вектором [1x3]. Дополнительный столбец во входе DMA используется для хранения информации альфа-канала. Альфа-канал представляет величину, на которую каждый из пикселей из источника DMA должен быть смешан с входящим потоком Camera Link.
Выходной видеопоток показывает поток DMA альфа, смешанный на вход Ссылка. Пурпурный цветной оверлей указывает на ребра, обнаруженную во входящем потоке Camera Ссылки.
Чтобы проверить и сгенерировать HDL-код, на который ссылаются в этом примере, необходимо иметь лицензию HDL- Coder™.
Чтобы сгенерировать HDL-код, используйте следующую команду:
makehdl('DMACameraSourceHDL/Pixel Stream Overlay');
Чтобы сгенерировать испытательный стенд HDL, используйте следующую команду:
makehdltb('DMACameraSourceHDL/Pixel Stream Overlay');