專利名稱:基于流水線工作方式的可擴(kuò)展qr分解方法
技術(shù)領(lǐng)域:
本發(fā)明屬于移動無線數(shù)據(jù)傳輸技術(shù)領(lǐng)域,涉及一種基于流水線工作方式的可擴(kuò)展QR分解方法、結(jié)構(gòu)和應(yīng)用。
背景技術(shù):
QR分解是一種基本的矩陣分解形式,被廣泛應(yīng)用于各種信號處理領(lǐng)域。例如在MIMO檢測中,對信道矩陣進(jìn)行QR分解以后,不僅可以保持?jǐn)?shù)據(jù)的正交性,而且可以簡化數(shù)據(jù)檢測過程。當(dāng)對信道矩陣進(jìn)行QR分解以后,可以轉(zhuǎn)化為一個正交矩陣Q和一個上三角矩 陣R。這樣,接收數(shù)據(jù)相互之間的干擾將會被簡化。因?yàn)镼R分解可以大大簡化算法復(fù)雜度,整個算法的規(guī)模并不會因?yàn)橐隥R分解而變大。目前,QR分解的主流算法有三種,Gram-Scmidt正交化法、Givens旋轉(zhuǎn)法和Householder法。因?yàn)榭梢酝ㄟ^CORDIC算法實(shí)現(xiàn)Givens旋轉(zhuǎn)法,從而大大減小硬件實(shí)現(xiàn)所需要的乘法和除法數(shù)量,所以現(xiàn)在學(xué)術(shù)界研究的主流方法是Givens方法。本發(fā)明所提方法正是基于Givens旋轉(zhuǎn)的QR分解。Givens旋轉(zhuǎn)可以把二維平面上的向量旋轉(zhuǎn)一定的角度而保持向量長度不變,旋轉(zhuǎn)操作等效于左乘一個正交矩陣??梢酝ㄟ^設(shè)定特定的旋轉(zhuǎn)角度使向量旋轉(zhuǎn)到坐標(biāo)軸上而把向量的某一維坐標(biāo)置為零。Givens旋轉(zhuǎn)法QR分解實(shí)際上是通過對待分解矩陣H左乘一系列的旋轉(zhuǎn)矩陣,從而把矩陣H上三角化。也就是GmGsh……G2G1H = R,從而Q = Gh1Gh2……G1V1GV在MMO非線性檢測中,需要計算接收向量y左乘Qh的結(jié)果。在這里注意到,r = QHy = GMGM_,……G2G1P,也就是在QR分解過程,所有對矩陣H進(jìn)行的旋轉(zhuǎn)操作,同時對接收向量3 行同樣的操作,這樣在QR分解結(jié)束時,同時得到了? = 0巧,避免了 Q和后續(xù) = 的計算。如果多個檢測的信道矩陣相同,則可以把多個接收向量順序排在信道矩陣右面,構(gòu)成一個列數(shù)大于行數(shù)的矩陣。在進(jìn)行QR分解時,只需要對于左面的正方矩陣進(jìn)行Givens旋轉(zhuǎn)法QR分解,右面的接收向量跟隨做相同的旋轉(zhuǎn),在QR分解結(jié)束時,就得到了多個旋轉(zhuǎn)后的接收向量。信道矩陣的規(guī)模不同,相同信道矩陣的檢測數(shù)不同,進(jìn)行QR分解的矩陣規(guī)模不同。用CORDIC算法實(shí)現(xiàn)Givens旋轉(zhuǎn)操作,可以大大減小硬件資源占用量大的乘法和除法操作,主要進(jìn)行的操作是硬件實(shí)現(xiàn)簡單的移位和加減操作。CORDIC算法有兩種模式Victoring mode和Rotation mode。Victoring mode主要解決這樣一個問題,對于給定的二元組(X,Y),如果把它當(dāng)做一個向量的話,那么這個向量的長度和其與X軸的夾角是多少。Victoring mode的另一種描述是,對于給定的二元組(X, Y),如果把它當(dāng)做一個向量的話,那么需要轉(zhuǎn)動多少角度才能夠把這個向量轉(zhuǎn)到X軸上,以及這個向量的長度是多少。Rotation mode主要解決這樣一個問題,對于給定的二元組(X,Y)和角度0,如果把(X,Y)當(dāng)做一個向量的話,那個這個向量轉(zhuǎn)動角度0后的向量是多少。無論是Victoring mode,
還是Rotation mode,基本思想都是把角度a拆分為a = (I1 a ^d2 a 2+......+dnajtJ形式,
然后依次對每一維進(jìn)行處理。
在QR分解過程中,為了把hi+1,」置為零,需要對H矩陣的如下部分進(jìn)行操作
權(quán)利要求
1.一種基于流水線工作方式的可擴(kuò)展QR分解方法,其特征在于,采用層級級聯(lián)的結(jié)構(gòu),各層之間實(shí)現(xiàn)流水操作,對于Nk行,Nt列的待分解矩陣H,當(dāng)Nt SNk時,分層的層數(shù)為Ne-I ;當(dāng)乂<乂時,分層的層數(shù)為Nt;每一層的兩行矩陣數(shù)據(jù)進(jìn)行Givens旋轉(zhuǎn),Givens旋轉(zhuǎn)用CORDIC算法進(jìn)行,用加法和移位操作實(shí)現(xiàn)。
2.根據(jù)權(quán)利要求I所述的基于流水線工作方式的可擴(kuò)展QR分解方法,其特征在于,當(dāng)Nt > Ne時,對左面的NkXNk子矩陣進(jìn)行QR分解,右面的NkX (Nt-Ne)子矩陣跟隨做相同的旋轉(zhuǎn),QR分解依次按以下步驟實(shí)現(xiàn) 步驟(I):矩陣的第Nk行數(shù)據(jù)輸入第I層; 步驟(2):矩陣的第Nk-I行數(shù)據(jù)輸入第I層,第I層對矩陣的第Nk行和第Nk-I行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素化^!置為零; 步驟(3):矩陣的第Νκ-2行數(shù)據(jù)輸入第I層,第I層輸出的矩陣的第Nk行數(shù)據(jù)輸入第2層,第I層對矩陣的第Nk-I行和第Νκ-2行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素置為零;步驟(4):矩陣的第Νκ-3行數(shù)據(jù)輸入第I層,第I層輸出的矩陣的第Nk-I行數(shù)據(jù)輸入第2層,第I層對矩陣的第Νκ-2行和第Νκ-3行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素\^24置為零,第2層對矩陣的第Nk行和第Nk-I行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素& 2置為零; 步驟(Nk):矩陣的第I行數(shù)據(jù)輸入第一層,第i層(IUS)輸出的矩陣的第2i+l行數(shù)據(jù)輸入第i+Ι層,第j層)對矩陣的第2 j行和第2 j-Ι行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素h2u置為零,第I層輸出R矩陣的第I行計算結(jié)果; 步驟(Νκ+1):第i層(li+S )輸出的矩陣的第2i行數(shù)據(jù)輸入第i+1層,第j層(2<7<)對矩陣的第2j-l行和第2j-2行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素h&y置為零,第2層輸出R矩陣的第2行計算結(jié)果; 步驟(2NK-2):第Νκ-2層輸出的矩陣的第Nk-I行數(shù)據(jù)輸入第Nk-I層,第Nk-I層對矩陣的第Nk行和第Nk-I行進(jìn)行Givens旋轉(zhuǎn),把矩陣元置為零,第Nk-I層同時輸出R矩陣的第Nk行和第Nk-I行計算結(jié)果。
3.根據(jù)權(quán)利要求I所述的基于流水線工作方式的可擴(kuò)展QR分解方法,其特征在于,當(dāng)Nt < Nk時,QR分解依次按以下步驟實(shí)現(xiàn) 步驟(I):矩陣的第Nk行數(shù)據(jù)輸入第I層; 步驟(2):矩陣的第Nk-I行數(shù)據(jù)輸入第I層,第I層對矩陣的第Nk行和第Nk-I行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素化^!置為零; 步驟(3):矩陣的第Νκ-2行數(shù)據(jù)輸入第I層,第I層輸出的矩陣的第Nk行數(shù)據(jù)輸入第2層,第I層對矩陣的第Nk-I行和第Νκ-2行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素置為零;步驟(4):矩陣的第Νκ-3行數(shù)據(jù)輸入第I層,第I層輸出的矩陣的第Nk-I行數(shù)據(jù)輸入第2層,第I層對矩陣的第Νκ-2行和第Νκ-3行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素\^24置為零,第2層對矩陣的第Nk行和第Nk-I行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素& 2置為零; 步驟(Nk):矩陣的第I行數(shù)據(jù)輸入第一層,第i層(IUS)輸出的矩陣的第·2i+l行數(shù)據(jù)輸入第i+Ι層,第j層)對矩陣的第2 j行和第2 j-Ι行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素h2w置為零,第I層輸出R矩陣的第I行計算結(jié)果; 步驟(Νκ+1):第i層(li+S )輸出的矩陣的第2i行數(shù)據(jù)輸入第i+1層,第j層(2<7<)對矩陣的第2j-l行和第2j-2行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素h&y置為零,第2層輸出R矩陣的第2行計算結(jié)果; 步驟(Νκ+Ντ-2) 第Ντ-2層輸出的矩陣的第Nt-I行數(shù)據(jù)輸入第Nt-I層,第Nt-I層對矩陣的第Nt行和第Nt-I行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素\^一置為零,第Nt-I層輸出R矩陣的第Nt-I行計算結(jié)果; 步驟(Νκ+Ντ-1):第Nt-I層輸出的矩陣的第Nt行數(shù)據(jù)輸入第Nt層,第Nt層對矩陣的第Nt+I行和第Nt行進(jìn)行Givens旋轉(zhuǎn),把矩陣元素置為零,第Nt層輸出R矩陣的第Nt行計算結(jié)果。
4.根據(jù)權(quán)利要求I或2或3所述的基于流水線工作方式的可擴(kuò)展QR分解實(shí)現(xiàn)方法,其特征在于,所述的Givens旋轉(zhuǎn)操作等效于左乘一個正交矩陣,從而把二維平面上的向量旋轉(zhuǎn)任意給定的角度,而保持向量長度不變,可以通過把向量旋轉(zhuǎn)到坐標(biāo)軸上而把向量的某一維坐標(biāo)置為零。
5.根據(jù)權(quán)利要求I或2或3所述的基于流水線工作方式的可擴(kuò)展QR分解實(shí)現(xiàn)方法,其特征在于,所述QR分解由控制器和數(shù)據(jù)處理模塊實(shí)現(xiàn),數(shù)據(jù)處理模塊的每一層是一個行旋轉(zhuǎn)模塊,上一層行旋轉(zhuǎn)模塊的輸出端口接下一層行旋轉(zhuǎn)模塊的輸入端口,待分解矩陣數(shù)據(jù)從第一層行旋轉(zhuǎn)模塊的輸入端口輸入,依次流過各個行旋轉(zhuǎn)模塊,各個行旋轉(zhuǎn)模塊并行工作;控制器同樣采用分層結(jié)構(gòu),一共由兩種控制器模塊組成,control one和control two ;每一層行旋轉(zhuǎn)模塊由一個control two控制,各層的control two級聯(lián)起來,在第一層的control two 之前級聯(lián)一個 control one。
6.根據(jù)權(quán)利要求5所述的基于流水線工作方式的可擴(kuò)展QR分解實(shí)現(xiàn)方法,其特征在于,所述的行旋轉(zhuǎn)模塊基于CORDIC算法,把CORDIC算法迭代過程進(jìn)行拆分,構(gòu)成流水線結(jié)構(gòu),對于順序輸入模塊的待旋轉(zhuǎn)向量組,進(jìn)行流水操作 待旋轉(zhuǎn)向量組中的第一個有效向量稱為頭旋轉(zhuǎn)向量,進(jìn)行Victoring mode旋轉(zhuǎn),旋轉(zhuǎn)到坐標(biāo)軸上從而把其某一維置位零,把置為零的一維稱為Y,另一維稱為X,頭旋轉(zhuǎn)向量進(jìn)行旋轉(zhuǎn)的同時把旋轉(zhuǎn)方向記錄在CORDIC模塊內(nèi)部,后續(xù)旋轉(zhuǎn)向量根據(jù)記錄的旋轉(zhuǎn)方向依次進(jìn)行Rotation mode旋轉(zhuǎn),從而和頭旋轉(zhuǎn)向量進(jìn)行相同的旋轉(zhuǎn)操作; 根據(jù)上述方式,當(dāng)行旋轉(zhuǎn)模塊進(jìn)行CORDIC迭代操作時,不同旋轉(zhuǎn)向量依次進(jìn)行旋轉(zhuǎn),依次結(jié)束旋轉(zhuǎn),依次輸出數(shù)據(jù); 行旋轉(zhuǎn)模塊有三個模式,在一次QR分解過程中,行旋轉(zhuǎn)模塊第一次啟動應(yīng)用模式O,輸入的一行信道矩陣數(shù)據(jù)被寄存在一個移位寄存器組內(nèi),并不進(jìn)行CORDIC迭代操作,行旋轉(zhuǎn)模塊第二次啟動應(yīng)用模式1,輸入數(shù)據(jù)接入迭代單元的X輸入口,模式O存儲的數(shù)據(jù)接入迭代單元的Y輸入口,進(jìn)行CORDIC迭代操作。行旋轉(zhuǎn)模塊第三次及以后啟動應(yīng)用模式2,輸入數(shù)據(jù)接入迭代單元的X輸入口,模塊輸出數(shù)據(jù)的X分量接入迭代單元的Y輸入口,進(jìn)行CORDIC迭代操作。
7.根據(jù)權(quán)利要求5所述的基于流水線工作方式的可擴(kuò)展QR分解實(shí)現(xiàn)方法,其特征在于,所述控制器模塊control two的開始和結(jié)束信號是由上一層controltwo模塊產(chǎn)生提供的,來開始和結(jié)束當(dāng)前層行旋轉(zhuǎn)模塊的工作;在第一層control two模塊之前級聯(lián)的控制器模塊control one產(chǎn)生提供第一層control two模塊的結(jié)束信號,如此構(gòu)成層級級聯(lián)結(jié)構(gòu)控制器!control two模塊通過開始和模式選擇兩個信號控制當(dāng)前層行旋轉(zhuǎn)模塊工作,來配合其他各層行旋轉(zhuǎn)模塊完成整個模塊的QR分解操作。
8.根據(jù)權(quán)利要求7所述的基于流水線工作方式的可擴(kuò)展QR分解實(shí)現(xiàn)方法,其特征在于,所述層級級聯(lián)控制器的遞推結(jié)構(gòu)是根據(jù)以下數(shù)據(jù)操作時序?qū)崿F(xiàn)的 當(dāng)前層第一次讀入數(shù)據(jù)的迭代周期作為當(dāng)前層的第一迭代周期; 第一層行旋轉(zhuǎn)模塊進(jìn)行ROW次迭代,其中ROW是矩陣的行數(shù),第ROW迭代周期結(jié)束后,第一行旋轉(zhuǎn)模塊工作結(jié)束; 每一層的第二迭代周期結(jié)束后,當(dāng)前層的控制模塊啟動下一層工作; 每一層結(jié)束工作后,經(jīng)過一個迭代周期,當(dāng)前層的控制模塊結(jié)束下一層工作。
9.根據(jù)權(quán)利要求I或6所述的基于流水線工作方式的可擴(kuò)展QR分解實(shí)現(xiàn)方法,其特征在于,所述的CORDIC算法是一種二維向量旋轉(zhuǎn)的計算方法,用加法和移位操作來實(shí)現(xiàn)旋轉(zhuǎn)從而減少乘法和除法操作。
全文摘要
一種基于流水線工作方式的可擴(kuò)展QR分解方法,采用層級級聯(lián)的結(jié)構(gòu),各層之間實(shí)現(xiàn)流水操作,每一層的兩行矩陣數(shù)據(jù)進(jìn)行Givens旋轉(zhuǎn),Givens旋轉(zhuǎn)用CORDIC算法進(jìn)行,用加法和移位操作實(shí)現(xiàn),層數(shù)由矩陣的行數(shù)或者列數(shù)決定,整個QR分解模塊由控制器和數(shù)據(jù)處理模塊組成,數(shù)據(jù)處理模塊的每一層是一個行旋轉(zhuǎn)模塊,上一層行旋轉(zhuǎn)模塊的輸出端口接下一層行旋轉(zhuǎn)模塊的輸入端口,待分解矩陣數(shù)據(jù)從第一層行旋轉(zhuǎn)模塊的輸入端口輸入,依次流過各個行旋轉(zhuǎn)模塊,各個行旋轉(zhuǎn)模塊并行化工作,本發(fā)明節(jié)約硬件資源,每層內(nèi)部把CORDIC算法迭代過程進(jìn)行拆分,構(gòu)成流水線結(jié)構(gòu),分時處理多個向量組的旋轉(zhuǎn)操作,提高吞吐率,擴(kuò)展靈活。
文檔編號H04L25/02GK102624653SQ20121001034
公開日2012年8月1日 申請日期2012年1月13日 優(yōu)先權(quán)日2012年1月13日
發(fā)明者周世東, 周春暉, 張秀軍, 蔡世杰, 許希斌, 陳翔 申請人:清華大學(xué)