專利名稱:基于單fpga的并行矩陣乘法器及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種矩陣乘法器及其實(shí)現(xiàn)方法,具體地,是涉及一種基于單FPGA的并行矩陣乘法器及其實(shí)現(xiàn)方法。
背景技術(shù):
矩陣乘法運(yùn)算作為現(xiàn)代數(shù)字信號(hào)處理過(guò)程中的一種基本運(yùn)算而被廣泛運(yùn)用于信號(hào)處理、圖像處理、以及自動(dòng)控制等領(lǐng)域。以前的矩陣運(yùn)算大多米用數(shù)字信號(hào)處理器(Digital Signal Processor, DSP)來(lái)實(shí)現(xiàn)。該類處理方式具有技術(shù)較為成熟、實(shí)現(xiàn)工具完善、編程簡(jiǎn)單的優(yōu)點(diǎn),但由于單核DSP只能實(shí)現(xiàn)數(shù)據(jù)的串行處理,其處理時(shí)間,處理主頻成為了該類型處理方式最大的缺點(diǎn)。并行多核DSP處理能有效地解決上述問(wèn)題,但由于多核DSP技術(shù)構(gòu)架較為復(fù)雜,當(dāng)矩陣維數(shù)比較大的時(shí)候,該類處理方式不適合使用。近年來(lái)FPGA技術(shù)取得了飛速發(fā)展,已經(jīng)從最初只能面向純邏輯替代的應(yīng)用轉(zhuǎn)變?yōu)槟軌蛎嫦驈?fù)雜的計(jì)算密集型應(yīng)用。現(xiàn)行的FPGA器件隨著工藝的提高,其處理主頻也越來(lái)越高,且能實(shí)現(xiàn)的精度也越來(lái)越能夠滿足復(fù)雜的計(jì)算密集型運(yùn)算??紤]到FPGA器件的設(shè)計(jì)原理和構(gòu)架,基于FPGA的設(shè)計(jì)可以通過(guò)生成多個(gè)邏輯并行計(jì)算模塊,從而簡(jiǎn)單有效地實(shí)現(xiàn)數(shù)據(jù)的并行處理,降低主頻的處理時(shí)間。然而,目前在基于FPGA實(shí)現(xiàn)并行矩陣乘法的設(shè)計(jì)方面,大部分都只能實(shí)現(xiàn)對(duì)定制的特定矩陣類型進(jìn)行特定的處理,面對(duì)不同階數(shù)的矩陣乘法運(yùn)算則需要重新設(shè)計(jì)FPGA結(jié)構(gòu)才能實(shí)現(xiàn)。基于這樣的基礎(chǔ),有人設(shè)計(jì)出了另外一種方式,即通過(guò)固定并行矩陣運(yùn)算的運(yùn)算陣列結(jié)構(gòu)。通過(guò)改變數(shù)據(jù)預(yù)處理模塊的設(shè)計(jì)以適應(yīng)不同階數(shù)的矩陣的運(yùn)算,這樣做的優(yōu)點(diǎn)是能夠?qū)崿F(xiàn)對(duì)任意矩陣的乘法運(yùn)算。然而,由于引入了數(shù)據(jù)預(yù)處理模塊,人為延長(zhǎng)了矩陣乘法的處理時(shí)間。此外,由于數(shù)據(jù)預(yù)處理模塊輸出的矩陣需要匹配到固定的陣列中進(jìn)行計(jì)算,故數(shù)據(jù)預(yù)處理模塊需要根據(jù)不同的輸入矩陣的維數(shù)編寫不同的設(shè)計(jì)規(guī)范,將輸入的矩陣分割成適合矩陣乘法陣列的各個(gè)小矩陣,并串行地計(jì)算每個(gè)子矩陣,計(jì)算后再將各個(gè)子矩陣重新組合,最后才輸出組合后的矩陣。該類處理方式控制復(fù)雜且不能對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流水式的處理,當(dāng)輸入矩陣維數(shù)變化的時(shí)候,需要重新設(shè)計(jì)數(shù)據(jù)預(yù)處理模塊的程序,相當(dāng)麻煩,且不易實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于單FPGA的并行矩陣乘法器,解決現(xiàn)有矩陣乘法器控制復(fù)雜且不能對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流水式處理的問(wèn)題;并提供該矩陣乘法器的實(shí)現(xiàn)方法。為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下 基于單FPGA的并行矩陣乘法器,包括
NXR個(gè)計(jì)算單元PE,用于對(duì)輸入的數(shù)據(jù)進(jìn)行乘加計(jì)算操作;數(shù)據(jù)輸入接口,用于并行輸入矩陣A和矩陣B,其中,矩陣A為N行M列,矩陣B為M行R列;
參數(shù)配置模塊,用于輸入N、M、R、MODE_CLASS四個(gè)參數(shù),根據(jù)輸入的N、R兩個(gè)參數(shù)控制NXR個(gè)計(jì)算單元PE生成N行R列的PE陣列,并根據(jù)輸入的參數(shù)M控制矩陣A和矩陣B輸入到該P(yáng)E陣列中進(jìn)行運(yùn)算,M控制數(shù)據(jù)的輸入時(shí)鐘;MODE_CLASS則控制寄存器組中的數(shù)據(jù)輸出到輸出模塊的輸出模式;
寄存器組,用于接收PE陣列的計(jì)算結(jié)果,并根據(jù)輸入的MODE_CLASS參數(shù)將該結(jié)果輸出到輸出模塊中;
輸出模塊,用于接收寄存器組中的數(shù)據(jù)并將該數(shù)據(jù)分解成矩陣C,該矩陣C為N行R列,且 C=AXB ;
數(shù)據(jù)輸出接口,用于輸出矩陣C。進(jìn)一步地,所述的計(jì)算單元PE由FPGA內(nèi)部的DSP48單元構(gòu)成。再進(jìn)一步地,所述寄存器組由RegI和RegQ兩個(gè)寄存器組成?;趩蜦PGA的并行矩陣乘法器的實(shí)現(xiàn)方法,包括以下步驟
(1)在參數(shù)配置模塊中輸入N、M、R三個(gè)參數(shù),NXR個(gè)計(jì)算單元PE根據(jù)輸入的N、R生成N行R列的PE陣列;
(2)通過(guò)數(shù)據(jù)輸入接口分別輸入矩陣A和矩陣B,其中,矩陣A為N行M列,而矩陣B為M行R列;
(3)在參數(shù)配置模塊中設(shè)置M0DE_CLASS參數(shù),用以控制矩陣C的輸出模式;
(4)矩陣A和矩陣B通過(guò)參數(shù)配置模塊輸入到PE陣列中進(jìn)行乘加計(jì)算,即AXB,并經(jīng)過(guò)M個(gè)時(shí)鐘得到計(jì)算結(jié)果;
(5)寄存器組接收計(jì)算結(jié)果,并按照設(shè)置的輸出模式將該計(jì)算結(jié)果輸出到輸出模塊;
(6)輸出模塊將輸出的計(jì)算結(jié)果分解成N行R列的矩陣C并按照輸出模式控制矩陣C的輸出;
(7)數(shù)據(jù)輸出接口輸出矩陣C。進(jìn)一步地,在步驟(3)中,所述的M0DE_CLASS參數(shù)取N、R兩個(gè)值,其中,M0DE_CLASS=N時(shí),矩陣C按列的方式輸出,而M0DE_CLASS=R時(shí),則矩陣C按行的方式輸出。為提高運(yùn)算效率,在步驟(4)中,所述PE陣列采用并行運(yùn)算的方式進(jìn)行計(jì)算,并且各個(gè)計(jì)算單元PE之間沒(méi)有數(shù)據(jù)通信。具體地,步驟(4)包括以下步驟
(4a)利用參數(shù)配置模塊中的A_W0RDSIZE和B_W0RDSIZE兩個(gè)參數(shù),通過(guò)A_W0RDSIZE確定矩陣A的位寬,通過(guò)B_W0RDSIZE確定矩陣B的位寬;
(4b)將矩陣A的I、Q兩路均并置成位寬為A_W0RDSIZEXN的兩路信號(hào),并按列的方式將矩陣A輸入到PE陣列中,同時(shí)將矩陣B的I、Q兩路均并置成位寬為B_W0RDSIZEXR的兩路信號(hào),并按行的方式將矩陣B輸入到PE陣列中;
(4c) PE陣列對(duì)輸入的矩陣A和矩陣B進(jìn)行乘加計(jì)算。
再進(jìn)一步地,所述寄存器組將計(jì)算結(jié)果串行輸出到輸出模塊,并且輸出模塊按照MSB和LSB兩個(gè)參數(shù)的設(shè)置對(duì)該計(jì)算結(jié)果進(jìn)行分配,使其分解成矩陣C,其中,MSB為矩陣C的最高有效位,而LSB為矩陣C的最低有效位。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是
(I)本發(fā)明通過(guò)對(duì)N、M、R三個(gè)參數(shù)的修改,能快速生成適合不同階數(shù)的矩陣乘法的陣列,控制方式靈活,操作簡(jiǎn)便,流程簡(jiǎn)潔,不需要對(duì)輸入的矩陣進(jìn)行特定的處理,省去了需要根據(jù)不同輸入的矩陣重新設(shè)計(jì)預(yù)處理模塊的步驟,大大縮短了矩陣乘法器對(duì)輸入矩陣的處理時(shí)間。(2 )本發(fā)明通過(guò)寄存器組接收計(jì)算單元PE的計(jì)算結(jié)果,可以使計(jì)算單元PE快速地處理當(dāng)前的數(shù)據(jù),并接收下一次的數(shù)據(jù),對(duì)接收的數(shù)據(jù)進(jìn)行乘加計(jì)算操作,寄存器組的設(shè)計(jì)縮短了計(jì)算單元PE單個(gè)計(jì)算流程的時(shí)間,從而優(yōu)化了計(jì)算單元PE的性能。(3)本發(fā)明中的PE陣列采用并行運(yùn)算的方式對(duì)輸入的矩陣進(jìn)行計(jì)算,并且各個(gè)計(jì)算單元PE之間沒(méi)有數(shù)據(jù)通信,從而顯著地提高了整體運(yùn)算的效率。(4)本發(fā)明通過(guò)參數(shù)配置模塊中的M0DE_CLASS參數(shù)控制矩陣C按行或按列的模式輸出,方便了矩陣C的輸出,其輸出方式相當(dāng)靈活。(5)本發(fā)明對(duì)于滿足一定條件的輸入矩陣,只需設(shè)置好相應(yīng)的參數(shù),便能實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù)的并行化流水處理。(6)本發(fā)明適用性廣泛,可移植性強(qiáng),具有廣泛的應(yīng)用前景。
圖I為本發(fā)明矩陣乘法器的系統(tǒng)框圖。圖2為本發(fā)明矩陣乘法器中的PE陣列示意圖。圖3為本發(fā)明中計(jì)算單元PE的內(nèi)部系統(tǒng)框圖。圖4為本發(fā)明矩陣乘法器的輸入順序示意圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,本發(fā)明的實(shí)施方式包括但不限于下列實(shí)施例。
實(shí)施例如圖I所示,基于單FPGA的并行矩陣乘法器,包括計(jì)算單元PE、數(shù)據(jù)輸入接口、參數(shù)配置模塊、寄存器組、輸出模塊以及數(shù)據(jù)輸出接口。所述計(jì)算單元PE由FPGA內(nèi)部的DSP48單元構(gòu)成,用于對(duì)輸入的數(shù)據(jù)進(jìn)行乘加計(jì)算操作,且該計(jì)算單元PE的數(shù)量為N X R個(gè)。所述數(shù)據(jù)接入口用于并行輸入矩陣A和矩陣B,其中,矩陣A為N行M列,矩陣B為M行R列。所述參數(shù)配置模塊用于輸入N、M、R三個(gè)參數(shù)。N、M、R三個(gè)參數(shù)輸入后,根據(jù)輸入的N、R兩個(gè)參數(shù),NX R個(gè)計(jì)算單元PE生成N行R列的PE陣列,并根據(jù)輸入的參數(shù)M控制矩陣A和矩陣B輸入到該P(yáng)E陣列中進(jìn)行運(yùn)算,M控制數(shù)據(jù)的輸入時(shí)鐘,PE陣列如圖2所示,計(jì)算單元PE的內(nèi)部系統(tǒng)如圖3所示。此外,所述的參數(shù)配置模塊還用于輸入A_W0RDSIZE、B_W0RDSIZE、M0DE_CLASS、MSB、LSB五個(gè)參數(shù),其中,A_W0RDSIZE控制矩陣A的輸入位精度,B_W0RDSIZE控制矩陣B的輸入位精度,M0DE_CLASS控制寄存器組中的數(shù)據(jù)輸出到輸出模塊的輸出模式,MSB和LSB則控制了數(shù)據(jù)輸出的精度。 所述寄存器組由RegI和RegQ兩個(gè)寄存器組成,用于接收PE陣列計(jì)算所得的數(shù)據(jù)結(jié)果。寄存器組根據(jù)輸入的MODE_CLASS參數(shù)將計(jì)算結(jié)果輸出到輸出模塊,輸出模塊將接收的計(jì)算結(jié)果分解成N行R列的矩陣C,C=AXB,得到矩陣C后,通過(guò)數(shù)據(jù)輸出接口將該矩陣C輸出,從而完成整個(gè)矩陣乘法運(yùn)算。通過(guò)寄存器組接收計(jì)算單元PE的計(jì)算結(jié)果,使得計(jì)算單元PE能夠快速地處理當(dāng)前的數(shù)據(jù),并接收下一次的數(shù)據(jù),對(duì)接收的數(shù)據(jù)進(jìn)行乘加計(jì)算操作,寄存器組的設(shè)計(jì)縮短了計(jì)算單元PE單個(gè)計(jì)算流程的時(shí)間,從而優(yōu)化了計(jì)算單元PE的性倉(cāng)泛。基于單FPGA的并行矩陣乘法器的實(shí)現(xiàn)方法,包括以下步驟
(1)在參數(shù)配置模塊中輸入N、M、R三個(gè)參數(shù),NXR個(gè)計(jì)算單元PE根據(jù)輸入的N、R生成N行R列的PE陣列; (2)通過(guò)數(shù)據(jù)輸入接口分別輸入矩陣A和矩陣B,其中,矩陣A為N行M列,而矩陣B為M行R列;
(3)在參數(shù)配置模塊中設(shè)置M0DE_CLASS參數(shù),用以控制矩陣C的輸出模式;
(4)矩陣A和矩陣B通過(guò)參數(shù)配置模塊輸入到PE陣列中進(jìn)行乘加計(jì)算,即AXB,并經(jīng)過(guò)M個(gè)時(shí)鐘得到計(jì)算結(jié)果;
(5)寄存器組接收計(jì)算結(jié)果,并按照設(shè)置的輸出模式將該計(jì)算結(jié)果輸出到輸出模塊;
(6)輸出模塊將輸出的計(jì)算結(jié)果分解成N行R列的矩陣C并按照輸出模式控制矩陣C的輸出;
(7)數(shù)據(jù)輸出接口輸出矩陣C。本發(fā)明中矩陣A和矩陣B的輸入順序如圖4所示。在步驟(4)中,PE陣列需要M個(gè)時(shí)鐘才能完全輸入一組等待計(jì)算的數(shù)據(jù)。并且PE陣列采用并行運(yùn)算的方式進(jìn)行計(jì)算,并且各個(gè)計(jì)算單元PE之間沒(méi)有數(shù)據(jù)通信,這種運(yùn)算方式顯著地提高了整體運(yùn)算的效率。本發(fā)明中,具體地,步驟(4)包括以下步驟
(4a)利用參數(shù)配置模塊中的A_W0RDSIZE和B_W0RDSIZE兩個(gè)參數(shù),通過(guò)A_W0RDSIZE確定矩陣A的位寬,通過(guò)B_W0RDSIZE確定矩陣B的位寬;
(4b)將矩陣A的I、Q兩路均并置成位寬為A_W0RDSIZEXN的兩路信號(hào),并按列的方式將矩陣A輸入到PE陣列中,同時(shí)將矩陣B的I、Q兩路均并置成位寬為B_W0RDSIZEXR的兩路信號(hào),并按行的方式將矩陣B輸入到PE陣列中;
(4c) PE陣列對(duì)輸入的矩陣A和矩陣B進(jìn)行乘加計(jì)算。在本發(fā)明中,通過(guò)A_W0RDSIZE參數(shù)來(lái)設(shè)定矩陣A的位寬,通過(guò)B_W0RDSIZE參數(shù)來(lái)設(shè)定矩陣B的位寬,從而方便了矩陣A和矩陣B的輸入。而在步驟(3)中,所述的M0DE_CLASS參數(shù)取N、R兩個(gè)值,其中,M0DE_CLASS=N時(shí),矩陣C按列的方式輸出,而M0DE_CLASS=R時(shí),則矩陣C按行的方式輸出。寄存器組接收計(jì)算結(jié)果后,需要將計(jì)算結(jié)果分解成矩陣C,最后再進(jìn)行輸出,故在本發(fā)明中,所述寄存器組將計(jì)算結(jié)果串行輸出到輸出模塊,并且輸出模塊按照MSB和LSB兩個(gè)參數(shù)的設(shè)置對(duì)該計(jì)算結(jié)果進(jìn)行分配,使其分解成矩陣C,其中,MSB為矩陣C的最高有效位,而LSB為矩陣C的最低有效位。在寄存器組串行輸出的過(guò)程中,根據(jù)設(shè)置的M0DE_CLASS參數(shù),串行輸出的計(jì)算結(jié)果將存在以下幾種情況
第一種M > N且M > R,則數(shù)據(jù)串行輸出的時(shí)間將小于等于寄存器組的更新時(shí)間,數(shù)據(jù)將實(shí)現(xiàn)流水輸入。
第二種M < N且M > R,若矩陣C的輸出模式為按列輸出,貝1J數(shù)據(jù)為流水輸入;若矩陣C的輸出模式為按行輸出,則數(shù)據(jù)為突發(fā)模式輸入。第三種M彡N且M〈R,則和第二種情況相反。第四種M〈N且M〈R,則數(shù)據(jù)只能為突發(fā)模式輸入。本發(fā)明中,通過(guò)MSB和LSB兩個(gè)參數(shù)設(shè)定矩陣C的位寬結(jié)構(gòu),從而方便了設(shè)計(jì)人員修改設(shè)計(jì)的精度。本發(fā)明的實(shí)現(xiàn)過(guò)程如下
假設(shè)輸入的矩陣A和矩陣B均為4X4的陣列結(jié)構(gòu),需要得到矩陣C,C=AXB,則其實(shí)現(xiàn)過(guò)程如下 步驟I :在參數(shù)配置模塊中分別輸入N=4,M=4, R=4 ;設(shè)計(jì)矩陣A的位寬為A_W0RDSIZE=25bit,設(shè)計(jì)矩陣 B 的位寬為 B_W0RDSIZE=25bit ;
步驟2 :通過(guò)數(shù)據(jù)輸入接口并行輸入矩陣A和矩陣B ;
步驟3 :計(jì)算單元PE根據(jù)輸入的N、R生成N行R列的PE陣列,由矩陣乘法的基本規(guī)則,可知矩陣C為N行R列的一般矩陣,故配置矩陣C的輸出模式,這里,設(shè)置M0DE_CLASS=N,即矩陣C按列輸出,并分別設(shè)置矩陣C輸出的最高有效位MSB和最低有效位LSB ;
步驟4 :將矩陣A的I、Q兩路分別并置成位寬為A_W0RDSIZEXN的兩路信號(hào),按列的方式將矩陣A輸入到PE陣列中,同時(shí)將矩陣B的I、Q兩路分別并置成位寬為B_W0RDSIZEXR的兩路信號(hào),按行的方式將矩陣B輸入到PE陣列中,其中,由于M=4,故PE陣列需要4個(gè)時(shí)鐘才能完全輸入一組等待計(jì)算的數(shù)據(jù),如果輸入的有效數(shù)據(jù)不夠一組矩陣的情況,則這組矩陣的已輸入元素將全部被清空;
步驟5 :經(jīng)過(guò)14個(gè)時(shí)鐘的處理,PE陣列完成矩陣計(jì)算并將計(jì)算結(jié)果分別存儲(chǔ)到RegI和RegQ兩個(gè)寄存器中,當(dāng)矩陣流水輸入時(shí),上述兩個(gè)寄存器每M個(gè)時(shí)鐘更新一次,RegI和RegQ兩個(gè)寄存器將計(jì)算結(jié)果串行輸出到輸出模塊中;
步驟6 :輸出模塊將串行輸出的數(shù)據(jù)按照MSB和LSB兩個(gè)參數(shù)的設(shè)置進(jìn)行分配,最后將計(jì)算結(jié)果分解成4行4列的矩陣C ;
步驟7:按照用戶設(shè)置的輸出模式,通過(guò)數(shù)據(jù)輸出接口將矩陣C輸出。本發(fā)明適用于任意相乘矩陣的運(yùn)算,能夠方便工程設(shè)計(jì)人員根據(jù)不同設(shè)計(jì)需求,快速高效的設(shè)計(jì)矩陣乘法,并且通過(guò)參數(shù)配置模塊中的M0DE_CLASS參數(shù)控制矩陣C按行或按列的模式輸出,方便了矩陣C的輸出,其輸出方式相當(dāng)靈活。本發(fā)明通過(guò)對(duì)N、M、R三個(gè)參數(shù)的修改,能快速生成適合不同階數(shù)的矩陣乘法的陣列,控制方式靈活,操作簡(jiǎn)便,流程簡(jiǎn)潔,不需要對(duì)輸入的矩陣進(jìn)行特定的處理,省去了需要根據(jù)不同輸入的矩陣重新設(shè)計(jì)預(yù)處理模塊的步驟,大大縮短了矩陣乘法器對(duì)輸入矩陣的處理時(shí)間。并且在滿足M > N且M > R的條件下,只需設(shè)置好相應(yīng)的參數(shù),便能實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的流水輸入,實(shí)現(xiàn)數(shù)據(jù)的并行化流水處理。按照上述實(shí)施例,便可很好地實(shí)現(xiàn)本發(fā)明。
權(quán)利要求
1.基于單FPGA的并行矩陣乘法器,其特征在于,包括 NXR個(gè)計(jì)算單元PE,用于對(duì)輸入的數(shù)據(jù)進(jìn)行乘加計(jì)算操作; 數(shù)據(jù)輸入接口,用于并行輸入矩陣A和矩陣B,其中,矩陣A為N行M列,矩陣B為M行R列; 參數(shù)配置模塊,用于輸入N、M、R、MODE_CLASS四個(gè)參數(shù),根據(jù)輸入的N、R兩個(gè)參數(shù)控制NXR個(gè)計(jì)算單元PE生成N行R列的PE陣列,并根據(jù)輸入的參數(shù)M控制矩陣A和矩陣B輸入到該P(yáng)E陣列中進(jìn)行運(yùn)算,M控制數(shù)據(jù)的輸入時(shí)鐘;MODE_CLASS則控制寄存器組中的數(shù)據(jù)輸出到輸出模塊的輸出模式; 寄存器組,用于接收PE陣列的計(jì)算結(jié)果,并根據(jù)輸入的MODE_CLASS參數(shù)將該結(jié)果輸出到輸出模塊中; 輸出模塊,用于接收寄存器組中的數(shù)據(jù)并將該數(shù)據(jù)分解成矩陣C,該矩陣C為N行R列,且 C=AXB ; 數(shù)據(jù)輸出接口,用于輸出矩陣C。
2.根據(jù)權(quán)利要求I所述的基于單FPGA的并行矩陣乘法器,其特征在于,所述的計(jì)算單元PE由FPGA內(nèi)部的DSP48單元構(gòu)成。
3.根據(jù)權(quán)利要求I或2所述的基于單FPGA的并行矩陣乘法器,其特征在于,所述寄存器組由RegI和RegQ兩個(gè)寄存器組成。
4.基于單FPGA的并行矩陣乘法器的實(shí)現(xiàn)方法,其特征在于,包括以下步驟 (1)在參數(shù)配置模塊中輸入N、M、R三個(gè)參數(shù),NXR個(gè)計(jì)算單元PE根據(jù)輸入的N、R生成N行R列的PE陣列; (2)通過(guò)數(shù)據(jù)輸入接口分別輸入矩陣A和矩陣B,其中,矩陣A為N行M列,而矩陣B為M行R列; (3)在參數(shù)配置模塊中設(shè)置MODE_CLASS參數(shù),用以控制矩陣C的輸出模式; (4)矩陣A和矩陣B通過(guò)參數(shù)配置模塊輸入到PE陣列中進(jìn)行乘加計(jì)算,即AXB,并經(jīng)過(guò)M個(gè)時(shí)鐘得到計(jì)算結(jié)果; (5)寄存器組接收計(jì)算結(jié)果,并按照設(shè)置的輸出模式將該計(jì)算結(jié)果輸出到輸出模塊; (6)輸出模塊將輸出的計(jì)算結(jié)果分解成N行R列的矩陣C并按照輸出模式控制矩陣C的輸出; (7)數(shù)據(jù)輸出接口輸出矩陣C。
5.根據(jù)權(quán)利要求4所述的基于單FPGA的并行矩陣乘法器的實(shí)現(xiàn)方法,其特征在于,在步驟(3)中,所述的MODE_CLASS參數(shù)取N、R兩個(gè)值,其中,MODE_CLASS=N時(shí),矩陣C按列的方式輸出,而MODE_CLASS=R時(shí),則矩陣C按行的方式輸出。
6.根據(jù)權(quán)利要求5所述的基于單FPGA的并行矩陣乘法器的實(shí)現(xiàn)方法,其特征在于,在步驟(4)中,所述PE陣列采用并行運(yùn)算的方式進(jìn)行計(jì)算,并且各個(gè)計(jì)算單元PE之間沒(méi)有數(shù)據(jù)通信。
7.根據(jù)權(quán)利要求6所述的基于單FPGA的并行矩陣乘法器的實(shí)現(xiàn)方法,其特征在于,步驟(4)包括以下步驟 (4a)利用參數(shù)配置模塊中的A_WORDSIZE和B_WORDSIZE兩個(gè)參數(shù),通過(guò)A_WORDSIZE確定矩陣A的位寬,通過(guò)B_WORDSIZE確定矩陣B的位寬;(4b)將矩陣A的I、Q兩路均并置成位寬為A_WORDSIZEXN的兩路信號(hào),并按列的方式將矩陣A輸入到PE陣列中,同時(shí)將矩陣B的I、Q兩路均并置成位寬為B_WORDSIZEXR的兩路信號(hào),并按行的方式將矩陣B輸入到PE陣列中; (4c) PE陣列對(duì)輸入的矩陣A和矩陣B進(jìn)行乘加計(jì)算。
8.根據(jù)權(quán)利要求7所述的基于單FPGA的并行矩陣乘法器的實(shí)現(xiàn)方法,其特征在于,所述寄存器組將計(jì)算結(jié)果串行輸出到輸出模塊,并且輸出模塊按照MSB和LSB兩個(gè)參數(shù)的設(shè)置對(duì)該計(jì)算結(jié)果進(jìn)行分配,使其分解成矩陣C,其中,MSB為矩陣C的最高有效位,而LSB為矩陣C的最低有效位。
全文摘要
本發(fā)明提供基于單FPGA的并行矩陣乘法器,解決現(xiàn)有矩陣乘法器控制復(fù)雜且不能對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流水式處理的問(wèn)題;并提供該矩陣乘法器的實(shí)現(xiàn)方法。該矩陣乘法器,包括計(jì)算單元PE、數(shù)據(jù)輸入接口、參數(shù)配置模塊、寄存器組、輸出模塊、數(shù)據(jù)輸出接口;該矩陣乘法器的實(shí)現(xiàn)方法,包括以下步驟(1)在參數(shù)配置模塊中輸入N、M、R三個(gè)參數(shù);(2)輸入矩陣A和矩陣B;(3)設(shè)置MODE_CLASS參數(shù)控制矩陣C的輸出模式;(4)將矩陣A和矩陣B輸入到PE陣列中進(jìn)行乘加計(jì)算;(5)寄存器組接收計(jì)算結(jié)果,并按照MODE_CLASS參數(shù)將該計(jì)算結(jié)果輸出;(6)輸出模塊將計(jì)算結(jié)果并分解成矩陣C;(7)輸出矩陣C。本發(fā)明通過(guò)修改參數(shù)生成對(duì)應(yīng)的陣列結(jié)構(gòu),實(shí)現(xiàn)數(shù)據(jù)的并行化流水處理。
文檔編號(hào)G06F7/52GK102662623SQ20121013021
公開日2012年9月12日 申請(qǐng)日期2012年4月28日 優(yōu)先權(quán)日2012年4月28日
發(fā)明者何春, 李玉柏, 莫明威, 趙強(qiáng) 申請(qǐng)人:電子科技大學(xué)