流水線技術(shù)在基于FPGA的DSP運(yùn)算中的應(yīng)用
由比較結(jié)果可見(jiàn):采用同樣的流水線級(jí)數(shù)時(shí),工作速度基本相同,但耗用資源隨輸入位數(shù)的增加而急劇增加,加法器主要是邏輯單元LE個(gè)數(shù)的增加;乘法器則是存儲(chǔ)器位和嵌入式乘法器個(gè)數(shù)的增加。因此,對(duì)于不同的運(yùn)算器電路,應(yīng)根據(jù)需要選用不同型號(hào)的FPGA器件以滿足對(duì)不同資源的需要。如,僅作加法運(yùn)算時(shí),可以選用邏輯單元豐富的FPGA器件女HACEX系列、FLEX等系列;乘加運(yùn)算則需要選擇內(nèi)嵌乘法器模塊和存儲(chǔ)器模塊的Cyclone、CycloneII等系列。
2 基于FPGA實(shí)現(xiàn)DSP流水線設(shè)計(jì)中應(yīng)注意的其他問(wèn)題
2.1 流水線設(shè)計(jì)方法的選擇
流水線設(shè)計(jì)可分為原理圖和VHDL兩種基本方法。
如前所述,用原理圖輸入法設(shè)計(jì)時(shí),為提高設(shè)計(jì)效率,應(yīng)充分利用帶有LPM_PIPELINE的LPM模塊,并利用QuartusII(提供了40多種LPM函數(shù))編譯器給出的LPM PIPELINE最佳數(shù)值(即最佳流水線級(jí)數(shù)),設(shè)定最佳LPM_PIPEINE值。
在無(wú)合適的I PM模塊可用時(shí),需要用VHDL作為設(shè)計(jì)輸入。
流水線技術(shù)的實(shí)質(zhì)就是在適當(dāng)?shù)牡胤郊尤爰拇嫫鳎瑢⑶懊娴倪\(yùn)算結(jié)果或輸入數(shù)據(jù)暫存,并在下一個(gè)時(shí)鐘到來(lái)時(shí),將寄存值作為后一級(jí)運(yùn)算的輸入。因此在用VHDL描述流水線時(shí),只需對(duì)不含流水線的運(yùn)算器描述代碼作適當(dāng)改寫,施加必要的設(shè)計(jì)約束即可實(shí)現(xiàn)。一般通過(guò)在進(jìn)程中加入WAIT語(yǔ)句或IF_THEN語(yǔ)句來(lái)測(cè)試敏感信號(hào)邊沿,實(shí)現(xiàn)寄存器或鎖存器。
如使用WAIT語(yǔ)句,常用的描述形式為:
PROCESS
BEGIN
wait until clk’event and clk=’1’; (上升沿觸發(fā))
reg=x;
END PROCESS;
其中的x是指輸入到所加流水線寄存器reg中的數(shù)據(jù)。
使用IF_THEN語(yǔ)句,常用描述方式為:
IF(clk’event and clk=’1’) THEN…
另外,用VHDL設(shè)計(jì)輸入時(shí)也可以利用Altera所提供的LPM函數(shù),但必須在設(shè)計(jì)實(shí)體前使LPM庫(kù)可現(xiàn),即加入以下語(yǔ)句:
LIBRARY lpm;
USE lpm.lpm_components.ALL;
2.2 流水線的首次延時(shí)和寄存器的觸發(fā)時(shí)間
對(duì)圖1所示系統(tǒng)進(jìn)行延時(shí)分析,圖中組合邏輯的延遲包括兩級(jí),合理設(shè)計(jì)的流水線結(jié)構(gòu)中,其延遲時(shí)間應(yīng)大致相等,設(shè)為2Tpd,插入每級(jí)寄存器組的觸發(fā)時(shí)間為Tco。因此,從輸入到輸出總的等待時(shí)延為:TDl=2(Tpd+Tco),稱為流水線設(shè)計(jì)的首次延時(shí)(First Latency)。對(duì)于連續(xù)的運(yùn)算,由于加上寄存器組后,每級(jí)計(jì)算后的中間結(jié)果都能暫時(shí)保存,下一個(gè)時(shí)鐘到來(lái)時(shí),可以直接參與下一級(jí)邏輯運(yùn)算,無(wú)需等待從系統(tǒng)的輸入端傳來(lái)數(shù)據(jù)。因此,第二個(gè)結(jié)果及以后的運(yùn)算結(jié)果的獲得只需要一個(gè)時(shí)鐘周期,等待的時(shí)延為:TD2=Tpd+TCO。
可見(jiàn),流水線設(shè)計(jì)的首次延時(shí)與流水線正常延時(shí)相比要長(zhǎng)得多。所以在選擇是否采用流水線技術(shù)時(shí),要分析DSP運(yùn)算的頻率。當(dāng)需要進(jìn)行連續(xù)運(yùn)算(即流水線一直是滿負(fù)荷)時(shí),采用流水線可以大大提高數(shù)據(jù)吞吐率;但如果只是偶爾需要加、乘運(yùn)算,由于首次延時(shí)大于非流水線方式下的pin to pin延時(shí),流水線應(yīng)用效果變差,而且還犧牲了額外的芯片資源,所以不推薦使用流水線。在FPGA/CPLD中,器件的延時(shí)Tpd要比寄存器的觸發(fā)時(shí)間TCO長(zhǎng)得多,一般分析流水線吞吐延時(shí)可以忽略TCO。但是在高速運(yùn)算場(chǎng)合或流水線技術(shù)較多時(shí)(如視頻信號(hào)處理或無(wú)線通信中的數(shù)據(jù)處理),TCO與Tpd相比已不可忽略,必須仔細(xì)選擇流水線的級(jí)數(shù),防止TCO的影響造成流水線的瓶頸。
2.3 嵌入式存儲(chǔ)器塊資源的充分利用
在FPGA器件中,嵌入式存儲(chǔ)器塊(Embedded Memory)是為支持各種存儲(chǔ)器應(yīng)用和DSP應(yīng)用提供的專門資源。如Altera公司FLEX10K系列器件提供了3個(gè)嵌入式陣列塊EAB,每個(gè)EAB提供可靈活設(shè)置的2048位RAM,Cyclone系列提供了數(shù)十個(gè)M4K資源,每個(gè)M4K提供4608位RAM,可單獨(dú)使用,也可組合使用。使用EAB或M4K構(gòu)建運(yùn)算器如乘法器,實(shí)質(zhì)是構(gòu)成乘法查找表,其運(yùn)算速度比采用LPM的乘法器速度更快,只是由于資源有限,只能實(shí)現(xiàn)小型乘法器。如能把基于嵌入式陣列塊的小型乘法器和流水線技術(shù)相結(jié)合,則能夠?qū)崿F(xiàn)運(yùn)算量和速度的進(jìn)一步提高。
2.4 控制流水線和數(shù)據(jù)流水線的劃分
由于數(shù)字信號(hào)處理系統(tǒng)復(fù)雜性的不斷提高,在利用流水線技術(shù)實(shí)現(xiàn)DSP運(yùn)算設(shè)計(jì)時(shí),還有一個(gè)需要考慮的問(wèn)題就是控制流水線和數(shù)據(jù)流水線的劃分問(wèn)題。如在高速數(shù)據(jù)采集與處理系統(tǒng)中,采樣數(shù)據(jù)的處理主要涉及DSP運(yùn)算,可以歸入數(shù)據(jù)流水線。各輸入通道傳感器與信號(hào)調(diào)理電路的選通控制、模數(shù)轉(zhuǎn)換、數(shù)據(jù)緩沖與傳送、數(shù)據(jù)運(yùn)算控制則需要主控芯片完成,如圖2所示。高速主控芯片可以選用FPGA器件,采用流水線技術(shù),將數(shù)據(jù)采集與處理過(guò)程中的通道選擇、模數(shù)轉(zhuǎn)換、數(shù)據(jù)緩沖與發(fā)送、數(shù)據(jù)運(yùn)算四部分的控制過(guò)程設(shè)計(jì)為四級(jí)流水線進(jìn)程,以減少數(shù)據(jù)采集與處理的平均作業(yè)時(shí)間,實(shí)現(xiàn)高速率的數(shù)據(jù)采集。主控芯片的流水線技術(shù)可以歸入控制流水線范疇。
3 結(jié)論
通過(guò)實(shí)驗(yàn)對(duì)比,驗(yàn)證了利用流水線技術(shù)可以實(shí)現(xiàn)基于FPGA器件的高速DSP運(yùn)算。在具體運(yùn)算器設(shè)計(jì)中要通過(guò)綜合過(guò)程,比較和優(yōu)選流水線級(jí)數(shù)以滿足速度和資源優(yōu)化的需要。DSP系統(tǒng)在進(jìn)行流水線設(shè)計(jì)時(shí)要根據(jù)運(yùn)算頻率明確用否流水線,合理劃分控制流水線和數(shù)據(jù)流水線,還要注意合理選用原理圖和VHDL描述,充分利用帶有LPM_PIPELINE的LPM和EAB(M4K)等資源,最大限度提高系統(tǒng)數(shù)據(jù)吞吐率和設(shè)計(jì)效率。
評(píng)論