黃 梅
HUANG Mei
(樂山職業(yè)技術(shù)學(xué)院,樂山 614000 )
在現(xiàn)代的集成電路設(shè)計(jì)過(guò)程中,常常使用“用磚頭,蓋房子”類似的方法來(lái)進(jìn)行大規(guī)模項(xiàng)目的設(shè)計(jì)。硅IP模塊就是蓋房子用的“磚頭”?!按u頭”質(zhì)量的好壞,直接決定了整個(gè)集成電路設(shè)計(jì)的成敗。對(duì)于集成電路而言,在大多數(shù)情況下,任何小缺陷都會(huì)造成整個(gè)集成電路的失敗,因此在商業(yè)過(guò)程中,往往采用經(jīng)過(guò)市場(chǎng)驗(yàn)證過(guò)的硅IP,或者經(jīng)過(guò)反復(fù)驗(yàn)證該IP的可用性。驗(yàn)證IP的質(zhì)量和性能,逐漸成為設(shè)計(jì)工作中價(jià)值最大,最耗費(fèi)人力和才智的工作。隨著計(jì)算機(jī)軟件技術(shù)的進(jìn)步,出現(xiàn)了許多計(jì)算機(jī)軟件工具用于提高設(shè)計(jì)的自動(dòng)型,以避免人為錯(cuò)誤。然而,由于摩爾定律的作用,集成電路上晶體管的成本在不斷下降,越是大型的設(shè)計(jì)可能反而性價(jià)比越高,迫使商業(yè)公司和其他機(jī)構(gòu)不斷往電路上加入更多更復(fù)雜的設(shè)計(jì),來(lái)保持市場(chǎng)競(jìng)爭(zhēng)力。在摩爾定律作用下,芯片成本線性降低,規(guī)模線性增長(zhǎng),但復(fù)雜度卻呈現(xiàn)指數(shù)上漲趨勢(shì),導(dǎo)致原有的軟件設(shè)計(jì)工具越來(lái)越難以滿足需要。
1)芯片的設(shè)計(jì)規(guī)模不斷翻番,但計(jì)算機(jī)的硬件性能卻不能同步增長(zhǎng);2)即使使用最先進(jìn)的計(jì)算機(jī)硬件,但操作系統(tǒng)的能力又再次限制了系統(tǒng)的性能。主流的計(jì)算機(jī)操作系統(tǒng),從16位,到32位,到64位,三次跨越耗費(fèi)了近30年時(shí)間,但芯片設(shè)計(jì)規(guī)模,仍然保持18個(gè)月就翻番。當(dāng)前主流的操作系統(tǒng),其程序使用空間如WindowsXP 32bit和NT系統(tǒng),僅僅在2G~3G Byte之間,但千萬(wàn)門級(jí)的設(shè)計(jì),在現(xiàn)在已經(jīng)只能算中等規(guī)模設(shè)計(jì),就是讀入這樣的設(shè)計(jì),已經(jīng)讓當(dāng)前的主流計(jì)算機(jī)系統(tǒng)狼狽不堪,仿真這樣的設(shè)計(jì),幾乎到了無(wú)路可走的地步;3)在使用軟件對(duì)集成電路IP進(jìn)行設(shè)計(jì)時(shí)候,測(cè)試向量的生成可能非常困難。由于軟件工具靠手工輸入數(shù)據(jù),在面臨大量數(shù)據(jù)處理的設(shè)計(jì)時(shí)候,手工輸入幾乎成為了不可能的事情。典型的就是比如高清視頻信號(hào)處理,每秒鐘的仿真,需要輸入的數(shù)據(jù)量達(dá)到了1920X1080X30X3=186624000 byte,也就是說(shuō)接近200MB。對(duì)這么大量的數(shù)據(jù),進(jìn)行大規(guī)模軟件仿真,已經(jīng)不現(xiàn)實(shí)了。所以,配合新技術(shù)新方法的出現(xiàn),大型商業(yè)設(shè)計(jì)往往采用以下思路進(jìn)行:
1)將大型設(shè)計(jì)盡量分割開,區(qū)分可靠設(shè)計(jì)和待完成設(shè)計(jì),重點(diǎn)把時(shí)間用在待完成設(shè)計(jì)上。團(tuán)隊(duì)能并行進(jìn)行設(shè)計(jì)工作。
2)采用可編程器件(FPGA),將芯片待開發(fā)的硅IP映射到可編程器件中,讓可編程器件模擬硅IP的工作。
由于可編程器件并行工作,其運(yùn)行速度遠(yuǎn)高于計(jì)算機(jī)軟件仿真,還可以反復(fù)擦寫可編程器件,使測(cè)試和調(diào)整變得更容易,還可以反復(fù)測(cè)試和驗(yàn)證修改結(jié)果。這個(gè)過(guò)程常常被稱為FPGA原型驗(yàn)證。同時(shí),可編程器件的軟件還兼顧一個(gè)優(yōu)點(diǎn),就是可以通過(guò)軟件編譯結(jié)果,查看硅IP大致的資源使用狀況,方便設(shè)計(jì)者調(diào)整硅IP流片形成的成本。比較典型的就是信號(hào)處理器的乘法器,在算法不斷調(diào)整優(yōu)化的情況下,乘法器常常占到設(shè)計(jì)1/3的晶體管,為了使得芯片成本更便宜,開發(fā)者常常想辦法降低乘法器使用的晶體管,比如浮點(diǎn)乘法器改定點(diǎn)、高精度轉(zhuǎn)低精度,用幾個(gè)小型乘法器替代大型乘法器等。
目前,主流的設(shè)計(jì),已經(jīng)開始慢慢接受和采用上述開發(fā)手段。但是上述開發(fā)手段又出現(xiàn)了新的不匹配。例如IP的輸入輸出系統(tǒng)。把一個(gè)IP看成一組信號(hào)輸入和輸出的系統(tǒng)。在現(xiàn)實(shí)的物理世界,每個(gè)系統(tǒng)的輸入輸出通常是比較穩(wěn)定的。如網(wǎng)絡(luò)接口、無(wú)線廣播信號(hào)、圖像信號(hào)、聲音信號(hào)等等。但采用可編程器件來(lái)模擬硅IP,則引起了新的問題,就是每次硅IP調(diào)整后,可能占用的可編程資源都不同,其運(yùn)行速度和性能都將發(fā)生變化,從而導(dǎo)致對(duì)外部信號(hào)的處理能力出現(xiàn)不匹配的狀況;再如原先能接受1.25M無(wú)線GSM手機(jī)信號(hào),運(yùn)行在80Mhz,修正后只能運(yùn)行在75Mhz了,盡管內(nèi)部處理過(guò)程邏輯正確、外部信號(hào)輸入仍然不變,但FPGA仿真系統(tǒng)卻無(wú)法提供更高性能而正確工作了。因此,要在FPGA里調(diào)試IP,并不是容易的事情,為FPGA原型系統(tǒng)提供準(zhǔn)確的數(shù)據(jù)通路,變得非常重要。
3)嵌入式軟處理器與待驗(yàn)證的IP相融合,將提高IP的騅證。
若將嵌入式軟處理器與待驗(yàn)證的IP相融合,將為IP的驗(yàn)證帶來(lái)極大的便利。主要原因?yàn)椋?/p>
(1)軟處理器本身與待驗(yàn)證IP可以共享時(shí)鐘和其他FPGA資源,其運(yùn)行速度很容易與待驗(yàn)證IP匹配;
(2)軟件處理器的及其外圍資源,比如IO接口、總線、存儲(chǔ)器資源,都是動(dòng)態(tài)可配置的成熟IP資源,其運(yùn)行規(guī)模和實(shí)時(shí)性可配置而達(dá)到待驗(yàn)證IP的驗(yàn)證要求;
(3)軟件處理器的外部接口資源,容易與PC系統(tǒng)連接,建立起PC資源與待驗(yàn)證IP之間的數(shù)據(jù)橋接通道;
(4)軟處理器和PC資源相配合,能產(chǎn)生超越馮。諾曼體系結(jié)構(gòu)的計(jì)算系統(tǒng)(在傳統(tǒng)的馮。諾曼結(jié)構(gòu)里,程序被固化在固定的存儲(chǔ)空間,處理器按照固定的路徑執(zhí)行和跳轉(zhuǎn);而軟處理器與PC資源相結(jié)合,則能隨時(shí)用PC來(lái)更新軟處理器運(yùn)行的程序代碼和功能),成為特殊的計(jì)算方案,非常有利于IP設(shè)計(jì)的反復(fù)迭代優(yōu)化過(guò)程。
以Xilinx公司的軟處理器MicroBlaze為例,介紹一個(gè)待驗(yàn)證的視頻解碼(或者編碼或者圖像增強(qiáng))IP的驗(yàn)證過(guò)程,其主要思路是:
待驗(yàn)證IP作為MicroBlazer軟處理器的外設(shè)運(yùn)行,其輸入和輸出由軟處理器系統(tǒng)來(lái)調(diào)度和存儲(chǔ),由于軟處理器系統(tǒng)在同一個(gè)FPGA中運(yùn)行,因此能使用高帶寬和實(shí)時(shí)性的外部直連內(nèi)存池為待驗(yàn)證IP提供足夠的實(shí)時(shí)性和帶寬需求;同時(shí)由于軟處理器本身可編程,就可以對(duì)待驗(yàn)證的IP輸入輸出需求進(jìn)行模擬和匹配;軟處理器系統(tǒng)也提供了與PC通訊的能力,因此PC上能方便地產(chǎn)生測(cè)試向量并解讀軟處理器系統(tǒng)發(fā)回的驗(yàn)證結(jié)果。當(dāng)驗(yàn)證開始時(shí),F(xiàn)PGA復(fù)位啟動(dòng)了軟處理器,軟處理器啟動(dòng)后將PC端生成的測(cè)試向量通過(guò)PC接口下載到FPGA控制的內(nèi)存池當(dāng)中;當(dāng)測(cè)試向量下載完成,軟處理器的程序再啟動(dòng)待驗(yàn)證IP,并根據(jù)待驗(yàn)證IP的需求不斷將內(nèi)存池中的測(cè)試向量發(fā)送給待驗(yàn)證IP,然后取得處理結(jié)果,仍然存放在內(nèi)存池中;當(dāng)測(cè)試向量完成處理,軟處理器就暫停待驗(yàn)證IP,然后向PC發(fā)送驗(yàn)證結(jié)果;驗(yàn)證結(jié)果在PC上就會(huì)很容易被檢查了。
1)將待驗(yàn)證IP轉(zhuǎn)化為Microblazer能夠控制的IP。
MicroBlaze能夠以200Mhz的性能運(yùn)行,其總線接口OPB/PLB基本能同步運(yùn)行,8條FSL接口各自運(yùn)行速度在600Mbps。而一般的待驗(yàn)證IP運(yùn)行速度在50~80Mhz。這樣我們就能將待驗(yàn)證IP轉(zhuǎn)化為Microblazer能夠控制的IP。
(1)將待驗(yàn)證視頻IP接口中的全局時(shí)鐘,Reset信號(hào)上加入控制電路,使得Microblazer通過(guò)寄存器操作能對(duì)待驗(yàn)證IP進(jìn)行全局復(fù)位和時(shí)鐘速度切換。
(2)將待驗(yàn)證視頻IP的輸入輸出數(shù)據(jù)格式,轉(zhuǎn)化為MicroBlazer總線系統(tǒng)接口,由于PLB總線速率較低,一般采用OPB總線,為了達(dá)到更大吞吐量,需要配置OPB總線的DMA模塊,在需要更大實(shí)時(shí)吞吐量的場(chǎng)合,則采用FSL接口,與Microblazer實(shí)現(xiàn)指令級(jí)的同步。這樣,在軟處理器看來(lái),待驗(yàn)證視頻IP可以成為軟處理器子系統(tǒng)的兩個(gè)外設(shè)設(shè)備。
2)利用MicroBlazer資源進(jìn)行IO資源轉(zhuǎn)換。
由于軟處理器系統(tǒng)與待驗(yàn)證IP系統(tǒng)在同一個(gè)FPGA內(nèi)運(yùn)行,我們要保證軟處理系統(tǒng)能消除待驗(yàn)證系統(tǒng)的輸入輸出瓶頸。
(1)配置MicroBlazer的存儲(chǔ)器接口為DDR2,64bit,533Mhz,4G容量,Xilinx軟件能自動(dòng)生成內(nèi)存控制器。利用MicroBlazer的32位尋址能力,它能實(shí)現(xiàn)4GBye容量的總數(shù)據(jù)吞吐量作為緩存。就高清視頻解碼或者壓縮來(lái)說(shuō)接近20秒,其性能是8.5GB/s,已經(jīng)能充分滿足驗(yàn)證需求。
(2)配置MicroBlazer系統(tǒng)與PC通訊的資源,這里我們采用USB接口,能實(shí)現(xiàn)熱插拔,我們采用成熟方便的Cypress68013接口芯片與系統(tǒng)掛接,其極限數(shù)據(jù)持續(xù)傳輸率在20MB/s左右。因此,比起通常的PC的IO能力用于驗(yàn)證,軟處理器系統(tǒng)能輕易提高400倍的性能。
3)生成軟處理器與待驗(yàn)證IP的硬件系統(tǒng)
Xilinx在轉(zhuǎn)化用戶邏輯到FPGA配置過(guò)程中,有一個(gè)網(wǎng)表生成的過(guò)程,其軟處理器和周邊資源以宏單元方式在網(wǎng)表階段,與其他IP網(wǎng)表相結(jié)合,這樣保證了其軟處理和相關(guān)資源不會(huì)被盜用到其他FPGA平臺(tái)或者用于ASIC設(shè)計(jì)。因此,我們可以在Xilinx的設(shè)計(jì)工具EDK里面,按照Wizard生成包含軟處理器、總線、內(nèi)存控制器等子系統(tǒng),再將修正過(guò)接口的USB通訊接口和待驗(yàn)證IP作為設(shè)備連接在子系統(tǒng)上。只要相關(guān)接口符合規(guī)范,EDK軟件就自動(dòng)完成了網(wǎng)表合并,生成FPGA的硬件配置文件。
4)軟處理器的軟件編程
(1)軟件處理器的軟件主要完成3個(gè)模塊。與PC的通訊模塊,實(shí)現(xiàn)了內(nèi)存池與PC的數(shù)據(jù)交換;待測(cè)IP的啟動(dòng)和終止;伺服待驗(yàn)證IP的數(shù)據(jù)輸入輸出。前兩個(gè)模塊相對(duì)穩(wěn)定是通用模塊,伺服待驗(yàn)證IP的數(shù)據(jù)輸入輸出則與待驗(yàn)證IP的特性有關(guān)。在待驗(yàn)證IP通過(guò)硬件橋接到標(biāo)準(zhǔn)軟處理器總線的情況下,軟件通用性和移植性就很好保證;若采用簡(jiǎn)單連接,則用軟件來(lái)為待測(cè)模塊提供輸入輸出特性,靈活性強(qiáng),但系統(tǒng)運(yùn)行性能低一些,移植性和通用性也弱一些。Xilinx的EDK工具能使得用戶直接采用C語(yǔ)言和C++進(jìn)行編程,并自動(dòng)根據(jù)硬件配置設(shè)置好軟件環(huán)境。因此調(diào)整軟件是非常方便的。
(2)軟件處理器的軟件最好控制軟件長(zhǎng)度和復(fù)雜度。當(dāng)軟處理器軟件代碼長(zhǎng)度能夠在FPGA內(nèi)部放下的時(shí)候,能取得最高的性能;其次,就必須映射到外部存儲(chǔ)器完成,內(nèi)存帶寬影響到處理器的運(yùn)行能力;最差就是采用外部的非易失性存儲(chǔ)器來(lái)存儲(chǔ)代碼,運(yùn)行速度最慢。因此建議主要模塊在軟處理器中完成,但負(fù)責(zé)調(diào)度的工作流程可以不在軟件處理器內(nèi)完成,而由PC軟件遠(yuǎn)程調(diào)度。這樣能實(shí)現(xiàn)更大的靈活性,并節(jié)省代碼長(zhǎng)度。
經(jīng)驗(yàn)表明,F(xiàn)PGA原型驗(yàn)證方法比PC軟件模擬進(jìn)行IP驗(yàn)證,能提高系統(tǒng)運(yùn)行速度1000倍以上;而如果采用FPGA進(jìn)行原型驗(yàn)證,但輸入輸出結(jié)果直接依賴PC,不但效率大大降低,而且對(duì)IP的驗(yàn)證覆蓋效果也因?yàn)榇?yàn)證IP的IO性能瓶頸大大降低;嵌入式處理器系統(tǒng)的出現(xiàn),結(jié)合了PC的靈活資源與FPGA的性能優(yōu)勢(shì),大大改善了IP設(shè)計(jì)效果,尤其適合高性能高帶寬要求的IP驗(yàn)證。
[1] 數(shù)據(jù)信號(hào)處理FPGA電路設(shè)計(jì)[M]. 高等教育出版社出版.
[2] FPGA嵌入式系統(tǒng)設(shè)計(jì)[M]. 電子工業(yè)出版社出版.
[3] XilinxFPGA開發(fā)實(shí)用教程[M]. 清華大學(xué)出版社出版.