2. 配置IIRFA(下)
2.2 操作方法
2.2.2 處理方法
根據IIRFA的配置,有三種執行通道處理的方法。它們在通道處理開始后從IIRCHnOUT寄存器讀取輸出數據的操作過程不同。從定義上來講,單數據處理是指對一個輸入值執行通道處理,處理完成后不執行其他通道處理。多數據處理則是指對多個輸入值連續執行通道處理。
表3列出了每種方法的操作過程:
表3. 數據處理方法
方法1
方法1是不等待輸出數據準備完成即可讀取輸出數據的過程。輪詢和中斷均禁用。一旦輸入值寫入IIRCHnINP寄存器,內核執行就會停止,直到在IIRFA處理結束時數據被寫入IIRCHnOUT寄存器。此方法在全部三種方法中速度最快,但它可能會在處理期間發生更高的全局中斷延遲。如果您的樣本處理是優先級最高的任務,則中斷延遲可以忽略不計。
圖4是采用方法1的通道處理操作過程流程圖示例。
圖4. 方法1操作過程流程圖
重要說明:
? 不需要進行標志確定處理,因此存儲器和時間開銷在所有方法中最小。
? 當執行對IIRCHnOUT寄存器的讀訪問時,CPU將暫停,直到輸出數據準備完成,這將使系統和PSBIU總線掛起。
? 注:在等待IIRCHnOUT時,內核不會處理任何中斷。對于單樣本處理,32級濾波器的最長等待時間可以達到約64個ICLK周期,對于多樣本處理,可以達到224個ICLK周期(隨著使用的級數而線性遞減)。
方法2
方法2是設置數據準備完成標志后讀取輸出數據的過程。啟用輪詢并禁止IIR模塊上的中斷。一旦輸入值寫入IIRCHnINP寄存器,IIRFA驅動程序將輪詢完成標志,這表明IIRCHnOUT寄存器中的數據可用。
下面給出了使用方法2進行通道處理的操作過程流程圖示例:
圖5. 方法2操作過程流程圖
重要說明:
? 需要進行標志確定處理,因此開銷很大。
? 執行對IIRCHnOUT寄存器的讀訪問時,不會強制等待總線訪問。其他系統中斷可以在等待標志置1的同時進行處理。
方法3
方法3是在發生數據準備完成中斷后讀取輸出數據的過程。禁用輪詢并使能中斷。一旦輸入值寫入IIRCHnINP寄存器,內核就可以處理其他指令,直到數據準備完成中斷發出IIRCHnOUT寄存器中的數據可用的信號。
圖6采用方法3的通道處理的操作過程流程圖示例。
圖6. 方法3操作過程流程圖
重要說明:
? 由于在接受中斷時處理,因此開銷很大。
? 執行對IIRCHnOUT寄存器的讀訪問時,不會強制等待總線訪問。
? 通道處理開始后,內核可以執行其他操作,直到發生輸出數據準備完成中斷或通道處理完成中斷。
2.3 注意事項
2.3.1 最大程序提高性能
IIRFA的最佳配置取決于應用程序,因此根據您的系統需求考慮可用設置和操作方法的影響非常重要。
每個濾波器級需要花費2個ICLK周期來處理一個樣本,另外需要5個周期來將狀態值寫回寄存器。因此,單樣本操作每個級只需要2個周期,而多樣本操作則需要7個周期。加載和存儲每個樣本需要額外的開銷周期。
以下建議可能會提高性能:
? 使用函數R_IIRFA_Filter時,選擇較大的數據塊大小。對于實時濾波,建議使用R_IIRFA_SingleFilter內聯函數執行單樣本處理。
注:函數R_IIRFA_SingleFilter沒有參數檢查,只處理一個樣本,并返回濾波后的樣本。此函數支持輪詢(如果已配置)。
? 如果您的濾波器僅使用1個雙二階級,請啟用軟件展開循環深度設置并提供大小為展開深度倍數的數據。
? 使用少量級時禁用輪詢可顯著提高性能;但是,它可能會在處理過程中產生更高的全局中斷延遲。
? 在優化IIRFA處理時間時,應避免使用方法3,因為處理中斷所需的時間遠大于濾波數據所需的時間。對于大型數據集,使用中斷幾乎可以使總處理時間加倍。
2.3.2 限制
下面匯總列出了設計應用程序時要考慮的主要限制:
? 所有配置的通道共有32個級可用。
? 使用DTC或DMA時無法保證IIRFA正確操作,因此不受支持。
? 禁用輪詢時,內核執行在等待數據可用時會停止。當內核執行暫停時,無法處理任何中斷。
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5336瀏覽量
120231 -
加速器
+關注
關注
2文章
796瀏覽量
37840 -
中斷處理
+關注
關注
0文章
94瀏覽量
10967 -
IIR濾波器
+關注
關注
0文章
31瀏覽量
11506
原文標題:RA6T2 IIR濾波器加速器應用指南 [4] 配置IIRFA(下)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論