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