用於脈寬調製信號的數字濾波器及方法與流程
2023-10-06 07:24:59

本發明涉及信號處理技術,更具體地,涉及用於脈寬調製(PDM)信號的數字濾波器及方法。
背景技術:
在信號處理中,採用模數轉換器將模擬信號轉換成數位訊號,然後對數位訊號進行調製產生數字調製信號,對數字調製信號進行濾波去除量化噪聲,從而獲得低噪聲的數位訊號。在市場上已經可以購買到集成模數轉換器和調製器的信號處理晶片。例如,專用於處理音頻信號的數字麥克風晶片內部Σ-Δ模數轉換器,其中將模擬信號轉換成脈衝寬度調製(PDM)格式。PDM信號包括過採樣一位或多位(例如,2至4位)信號。PDM信號的相對脈衝寬度可以表徵輸入信號的幅度。
上述數字處理晶片中Σ-Δ模數轉換器的工作原理是過採樣和噪聲整形,其中採用數字抽取濾波器對調製器的輸出數據進行抽取,將原來的過採樣頻率降低到奈奎斯特採樣率,以實現移除量化噪聲,降低採樣頻率和抗混疊。因此,數字濾波器是數字處理晶片中的重要部分。
在數字濾波器中,有限長脈衝響應(Finite Impulse Response,即FIR)濾波器和無限長脈衝響應(Infinite Impulse Response,即IIR)濾波器是數位訊號處理系統的基本元件。FIR濾波器採用非遞歸型結構,包括多級乘法器和存儲器,存儲器用於保存歷史值和參數值,在每級運算時從存儲器獲得歷史值和參數值,並且進行乘法運算,然後將計算值存儲在存儲器中,作為下級運算的歷史值。IIR濾波器採用遞歸型結構,包括延時器、乘法器、加法器和存儲器,存儲器用於保存歷史值和參數值,在每次遞歸運算時從存儲器獲得歷史值和參數值,並且進行乘法和加法運算,然後將計算值存儲在存儲器中,作為下次遞歸運算的歷史值。
上述現有的數字濾波器可能包括多個FIR濾波器和多個IIR濾波器,在數位訊號處理中需要高頻讀寫存儲器和進行乘法運算,從而導致運算時間延長和系統功耗損失。由於系統時鐘的限制,每個FIR濾波器和每個IIR濾波器均需要單獨的乘法器和存儲器,導致晶片尺寸增大和成本提高。
技術實現要素:
鑑於上述問題,本發明的目的在於提供一種數字濾波器及方法,其中以分時方式共用存儲器和乘法器,從而可以減小功耗和晶片尺寸、以及降低成本。
根據本發明的第一方面,提供一種用於脈寬調製信號的數字濾波器,包括:第一濾波器,用於對所述脈寬調製信號的預處理信號進行低通濾波,以產生第一中間信號;第二濾波器,用於對所述第一中間信號進行高通濾波,以產生音頻數據;存儲器,用於存儲所述第一濾波器和所述第二濾波器的參數值和歷史值;乘法器,用於根據所述參數值和所述歷史值進行乘法運算,從而進行濾波操作;以及數據控制器,用於以分時的方式,將所述存儲器和所述乘法器分別與所述第一濾波器和所述第二濾波器相連接,從而進行濾波操作。
優選地,還包括輸入採樣模塊,所述輸入採樣模塊接收脈寬調製信號和時鐘信號,對所述脈寬調製信號進行採樣,以獲得採樣信號。
優選地,還包括第三濾波器,所述第三波濾器與所述輸入採樣模塊連接,用於對所述採樣信號進行降採樣,以獲得第二中間信號。
優選地,還包括第四濾波器,所述第四濾波器與所述第三濾波器連接,用於對所述第二中間信號進行頻率補償,從而產生第三中間信號。
優選地,所述第一濾波器與所述輸入採樣模塊、所述第三濾波器和所述第四濾波器中的任一個連接,以獲得其輸出信號作為所述預處理信號。
優選地,所述第一濾波器、所述第二濾波器和所述第四濾波器分別進行降採樣。
優選地,所述數據控制器以分時的方式,將所述存儲器和所述乘法器與所述第四濾波器相連接,從而進行濾波操作。
優選地,所述第三濾波器為級聯積分梳狀濾波器,所述第一濾波器和所述第四濾波器分別為有限長脈衝響應濾波器,所述第二濾波器為無限長脈衝響應濾波器。
優選地,所述有限長脈衝響應濾波器在一次濾波操作中採用多級運算產生多個歷史值,所述無限長脈衝響應濾波器在一次濾波操作中採用多次遞歸產生多個歷史值。
優選地,所述數據控制器在每次濾波操作中,將參數值讀取至內存,並且在內存中分配歷史值存儲空間,以及採用FIFO控制方式訪問所述歷史值存儲空間。
優選地,所述數據控制器在濾波操作結束之後,將歷史值存儲空間中保存的多個歷史值回寫至所述存儲器中。
優選地,所述數據控制器在連續濾波操作中,交替執行歷史值複製和濾波運算,其中,在濾波運算中產生多個歷史值,在歷史值複製中,將前一次濾波操作的運算產生的多個歷史值複製為下一次濾波操作的多個歷史值。
優選地,所述內存設置有讀指針和寫指針,在讀取所有的歷史值並運算完成之後,讀指針上移一個作為下次讀取的起始地址,寫指針指向讀指針的位置,從而將輸入的數據寫入所述內存,作為下次運算的歷史值。
根據本發明的第二方面,提供一種用於脈寬調製信號的數字濾波方法,包括:對脈寬調製信號的預處理信號進行低通濾波,以產生第一中間信號;以及對所述第一中間信號進行高通濾波,以產生音頻數據,其中,所述低通濾波和所述高通濾波分別包括以分時的方式存儲參數值和歷史值,以及讀取所述參數值和所述歷史值進行乘法運算,從而進行濾波操作。
優選地,還包括:對所述脈寬調製信號進行採樣,以獲得採樣信號。
優選地,還包括:對所述採樣信號進行降採樣,以獲得第二中間信號。
優選地,還包括:對所述第二中間信號進行頻率補償,從而產生第三中間信號。
優選地,將所述採樣信號、所述第二中間信號和所述第三中間信號的任一個作為所述預處理信號。
優選地,在產生第一中間信號、產生音頻數據和進行頻率補償的步驟中,分別進行降採樣。
優選地,進行頻率補償的步驟包括以分時的方式存儲參數值和歷史值,以及讀取所述參數值和所述歷史值進行乘法運算。
優選地,在產生第一中間信號和進行頻率補償的步驟中,在一次濾波操作中採用多級運算產生多個歷史值,在產生音頻數據的步驟中,在一次濾波操作中採用多次遞歸產生多個歷史值。
優選地,在每次濾波操作中,將參數值讀取至內存,並且在內存中分配歷史值存儲空間,以及採用FIFO控制方式訪問所述歷史值存儲空間。
優選地,在濾波操作結束之後,將歷史值存儲空間中保存的多個歷史值回寫至存儲器中。
優選地,在連續濾波操作中,交替執行歷史值複製和濾波運算,其中,在濾波運算中產生多個歷史值,在歷史值複製中,將前一次濾波操作的運算產生的多個歷史值複製為下一次濾波操作的多個歷史值。
優選地,採用FIFO控制方式訪問所述歷史值存儲空間的步驟包括:設置讀指針和寫指針,在讀取所有的歷史值並運算完成之後,讀指針上移一個作為下次讀取的起始地址,寫指針指向讀指針的位置,從而將輸入的數據寫入所述內存,作為下次運算的歷史值。
根據本發明實施例的數字濾波器,其中,數據控制器以分時的方式,將存儲器和乘法器分別與第一濾波器和第二濾波器相連接。由於第一濾波器和第二濾波器相分時共用一個乘法器和一個存儲器,因此可以減小晶片尺寸和降低成本。
在優選的實施例中,數據控制器在濾波操作時從存儲器中讀取參數值至內存,並且在內存中分配歷史值存儲空間,以及在內存訪問時執行FIFO控制。相應地,改變了第一濾波器和第二濾波器相的工作模式。因此,所述第一濾波器和第二濾波器相可以節省用於存儲器讀寫操作的時間,從而在各自的運算時間顯著減少,滿足分時共用的時隙要求。
附圖說明
通過以下參照附圖對本發明實施例的描述,本發明的上述以及其他目的、特徵和優點將更為清楚。
圖1示出根據現有技術的數字濾波器的示意性框圖。
圖2示出根據現有技術的數字濾波器中的FIR濾波器的原理示意圖。
圖3示出根據本發明實施例的數字濾波器的示意性框圖。
圖4示出根據本發明實施例的數字濾波器的內存操作的原理示意圖。
具體實施方式
以下將參照附圖更詳細地描述本發明的各種實施例。在各個附圖中,相同的元件採用相同或類似的附圖標記來表示。為了清楚起見,附圖中的各個部分沒有按比例繪製。
本發明可以各種形式呈現,以下將描述其中一些示例。
本發明採用更優化的結構和方法,以實現高效低成本的PDM數字濾波器。
圖1示出根據現有技術的數字濾波器的示意性框圖。該數字濾波器支持音頻數據的採樣率Fs為48K、44.1K、…、8KHz,採樣固定64倍的過採樣時鐘PDM_clk對PDM信號進行採樣濾波。例如,在採樣率Fs為48KHz的情形下,過採樣時鐘PDM_clk的頻率為3.072MHz。
數字濾波器100包括依次連接的輸入採樣模塊IS、(Cascaded-Integrator-Comb,即CIC)濾波器CIC、第一有限長脈衝響應(Finite Impulse Response,即FIR)濾波器CIC_COMP、第二FIR濾波器HB_FIR、以及第一無限長脈衝響應(Infinite Impulse Response,即IIR)濾波器HP_IIR。第一FIR濾波器CIC_COMP、第二FIR濾波器HB_FIR和第一IIR濾波器HP_IIR分別執行多次遞歸運算,從而去除信號噪聲。
第一FIR濾波器CIC_COMP與存儲器MEM1和乘法器MULT1連接,其中採用存儲器MEM1存儲遞歸運算的歷史值和參數值,利用乘法器MULT1進行乘法運算。
第二FIR濾波器HB_FIR與存儲器MEM2和乘法器MULT2連接,其中採用存儲器MEM2存儲遞歸運算的歷史值和參數值,利用乘法器MULT2進行乘法運算。
第一IIR濾波器HP_IIR與存儲器MEM3和乘法器MULT3連接,其中採用存儲器MEM3存儲遞歸運算的歷史值和參數值,利用乘法器MULT3進行乘法運算。
在數字濾波器100中,輸入採樣模塊IS接收經過同步的PDM時鐘PDM_clk和PDM信號PDM_din,進行輸入信號採樣。CIC濾波器CIC對PDM信號進行第一次低通濾波,其中進行16倍的降採樣。第一FIR濾波器CIC_COMP對PDM信號進行頻率補償,其中進行2倍的降採樣。第二FIR濾波器HB_FIR進行第二次低通濾波,其中進行2倍的降採樣。第一IIR波器HP_IIR進行第一次高通濾波,去除低頻噪聲,輸出採樣率為Fs的音頻數據Fo。
該數字濾波器100的多個FIR濾波器和一個IIR濾波器在降採樣的同時,進行高通濾波和低通濾波,從而可以去除PDM信號中的高頻噪聲和低頻噪聲,實現噪聲整形。PDM信號經數字濾波之後產生的音頻數據Fo可以用於進一步的信號處理,例如放大和數模轉換。
然而,上述現有的數字濾波器100中的多個FIR濾波器和多個IIR濾波器,在數位訊號處理中均需要高頻讀寫存儲器和進行乘法運算,從而導致運算時間延長和系統功耗損失。由於系統時鐘的限制,每個FIR濾波器和每個IIR濾波器均需要單獨的乘法器和存儲器,導致晶片尺寸增大和成本提高。
圖2示出根據現有技術的數字濾波器中的FIR濾波器的原理示意圖。FIR濾波器包括多級乘法器和存儲器。在存儲器(例如,靜態隨機存取存儲器SRAM)中保存歷史值,在每級運算時從存儲器獲得歷史值和參數值,並且進行乘法運算,然後將計算值存儲在存儲器中,作為下級運算的歷史值。在存儲器的讀寫操作中,按逆序依次讀取歷史值和相應的係數進行乘法運算,然後把當前的歷史值寫入到下個地址。FIR濾波器有多少級,就要執行多少次讀取和寫回操作。
具體地,如圖2所示,Z-1是延時單元,對歷史輸入的數據進行延時保存為v*;x(n)為當前輸入的數據,y(n)為當前數據運算後的輸出結果。v0保存的是之前一次輸入數據的值,假設x(n)為第n個輸入數據,v0保存的就是第n-1個輸入的數據,以此類推v1保存的是第n-2個輸入的數據……。b0表示的是FIR濾波器第一階的係數,b1表示的是FIR濾波器第2階的係數,以此類推……。v*數據被保存到存儲器中。傳統的做法每次運算都要從存儲器中讀取出來,運算完成後需要把數據寫入到存儲器的下個地址中,即x(n)要寫入到v0所在的存儲器的地址中,v0要寫入到v1所在的存儲器中,要寫回M-1次(M表示濾波器的階數)。
因此,該FIR濾波器在數位訊號處理中需要高頻讀寫存儲器和進行乘法運算,從而導致運算時間延長和系統功耗損失。
我們設計的做法是利用FIFO結構每次只寫回1次,把x(n)寫入到VM-2中,然後讀指針上移。
圖3示出根據本發明實施例的數字濾波器的示意性框圖。該數字濾波器支持音頻數據的採樣率Fs為48K、44.1K、…、8KHz,採樣固定64倍的過採樣時鐘PDM_clk對PDM信號進行採樣濾波。例如,在採樣率Fs為48KHz的情形下,過採樣時鐘PDM_clk的頻率為3.072MHz。
數字濾波器200包括依次連接的輸入採樣模塊IS、CIC濾波器CIC、第一FIR濾波器CIC_COMP、第二FIR濾波器HB_FIR、以及第一IIR濾波器HP_IIR、存儲器MEM和乘法器MULT。與現有技術的數字濾波器100不同,數字濾波器200還包括數據控制器DATA_CTRL。
在數字濾波器200中,輸入採樣模塊IS接收經過同步的PDM時鐘PDM_clk和PDM信號PDM_din,進行輸入信號採樣。CIC濾波器CIC對PDM信號進行第一次低通濾波,其中進行16倍的降採樣。第一FIR濾波器CIC_COMP對PDM信號進行頻率補償,其中進行2倍的降採樣。第二FIR濾波器HB_FIR進行第二次低通濾波,其中進行2倍的降採樣。第一IIR波器HP_IIR進行第一次高通濾波,去除低頻噪聲,輸出採樣率為Fs的音頻數據Fo。
在該數字濾波器200中,第一FIR濾波器CIC_COMP、第二FIR濾波器HB_FIR和第一IIR波器HP_IIR經由數據控制器DATA_CTRL連接至公共的存儲器MEM和乘法器MULT。數據控制器DATA_CTRL進行分時控制,使得第一FIR濾波器CIC_COMP、第二FIR濾波器HB_FIR和第一IIR波器HP_IIR可以在不同的時間段中讀寫存儲器MEM以及採用乘法器MULT進行乘法運算。進一步地,數據控制器DATA_CTRL從存儲器中讀取參數值至內存,並且在內存中分配歷史值存儲空間,以及在內存訪問時執行FIFO控制。
該數字濾波器200的多個FIR濾波器和一個IIR濾波器在降採樣的同時,進行高通濾波和低通濾波,從而可以去除PDM信號中的高頻噪聲和低頻噪聲,實現噪聲整形。PDM信號經數字濾波之後產生的音頻數據Fo可以用於進一步的信號處理,例如放大和數模轉換。
在數字濾波器200中,在FIR濾波器的每級運算中,以及在IIR濾波器的每次遞歸運算中,數據控制器DATA_CTRL,可以從內存中讀取參數值和前級的歷史值。在FIR濾波器的多級運算結束之後,將內存中存儲的歷史值全部回寫至存儲器MEM中。在IIR濾波器的多次遞歸結束之後,將內存中存儲的最後一次歷史值回寫至存儲器MEM中。因而,該數字濾波器200可以減少存儲器讀寫操作次數。
在根據現有技術的數字濾波器中,由於在每次運算時都需要高頻讀寫存儲器和進行乘法運算,因此時隙不能滿足分時共用的需求。第一FIR濾波器CIC_COMP、第二FIR濾波器HB_FIR和第一IIR波器HP_IIR分別需要使用獨立的乘法器MULT和存儲器MEM。
根據本發明實施例的數字濾波器200,其中改變了上述FIR濾波器和IIR濾波器的工作模式,因此,多個FIR濾波器和一個IIR濾波器可以節省用於存儲器讀寫操作的時間,從而在各自的運算時間顯著減少。在16MHz的系統時鐘下,第一FIR濾波器CIC_COMP、第二FIR濾波器HB_FIR和第一IIR波器HP_IIR可以分時共用一個乘法器MULT和一個存儲器MEM,從而減小晶片尺寸和降低成本。
圖4示出根據本發明實施例的數字濾波器的內存操作的原理示意圖。在一個實例中,在圖3所示數字濾波器200中的第二FIR濾波器HB_FIR的運算過程中執行圖4所示的內存操作。第二FIR濾波器HB_FIR例如執行M級運算,其中M為大於等於1的整數。
數據控制器DATA_CTRL從存儲器中讀取參數值至內存,並且在內存中分配歷史值存儲空間,以及在內存訪問時執行FIFO控制。所述歷史值存儲空間的大小與FIR濾波器的級數相對應,例如,在內存中分配M個存儲單元,以存儲與M級運算相對應的歷史值。
在FIR濾波器的一次操作中,執行M級運算。數據控制器DATA_CTRL將所述M個歷史值順序存儲在連續地址尋址的M個存儲單元中,並且設置讀指針rd_adr和寫指針wr_adr。在讀取所有的歷史值並運算完成之後,讀指針上移一個作為下次讀取的起始地址,寫指針指向讀指針的位置,從而將輸入的數據x寫入,作為下次運算的歷史值。因此,在FIR濾波器的一次操作中,M級運算產生的M個歷史值,利用FIFO結構只寫回一次,取代無用的全寫回操作。由於通過FIFO的結構完成一次完整的FIR操作只需寫回一次,因此,節省了時間和功耗。
在根據現有技術的數字濾波器中,在FIR濾波器的連續操作中分別執行M級運算。由於FIR濾波器還需要進行2倍的降採樣,因此,將從兩次操作中抽取一次操作的計算結果。雖然FIR濾波器的每次操作都需要耗費時間和功耗進行運算,但只有一次操作的運算結果是有用的。
在根據本發明實施例的數字濾波器中,在FIR濾波器的連續操作中交替執行歷史值複製和執行M級運算,因此,FIR濾波器僅在一半數量的操作中進行M級運算,另一半數量的操作中則直接複製前一次操作中M級運算的結果。也即,在第一次操作中進行M級運算之後,對於第二次操作只進行歷史值寫回的操作,不進行乘法運算,這樣節省了時間和功耗。
在優先的實施例中,數字濾波器200例如是用於數字麥克風的濾波器,包括5階CIC濾波器、28階第一FIR濾波器CIC_COMP、95階第二FIR濾波器HB_FIR、1階第一IIR濾波器HP_IIR,從而實現數字音頻信號的濾波及降採樣。通過採用FIFO結構在內存中保存歷史值,以歷史值上移、分時復用乘法器和存儲器的方式進行優化,可以減少晶片面積和降低功耗。數字濾波器200可以實現80db SNR的高性能及20~24KHz帶寬的濾波效果。在SMIC 130納米的工藝下,晶片面積只有0.045平方毫米,而ARCH的面積達到0.112平方毫米,面積減少有1倍多。
在上述的實施例中,描述了數字濾波器包括輸入採樣模塊IS、CIC濾波器CIC、第一FIR濾波器CIC_COMP、第二FIR濾波器HB_FIR、以及第一IIR濾波器HP_IIR,以及數據控制器DATA_CTRL和共用的存儲器MEM和乘法器MULT。
在替代的實施例中,如果數字濾波器的輸入信號為採樣的數位訊號,則可以省去輸入採樣模塊IS。如果脈寬調製信號的頻率與音頻數據的頻率相近,則可以省去CIC濾波器CIC和第一FIR濾波器CIC_COMP。因此,在替代的實施例中,根據信號轉換的實際需要,該數字濾波器可以僅包括第二FIR濾波器HB_FIR、以及第一IIR濾波器HP_IIR,以及數據控制器DATA_CTRL和共用的存儲器MEM和乘法器MULT,第二FIR濾波器HB_FIR、以及第一IIR濾波器HP_IIR分別用於高通濾波和低通濾波,從脈寬調製信號獲得音頻數據。
依照本發明的實施例如上文所述,這些實施例並沒有詳盡敘述所有的細節,也不限制該發明僅為所述的具體實施例。顯然,根據以上描述,可作很多的修改和變化。本說明書選取並具體描述這些實施例,是為了更好地解釋本發明的原理和實際應用,從而使所屬技術領域技術人員能很好地利用本發明以及在本發明基礎上的修改使用。本發明的保護範圍應當以本發明權利要求所界定的範圍為準。