主要内容

使用像素流FIFO块缓冲突发数据

这个例子展示了如何使用像素流FIFO块与突发像素流接口,例如那些来自DMA和Camera Link®源的像素流。

概述

DMACameraSourceHDL.slx系统如下所示。

有两个像素输入流-DMA源和摄像头链接源。两个源的输入数据都是从.mat文件,在InitFcn回调。DMA源模拟从芯片外存储器到达的不连续数据流。像素以随机长度的短脉冲到达,脉冲之间有随机间隔。当DMA源上存在争用时,可能会发生这种情况,因此不可能从芯片外内存连续流像素。Camera Link源模拟了当相机流的图像的分辨率低于像素时钟允许的最大分辨率时的情况,因此将在有效像素之间留下规则的间隙。这种间隔允许使用一个通用时钟,通过validIn的频闪来传输多个分辨率的图像。

摄像机链路源模拟从传感器传入的视频流。DMA源对一个帧缓冲区中的视频流进行建模,在该帧缓冲区中,先前的帧数据已被处理以产生alpha通道,从而允许将先前的帧数据与当前流混合。

像素流叠加子系统如下图所示。您可以从这个子系统生成HDL代码。

在模型中有四个主要的处理阶段-缓冲输入数据以消除突发、边缘检测和覆盖在Camera Link流上、像素流对齐和DMA流与Camera Link流的alpha混合。

像素流缓冲

像素流FIFO块缓冲输入数据,因为它是流进模型。像素流FIFO是一个被屏蔽的子系统。看看像素流FIFO,我们可以看到它由一个内存控制器,读和写计数器和两个ram组成。一个RAM存储输入像素流,另一个存储输入控制信号流。一旦在RAM中缓冲了一整行,该行就会连续输出,删除输入时看到的任何突发行为。

这个波形说明了像素流FIFO后的像素控制信号的差异。输入有效的信号DMA_控制(5),显示有效像素的短脉冲,而输出有效的DMA_ctrlClean(5),显示有效像素的连续线。每一行的总周期,用间隔时间表示hStart断言保持不变。

摄像头链路流的边缘检测和覆盖

为了进一步区分像素流,Camera Link流具有边缘检测和覆盖部分。首先通过双边滤波块对像素流进行预处理。该分块在保持边缘的同时使图像平滑,是在边缘检测之前抑制噪声的一种很好的选择。边缘检测器块使用Sobel方法检测边缘。然后使用[2x2]侵蚀操作使边缘变薄。变薄的边缘图像叠加到原始的Camera Link图像上。

像素流对齐

摄像机链路和DMA像素流现在必须对齐,以考虑数据路径中的算法延迟。使用像素流对齐器块对齐像素流非常简单。

α混合

DMA输入流是一个[1x4]向量,而Camera Link输入流是一个[1x3]向量。DMA输入中的额外列用于存储alpha通道信息。alpha通道表示DMA源的每个像素应该与传入的Camera Link流混合的数量。

仿真结果

输出视频流显示混合到相机链接输入的DMA流alpha。洋红色覆盖表示在传入相机链接流中检测到的边缘。

生成HDL代码并验证其行为

要检查和生成本例中引用的HDL代码,您必须具有HDL Coder™许可证。

要生成HDL代码,使用以下命令:

makehdl (DMACameraSourceHDL /像素流叠加的);

要生成一个HDL测试台,使用以下命令:

makehdltb(DMACameraSourceHDL /像素流叠加的);