硬體測試

簡短描述

檔案: \examples\Processing\DebuggingAndTest\HardwareTest\HardwareTest.va

預設平台: mE5-MA-VCL

簡短說明

一個關於 DMA、RAM、GPIO、觸發器及 LED 的硬體自檢範例。 此範例廣泛運用了參數函式庫中的運算子。

範例程式「Hardware Test」會執行硬體自我測試。

該小程式包含以下功能:

  • DMA 效能測試:針對不同記憶體容量與中斷速率,測試各種影像尺寸
  • 記憶體測試:檢查錯誤與處理狀況
  • 攝影機:檢查攝影機埠的影像擷取狀況
  • 相機觸發器:向相機傳送觸發訊號
  • GPIO:監控 GPIO 並設定 GPIO 輸出
  • 事件測試:產生軟體回呼事件
  • 監控:FPGA 溫度、電源、PoCL 等(請參閱 BoardStatus)

下圖顯示了此小程式的功能模組。

Applet 硬體測試的方塊圖

圖 283. 小程式硬體測試的方塊圖


VisualApplets 的實作分為兩個程序。 Process0 包含所有影像處理部分,即 DMA 測試、RAM 測試及相機擷取。 Process1 則包含那些與正在執行的擷取作業無關的部分。 由於不含 DMA 運算子的程序會在 Applet 載入時立即啟動,因此此處的函式可獨立於 擷取作業而使用。 更多資訊請參閱「不含 DMA 的程序/觸發程序」。

以下兩張螢幕截圖顯示了 Process0 和 Process1。

硬體測試流程0

圖 284. 硬體測試流程 0


硬體測試流程 1

圖 285. 硬體測試流程 1


此小程式透過大量運用參數函式庫中的運算子來實作,以方便使用者操作。 H-Box 實作包含功能性組件。 參數列於 H-Box 參數的屬性中,以便分開檢視。 當小程式用於例如 microDisplay 時,此設計便十分實用,因為如 下一張螢幕截圖所示,僅會列出易於使用的參數。

微顯示器中「Applet Hardware Test」對「參數轉換」與「參照」的運用

圖 286. Applet 硬體測試中,microDisplay 對「參數轉換」與「參數參照」的應用


此小程式的實作相當直觀,只要研究 VA 檔案便能輕鬆理解。 不過,我們將深入探討其中一些參數轉換與參照,以了解其用法。

主要影像處理部分的實作

主要的影像處理部分包含 RAM 測試、DMA 效能測試以及相機影像擷取。 此小程式僅允許在 DMA 通道上同時輸出其中一種模式。 因此,多個 SourceSelector 運算子。 為避免透過參數化來指定正確的輸入索引,我們使用了一個 EnumParamTranslator 運算子,以簡化使用方式。

用於 RAM 測試、DMA 效能測試及相機影像擷取的 Applet 硬體測試實作

圖 287. 用於 RAM 測試、DMA 效能測試及相機影像擷取的 Applet 硬體測試實作


以下將詳細說明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 模組的參數值。

DMA 效能圖樣產生器的實作

H-Box GeneratorDMAPerformance 包含圖案產生器,以及用於控制輸出幀率的影像閥。 圖案的產生非常簡單,只需使用空白影像產生器,並配合像素計數器和影像計數器,即可產生滾動式 對角線圖案。

該閥門由週期產生器操作員控制 產生。 該產生器的單位以「ticks」為單位。 由於我們希望透過時間基準來指定幀率,因此使用 translate 運算子 FloatParamTranslator。 因此,我們使用此運算子將每秒幀數轉換為 tick。 以下螢幕截圖顯示了其實作方式。

使用 FloatParamTranslator 將每秒幀數轉換為時鐘週期

圖 288. FloatParamTranslator 將每秒幀數轉換為時鐘週期


在範例 HardwareTest 中使用運算子設定寬度與高度 IntParamTranslator

針對影像的寬度和高度,亦採用與前幾節所示相同的處理程序。 在這種情況下,我們可以使用一個運算子 IntParamTranslator。 在此,我們可以直接將值轉發至設計中的兩個模組。 請注意參數DisplayName和DisplayHierarchy 的指定值。

使用 IntParamTranslator 輕鬆設定 Applet 的寬度和高度

圖 289. IntParamTranslator 來輕鬆設定 Applet 的寬度和高度