讓生物識別技術(shù)成為FPGA動(dòng)態(tài)部分重配置功能的“殺手級”應用
重配置控制器
本文引用地址:http://dyxdggzs.com/article/117277.htm設計高效的重配置控制器是部署面向單一環(huán)境 FPGA 的 PR (部分重配置)系統的成功關(guān)鍵。雖然在重配置 PRR 期間,FPGA 的非重配置區域仍然處于工作狀態(tài),但 PRR 資源此時(shí)并沒(méi)有處于工作狀態(tài),故應盡量加快重配置過(guò)程,以便最大限度地降低開(kāi)銷(xiāo)。重配置的時(shí)間取決于三個(gè)因素:數據總線(xiàn)寬度、重配置頻率以及比特流大小。前兩個(gè)因素與接口特性有關(guān),而最后一個(gè)與 PRR 的大小及其中的部分重配置模塊 (PRM) 的設計復雜程度有關(guān)。
我們的工作實(shí)現了一個(gè)重配置控制器,其能在運行時(shí)將部分比特流以高帶寬從外部存儲器傳輸到 FPGA 的片上配置存儲器中。在不限制部分比特流大小,同時(shí)將外部存儲作為共享資源(各種處理器可通過(guò)系統總線(xiàn)同時(shí)訪(fǎng)問(wèn))的條件下,仍然可以達到Virtex-4最高重配置帶寬。
在系統初始化階段,部分比特流將在運行中被下載到 FPGA 配置存儲中,并從外部的Flash中傳輸到外部 DDR-SDRAM。該存儲器與多端口存儲控制器 (MPMC) 相連接,因而成為系統中任何主從處理器都可以訪(fǎng)問(wèn)的資源??梢允褂?CoreConnect PLBv46 總線(xiàn)等不同類(lèi)型的總線(xiàn)連接到 MPMC,這些總線(xiàn)可用作通用系統總線(xiàn),而賽靈思 Cachelink (XCL) 總線(xiàn)則用于 CPU 的快速指令和數據緩存。系統 CPU (MicroBlaze) 實(shí)際上是與這兩個(gè)總線(xiàn)相連接的。
不過(guò)我們的重配置解決方案是建立在新總線(xiàn)基礎之上的,即專(zhuān)用于快速鏈接外部 DDR-SDRAM 存儲庫和 ICAP 接口之間的原始端口界面 (NPI)。作為我們重配置控制器的組成部分,我們設計了可用來(lái)處理 NPI 協(xié)議的主系統存儲管理單元 (MMU)。外部 DDR-SDRAM(部分比特流)和 ICAP 原始之間的連接需要經(jīng)過(guò)一個(gè)內部 FIFO 存儲器。借助這種方法,我們可以實(shí)現兩個(gè)不同的定制界面,它們各自擁有獨立的數據總線(xiàn)大小和速度,一個(gè)與 NPI 協(xié)議耦合,另一個(gè)則與 ICAP 協(xié)議進(jìn)行耦合。
FIFO 的寫(xiě)入端口與 NPI 相連接,并使用 64 位數據總線(xiàn);而 FIFO 的讀取端口則連接到 ICAP,使用 32 位數據寬度,這是 ICAP 在 Virtex-4 器件中的最高數據寬度。FIFO 的讀取端口和寫(xiě)入端口(在 NPI 側和 ICAP 側)的運行頻率為 100MHz。為使傳輸時(shí)延降至最低,主系統 MMU 負責以 64 字(32 位)突發(fā)傳輸向內部 FIFO 傳輸配置數據,從而完成模塊的重配置。這是可接受的最大突發(fā)長(cháng)度,因而所有的重配置數據傳輸都能夠以最低突發(fā)時(shí)延完成。在另一側,只要 FIFO 不為空,重配置控制器就能讀取已存儲的 FIFO 數據,并將其以 32 位格式傳輸給 ICAP 接口。重配置控制器(就是主 MMU)負責處理對大型 DDR-SDM 存儲器進(jìn)行直接存儲器存取 (DMA)。為了實(shí)現,我們定制了一個(gè)從MMU,并在其中設置了多個(gè)控制寄存器,將這個(gè)MMU掛在PLBv46總線(xiàn)上并由CPU直接控制。
采用這種方式,CPU 僅需做兩件事情:配置在 PRR 中下載的部分比特流的初始地址和大小;向主系統 MMU 發(fā)出執行指令,以啟動(dòng)重配置過(guò)程。而后,主系統 MMU 開(kāi)始將比特流以 DMA(直接內存存儲)的方式直接傳輸給內部的 FIFO,隨后再從該 FIFO 傳輸給 ICAP 接口。一旦傳輸完畢,重配置控制器就會(huì )通知 CPU。
結果,即使在 CPU 通過(guò) XCL 或 PLBv46 總線(xiàn)訪(fǎng)問(wèn) DDR-SDRAM 的同時(shí),我們也能實(shí)現部分比特流傳輸的最大吞吐量。其最終原因在于 CPU 在內部 BM(block-M)高速緩存中運行程序流,將對外部 DDS-SDRAM 的訪(fǎng)問(wèn)釋放給了重配置控制器。值得重點(diǎn)指出的是,這個(gè)為部分比特流和軟件應用分配的 DDR-SDRAM 存儲器并非專(zhuān)用資源,而是共享資源。即使如此,該方案與其它現有的重配置控制器方案相比性能也有顯著(zhù)的改善,因為其能夠實(shí)現 Virtex-4的最大重配置吞吐量(通過(guò) 32 位數據總線(xiàn)以 100MHz 的頻率或 3.2 Gbps 的速率將部分比特流傳輸給 ICAP)。
實(shí)驗結果
從本質(zhì)上講,文中所述的嵌入式自動(dòng)指紋識別系統是一種高性能圖像處理應用,因為它擁有大量的并行性,且需要實(shí)時(shí)認證響應。從人機工程角度上講,此系統可使每位用戶(hù)的認證時(shí)間不超過(guò) 2 s或3s。
該設計流程涉及多個(gè)開(kāi)發(fā)環(huán)路。首先,我們在 PC 平臺上的 MATLAB 的軟件里開(kāi)發(fā)算法。隨后,我們將軟件代碼用 C 編程語(yǔ)言導入到嵌入式軟件中,并且首先在同一 PC 上執行,以確認我們能夠獲得同樣的結果,然后在 FPGA 器件內合成的 MicroBlaze 嵌入式微處理器上執行。
通過(guò)這種方式,Virtex-4 器件可在不使用任何定制硬件協(xié)處理器和不達到實(shí)時(shí)性能要求的情況下實(shí)施基于 MicroBlaze 的純軟件解決方案。為縮短運行時(shí)間,我們根據任務(wù)概要,下一步工作是引入 PRR,并在上面構建各種定制生物識別協(xié)處理器,使用硬件/軟件協(xié)同設計解決方案。此刻,我們已經(jīng)采用 C 編程語(yǔ)言和 VHDL 硬件描述語(yǔ)言完成了此系統的開(kāi)發(fā)工作。
我們采用 268x460 像素的 8 位灰度指紋圖像進(jìn)行了一些識別測試。同時(shí),我們在基于 Virtex-4 的 PR 系統上和運行速度為 1.83GHz 的 Intel Core 2 Duo T5600 處理器的個(gè)人電腦上也進(jìn)行了相同的測試。然后,我們運行相同的算法,包括純軟件實(shí)施方式和軟硬件混合實(shí)施方式,以比較登錄和識別階段的性能。
如果不考慮采集工作(由于掃描傳感器的性能限制,需以 5ms 積分時(shí)間采集 100 片并在運行中重構圖像,故采集時(shí)間固定為 500ms),PR 方法可以把運行其他處理任務(wù)所形成的延遲降低到 205ms。與在 PC 上運行純軟件方法的 3,274ms 的延遲相比,PR 方法可提高 16 倍速度。
因此,表 1 說(shuō)明運用并行和流水線(xiàn)技術(shù)進(jìn)行軟硬件協(xié)同設計,同時(shí)配合低重配置延遲的 PR 技術(shù),明顯實(shí)現實(shí)時(shí)認證是可行的。另外,在動(dòng)態(tài)重配置時(shí),可以指定模塊運行的頻率,這個(gè)頻率是由新模塊的特性所決定。在我們的設計中,所有模塊運行在50MHz或者100MHz的頻率下。
此外,重配置流程一直以 100MHz 運行,在每個(gè)時(shí)鐘周期里傳輸 32 位比特,從而保證 Virtex-4 上的最低重配置延遲。根據每個(gè) PRR 硬件環(huán)境的比特流復雜性,每個(gè)重配置流程花費的時(shí)間在 0.8ms(例如標準化)和 1.1ms(例如二進(jìn)制化)之間。與生物識別應用的總體運行時(shí)間相比,該重配置時(shí)間可忽略不計。
由于我們已經(jīng)成功完成了概念驗證工作,我們準備把原型導出到新一代賽靈思低端具有 PR 功能的 28 納米FPGA 器件中(Artix-7 系列)。我們的目標是以最低的成本設計出一款能夠在任何消費類(lèi)電子產(chǎn)品中嵌入高性能且真正安全的生物識別系統。
評論