| 簡短描述 | |
|---|---|
|
檔案: \examples\Processing\DebuggingAndTest\HardwareTest\HardwareTest.va |
![]() |
|
預設平台: mE5-MA-VCL |
|
|
簡短說明 一個關於 DMA、RAM、GPIO、觸發器及 LED 的硬體自檢範例。 此範例廣泛運用了參數函式庫中的運算子。 |
|
範例程式「Hardware Test」會執行硬體自我測試。
該小程式包含以下功能:
- DMA 效能測試:針對不同記憶體容量與中斷速率,測試各種影像尺寸
- 記憶體測試:檢查錯誤與處理狀況
- 攝影機:檢查攝影機埠的影像擷取狀況
- 相機觸發器:向相機傳送觸發訊號
- GPIO:監控 GPIO 並設定 GPIO 輸出
- 事件測試:產生軟體回呼事件
- 監控:FPGA 溫度、電源、PoCL 等(請參閱 BoardStatus)
下圖顯示了此小程式的功能模組。
VisualApplets 的實作分為兩個程序。 Process0 包含所有影像處理部分,即 DMA 測試、RAM 測試及相機擷取。 Process1 則包含那些與正在執行的擷取作業無關的部分。 由於不含 DMA 運算子的程序會在 Applet 載入時立即啟動,因此此處的函式可獨立於 擷取作業而使用。 更多資訊請參閱「不含 DMA 的程序/觸發程序」。
以下兩張螢幕截圖顯示了 Process0 和 Process1。
此小程式透過大量運用參數函式庫中的運算子來實作,以方便使用者操作。 H-Box 實作包含功能性組件。 參數列於 H-Box 參數的屬性中,以便分開檢視。 當小程式用於例如 microDisplay 時,此設計便十分實用,因為如 下一張螢幕截圖所示,僅會列出易於使用的參數。
此小程式的實作相當直觀,只要研究 VA 檔案便能輕鬆理解。 不過,我們將深入探討其中一些參數轉換與參照,以了解其用法。
主要的影像處理部分包含 RAM 測試、DMA 效能測試以及相機影像擷取。 此小程式僅允許在 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 包含圖案產生器,以及用於控制輸出幀率的影像閥。 圖案的產生非常簡單,只需使用空白影像產生器,並配合像素計數器和影像計數器,即可產生滾動式 對角線圖案。
該閥門由週期產生器操作員控制 產生。 該產生器的單位以「ticks」為單位。 由於我們希望透過時間基準來指定幀率,因此使用 translate 運算子 FloatParamTranslator。 因此,我們使用此運算子將每秒幀數轉換為 tick。 以下螢幕截圖顯示了其實作方式。
在範例 HardwareTest 中使用運算子設定寬度與高度 IntParamTranslator
針對影像的寬度和高度,亦採用與前幾節所示相同的處理程序。 在這種情況下,我們可以使用一個運算子 IntParamTranslator。 在此,我們可以直接將值轉發至設計中的兩個模組。 請注意參數DisplayName和DisplayHierarchy 的指定值。






上一頁

