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