專利名稱::信號(hào)處理裝置的地址處理器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明是關(guān)于一信號(hào)處理裝置中用以計(jì)算存有數(shù)字濾波器狀態(tài)變量的讀/寫存貯器的地址的地址處理器。信號(hào)處理裝置中要設(shè)置數(shù)字濾波器并將此濾波器的輸入采樣數(shù)據(jù)存放在一讀/寫存貯器中,就需要有某種形式的地址處理器來執(zhí)行對(duì)此濾波器狀態(tài)變量的寫入和讀出操作。這些濾波器可以是遞歸式(IIR)和非遞歸式(FIR)的。濾波器的計(jì)算是由該存貯器中讀出狀態(tài)變量并計(jì)算輸出數(shù)據(jù)來進(jìn)行的。然后這些輸出數(shù)據(jù)即成為下一級(jí)濾波器的輸入數(shù)據(jù)(亦即狀態(tài)變量)而被寫回到原存貯器中。通常一濾波器系統(tǒng)可能由數(shù)個(gè)濾波器構(gòu)成,這些濾波器還可以具有不同的采樣頻率。在計(jì)算一濾波器值后,濾波器的所有狀態(tài)數(shù)據(jù)均在存貯器中位移一個(gè)位置。前一最老的狀態(tài)變量被后一最老狀態(tài)變量而改寫,而新的采樣數(shù)據(jù)即被存入由位移操作所得到的空出的位置。這一早已知道的方法的一個(gè)缺點(diǎn)是,所說存貯器中的位移操作很費(fèi)時(shí)間,因?yàn)樗袪顟B(tài)變量都必須被讀出并再寫入新的存貯器位置中。另外的缺點(diǎn)是這種位移操作還消耗電能。這一點(diǎn)對(duì)諸如由電池驅(qū)動(dòng)的電話中的信號(hào)處理裝置來說是很重要的,因?yàn)榇藭r(shí)可用的電能很有限。用于由一信號(hào)處理裝置和一讀/寫存貯器所構(gòu)成的數(shù)字濾波器作狀態(tài)變量尋址和位移的普通方法是采用一容量為2n的環(huán)形緩沖寄存器,其中n是一大于0的整數(shù)。由一指針指明最老一狀態(tài)變量在存貯器中的位置,這就是該環(huán)形緩存器的頁地址。在讀出此最老狀態(tài)變量后,一新的采樣值即被寫入所指示的存貯器位置,該最老狀態(tài)變量即被改寫。如果現(xiàn)在指針改變指向下一最老狀態(tài)變量,該指針就將指明一新的頁地址。先前作為下一最老狀態(tài)的變量現(xiàn)在就成為最老的變量,這一過程的結(jié)果就等于將一環(huán)形緩存器的全部狀態(tài)變量位移一個(gè)存貯位置,而不是真正地挪動(dòng)它們。僅僅只是指針被更新來指明新的頁地址。因此該方法就被稱之為虛擬位移。當(dāng)該指針到達(dá)環(huán)形緩存的第一存貯位置時(shí),在下一位移之后它就將指向最后的存貯位置。這樣即可將這種緩沖存貯器的尋址方式標(biāo)之為“模2n尋址”。但是這一早先熟知的方法有一重大缺點(diǎn),那就是緩存的容量只能是2n,因而濾波器的容量也必須為2n。這就使該方法只能適用于某些特殊的濾波器。另一先前已知的方法是采用一任意長度的緩存器,并使所用的指針在進(jìn)行濾波器計(jì)算時(shí)由該緩存的末尾移到其起始端。當(dāng)指針到達(dá)緩存起點(diǎn)時(shí),該指針立即重新被裝載以緩存器的終端地址,這樣該過程可重復(fù)進(jìn)行。這一早先方法的缺點(diǎn)在于它不可能在任意時(shí)刻對(duì)任一濾波器中的任意一狀態(tài)變量進(jìn)行尋址。此法只有在濾波器隨著前面的過程順次進(jìn)行計(jì)算時(shí)才適用。這就使得該方法不可能用于通用地址處理器作起始指示。本發(fā)明的目的是提供一種上述類型的地址處理器,此處理器能對(duì)至少兩個(gè)數(shù)字濾波器的一個(gè)接一個(gè)地存貯在至少一個(gè)環(huán)形緩沖寄存器中的狀態(tài)變量進(jìn)行尋址和作虛擬位移,而所說的那些濾波器具有任意數(shù)目的延遲元件,或具有任意的長度,但采樣頻率相同。按照本發(fā)明,上述目的是借助這樣一個(gè)地址處理器達(dá)到的,此地址處理器設(shè)有地址計(jì)算裝置,用來對(duì)一至少含有一存放數(shù)字濾波器狀態(tài)變量[X(n),X(n-1)……;Y(n),Y(n-1)……;W(n),W(n-1)……]的環(huán)形緩沖寄存器的讀/寫存貯器進(jìn)行地址計(jì)算,其中至少一個(gè)緩沖寄存器包含有至少兩個(gè)數(shù)字濾波器的狀態(tài)變量,同一緩沖寄存器中的每一濾波器對(duì)應(yīng)于同樣的采樣頻率(采樣速率sample_rate),且緩沖寄存器的長度(模數(shù)mod_numb)則取決于各個(gè)緩沖寄存器的相應(yīng)濾波器中延遲元件數(shù)的總和。該地址計(jì)算裝置包括(a)一組用來存放各環(huán)形寄存器所用的相對(duì)于所述緩存器的絕對(duì)起始地址(模頭mod_start)的現(xiàn)行頁地址(模指針mod_pointer)的寄存器(s),和(b)執(zhí)行以下步驟的計(jì)算單元(+)(1)將現(xiàn)行頁地址(mod_pointer)與一被選擇的狀態(tài)變量(X(n),X(n-1)……;Y(n),Y(n-1)……;W(n),W(n-1)……)相對(duì)于對(duì)應(yīng)緩存起始地址(mod_start)的位移量(data_addr,Write_addr)相加;(2)如果由步驟(1)所得的和(data_addr+mod_pointer,Write_addr+mod_pointer)大于或等于所說的對(duì)應(yīng)緩存器的長度的話,就將該和數(shù)中減去所說的緩存長度(mod_numd);和(3)將緩存起始地址(mod_start)加到步驟(2)所得結(jié)果來求得上述所選擇狀態(tài)變量的絕對(duì)地址。下面將參照附圖對(duì)本發(fā)明作詳細(xì)說明。所引用附圖為圖1表示與本發(fā)明相關(guān)的數(shù)據(jù)存貯器內(nèi)的劃分;圖2表示與本發(fā)明相關(guān)的緩沖寄存器內(nèi)的劃分;圖3表示圖2所示緩沖寄存器中濾波器的一個(gè)濾波器的流程圖;圖4說明在連續(xù)執(zhí)行計(jì)算步驟時(shí)圖2所示緩沖寄存器的濾波器的位置和頁地址;圖5表示按照本發(fā)明所實(shí)現(xiàn)的一地址處理器優(yōu)選實(shí)施方案;圖6表示圖5所示地址處理器的計(jì)算時(shí)序圖;和圖7表示用于分別具有2、1和N分支的三個(gè)濾波器A、B和C的圖5所示地址處理器的信號(hào)時(shí)序圖,其中N是任意的正整數(shù)。圖1表明RAM(隨機(jī)存取存貯器)中含有不同濾波器的狀態(tài)參數(shù)的那一部分的存貯器布局。這一情況是假定該存貯器包括有8個(gè)通道CH0~CH7的濾波器。每一通道具有緩沖寄存器BUFF0~BUFF2。緩沖寄存器的數(shù)量是隨意的,但每一通道都有同等數(shù)量的相應(yīng)長度的緩存器。而緩存器本身又包含濾波器FILTER0~FILTER2。緩存器通常具有不同的長度,但每一緩存器中的濾波器則都響應(yīng)于相同的采樣頻率。在本發(fā)明中,至少一個(gè)緩存器包含兩個(gè)或更多的濾波器。緩存器的長度決定于濾波器長度之和;事實(shí)上,緩存器的長度為所包含濾波器的延遲元件數(shù)之和加-。圖1表示一被分成8個(gè)通道CH0~CH7的數(shù)據(jù)存貯器。本發(fā)明并不限定為8個(gè)通道,而可以是任意個(gè)數(shù)的通道。此外,圖1還指出含有512個(gè)存貯單元的存貯器。不過這一數(shù)量亦是可以改變的。圖2詳細(xì)說明一緩存器的內(nèi)容。該示例中,一緩存器包括濾波器起始地址為filter_addr(0)、filter_addr(1)、filter_addr(2)的三個(gè)濾波器。以mod_start來標(biāo)示絕對(duì)起始地址。第一濾波器中的狀態(tài)變量被標(biāo)為X(n),X(n-1),X(n-2),X(n-3)。其中X(n)為最新的一次采樣,X(n-1)為下一次最新的采樣,等等。為了方便以下的說明,首先假定圖2所示緩存器中的三個(gè)濾波器是非遞歸的。在這種情況下,當(dāng)進(jìn)行FILTER0計(jì)算時(shí),由最老的狀態(tài)變量X(n-3)開始,一個(gè)接一個(gè)地從存貯器中取出狀態(tài)變量,再乘以由RAM或ROM(只讀存貯器)中取出的對(duì)應(yīng)的濾波因數(shù)。濾波器的計(jì)算就是求這些經(jīng)過乘法運(yùn)算后的狀態(tài)變量之和。在此濾波器被計(jì)算過之后,將所得的值Y(n)寫入存放該最老的狀態(tài)變量X(n-3)的存貯器單元。在圖2中這一點(diǎn)是以該狀態(tài)變量、亦即采樣值X(n-3)與濾波器輸出信號(hào)Y(n)共享此存貯器單元來表示的。這樣計(jì)算所得的濾波器值Y(n),Y(n-1)……以此方法構(gòu)成對(duì)FILTER1的輸入信號(hào)。FILTER1作相應(yīng)地計(jì)算,計(jì)算后的數(shù)值被作為FILTER2的輸入信號(hào)寫入存放最老狀態(tài)變量Y(n-2)的存貯器單元中。這種從一個(gè)濾波器中輸出信號(hào)的形成下一濾波器的輸入信號(hào)的過程是可能的,因?yàn)榫彌_寄存器中的濾波器均響應(yīng)于同一采樣頻率。圖3和4進(jìn)一步說明此計(jì)算過程,并特別談到涉及遞歸濾波器時(shí)的復(fù)雜性。圖3表示一用于圖2緩存器中濾波器的一更為通用的濾波器流程圖。如先前所說,第一濾波器FILTER0為一僅只具有橫貫部分的非遞歸濾波器。但第二濾波器FILTER1包括有左邊的遞歸部分和向右邊橫貫的部分。第三濾波器FILTER2則僅有一遞歸部分,而無橫貫部分。在圖3中,T表示延遲元件。由圖2可以看到,F(xiàn)ILTER0包含有3個(gè)延遲元件T和4個(gè)因數(shù)a0~a3。FILTER1包含2個(gè)延遲元件T和遞歸部分的2個(gè)因數(shù)b1、b2,以及橫貫部分的3個(gè)因數(shù)C0~C2。FILTER2包含有2個(gè)延遲元件T和兩個(gè)因數(shù)d1、d2。按照上述計(jì)算規(guī)則,該緩沖寄存器的長度為3+2+2+1=8。圖4表示圖3所示三個(gè)濾波器的一系列計(jì)算。注意圖4中的兩種情況是十分重要的。首先,狀態(tài)變量值X(n)……,Y(n)……,W(n)……在它們一旦被存入后就總是存在于被指定的存貯器單元中。在每一新的圖(a)~(h)中,n都要減1,即X(n)將被標(biāo)為X(n-1),等等。但是,該狀態(tài)變量值依然保留在原先的存貯器單元中。最老的狀態(tài)變量在不再需要時(shí)即為新的狀態(tài)變量值所改寫。因此就無須移動(dòng)狀態(tài)變量。其次,緩存器的頁地址(即模指針)mod_pionter是不斷地更新的。這一指針總是指向環(huán)形緩沖寄存器的疊合點(diǎn),在現(xiàn)在所說的情況中即FILTER2和FILTER0之間的邊界地點(diǎn)。指針mod_pointer形成一“0基準(zhǔn)”,由它可以求得現(xiàn)行狀態(tài)變量的正確的絕對(duì)地址,這在下面將作詳細(xì)描述。為了對(duì)某一狀態(tài)變量的地址進(jìn)行計(jì)算,需利用以下這些變量mod_start(模頭)=緩沖寄存器的絕對(duì)起始地址;data_addr(數(shù)據(jù)地址)=所選狀態(tài)變量相對(duì)于緩存器起始地址mod_start的位移量;Write_addr(寫地址)=相對(duì)于緩存器起始地址mod_start的所選的寫地址;mod_numb(模數(shù))=緩沖寄存器的長度,可任意選取;mod_pointer(模指針)=緩存器的現(xiàn)行頁地址;rel_addr(相對(duì)地址)=所計(jì)算得到的相對(duì)于緩存器起始地址mod_start的地址。dmaddr(絕對(duì)地址)=最后的寄存器絕對(duì)地址。當(dāng)對(duì)一狀態(tài)變量作地址計(jì)算時(shí),首先算出和data_addr+mod_pointer。然后檢驗(yàn)此和數(shù)是否小于mod_numb。如果rel_addr設(shè)置成等于此所得的和,即rel_addr=data_addr+mod_pointer但如果不滿足上述條件,亦即如果所得和大于或等于mod_numb,那么就將rel_addr設(shè)置為rel_addr=data_addr+mod_pointer-mod_numb在這兩種情況下,得到的是所求的存貯器位置相對(duì)于緩沖存貯器起始地址mod_start的位移量。最后的數(shù)據(jù)存貯器的絕對(duì)地址dmaddr由將所得結(jié)果加以mod_start來得出,即dmaddr=rel_addr+mod_start一開始將mod_pointer設(shè)置為mod_pointer=mod_numb-1,因而rel_addr=data_addr-1。寫地址亦按同樣方法計(jì)算,差別只在于將data_addr置換為write_addr。FILTER0,F(xiàn)ILTER1,F(xiàn)ILTER2的計(jì)算過程如下。1)將輸入信號(hào)寫進(jìn)位置X(n)。2)按如下方式計(jì)算FILTER0。第一將data_addr設(shè)置為filter_addr(0)+index,式中index(變址值)=3。按前述方法利用data_addr的這一數(shù)值計(jì)算出X(n-3)的地址。由所指示的存貯器單元取出X(n-3)并將其乘以因數(shù)a3。然后將變址值index因而亦即data_addr減1。取出X(n-2)并乘以因數(shù)a2。將所得乘積與前面所得乘積相加。相應(yīng)的途徑將index逐步減小直到0,從而將FILTER0中的全部變量依次一個(gè)接一個(gè)地取出,乘以相應(yīng)的因數(shù),再相加。這樣就完成了FILTER0的計(jì)算。3)FILTER1按下面過程進(jìn)行計(jì)算。首先將data_addr設(shè)置為filter_addr(1)+index來對(duì)左邊遞歸部分進(jìn)行計(jì)算,其中index=2。由此來指引出Y(n-2),并乘以b2,然后將index因而亦即data_addr減1。將所得的乘積與從FILTER0中所得的結(jié)果相加。以相應(yīng)方法,被乘以因數(shù)b1的Y(n-1)也與前面所得結(jié)果相加。再一次減小index即得到X(n-3)/Y(n)位置的地址。所得結(jié)果Y(n)現(xiàn)在將被寫在這一存貯器中的早先狀態(tài)變量X(n-3)的位置上。這樣對(duì)FILTER1的右邊橫貫部分進(jìn)行計(jì)算所需的全部狀態(tài)變量Y(n),Y(n-1)和Y(n-2)均齊備了。其計(jì)算方法與FILTER0的計(jì)算相同,差別僅在于第一步計(jì)算data_addr中所應(yīng)用的是filter_addr(1)和index=2。4)FILTER2的計(jì)算方法與FILTER1的遞歸部分相同,差別是應(yīng)用filter_addr(2)來計(jì)算data_addr,同時(shí)以d1、d2用作因數(shù)。在起始步驟中index被設(shè)置為等于2。在當(dāng)index達(dá)到0時(shí),其結(jié)果W(n)將Y(n-2)值改寫。所有這些計(jì)算均是在圖4(a)所示這一級(jí)進(jìn)行的。在向圖4(b)過渡中,mod_pointer減1而n加1,這樣就使得X(n)被稱之為X(n-1),等等。下一輸入信號(hào)值被寫入標(biāo)示X(n)的位置,而后即重復(fù)上述的計(jì)算周期。這樣,圖4(a)~(h)中每一級(jí)都使mod_pointer減少一級(jí)。當(dāng)濾波器計(jì)算已進(jìn)行過圖4(h)這一級(jí)而mod_pointer要被更新時(shí),就執(zhí)行疊合回到圖4(a)所示的位置的操作,此后再重復(fù)整個(gè)過程。由上述可清楚看到,緩沖寄存器的存貯區(qū)得到相當(dāng)充分的利用。尤其是此緩沖寄存器可以作模n尋址,這里n為一任意正整數(shù)。已經(jīng)證明這種方法對(duì)于實(shí)現(xiàn)許多短濾波器特別有利。下面將參照圖5~7來討論此地址處理器的一個(gè)優(yōu)選實(shí)施例。根據(jù)圖5所示,地址處理器可在邏輯上被分為三個(gè)不同部分。最上面的第一部分中存放緩沖寄存器常數(shù)。中間的第二部分執(zhí)行地址計(jì)算。最下面的第三部分存放在適當(dāng)時(shí)刻訪問存貯器所需的地址。對(duì)于每一采樣頻率,sample_rate(采樣速率),均存貯有一指針mod_pointer(模指針)。在本優(yōu)選實(shí)施例中,地址處理器具有一包含存放四個(gè)不同mod_pointer值的四個(gè)寄存器的寄存器組S,每一個(gè)mod_pointer相當(dāng)于一采樣頻率因而亦即相當(dāng)于一緩沖寄存器。在此優(yōu)選實(shí)施例中,這些寄存器均為5位長。減量電路DEC(例如由一半減法器組成)使一被選指針在作如上所述應(yīng)用后減1并將其存入對(duì)應(yīng)的寄存器。當(dāng)此指針到達(dá)0時(shí),也就是說該緩沖寄存器適于進(jìn)行疊合時(shí),就將一常數(shù)裝入寄存器。這一常數(shù)可以是采用硬件連接線接到寄存器的輸入端的。此常數(shù)值等于mod_numb-1,其中mod_numb為緩沖寄存器的長度。只有在信號(hào)dec_mod_count為高時(shí)才執(zhí)行mod_pointer的減操作。被選擇的指針在其被減或裝載進(jìn)計(jì)算部分之前被裝載入一寄存器mod_reg。有關(guān)緩存容量和在存貯器中的緩存地點(diǎn)的常數(shù)也可以被硬線連接到寄存器的輸入端。信號(hào)sample_rate選取對(duì)應(yīng)于一定采樣頻率的常數(shù)存入各不同的寄存器。在本優(yōu)選實(shí)施例中每一寄存器包括4個(gè)輸入端D1~D4,每一個(gè)適用于一種采樣頻率。關(guān)于緩存容量的常數(shù)mod_numb是以補(bǔ)碼值裝載的,即一mod_numb。此常數(shù)被載于一長度為5位的寄存器mod_num_reg中。關(guān)于存貯器中緩存位置的常數(shù)以mod_start值被裝載于一6位字長的寄存器mod_sta_reg中。計(jì)算部分包含有兩個(gè)寄存器,長度為6位的A_reg寄存器和長度為5位的B_reg寄存器,還有一個(gè)6位的加法器,例如所謂的進(jìn)位輔助加法器(carryboostadder),其中該加法器的最高位為一半加單元。開始計(jì)算地址時(shí),根據(jù)欲進(jìn)行的是讀操作還是寫操作將data_addr或write_addr裝載進(jìn)B_reg。A_reg則或者是在輸入端D2由mod_reg裝入mod_pointer,或者在輸入端D1裝入0。寄存器A_reg的裝載操作由模無效信號(hào)mod_dis根據(jù)所選的尋址方式是模尋址還是絕對(duì)尋址加以控制。在絕對(duì)尋址方式時(shí)(mod_dis為高),將0送入寄存器A_reg,以使輸入的地址data_addr或write_addr被加以0。這就使計(jì)算單元可直接進(jìn)行絕對(duì)尋址。在模尋址方式,裝進(jìn)A_reg的mod_pointer被加以裝入B_reg的地址data_addr或write_addr。其結(jié)果送回到寄存器B_reg的輸入端D3。存放在寄存器mod_num_reg中的mod_numb的補(bǔ)碼值(即-mod_numb)被傳送到寄存器A_reg,并與寄存器B_reg的內(nèi)容相加。其結(jié)果假如是非負(fù)數(shù)的話就被存進(jìn)B_reg。如果結(jié)果為負(fù),則將老的數(shù)值存進(jìn)寄存器B_reg以作下一操作之用。由于寄存器mod_num_reg裝入的是mod_numb的補(bǔ)碼(即-mod_numb),這就使得上述測試操作簡化,因?yàn)榧舆\(yùn)算所得的結(jié)果的符號(hào)可直接由該結(jié)果中的最高位讀出。這一位在連線+/-上協(xié)同圖7中的信號(hào)CHSST和IXZ控制對(duì)寄存器B_reg的裝載操作。在下一步由寄存器mod_sta_reg傳送到寄存器A_reg的常數(shù)mod_start與寄存器B_reg的內(nèi)容相加,其結(jié)果在作讀操作時(shí)存入寄存器RREG,或者在作寫操作時(shí)被存入寄存器WREG中。這一結(jié)果就是進(jìn)行讀或?qū)懙淖罱K存貯器地址。讀出因數(shù)時(shí)要采用絕對(duì)尋址,此時(shí)因數(shù)地址coe_addr被直接送到寄存器CAREG。地址處理器的下面一部分用來存放地址和進(jìn)行對(duì)存貯器進(jìn)行訪問,它由5個(gè)6位寄存器組成。寄存器RREG和WREG前面已經(jīng)提到過,它們只有一個(gè)輸入端D1。寄存器DAREG和CAREG分別與數(shù)據(jù)存貯器總線DMADDRSST和因數(shù)存貯器數(shù)據(jù)總線CMADDRSST相連接。第5個(gè)寄存器FBREG以循環(huán)的方式存放讀和寫地址。這些地址分別由輸出總線CMADDRSST和DMADDRSST送回到對(duì)應(yīng)輸入端D1和D2。這一反饋操作由圖7中的信號(hào)PDMWSST和PCMWSST控制。這一反饋尋址方式僅僅只是在地址處理器交替地給出寫和讀地址時(shí)才應(yīng)用。這種情況的發(fā)生是在當(dāng)一濾波器計(jì)算完成后將其結(jié)果寫入一存貯器單元的同時(shí),開始為下一濾波器進(jìn)行濾波器計(jì)算并為此計(jì)算由存貯器中讀出數(shù)據(jù)。當(dāng)CHSST為偶數(shù)時(shí)執(zhí)行寫操作,而當(dāng)CHSST為奇數(shù)時(shí)執(zhí)行讀操作,見圖6(在圖6和7中,R代表讀,W代表寫)。在本發(fā)明的優(yōu)選實(shí)施例中,一個(gè)循環(huán)讀/寫過程處理8個(gè)通道。兩個(gè)通道同時(shí)處理,以使得最后的讀/寫操作在周期6和7中進(jìn)行。為詳細(xì)敘述按照本發(fā)明的地址處理器優(yōu)選實(shí)施例的運(yùn)行過程。為地址處理器引用了下列的信號(hào)定義,以及下列采用德克薩斯儀器公司的模擬語言RTL所進(jìn)行的地址處理器的模擬。地址處理器的信號(hào)定義地址處理器的輸入信號(hào)以“sst”結(jié)尾的信號(hào)和變量表明這些值在“子(slave)”時(shí)鐘相位內(nèi)是“穩(wěn)定的(stable)”,并均處于“真(True)”狀態(tài)。BUS8chsst;#通道選擇。SIGNALiz1sst;#對(duì)變址起點(diǎn)(indexSIGNALiz6sst;Zero)和chsst加以門SIGNALiz7sst;控。在由存貯器中讀出最后采樣值時(shí)IXZ成為高電平。SIGNALpdmwsst;#數(shù)據(jù)存貯器準(zhǔn)備寫。SIGNALpcmwsst;#因數(shù)存貯器準(zhǔn)備寫。對(duì)將數(shù)據(jù)和因數(shù)寫地址裝進(jìn)輸出寄存器DAREG,CAREG和FBREG的控制。SIGNALcwsst#因數(shù)寫方式將地址處理器設(shè)定為絕對(duì)地址計(jì)算方式。當(dāng)這一信號(hào)成為高電平時(shí)即開始對(duì)因數(shù)存貯器的寫地址的計(jì)算?!癮pcsst”為控制裝置所產(chǎn)生的指令字的一組成部分。BUS23apcsst#地址處理器控制。coe_addr=apcsst[5∶0];#6位的因數(shù)地址。data_addr=apcsst[10∶6];#5位的數(shù)據(jù)地址。write_addr=apcsst[15∶11];#5位的寫地址。每次當(dāng)變址計(jì)數(shù)器減量時(shí),數(shù)據(jù)和寫地址均減1。變址計(jì)數(shù)器被裝載以濾波器長度“number_of_taps”。這全部在控制單元中完成。dec_mod_count=apcsst[16];#用于模計(jì)數(shù)器減量的1位的控制信號(hào)。mod_en_r=apcsst[17];#讀方式下,模地址計(jì)算的1位使能信號(hào)。sample_rate_r=apcsst[19∶18];#讀方式下,選擇環(huán)形緩沖寄存器的2位選擇信號(hào)。mod_en_w=apcsst[20];#寫方式下,模地址計(jì)算的1位使能信號(hào)。sample_rate_w=apcsst[22∶21];#寫方式下,選擇環(huán)形緩沖存貯器的2位選擇信號(hào)。時(shí)鐘和測試信號(hào)SIGNAL1st;#本機(jī)子時(shí)鐘為真。SIGNAL1mt;#本機(jī)主時(shí)鐘為真。SIGNAL1tt;#本機(jī)測試時(shí)鐘為真。SIGNAL1gsr11tt;#為全程掃描鏈的本機(jī)測試時(shí)鐘。SIGNAL1scanisst;#測試掃描本機(jī)輸入。SIGNAL9scanisst;#測試掃描全程輸入。SIGNAL1scanosst;#測試掃描本機(jī)輸出。SIGNAL9scanosst;#測試掃描全程輸出。地址處理器的輸出信號(hào)BUS6dmaddrsst;#數(shù)據(jù)存貯器地址。BUS6cmaddrsst;#因數(shù)存貯器地址。本機(jī)變量REG6d_a_reg#數(shù)據(jù)地址寄存器DAREG。REG6c_a_reg#因數(shù)地址寄存器CAREG。REG6w_del_reg_m;#寫主延遲寄存器WREG。REG6w_del_reg_s;#寫從延遲寄存器。REG6r_del_reg_m;#讀主延遲寄存器RREG。REG6r_del_reg_s;#讀從延遲寄存器。REG6feedback_reg_m;#主反饋寄存器FBREG。REG6feedback_reg_s;#從反饋寄存器。REG6a_reg;#至加法器的輸入寄存器。REG6b_reg;#至加法器的輸入寄存器。REG5mod_reg_m;#主模指針寄存器。REG5mod_reg_s;#從模指針寄存器。REG6mod_numb_reg_m;#主模數(shù)寄存器;REG6mod_numb_reg_s;#從模數(shù)寄存器;REG6mod_start_reg_m;#主模頭寄存器;REG6mod_start_reg_s;#從模頭寄存器;以通道選擇時(shí)隙7作為門限的變址起點(diǎn)FFiz7_de11_m;#主變址零延遲的觸發(fā)器。FFiz7_de11;#從變址零延遲的觸發(fā)器。FFiz7_de12_m;#主變址零延遲的觸發(fā)器。FFiz7_de12;#從變址零延遲的觸發(fā)器。REG5mod_a_reg_m(4);#主模指針寄存器堆棧(mod_numb-1)。REG5mod_a_reg_s(4);#從模指針寄存器堆棧。REG6sum;#加法器的輸出總線。SIGNALmod_dis;#模禁止,在其為真時(shí)作絕對(duì)尋址。BUS2sample_rate;#采樣速率。根據(jù)取決于采樣頻率的采樣緩沖寄存器選擇環(huán)形緩沖寄存器。ROM5mod_numb(4);#4個(gè)5位的模數(shù)常系數(shù)(-mod_numb)。ROM6mod_start(4);#4個(gè)6位的模頭常系數(shù)。用RTL語言的地址處理器的模擬BLOCKaddrpr(INPUTBUS8chsst;#通道選擇。INPUTSIGNALiz1sst;#變址起點(diǎn)。INPUTSIGNALiz6sst;INPUTSIGNALiz7sst;INPUTSIGNALpdmwsst;#準(zhǔn)備寫數(shù)據(jù)存貯器。INPUTSIGNALpcmwsst;#準(zhǔn)備寫因數(shù)存貯器。INPUTSIGNALcwsst;#寫因數(shù)。INPUTBUS23apcsst;#地址處理器控制。coe_addr=apcsst[5∶0];#6位因數(shù)地址data_addr=apcsst[10∶6];#5位數(shù)據(jù)地址write_addr=apcsst[15∶11];#5位寫地址dec_mod_count=apcsst[16];#1位控制信號(hào)mod_en_r=apcsst[17];#1位讀使能sample_rate_r=apcsst[19∶18]#2位讀選擇mod_en_w=apcsst[20];#1位寫使能sample_rate_w=apcsst[22∶21]#2位寫選擇INPUTSIGNAL1st;#從時(shí)鐘INPUTSIGNAL1mt;#主時(shí)鐘INPUTSIGNAL1tt;#本機(jī)測試時(shí)鐘INPUTSIGNAL1gsr11tt;#全程測試時(shí)鐘INPUTSIGNAL1scanisst;#測試掃描本機(jī)輸入INPUTSIGNALgscanisst;#測試掃描全程輸入OUTPUTSIGNAL1scanosst;#測試掃描本機(jī)輸出OUTPUTSIGNALgscanosst;#測試掃描全程輸出OUTPUTBUS6dmaddrsst;#數(shù)據(jù)存貯器地址OUTPUTBUS6cmaddrsst;#因數(shù)存貯器地址LOCALREG6d_a_reg#數(shù)據(jù)地址寄存器LOCALREG6c_a_reg#因數(shù)地址寄存器LOCALREG6w_del_reg_m;#寫主延遲寄存器LOCALREG6w_del_reg_s;#寫從延遲寄存器LOCALREG6r_del_reg_m;#讀主延遲寄存器LOCALREG6r_del_reg_s;#讀從延遲寄存器LOCALREG6feedback_reg_m;#主反饋寄存器LOCALREG6feedback_reg_s;#從反饋寄存器LOCALREG6a_reg;#加法器輸入寄存器LOCALREG6b_reg;#加法器輸入寄存器LOCALREG5mod_reg_m;#主模寄存器LOCALREG5mod_reg_s;#從模寄存器LOCALREG6mod_numb_reg_m;#主模數(shù)寄存器LOCALREG6mod_numb_reg_s;#從模數(shù)寄存器LOCALREG6mod_start_reg_m;#主模頭寄存器LOCALREG6mod_start_reg_s;#從模頭寄存器LOCALFFiz7_de11_m;#主變址零延遲觸發(fā)器LOCALFFiz7_de11;#從變址零延遲觸發(fā)器LOCALFFiz7_de12_m;#主變址零延遲觸發(fā)器LOCALFFiz7_de12;#從變址零延遲觸發(fā)器LOCALREG5mod_a_reg_m(4);#主模寄存器堆棧LOCALREG5mod_a_reg_s(4);#從模寄存器堆棧LOCALREG6sum;#加法器輸出寄存器LOCALSIGNALmod_dis;#模禁止LOCALBUS2sample_rate;#采樣速率ROM5mod_numb(4);#模數(shù)常系數(shù)ROM6mod_start(4);#模頭常系數(shù)#=運(yùn)行過程#循環(huán)緩沖寄存器常數(shù),采樣頻率#-mod_numb(0)=15;#32KHz,緩存器容量mod_numb(1)=16;#16KHzmod_numb(2)=9;#8KHzmod_numb(3)=5;#500Hzmod_start(0)=49;#32KHz,存貯器中的起始地址mod_start(1)=33;#16KHzmod_start(2)=24;#8KHzmod_start(3)=20;#500Hz#=#如果為真,即為絕對(duì)尋址方式#-mod_dis=(^mod_en_w+cwsst)*(iz6sst+iz7sst+iz7_de11),+^mod_en_r*(chsst[3]+chsst[4]+chsst[5]);#=#***模計(jì)數(shù)器***sample_rate=SELECT(chsst[5]sample_rate_w;Elsesample_rate_r);#選擇環(huán)形緩沖存貯器#檢測1mt邊界,“變址起點(diǎn)1”時(shí)隙中的“減量模計(jì)數(shù)器”#-1F1mt*^\1mt*dec_mod_count*iz1sst1Fmod_reg_s=0#緩存器指針初始化mod_a_reg_m(sample_rate)=mod_numb(sample_rate)-1;#緩存器指針減1ELSEmod_a_reg_m(sample_rate)=mod_reg_s-1;ENDEND1F1st#主到從mod_a_reg_s(sample_rate)=mod_a_reg_m(sample_rate);END#=1F1mt#主時(shí)鐘相位iz7_de11_m=iz7sst;iz7_de12_m=iz7_de11;#分別循環(huán)延遲“7”變址起點(diǎn)1和2周期#由堆棧裝載模寄存器mod_reg_m=mod_a_reg_s(sample_rate);1F(chsst[2]+chsst[5])#裝載緩存器容量mod_numb_reg_m=(-mod_numb(sample_rate));#裝載緩存器起始地址mod_start_reg_m=mod_start(sample_rate);END#數(shù)據(jù)裝入寄存器A和B#-a_reg=SELECT((chsst[5]+chsst)*^mod_dismod_start_reg_s;(chsst[4]+chsst[7])*^mod_dismod_numb_reg_s;(chsst[3]+chsst[6])*^mod_dismod_reg_s;mod_disoxoo;#絕對(duì)尋址方式ELSE\a_reg#保持寄存器A中的老數(shù)據(jù));b_reg=SELECT(chsst[3]data_addr;iz6sstwrite_addr;^sum[5]*(chsst[4]+chsst[5]+iz7sst+iz7_de11)sum;ELSE\b_reg#保持寄存器中的老數(shù)據(jù));IFchsst[6]r_del_reg_m=sum;#以計(jì)算得的地址裝載“讀延遲寄存器”RREGENDIFiz7_de12w_de1_reg_m=sum;#以計(jì)算得的地址裝載“寫延遲寄存器”WREGEND#-#***裝載因數(shù)地址CAREG***c_a_reg=SELECT(iz7sst*pcmwsstw_de1_reg_s;#WREGchsstcoe_addr;#外部地址^iz7sst*^chsst*pcmwsstfeedback_reg_s;ELSE\c_a_reg);#-#***裝載數(shù)據(jù)地址DAREG***d_a_reg=SELECT(iz7sst*pdmwsstw_de1_reg_s;#WREGchsstr_de1_reg_s;#RREG^iz7sst*^chsst*pdmwsstfeedback_reg_s;ELSE\d_a_reg);#-#****裝載反饋地址FBREG****feedback_reg_m=SELECT(pdmwsstdmaddrsst;#數(shù)據(jù)存貯器地址pcmwsstcmaddrsst;#因數(shù)存貯器地址ELSE\feedback_reg_m);END#1mt#=#從主到從轉(zhuǎn)換#-1F1stmod_reg_s=mod_reg_m;mod_numb_reg_s=mod_numb_reg_m;mod_start_reg_s=mod_start_reg_m;sum=a_reg+b_reg#計(jì)算r_del_reg_s=r_del_reg_m;w_del_reg_s=w_del_reg_m;feedback_reg_s=feedback_reg_m;dmaddrsst=d_a_reg;#將數(shù)據(jù)地址送到總線上cmaddrsst=c_a_reg;#將因數(shù)地址送到總線上iz7_de11=iz7_de11_m;iz7_de12=iz7_de12_m;END#1stEND#運(yùn)行過程應(yīng)理解的是,本發(fā)明并不限于此專門描述的實(shí)施方案,熟悉本
技術(shù)領(lǐng)域:
的人可實(shí)現(xiàn)許多改型。例如說,如果將最后一個(gè)采樣值X(n)另外存放在一附加的寄存器中,就可以將緩沖寄存器的長度減1,從而使其等于該緩沖寄存器所包含的濾波器中延遲元件數(shù)的總和。此外,通道數(shù),每一通道中的緩沖寄存器數(shù),不同寄存器的字長,以及在各不同寄存器中裝載常數(shù)的方法,均可加以改變而不背離所附專利權(quán)利要求中所定義的發(fā)明思想。權(quán)利要求1.一信號(hào)處理裝置用的地址處理器,其特征在于用來對(duì)至少包含有一存放數(shù)字濾波器狀態(tài)變量[X(n),X(n-1)……;Y(n),Y(n-1)……;W(n),W(n-1)……]的環(huán)形緩沖寄存器的讀/寫存貯器進(jìn)行地址計(jì)算的裝置,其中至少有一個(gè)緩沖寄存器包含有至少兩個(gè)數(shù)字濾波器用的狀態(tài)變量,同一緩沖寄存器中的每一濾波器都對(duì)應(yīng)于相同的采樣頻率(sample_rate),而此緩存寄存器的長度(mod_numb)則取決于對(duì)應(yīng)各緩存寄存器的濾波器中延遲元件數(shù)的總和,所說計(jì)算裝置包括有(a)一組用于存放各環(huán)形緩沖寄存器所用的相對(duì)于所述緩存器的絕對(duì)起始地址(mod_start)的現(xiàn)行頁地址(mod_pointer)的寄存器(S);和(b)執(zhí)行下列步驟的計(jì)算單元(+)(1)將所說現(xiàn)行頁地址(mod_pointer)與一被選擇的狀態(tài)變量(X(n),X(n-1)……;Y(n),Y(n-1)……;W(n),W(n-1)……)的相對(duì)于對(duì)應(yīng)緩沖器起始地址(mod_start)的位移量(data_addr,Write_addr)相加;(2)如果步驟(1)所得的總和(data_addr+mod_pointer,Write_addr+mod_pointer)超過或等于所說對(duì)應(yīng)緩存器的長度(mod_numb),就將從所說的總和中減去所說緩存器長度;和(3)將所說緩存器起始地址(mod_start)與步驟(2)所得結(jié)果相加來求得所說被選的狀態(tài)變量的絕對(duì)地址。2.權(quán)利要求1中的地址處理器,其特征在于所說緩存器的長度(mod_numb)等于對(duì)應(yīng)各緩存器的濾波器中的延遲元件數(shù)之和再加1。3.權(quán)利要求1或2中的地址處理器,其特征在于所說計(jì)算單元(+)由一加法器構(gòu)成,步驟(2)中可能進(jìn)行的減運(yùn)算是由將所說緩存器長度的補(bǔ)碼(-mod_numb)與所說步驟(1)中之和數(shù)相加來完成的。4.權(quán)利要求3中的地址處理器,其特征在于一第一寄存器(A_reg),用于一個(gè)接一個(gè)地順序存放所說現(xiàn)行頁地址(mod_pointer),所說緩存器長度的補(bǔ)碼(-mod_numb)和所說緩存器起始地址。5.權(quán)利要求4中的地址處理器,其特征在于一第二寄存器,用于逐個(gè)順序存放所選狀態(tài)變量(X(n),X(n-1),……;Y(n),Y(n-1),……;W(n),W(n-1),……)相對(duì)于對(duì)應(yīng)緩存器起始地址(mod_start)的所說位移量(data_addr,Write_addr)、步驟(1)中所得的和以及步驟(2)中可能得到的結(jié)果。6.權(quán)利要求5中的地址處理器,其特征在于所說加法器(+)的最高位在步驟(2)之后被用作為一符號(hào)位,如果步驟(2)的結(jié)果為負(fù)就將步驟(1)的結(jié)果保持在所說第二寄存器(B_reg)中,如果步驟(2)的結(jié)果不是負(fù)值則以所說步驟(2)的結(jié)果代替所說第二寄存器(B_reg)中的由步驟(1)所得的結(jié)果。7.任一前述權(quán)利要求中的地址處理器,其特征在于每一濾波器的計(jì)算是利用一等于所說濾波器中的延遲元件數(shù)的變址值逐個(gè)依次取出所說濾波器的狀態(tài)變量(X(n),X(n-1),……;Y(n),Y(n-1),……;W(n),W(n-1),……)和對(duì)應(yīng)的因數(shù)值,為此將所說變址值與濾波器的起始位置相加來求得最老的狀態(tài)變量和對(duì)應(yīng)因數(shù),然后將該變址值遞減到0以求得順序的新的狀態(tài)變量。8.權(quán)利要求7中的地址處理器,其特征在于將經(jīng)過計(jì)算的濾波器的值寫入前一濾波器中最老狀態(tài)變量的存貯器位置,以便重復(fù)利用該存貯器位置。9.任一前述權(quán)利要求中的地址處理器,其特征在于所說寄存器的所述組(s)具有4個(gè)寄存器。全文摘要信號(hào)處理裝置的地址處理器。有對(duì)至少包含一個(gè)以存放數(shù)字濾波器狀態(tài)變量的環(huán)形緩沖寄存器的讀/寫存貯器作地址計(jì)算的裝置。它包括用來存各環(huán)形緩沖寄存器的相對(duì)其絕對(duì)起始地址的現(xiàn)行頁地址的寄存器組。還包括一計(jì)算單元,用于(1)將現(xiàn)行頁地址與所述狀態(tài)變量的相對(duì)于對(duì)應(yīng)緩沖寄存器起始地址的位移量相加;(2)在當(dāng)(1)中所得的大于或等于對(duì)應(yīng)緩存器長度時(shí),由和數(shù)中減去此緩存器長度;(3)將緩存器起始地址與(2)中所得結(jié)果相加以求得所選狀態(tài)變量的絕對(duì)地址。文檔編號(hào)G06F5/06GK1053693SQ91100219公開日1991年8月7日申請日期1991年1月15日優(yōu)先權(quán)日1990年1月16日發(fā)明者托勒·M·安德烈,卡爾-貢納爾·A·勒雅斯申請人:艾利森電話股份有限公司