前言
FPGA已經(jīng)不再單純應(yīng)用在芯片與系統(tǒng)之間的直接互聯(lián)層,在軟件無線電(SDR)中,FPGA逐漸被用做通用運(yùn)算架構(gòu)來實(shí)現(xiàn)硬件加速單元,在降低成本和功耗的基礎(chǔ)上提高了性能。SDR調(diào)制解調(diào)器的典型實(shí)現(xiàn)包括通用處理器(GPP)、DSP和FPGA。而且,FPGA架構(gòu)可以結(jié)合專用硬件加速單元,用來卸載GPP或DSP。軟核微處理器可以結(jié)合定制邏輯,擴(kuò)展其內(nèi)核,也可以將分立的硬件加速協(xié)處理器添加到系統(tǒng)中。此外,還可將通用布線資源放在FPGA中,這些硬件加速單元可以并行運(yùn)行,進(jìn)一步增強(qiáng)系統(tǒng)的整體運(yùn)算輸出能力。本文將討論三種不同類型的硬件加速單元,以及它們通過軟件實(shí)現(xiàn)的性能。
表 1 使用軟件與使用硬件定制指令來實(shí)行算法之間的處理能力比較
圖1 在系統(tǒng)內(nèi)的硬件加速協(xié)處理器
圖2 組合FFT/FIRASIP體系結(jié)構(gòu)
SDR系統(tǒng)體系結(jié)構(gòu)
GPP、DSP和FPGA可應(yīng)用于SDR系統(tǒng)的不同單元。然而,在這些單元之間仍然有相當(dāng)多的功能重疊。例如,在DSP上執(zhí)行的算法可以用GPP來實(shí)現(xiàn)(雖然會(huì)慢一些),或是重新編寫HDL,作為一個(gè)協(xié)處理器或硬件加速單元在FPGA上運(yùn)行。
硬件加速
多種方式可以使用FPGA實(shí)現(xiàn)硬件加速,可以歸納為三種基本體系結(jié)構(gòu):定制指令、定制外設(shè)做為協(xié)處理器,以及動(dòng)態(tài)重新配置專用處理器。這些硬件加速方法具有不同的特性和獨(dú)特的優(yōu)勢(shì)。掌握這些方面的使用以及在哪里使用,將有助于在系統(tǒng)體系結(jié)構(gòu)中更好地使用FPGA資源,以便在SDR應(yīng)用中卸載DSP和GPP。
軟核處理器與定制指令
隨著大型FPGA的出現(xiàn),可以被嵌入到FPGA中的小巧但功能強(qiáng)大的處理器也出現(xiàn)了,這些軟核處理器是可配置的IP比特流,可以下載到FPGA之中。它們甚至具有業(yè)界標(biāo)準(zhǔn)的工具組,包括編譯器、指令集仿真器、全套軟件調(diào)試工具,以及集成開發(fā)環(huán)境。任何一位嵌入式軟件工程師都非常熟悉這些工具組,因此將處理器做為比特流下載到FPGA中的操作比較簡(jiǎn)單。然而,這些軟核處理器具有很大的靈活性。在下載處理器之前,設(shè)計(jì)人員可以平衡考慮尺寸大小和速度要求,以選擇不同的配置選項(xiàng)。設(shè)計(jì)人員也可以增加多種外設(shè)來實(shí)現(xiàn)內(nèi)存控制、通信、I/O等等。
定制指令進(jìn)一步提高了軟核處理器的靈活性,可以當(dāng)做軟核微處理器算術(shù)邏輯單元(ALU)的硬件輔助專用算法。這些新的硬件指令可以替代算法中對(duì)時(shí)間要求高的部分,重新分配軟件算法到硬件模塊中。帶有定制指令的RISC微處理器模糊了RISC與CISC之間的界線,因?yàn)槎ㄖ浦噶顔卧梢允嵌嘀芷诘挠布K,可配合嵌入在RISC處理器中采用單一周期的標(biāo)準(zhǔn)指令,共同執(zhí)行復(fù)雜的算法。并且可以添加多個(gè)定制指令到ALU中,僅受FPGA資源以及在軟核處理器開放代碼表中開放位置數(shù)量的限制。