| 简短说明 | |
|---|---|
|
文件: \examples\Processing\DebuggingAndTest\HardwareTest\HardwareTest.va |
![]() |
|
默认平台: mE5-MA-VCL |
|
|
简要说明 这是一个用于对 DMA、RAM、GPIO、触发和 LED 进行硬件自检的示例。 该示例大量使用了 parameters 库的算子。 |
|
Hardware Test 示例用于执行硬件自检。
该 applet 包含以下功能:
- DMA 性能测试:针对不同内存大小和中断率的不同图像尺寸
- RAM 测试:检查错误和处理情况
- 相机:检查相机端口图像采集
- 相机触发:向相机发送触发信号
- GPIO:监控 GPI 并设置 GPO
- 事件测试:生成软件回调事件
- 监控:FPGA 温度、电源、PoCL 等(参见 BoardStatus)
下图显示了该 applet 的功能块。
VisualApplets 实现分为两个进程。 Process0 包含所有图像处理部分,即 DMA 测试、RAM 测试和相机采集。 而 Process1 包含与正在运行的采集无关的部分。 由于没有 DMA 算子的进程会在加载 applet 时立即启动,因此这里的函数可以在独立于采集的情况下使用。 有关详细信息,请参见 “无 DMA 的进程 / 触发进程”。
以下两个截屏展示了 Process0 和 Process1。
为了便于使用该 applet,其实现大量使用了 parameters 库中的算子。 H-Box 实现包括各个功能部分。 参数在 H-Box Parameters 的 Property 中列出,以便进行独立查看。 当在例如 microDisplay 中使用该 applet 时,这非常有用,因为如下一个截屏所示,只会列出易于使用的参数。
该 applet 的实现非常直观,通过研究 VA 文件可以轻松理解。 不过,我们将仔细研究一些参数转换和引用,以了解其用法。
主要的图像处理部分包含 RAM 测试、DMA 性能测试和相机采集。 该 applet 仅允许同时在 DMA 通道上输出其中一种模式。 因此,使用了多个 SourceSelector 算子。 为了避免指定正确输入索引的繁琐参数化过程,我们使用 EnumParamTranslator 算子来实现简便操作。
接下来,我们将详细介绍 TranslateOutputSelect 的参数值。
首先,需要定义枚举值。
"DMA_Performance" = 0x001; "Camera" = 0x002; "RAM0_Difference" = 0x000; "RAM0_Errors" = 0x100; "RAM1_Difference" = 0x010; "RAM1_Errors" = 0x110; "RAM2_Difference" = 0x020; "RAM2_Errors" = 0x120; "RAM3_Difference" = 0x030; "RAM3_Errors" = 0x130;
正如您所看到的,枚举值被定义为十六进制值。 这使得能够轻松地将其分发到三个 SourceSelector 模块。 低四位用于模块 TestMode.SelectSource,第 4 到 7 位用于 RAMTest/SelectRAM.SelectSource,第 8 到 11 位用于 RAMTest/SelectRAMOutputMode/EnableBitpattern.SelectSource。 这极大地简化了参数 WriteAction 和 ReadAction 的实现。
随后,转换后的值可与枚举值结合使用。 更改该值将自动更改 SourceSelector 模块的参数值。
H-Box GeneratorDMAPerformance 包含图案生成器以及用于控制输出帧率的图像阀。 使用空白图像生成器以及像素和图像 Counter 可以非常简单地生成图案,从而产生滚动对角线图案。
该阀由周期生成器算子 Generate 控制。 生成器的单位以 ticks(时钟周期)给出。 由于我们希望指定带有时基的帧率,因此我们使用转换算子 FloatParamTranslator。 因此,我们使用该算子将每秒帧数转换为 ticks。 以下截屏显示了具体实现。
在 HardwareTest 示例中使用算子 IntParamTranslator 设置宽度和高度
图像宽度和高度的操作步骤与前面章节中所示相同。 在这种情况下,我们可以使用算子 IntParamTranslator。 在这里,我们可以将这些值直接转发到设计中的两个模块。 请注意参数 DisplayName 和 DisplayHierarchy 的给定值。






上一页

