本申請涉及通信技術(shù)領(lǐng)域,尤其涉及一種確定dpd系數(shù)的方法、fpga及dpd處理系統(tǒng)。
背景技術(shù):
射頻功率放大器(poweramplifier,pa)是無線通信系統(tǒng)中最主要的非線性器件,它具有幅度—幅度失真特性和幅度—相位失真特性,這種非線性會導(dǎo)致信號帶外的頻譜擴展,從而對相鄰信道產(chǎn)生干擾,還會造成信號帶內(nèi)失真,導(dǎo)致系統(tǒng)的誤碼率提高。因此,為了滿足頻譜要求和降低誤碼率,提高功率放大器在無線通信過程中的效率,對其進行線性化處理是十分必要的。
對功率放大器進行線性化處理的一種常用技術(shù)為數(shù)字預(yù)失真(digitalpre-distortion,dpd)技術(shù),該技術(shù)具有精度高、適用帶寬范圍大、實現(xiàn)成本低等優(yōu)點。
數(shù)字預(yù)失真的基本原理:在功率放大器前側(cè)設(shè)置一個與其特性(非線性)相反的模塊,使得整個鏈路呈現(xiàn)線性放大。參見圖1,圖1為一種常用的dpd系統(tǒng)結(jié)構(gòu)示意圖,在功率放大器(pa)前側(cè)設(shè)置一個預(yù)失真器,根據(jù)功率放大器輸入信號和功率放大器輸出信號,通過dpd系數(shù)估計模塊估計dpd系數(shù),然后將該dpd系數(shù)發(fā)送給數(shù)字預(yù)失真器,以達(dá)到對功率放大器進行非線性補償?shù)哪康摹?/p>
然而,在具體的應(yīng)用系統(tǒng)中,計算dpd系數(shù)的計算量很大,而現(xiàn)有技術(shù)中使用通用處理器(例如:arm處理器,dsp處理器)作為計算的載體,采用串行的方式進行運算,當(dāng)計算dpd系數(shù)的算法比較復(fù)雜時,運算速度不能滿足dpd系數(shù)更新的需求,導(dǎo)致了dpd系數(shù)更新過慢,不能在信號功率或 者信號形態(tài)變化較大時及時調(diào)整dpd系數(shù),使得對信號的功率放大出現(xiàn)非線性的情況,從而導(dǎo)致了信號質(zhì)量的降低。
技術(shù)實現(xiàn)要素:
本申請實施例提供了一種確定dpd系數(shù)的方法、fpga及dpd處理系統(tǒng),用以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
本申請實施例提供的一種確定數(shù)字預(yù)失真dpd系數(shù)的方法包括:
現(xiàn)場可編程門陣列fpga根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣;
所述fpga計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣;
所述fpga根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù)。
本申請實施例提供的方法,使用fpga作為計算dpd系數(shù)的載體,具體地所述fpga根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣,所述fpga計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣,所述fpga根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù),因此,利用fpga可以采用并行的方式進行計算dpd系數(shù)過程中的矩陣相乘運算,因此,可以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
較佳地,所述fpga計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,具體包括:
所述fpga內(nèi)嵌的矩陣相乘模塊采用并行的方式對所述系數(shù)矩陣進行自相關(guān)運算,得到所述系數(shù)矩陣的自相關(guān)矩陣;
所述fpga內(nèi)嵌的求逆模塊計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣。
較佳地,在所述fpga根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣之后,在計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣之前,該方法還包括:
所述fpga將所述系數(shù)矩陣中的每個元素存儲到雙倍速率同步動態(tài)隨機存儲器ddr;其中,所述ddr的行地址與所述系數(shù)矩陣的列地址一一對應(yīng),所述ddr的列地址與所述系數(shù)矩陣的行地址一一對應(yīng)。
通過將ddr的行地址與系數(shù)矩陣的列地址一一對應(yīng),以及ddr的列地址與系數(shù)矩陣的行地址一一對應(yīng),這樣可以通過直接尋址ddr,方便地從ddr中讀取系數(shù)矩陣中相應(yīng)位置的元素,從而可以提高dpd系數(shù)計算的速度。
較佳地,所述fpga內(nèi)嵌的矩陣相乘模塊采用并行的方式對所述系數(shù)矩陣進行自相關(guān)運算,得到所述系數(shù)矩陣的自相關(guān)矩陣,具體包括:
所述fpga內(nèi)嵌的矩陣相乘模塊針對需要得到的所述系數(shù)矩陣的自相關(guān)矩陣的任一元素位置:確定該位置的行地址和列地址,按照該行地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述fpga內(nèi)嵌的第一隨機存儲器ram中;并按照該列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述fpga內(nèi)嵌的第二ram中;所述fpga內(nèi)嵌的矩陣相乘模塊根據(jù)所述第一ram和所述第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,確定該位置的元素。
較佳地,所述fpga內(nèi)嵌的矩陣相乘模塊采用并行的方式對所述系數(shù)矩陣進行自相關(guān)運算,得到所述系數(shù)矩陣的自相關(guān)矩陣,具體包括:
所述fpga內(nèi)嵌的矩陣相乘模塊針對需要得到的所述系數(shù)矩陣的自相關(guān)矩陣的任一行元素的位置,確定該行位置的行地址,以及該行元素中的奇數(shù)列的列地址和偶數(shù)列的列地址,按照該行地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述fpga內(nèi)嵌的第一隨機存儲器ram中;并依次按照一個奇數(shù)列的列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述fpga內(nèi)嵌的第二ram中;以及,依次按照一個偶數(shù)列的列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述fpga內(nèi)嵌的第三ram中;所述fpga內(nèi)嵌的矩陣相乘模塊根據(jù)所述第一ram和所述第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的奇 數(shù)列的元素;所述fpga內(nèi)嵌的矩陣相乘模塊根據(jù)所述第一ram和所述第三ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的偶數(shù)列的元素。
在采用并行的方式進行矩陣相乘的運算中,通過使用第二ram和第三ram進行乒乓運算,當(dāng)其中一個ram在進行并行運算時,另一個ram緩存數(shù)據(jù),因此,可以提高dpd系數(shù)計算的速度。
較佳地,所述計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,具體包括:
所述fpga內(nèi)嵌的求逆模塊對所述系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到喬葉斯分解矩陣;
所述fpga內(nèi)嵌的求逆模塊計算所述喬葉斯分解矩陣的逆矩陣;
所述fpga內(nèi)嵌的求逆模塊采用并行的方式對所述喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,得到所述喬葉斯分解矩陣的逆矩陣的自相關(guān)矩陣,作為所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣。
通過將系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到的喬葉斯分解矩陣為下三角矩陣,故可以減少計算量,并且采用并行的方式對喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,因此,可以提高dpd系數(shù)計算的速度。
本申請實施例提供的一種現(xiàn)場可編程門陣列fpga包括:
第一單元,用于根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣;
第二單元,用于計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣;
第三單元,用于根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù)。
本申請實施例提供的fpga,第一單元根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣,第二單元計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣,第三單元根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān) 矩陣,確定dpd系數(shù),因此,在計算dpd系數(shù)過程中,該fpga可以采用并行的方式進行矩陣相乘運算,因此,可以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
較佳地,所述第二單元包括:
第一矩陣相乘模塊,用于采用并行的方式對所述系數(shù)矩陣進行自相關(guān)運算,得到所述系數(shù)矩陣的自相關(guān)矩陣;
求逆模塊,用于計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣;
第二矩陣相乘模塊,用于計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣。
較佳地,所述第一單元還用于:
將所述系數(shù)矩陣中的每個元素存儲到雙倍速率同步動態(tài)隨機存儲器ddr;其中,所述ddr的行地址與所述系數(shù)矩陣的列地址一一對應(yīng),所述ddr的列地址與所述系數(shù)矩陣的行地址一一對應(yīng)。
通過將ddr的行地址與系數(shù)矩陣的列地址一一對應(yīng),以及ddr的列地址與系數(shù)矩陣的行地址一一對應(yīng),這樣可以通過直接尋址ddr,方便地從ddr中讀取系數(shù)矩陣中相應(yīng)位置的元素,從而可以提高dpd系數(shù)計算的速度。
較佳地,所述第一矩陣相乘模塊具體用于:
針對需要得到的所述系數(shù)矩陣的自相關(guān)矩陣的任一元素位置:確定該位置的行地址和列地址,按照該行地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第一ram中;并按照該列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第二ram中;根據(jù)所述第一ram和所述第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,確定該位置的元素。
較佳地,所述第一矩陣相乘模塊具體用于:
針對需要得到的所述系數(shù)矩陣的自相關(guān)矩陣的任一行元素的位置,確定該行位置的行地址,以及該行元素中的奇數(shù)列的列地址和偶數(shù)列的列地址,按照該行地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第一ram中;并依次按 照一個奇數(shù)列的列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第二ram中;以及,依次按照一個偶數(shù)列的列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第三ram中;根據(jù)所述第一ram和所述第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的奇數(shù)列的元素;根據(jù)所述第一ram和所述第三ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的偶數(shù)列的元素。
在采用并行的方式進行矩陣相乘的運算中,通過使用第二ram和第三ram進行乒乓運算,當(dāng)其中一個ram在進行并行運算時,另一個ram緩存數(shù)據(jù),因此,可以提高dpd系數(shù)計算的速度。
較佳地,所述求逆模塊具體用于:
對所述系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到喬葉斯分解矩陣;
計算所述喬葉斯分解矩陣的逆矩陣;
采用并行的方式對所述喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,得到所述喬葉斯分解矩陣的逆矩陣的自相關(guān)矩陣,作為所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣。
通過求逆模塊將系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到的喬葉斯分解矩陣為下三角矩陣,故可以減少計算量,并且采用并行的方式對喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,因此,可以提高dpd系數(shù)計算的速度。
本申請實施例提供的一種數(shù)字預(yù)失真dpd處理系統(tǒng),該系統(tǒng)包括本申請實施例提供的上述現(xiàn)場可編程門陣列fpga。
由于本申請實施例提供的dpd處理系統(tǒng),采用本申請實施例提供的上述現(xiàn)場可編程門陣列fpga,該fpga的第一單元根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣,第二單元計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣,第三單元根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù),因此,在計算dpd系數(shù)過程中,該fpga可以采 用并行的方式進行矩陣相乘運算,因此,可以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
附圖說明
圖1為現(xiàn)有技術(shù)中一種常用的dpd系統(tǒng)結(jié)構(gòu)示意圖;
圖2為本申請實施例提供的一種確定dpd系數(shù)的方法的流程示意圖;
圖3為本申請實施例提供的系數(shù)矩陣中的元素在ddr中的擺放順序示意圖;
圖4為本申請實施例提供的一種fpga的結(jié)構(gòu)示意圖;
圖5為本申請實施例提供的fpga中第二單元的結(jié)構(gòu)示意圖。
具體實施方式
本申請實施例提供了一種確定dpd系數(shù)的方法、fpga及dpd處理系統(tǒng),用以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
下面對本申請實施例提供的技術(shù)方案進行詳細(xì)描述。
本申請實施例在圖1所示的dpd系統(tǒng)結(jié)構(gòu)基礎(chǔ)上,通過對dpd系數(shù)估計模塊進行改進,來提高dpd系數(shù)計算的速度。圖1中功率放大器的非線性失真特性可用多項式來表示,因此,可以用多項式對功率放大器進行建模。常用的功率放大器模型有volterra模型、記憶多項式(memorypolynomial,mp)模型、wiener模型、hammerstein模型等,并且由于數(shù)字預(yù)失真器是通過模擬功率放大器模型的逆,對發(fā)送信號先進行預(yù)失真,來抵消信號經(jīng)過功率放大器時產(chǎn)生的失真,因此,用于對功率放大器進行建模的多項式都能用于對數(shù)字預(yù)失真器進行建模。下面以記憶多項式模型為例,對本申請實施例提供的技術(shù)方案進行描述。
參見圖1,記憶多項式模型的數(shù)學(xué)表達(dá)式如公式(1)所示:
其中,x(n)表示發(fā)送信號,z(n)表示數(shù)字預(yù)失真器的輸出信號,k表示多項式階數(shù),q表示記憶深度,akq表示數(shù)字預(yù)失真系數(shù)。
為了利用上述公式(1)來進行預(yù)失真處理需要估計出dpd系數(shù)akq,而估計dpd系數(shù)akq有多種方法,目前一般采用最小二乘(leastsquare,ls)算法估計dpd系數(shù)akq。下面結(jié)合圖1簡要說明利用ls算法估計dpd系數(shù)akq的過程。
采集功率放大器的輸入信號z(n)(即數(shù)字預(yù)失真器的輸出信號)和輸出信號y0(n),輸出信號y0(n)經(jīng)過一個延時調(diào)整模塊,轉(zhuǎn)換為反饋信號y(n),y(n)與z(n)之間沒有延時,當(dāng)y(n)=x(n)時,可以認(rèn)為功率放大器沒有失真,此時根據(jù)上述公式(1)可得z(n)與y(n)的關(guān)系式(2)如下:
其中,n=0,1,2,3,…,n-1,n,n為采樣點數(shù)。
令ukq(n)=y(tǒng)(n-q)|y(n-q)|k-1,則式(2)可轉(zhuǎn)化為:
z=ua(3)
其中,z=[z(0),z(1)……z(n-1)]t,稱為前向矩陣;
u=[u10,u20,…,uk0,u11,…,u1(q-1),…,uk(q-1)],稱為系數(shù)矩陣;
ukq=[ukq(0),ukq(1),…,ukq(n-1)]t;
a=[a10,a20,…,ak0,a11,…,a1(q-1),…,ak(q-1)]t,稱為dpd系數(shù)矩陣。
其中,t表示轉(zhuǎn)置。
根據(jù)ls算法,z=ua的最小二乘解如公式(4)所示:
a=(uhu)-1uhz(4)
其中,h表示共軛轉(zhuǎn)置。
定義r_uu=uhu為系數(shù)矩陣的自相關(guān)矩陣,r_uz=uhz為互相關(guān)矩陣,那么,式(4)可以寫成:
a=(r_uu)-1r_uz(5)
通過分析所述系數(shù)矩陣u可知,所述系數(shù)矩陣u為n行、kq列的矩陣,且為共軛對稱矩陣,其中kq為預(yù)失真系數(shù)a的個數(shù),如果定義l=kq,則系數(shù)矩陣u的維數(shù)為n*l。
需要指出的是,采樣點數(shù)n、kq值可根據(jù)實際需要進行取值,本申請并不限制其取值,下面都已采樣點數(shù)n=12000,kq=121為例對本申請實施例提供的技術(shù)方案進行說明。
參見圖2,本申請實施例提供的一種確定dpd系數(shù)的方法,可以用于確定上述的dpd系數(shù),該方法包括步驟:
s101、現(xiàn)場可編程門陣列fpga根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣;
s102、所述fpga計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣;
s103、所述fpga根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù)。
其中,步驟s101中根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣,具體包括:
可由處理器(例如fpga內(nèi)嵌的arm處理器)根據(jù)功率放大器的反饋信號,生成系數(shù)矩陣。
需要說明的是,本申請實施例通過fpga進行矩陣相乘運算時,可以采用并行的方式進行運算,也可采用串行的方式進行運算,只需采用并行的方式進行至少一組矩陣相乘運算,就可提高dpd系數(shù)計算的速度,優(yōu)選地,通過fpga估計dpd系數(shù)時,所有的矩陣相乘運算都采用并行的方式進行運算。
在進行了步驟s101之后,可以將系數(shù)矩陣存儲到fpga外部的存儲器(例 如:雙倍速率同步動態(tài)隨機存儲器ddr)中。
較佳地,參見圖3,圖3為系數(shù)矩陣中的元素在ddr中的擺放順序示意圖,圖3中i表示實部,q表示虛部,fpga將系數(shù)矩陣中的每個元素(element)存儲到ddr,并且采取ddr的行地址與系數(shù)矩陣的列地址一一對應(yīng),ddr的列地址與系數(shù)矩陣的行地址一一對應(yīng)的方式擺放系數(shù)矩陣中的元素,這樣可以通過直接尋址ddr,方便地從ddr中讀取系數(shù)矩陣中相應(yīng)位置的元素,從而可以提高dpd系數(shù)計算的速度。
需要說明的是,由于dpd系統(tǒng)接收和處理的都是復(fù)數(shù)信號,因此將系數(shù)矩陣中的每個元素的實部和虛部分開存儲;并且系數(shù)矩陣中的每個元素都由兩個雙精度浮點數(shù)組成。
接下來,fpga內(nèi)嵌的矩陣相乘模塊可以針對需要得到的系數(shù)矩陣的自相關(guān)矩陣的任一元素位置:確定該位置的行地址和列地址,按照該行地址從所述ddr中讀取一行數(shù)據(jù),并緩存到fpga內(nèi)嵌的第一隨機存儲器ram中;并按照該列地址從ddr中讀取一行數(shù)據(jù),并緩存到fpga內(nèi)嵌的第二ram中;fpga內(nèi)嵌的矩陣相乘模塊根據(jù)第一ram和第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,確定該位置的元素。
當(dāng)然,fpga內(nèi)嵌的矩陣相乘模塊也可以針對需要得到的系數(shù)矩陣的自相關(guān)矩陣的任一行元素的位置,確定該行位置的行地址,以及該行元素中的奇數(shù)列的列地址和偶數(shù)列的列地址,按照該行地址從ddr中讀取一行數(shù)據(jù),并緩存到fpga內(nèi)嵌的第一隨機存儲器ram中;并依次按照一個奇數(shù)列的列地址從ddr中讀取一行數(shù)據(jù),并緩存到fpga內(nèi)嵌的第二ram中;以及,依次按照一個偶數(shù)列的列地址從ddr中讀取一行數(shù)據(jù),并緩存到fpga內(nèi)嵌的第三ram中;根據(jù)第一ram和第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的奇數(shù)列的元素;根據(jù)第一ram和第三ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的偶數(shù)列的元素。例如確定系數(shù)矩陣的自相關(guān)矩陣的第一行元素,fpga內(nèi)嵌的矩陣相乘模塊讀取ddr中第一行數(shù)據(jù),并 緩存到fpga內(nèi)嵌的第一ram中,并讀取ddr中第一行數(shù)據(jù),緩存到fpga內(nèi)嵌的第二ram中,根據(jù)第一ram和第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,確定系數(shù)矩陣的自相關(guān)矩陣的第一行第一列的元素,同時讀取ddr中第二行數(shù)據(jù),緩存到fpga內(nèi)嵌的第三ram中,然后,根據(jù)第一ram和第三ram中緩存的數(shù)據(jù),采用并行的方式進行運算,確定系數(shù)矩陣的自相關(guān)矩陣的第一行第二列的元素,同時,讀取ddr中第三行數(shù)據(jù),緩存到fpga內(nèi)嵌的第二ram中,以此類推,可以確定系數(shù)矩陣的自相關(guān)矩陣的第一行所有元素。
在采用并行的方式進行系數(shù)矩陣的自相關(guān)矩陣的運算中,通過使用第二ram和第三ram進行乒乓運算,即當(dāng)其中一個ram在進行并行運算時,另一個ram緩存數(shù)據(jù),因此,可以提高dpd系數(shù)計算的速度。
其中,fpga內(nèi)嵌的矩陣相乘模塊從ddr中讀取數(shù)據(jù),可以通過該fpga上的hp端口或者ddrmig的axislave接口進行讀取。
另外,系數(shù)矩陣u的維度為12000*121,那么系數(shù)矩陣的共軛轉(zhuǎn)置矩陣uh的維度為121*12000,因此,系數(shù)矩陣的共軛轉(zhuǎn)置矩陣uh乘以系數(shù)矩陣u(即uhu,也稱為系數(shù)矩陣的自相關(guān)矩陣)的結(jié)果是維度為121*121的矩陣,該系數(shù)矩陣的自相關(guān)矩陣可以存儲在fpga的uhu矩陣ram中。
需要指出的是,前面僅給出在采用并行的方式進行系數(shù)矩陣的自相關(guān)矩陣的運算中,使用第二ram和第三ram進行乒乓運算,基于相同的原理,在進行其它的矩陣相乘運算中,也可采用兩個ram進行乒乓運算,本申請并不限制其使用的場景。
在步驟s102中,計算系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,可以有多種方法,本申請實施例優(yōu)選采用喬葉斯分解計算系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,具體包括:
fpga內(nèi)嵌的求逆模塊對系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到喬葉斯分解矩陣;
fpga內(nèi)嵌的求逆模塊計算喬葉斯分解矩陣的逆矩陣;
fpga內(nèi)嵌的求逆模塊采用并行的方式對喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,得到喬葉斯分解矩陣的逆矩陣的自相關(guān)矩陣,作為系數(shù)矩陣的自相關(guān)矩陣的逆矩陣。
通過將系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到的喬葉斯分解矩陣為下三角矩陣,故可以減少計算量,并且采用并行的方式對喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,因此,可以提高dpd系數(shù)計算的速度。
下面使用數(shù)學(xué)表達(dá)式對采用喬葉斯分解計算系數(shù)矩陣的自相關(guān)矩陣的逆矩陣進行進一步說明:
定義r_uu=ggh為r_uu的喬葉斯(cholesky)分解形式。
其中g(shù)矩陣(即喬葉斯分解矩陣)是一個具有正的對角線元素的下三角矩陣,如式(6)所示:
其中,l=kq,gij計算如公式(7)所示:
則式(6)可以寫成:
定義b=g-1,稱為喬葉斯分解矩陣的逆矩陣,如式(9)所示:
其中,bij計算如公式(10)所示:
則式(10)可以寫成:
那么,r-1_uu=(ggh)-1=g-hg-1=bhb,即系數(shù)矩陣的自相關(guān)矩陣的逆矩陣為喬葉斯分解矩陣的逆矩陣的自相關(guān)矩陣。
參見圖4,本申請實施例提供的一種現(xiàn)場可編程門陣列fpga包括:
第一單元11,用于根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣;
第二單元12,用于計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣;
第三單元13,用于根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān) 矩陣,確定dpd系數(shù)。
本申請實施例提供的fpga,第一單元11根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣,第二單元12計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣,第三單元13根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù),因此,在計算dpd系數(shù)過程中,該fpga可以采用并行的方式進行矩陣相乘運算,因此,可以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
較佳地,參見圖5,所述第二單元12包括:
第一矩陣相乘模塊21,用于采用并行的方式對所述系數(shù)矩陣進行自相關(guān)運算,得到所述系數(shù)矩陣的自相關(guān)矩陣;
求逆模塊22,用于計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣;
第二矩陣相乘模塊23,用于計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣。
較佳地,所述第一單元11還用于:
將所述系數(shù)矩陣中的每個元素存儲到雙倍速率同步動態(tài)隨機存儲器ddr;其中,所述ddr的行地址與所述系數(shù)矩陣的列地址一一對應(yīng),所述ddr的列地址與所述系數(shù)矩陣的行地址一一對應(yīng)。
通過將ddr的行地址與系數(shù)矩陣的列地址一一對應(yīng),以及ddr的列地址與系數(shù)矩陣的行地址一一對應(yīng),這樣可以通過直接尋址ddr,方便地從ddr中讀取系數(shù)矩陣中相應(yīng)位置的元素,從而可以提高dpd系數(shù)計算的速度。
較佳地,所述第一矩陣相乘模塊21具體用于:
針對需要得到的所述系數(shù)矩陣的自相關(guān)矩陣的任一元素位置:確定該位置的行地址和列地址,按照該行地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第一ram中;并按照該列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述 第二ram中;根據(jù)所述第一ram和所述第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,確定該位置的元素。
較佳地,所述第一矩陣相乘模塊21具體用于:
針對需要得到的所述系數(shù)矩陣的自相關(guān)矩陣的任一行元素的位置,確定該行位置的行地址,以及該行元素中的奇數(shù)列的列地址和偶數(shù)列的列地址,按照該行地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第一ram中;并依次按照一個奇數(shù)列的列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第二ram中;以及,依次按照一個偶數(shù)列的列地址從所述ddr中讀取一行數(shù)據(jù),并緩存到所述第三ram中;根據(jù)所述第一ram和所述第二ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的奇數(shù)列的元素;根據(jù)所述第一ram和所述第三ram中緩存的數(shù)據(jù),采用并行的方式進行運算,依次確定該行的偶數(shù)列的元素。
在采用并行的方式進行矩陣相乘的運算中,通過使用第二ram和第三ram進行乒乓運算,當(dāng)其中一個ram在進行并行運算時,另一個ram緩存數(shù)據(jù),因此,可以提高dpd系數(shù)計算的速度。
較佳地,所述求逆模塊22具體用于:
對所述系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到喬葉斯分解矩陣;
計算所述喬葉斯分解矩陣的逆矩陣;
采用并行的方式對所述喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,得到所述喬葉斯分解矩陣的逆矩陣的自相關(guān)矩陣,作為所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣。
通過求逆模塊將系數(shù)矩陣的自相關(guān)矩陣進行喬葉斯分解,得到的喬葉斯分解矩陣為下三角矩陣,故可以減少計算量,并且采用并行的方式對喬葉斯分解矩陣的逆矩陣進行自相關(guān)運算,因此,可以提高dpd系數(shù)計算的速度。
本申請實施例提供的一種數(shù)字預(yù)失真dpd處理系統(tǒng),該系統(tǒng)包括本申請實施例提供的上述現(xiàn)場可編程門陣列fpga、數(shù)字預(yù)失真器、pa和延時調(diào)整模 塊。
由于本申請實施例提供的dpd處理系統(tǒng),采用本申請實施例提供的上述現(xiàn)場可編程門陣列fpga,該fpga的第一單元根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣,第二單元計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣,第三單元根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù),因此,在計算dpd系數(shù)過程中,該fpga可以采用并行的方式進行矩陣相乘運算,因此,可以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
綜上所述,本申請實施例提供的技術(shù)方案,使用fpga作為計算dpd系數(shù)的載體,具體地所述fpga根據(jù)功率放大器的輸入信號,確定前向矩陣,以及根據(jù)功率放大器的反饋信號,確定系數(shù)矩陣,所述fpga計算所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣,并且計算所述系數(shù)矩陣和所述前向矩陣的互相關(guān)矩陣,所述fpga根據(jù)所述系數(shù)矩陣的自相關(guān)矩陣的逆矩陣和所述互相關(guān)矩陣,確定dpd系數(shù),因此,利用fpga可以采用并行的方式進行計算dpd系數(shù)過程中的矩陣相乘運算,因此,可以提高dpd系數(shù)計算的速度,從而能夠及時更新dpd系數(shù)以實現(xiàn)對功率放大器的非線性補償,進而提高信號質(zhì)量。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/ 或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。