本發明涉及信號處理領域,尤其涉及一種無限沖激響應濾波器及其控制方法。
背景技術:
無限沖激響應(Infinite Impulse Response,IIR)濾波器能夠以較低的階數實現信號的幅頻響應特性,經濟效率較高,在信號處理中被廣泛應用。
IIR濾波器的沖激響應理論上會無限持續。IIR濾波器的輸出不僅取決于當前和過去的輸入信號值,也取決于過去的輸出信號值。當IIR濾波器的輸入信號為0時,輸出信號在很長一段時間內都保持小幅震蕩,也即IIR濾波器在很長一段時間內輸出噪聲信號。
技術實現要素:
本發明解決的技術問題是如何降低IIR濾波器輸出噪聲的時長。
為解決上述技術問題,本發明實施例提供一種無限沖激響應濾波器的控制方法,包括:獲取并檢測所述無限沖激響應濾波器的輸入信號;當所述輸入信號為0時,記錄所述輸入信號的輸入持續時長;當所述輸入持續時長大于預設時長時,清除所述無限沖激響應濾波器中所有移位寄存器中存儲的數值。
可選的,所述預設時長與所述輸入信號的頻率相關。
可選的,所述預設時長不小于所述輸入信號最低頻率的周期。
可選的,在清除所述無限沖激響應濾波器中所有移位寄存器中存儲的數值之后,還包括:在檢測到所述輸入信號變為非0值時,停止清除所述無限沖激響應濾波器中所有移位寄存器中存儲的數值。
本發明實施例還提供了一種無限沖激響應濾波器,包括:檢測電路、寄存器清零電路以及無限沖激響應濾波器電路,其中:所述檢測電路,與所述無限沖激響應濾波器電路的輸入端以及所述寄存器清零電路耦接,適于獲取并檢測所述無限沖激響應濾波器電路輸入端的輸入信號值;當所述輸入信號為0時,記錄所述輸入信號的輸入持續時長;當檢測到所述輸入持續時長大于預設時長時,觸發所述寄存器清零電路;所述寄存器清零電路,與所述無限沖激響應濾波器電路中的所有移位寄存器均耦接,適于在被觸發時,清除所述所有移位寄存器中存儲的數值。
可選的,所述寄存器清零電路包括:歸零信號生成電路,適于在被觸發時,生成歸零信號并發送至所述無限沖激響應濾波器電路中的所有移位寄存器,以清除所述所有移位寄存器中存儲的數值。
可選的,所述預設時長與所述輸入信號的頻率相關。
可選的,所述預設時長不小于所述輸入信號最低頻率的周期。
可選的,所述檢測電路,還適于在檢測到所述輸入信號變為非0值時,向所述寄存器清零電路發送控制指令;所述寄存器清零電路,還適于在接收到所述控制指令時,停止清除所述所有移位寄存器中存儲的數值。
與現有技術相比,本發明實施例的技術方案具有以下有益效果:
在檢測到值為0的輸入信號的輸入持續時長達到預設時長時,清除無限沖激響應濾波器中所有移位寄存器中存儲的數值,從而可以使得無限沖激響應濾波器的輸出也變為0,因此可以降低無限沖激響應濾波器輸出噪聲的時長。
進一步,當輸入信號變為非0值時,停止清除無限沖激響應濾波器中所有移位寄存器中存儲的數值,可以確保當有效信號輸入時,能夠對輸入的有效信號進行正常的濾波處理操作。
附圖說明
圖1是現有的一種IIR濾波器的沖激響應曲線;
圖2是本發明實施例中的一種無限沖激響應濾波器的控制方法的流程圖;
圖3是采用本發明實施例中提供的IIR濾波器的控制方法后IIR濾波器的沖激響應曲線;
圖4是本發明實施例中的一種無限沖激響應濾波器的結構示意圖。
具體實施方式
在現有技術中可知,當IIR濾波器的輸入信號為0時,輸出信號在很長一段時間內都保持小幅震蕩。參照圖1,給出了現有的一種IIR濾波器的沖激響應曲線。圖1中,從時間軸上截取時間窗口101,將時間窗口101放大后得到時間窗口101’。從時間窗口101’中可以得知,當IIR濾波器的輸入信號變為0后的很長時間內,IIR濾波器的輸出信號仍處于震蕩狀態,沒有歸零。
通常情況下,由于IIR濾波器輸出信號的震蕩幅度遠小于有效信號,因此不會對有效信號的輸出造成干擾。但是,在音頻信號處理領域,在兩段音頻之間可能會存在一段靜音時間。此時,雖然IIR濾波器的輸入信號為0,但IIR濾波器的輸出信號非0,此時IIR濾波器輸出噪聲信號。也就是說,在音頻信號處理領域,當IIR濾波器的輸入信號為0時,IIR濾波器長時間輸出噪聲信號。
在本發明實施例中,在檢測到值為0的輸入信號的輸入持續時長達到預設時長時,清除無限沖激響應濾波器中所有移位寄存器中存儲的數值,從而可以使得無限沖激響應濾波器的輸出也變為0,因此可以降低無限沖激響應濾波器輸出噪聲的時長。
為使本發明的上述目的、特征和有益效果能夠更為明顯易懂,下面結合附圖對本發明的具體實施例做詳細的說明。
參照圖2,本發明實施例提供了一種無限沖激響應濾波器的控制方法,以下通過具體步驟進行詳細說明。
步驟S201,獲取并檢測所述無限沖激響應濾波器的輸入信號。
在具體實施中,可以實時獲取IIR濾波器的輸入信號,并檢測IIR濾波器的輸入信號是否為0。在本發明實施例中,可以在IIR濾波器的輸入端增加一個檢測電路,通過檢測電路來獲取并檢測IIR濾波器的輸入信號。可以理解的是,也可以在IIR濾波器的輸入端增加其他的獲取檢測裝置,來獲取并檢測IIR濾波器的輸入信號。
步驟S202,判斷輸入信號是否為0。
在具體實施中,當檢測到IIR濾波器輸入端的輸入信號為0時,可以執行步驟S203;當檢測到IIR濾波器輸入端的輸入信號為非0值時,可以重新執行步驟S201。
步驟S203,記錄所述輸入信號的輸入持續時長。
在具體實施中,當IIR濾波器的輸入信號為非0值時,可以判定IIR濾波器的輸入信號為有效信號。當IIR濾波器的輸入信號為0時,IIR濾波器的輸入信號可能為有效信號,也可能為無效信號。
為判斷IIR濾波器的輸入信號是有效信號還是無效信號,在本發明實施例中,當IIR濾波器輸入端的輸入信號為0時,可以記錄該輸入信號的輸入持續時長。
在本發明實施例中,為記錄輸入信號的輸入持續時長,可以在IIR濾波器的輸入端設置一定時器,該定時器可以與IIR濾波器輸入端設置的檢測電路耦接。當檢測電路檢測到IIR濾波器的輸入信號為0時,定時器被觸發,開始記錄輸入信號的輸入持續時長。
步驟S204,判斷輸入信號的輸入持續時長是否大于預設時長。
在具體實施中,當輸入信號的輸入持續時長大于預設時長時,執行步驟S205;當輸入信號的輸入持續時長不大于預設時長時,繼續執行步驟S204,也即繼續判斷輸入信號的持續時長是否大于預設時長。
在實際應用中可知,當IIR濾波器的輸入信號為有效信號時,有效信號中通常不會包含一連串較多個數的0。因此,當輸入信號的輸入持續時長大于預設時長時,則可以判定當前輸入至IIR濾波器的信號為無效信號,也即可以判定當前IIR濾波器的輸入端不存在輸入信號。
在具體實施中,預設時長可以根據實際的應用場景自行設定。例如,預設時長為50ms。在本發明實施例中,預設時長可以與輸入信號的頻率相關。在本發明一實施例中,預設時長不小于輸入信號最低頻率對應的周期。
例如,輸入信號為音頻信號,音頻信號的頻率為50Hz,音頻信號對應的周期為20ms,則將預設時長設定為30ms。
步驟S205,清除所述無限沖激響應濾波器中所有移位寄存器中存儲的數值。
在具體實施中,當檢測到輸入信號為0的輸入持續時長大于預設時長時,清除IIR濾波器中所有移位寄存器中存儲的數值。
在實際應用中可知,IIR濾波器器中包括有多個移位寄存器。對于任意的IIR濾波器,對應的傳遞函數為:
將式(1)轉換成差分方程,得到下式:
y(n)+a1y(n-1)+…+amy(n-j)=b0x(n)+b1x(n-1)+…+bnx(n-k); (2)
從式(2)中可以得知,當y(n-1)、……、y(n-j),x(n)、……、x(n-k)均為0時,IIR濾波器的輸出y(n)也必然為0。因此,在將IIR濾波器內的所有移位寄存器中的數據全部清零后,IIR濾波器的輸入信號為0時,輸出信號也同樣為0。
參照圖3,給出了采用本發明實施例中提供的IIR濾波器的控制方法之后得到的IIR濾波器的沖激響應曲線。圖1中,從時間軸上截取時間窗口301,將時間窗口301放大后得到時間窗口301’。從時間窗口301’可以得知,IIR濾波器的輸出信號在很短的一段時間內輸出穩定為0,此時,IIR濾波器不再輸出噪聲信號。而在圖1中,從時間窗口101’中可知,IIR濾波器的輸出在很長的一段時間內都存在噪聲。因此,采用本發明實施例中提供的無限沖激響應濾波器的控制方法,可以降低無限沖激響應濾波器輸出噪聲的時長
由此可見,在檢測到值為0的輸入信號的輸入持續時長達到預設時長時,清除無限沖激響應濾波器中所有移位寄存器中存儲的數值,從而可以使得無限沖激響應濾波器的輸出也變為0,因此可以降低無限沖激響應濾波器輸出噪聲的時長。
此外,對于一些穩定性較差的IIR濾波器,當存在一個不穩定的條件觸發導致正反饋自激振蕩后,現有的IIR濾波器無法自動恢復,一直處于自激振蕩狀態。而當采用本發明實施例中提供的IIR濾波器的控制方法之后,當檢測到輸入信號為0的輸入持續時長達到預設時長時,清除IIR濾波器中所有移位寄存器中存儲的數值,可以快速地使得IIR濾波器恢復正常工作。
在具體實施中,在步驟S205執行完成后,還存在IIR濾波器的輸入信號從0變為非0值的情況。例如,IIR濾波器的輸入端輸入一段有效的音頻信號。若仍清除IIR濾波器中所有移位寄存器中存儲的數據,則會導致IIR濾波器無法正常工作。
在本發明實施例中,為避免上述問題的出現,當檢測到IIR濾波器的輸入端輸入信號從0變為非0值時,停止清除IIR濾波器中所有移位寄存器中存儲的數值,從而可以使得IIR濾波器正常工作。
參照圖4,本發明實施例還提供了一種無限沖激響應濾波器,包括:檢測電路401、寄存器清零電路402以及無限沖激響應濾波器電路403,其中:
所述檢測電路401,與所述無限沖激響應濾波器電路403的輸入端以及所述歸零信號生成電路耦接,適于獲取并檢測所述無限沖激響應濾波器電路403輸入端的輸入信號值;當所述輸入信號為0時,記錄所述輸入信號的輸入持續時長;當檢測到所述輸入持續時長大于預設時長時,觸發所述寄存器清零電路;
所述寄存器清零電路402,與所述無限沖激響應濾波器電路403中的所有移位寄存器均耦接,適于在被觸發時,清除所述所有移位寄存器Z-1中存儲的數值。
在實際應用中,無限響應沖激濾波器電路403可以由多個加法器、乘法器以及移位寄存器Z-1組成。
當檢測電路401檢測到為0的輸入信號的輸入持續時長大于預設時長時,觸發寄存器清零電路402。當寄存器清零電路402被觸發時,無限沖激響應濾波器電路403中的所有移位寄存器Z-1中存儲的數值均被清零。
在本發明實施例中,寄存器清零電路402可以包括:歸零信號生成電路。檢測電路在檢測到為0的輸入信號的輸入持續時長大于預設時長時,觸發歸零信號生成電路。歸零信號生成電路在被觸發時,生成歸零信號并發送至無限沖激響應濾波器電路403中的所有移位寄存器Z-1,以清除所有移位寄存器Z-1中存儲的數值。
在具體實施中,預設時長可以根據實際的應用場景自行設定。例如,預設時長為50ms。在本發明實施例中,預設時長可以與輸入信號的頻率相關。在本發明一實施例中,預設時長不小于輸入信號最低頻率對應的周期。
例如,輸入信號為音頻信號,音頻信號的頻率為50Hz,音頻信號對應的周期為20ms,則將預設時長設定為30ms。
在具體實施中,檢測電路401,還適于在檢測到所述輸入信號變為非0值時,向所述寄存器清零電路402發送控制指令;所述寄存器清零電路402在接收到所述控制指令時,停止清除所述所有移位寄存器Z-1中存儲的數值。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:ROM、RAM、磁盤或光盤等。
雖然本發明披露如上,但本發明并非限定于此。任何本領域技術人員,在不脫離本發明的精神和范圍內,均可作各種更動與修改,因此本發明的保護范圍應當以權利要求所限定的范圍為準。