文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2015)02-0042-03
0 引言
隨著圖像傳感器的快速發(fā)展,成像質(zhì)量和圖像幀率得到快速提升,,高分辨率的圖像給人們的生活帶來了極大的便利,。但與此同時,快速,、實時的傳輸圖像數(shù)據(jù)成了難題,。傳統(tǒng)的顯微鏡系統(tǒng)主要使用人工操作,對操作人員的經(jīng)驗和知識量要求比較高,,并且存在很多不定因素,。采用自動對焦則大大解決了以上問題,目前國內(nèi)外顯微鏡自動對焦在算法上都比較成熟,,但圖像的分辨率并不是很高[1],。而提高圖像分辨率不僅提高了自動對焦的精準(zhǔn)度,并且可以采集到樣品更多的細(xì)節(jié),,給研究者提供更多的信息,。鑒于以往顯微鏡圖像采集系統(tǒng)的不足,針對高分辨率圖像的數(shù)據(jù)采集,,本文選擇了基于PCI Express(PCIe)總線的圖像采集系統(tǒng)實現(xiàn)顯微鏡圖像的采集,。
目前計算機(jī)使用最為廣泛的PCI總線接口最高工作頻率能達(dá)到66 MHz,峰值帶寬理論上可以達(dá)到532 MB/s,,但這種并行總線的傳輸速度和帶寬已逐漸滿足不了高速傳輸?shù)囊?。相比傳統(tǒng)的PCI總線,21世紀(jì)初提出的高速差分總線PCIe采用點對點串行連接,、全雙工的傳輸方式大大提升了傳輸速度和帶寬,。本文實現(xiàn)的1.0版本x4規(guī)格通道理論帶寬可達(dá)到2 GB/s,比USB3.0快,,更是千兆以太網(wǎng)傳輸速度的8倍,。
1 系統(tǒng)總體設(shè)計
設(shè)計的整體結(jié)構(gòu)如圖1所示,系統(tǒng)給PCIe采集系統(tǒng)提供5 V電源,,F(xiàn)PGA正常工作后開始執(zhí)行芯片的固化程序,。首先通過IIC對CMOS傳感器進(jìn)行初始化,CMOS傳感器開始拍攝細(xì)胞的圖像,,同時通過Cameralink接口將圖像數(shù)據(jù)送至系統(tǒng)數(shù)據(jù)緩存,。FPGA將接收到的4對差分?jǐn)?shù)據(jù)解析得到圖像數(shù)據(jù),,接著以鏈?zhǔn)紻MA傳輸方式將數(shù)據(jù)直接送至IP硬核,然后將數(shù)據(jù)打包送至上位機(jī),,上位機(jī)通過應(yīng)用軟件將圖像顯示并保存,。
2 系統(tǒng)硬件設(shè)計
2.1 CMOS成像模塊
本系統(tǒng)的圖像傳感器采用Aptina公司生成的MT9-F002I12STCU芯片。FPGA通過IIC協(xié)議對CMOS芯片進(jìn)行初始化,,配置相關(guān)寄存器,。初始化之后,圖像尺寸為4 096H×3 072V,,每幀圖像大小為12 MB,,每秒可生成15幀圖像。該模塊固定在顯微鏡上,,單獨為其提供5 V電源,,模塊內(nèi)部可轉(zhuǎn)換2.8 V和1.8 V電壓為傳感器供電。CMOS傳感器的初始化程序以及圖像數(shù)據(jù)都是通過Cameralink傳輸,。
2.2 PCIe總線接口
PCIe總線采用串行連接的方式,,并使用數(shù)據(jù)包進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)報文首先在設(shè)備的核心層中產(chǎn)生,,然后再經(jīng)過設(shè)備的事務(wù)層,、數(shù)據(jù)鏈路層和物理層,最終發(fā)送出去,,接收端的數(shù)據(jù)也需要通過物理層,、物理鏈路層和事務(wù)層,并最終到達(dá)核心層,。目前主流的PCIe總線接口方法有兩種,,方法1:用PEX8311芯片,該方法實現(xiàn)了物理層,、數(shù)據(jù)鏈路層和事務(wù)層的控制邏輯,,簡單易實現(xiàn),但是缺乏靈活性和可配置性[2],。方法2:利用FPGA芯片內(nèi)部集成IP硬核,,IP硬核完成了物理層和數(shù)據(jù)鏈路層的協(xié)議,用戶需自行設(shè)計PCIe的應(yīng)用層協(xié)議和TLP,,開發(fā)難度較大,,但可以根據(jù)需求合理配置[3]。本系統(tǒng)采用方法2,,選用Altera公司的EP4CGX30CF23C8芯片,該芯片內(nèi)部集成了IP硬核模塊,,可以實現(xiàn)x4通道的PCIe接口。
3 系統(tǒng)軟件設(shè)計
3.1 鏈?zhǔn)紻MA傳輸設(shè)計
圖像數(shù)據(jù)傳輸采用DMA技術(shù)保證其實時性[4],,利用鏈?zhǔn)紻MA技術(shù)提高DMA執(zhí)行效率并配合SGDMA技術(shù)解決計算機(jī)離散物理頁的DMA傳輸問題[5],。鏈?zhǔn)紻MA區(qū)別于普通DMA的最大特點就是可以一次執(zhí)行多次DMA,,因此執(zhí)行效率非常高,非常適合于上位機(jī)上物理分頁地址不連續(xù)的DMA數(shù)據(jù)傳輸,。本系統(tǒng)中僅用到DMA寫模塊,,數(shù)據(jù)由FPGA流向計算機(jī)。具體實現(xiàn)的方法是:在主機(jī)端開辟一塊內(nèi)存區(qū)域,,用來存儲描述符表,。描述符表是用來描述在主機(jī)與外設(shè)之間數(shù)據(jù)傳輸有關(guān)的地址與長度信息的,它由一個表頭和多個描述符組成,。數(shù)據(jù)傳輸前,,用戶將控制參數(shù)、端點地址,、內(nèi)存物理地址寫入并啟功傳輸。鏈?zhǔn)紻MA控制器會及時從內(nèi)存中讀取描述符表來指揮DMA的傳輸過程,。
3.2 驅(qū)動程序設(shè)計
驅(qū)動程序采用Jungo公司開發(fā)的Windriver軟件,,并利用其特有的KernelPlugln(KP)技術(shù)實現(xiàn)高效的中斷數(shù)據(jù)采集服務(wù)。主要依靠3個函數(shù):KP_IntAtIrqt,、KP_IntAtDpc,、KP_Call。
KP_IntAtIrqt:高優(yōu)先級中斷服務(wù)程序,,硬件中斷產(chǎn)生時,,該函數(shù)被調(diào)用。當(dāng)返回值大于零時繼續(xù)調(diào)用KP_IntAtDpc,。本項目中,,數(shù)據(jù)采集的全部工作都在該函數(shù)里面完成。當(dāng)一幅圖像采集完成后返回1以便繼續(xù)調(diào)用IntAtDpc低優(yōu)先級中斷,。
KP_IntAtDpc:低優(yōu)先級中斷服務(wù)程序,,KP_IntAtIrqt返回值大于零時被調(diào)用,本項目中不做任何處理,,返回值永遠(yuǎn)大于零以調(diào)用用戶模式下的中斷服務(wù)程序,。
KP_Call:主要用于用戶模式與KP通信,本項目中用來傳遞數(shù)據(jù)緩沖區(qū)以及描述符表的地址,,需要注意的是用戶應(yīng)用程序與KP驅(qū)動程序擁有不同的虛擬地址系統(tǒng),,因此應(yīng)用程序的地址在驅(qū)動程序里不能直接使用,需要經(jīng)過地址轉(zhuǎn)換才能使用,。
圖2是中斷數(shù)據(jù)采集的流程圖,。為提高數(shù)據(jù)采集效率,采用兩片緩沖區(qū)交替緩沖機(jī)制,,應(yīng)用程序首先申請兩片數(shù)據(jù)緩沖區(qū),,并且對其初始化,。然后通過KP_Call函數(shù)將緩沖區(qū)的地址及其頁表信息等傳入驅(qū)動程序內(nèi)核模式下的KernelPlugln,用于鏈?zhǔn)紻MA描述符表的更新,。圖像采集卡每采集到3行圖像數(shù)據(jù)發(fā)送一次中斷,,中斷服務(wù)程序立刻響應(yīng)中斷。首先讀取BAR2空間偏移地址0x40處的32 bit狀態(tài)寄存器,,根據(jù)其值判斷當(dāng)前數(shù)據(jù)位于圖像的奇數(shù)行或偶數(shù)行,。中斷程序維護(hù)兩個鏈?zhǔn)紻MA描述符表,然后根據(jù)狀態(tài)寄存器的值判斷啟動對應(yīng)的鏈?zhǔn)紻MA以及更新下次將要使用的鏈?zhǔn)紻MA描述符表,,圖像采集卡將根據(jù)描述符表將數(shù)據(jù)寫入相應(yīng)數(shù)據(jù)緩沖區(qū)的對應(yīng)地址,。最后,再次根據(jù)狀態(tài)寄存器的值判斷一幅圖像是否采集完成,,若完成則通知應(yīng)用程序并繼續(xù)等待下一次中斷,,否則直接等待下一次中斷。
4 實驗結(jié)果分析
采集圖像之前先通過Altera公司設(shè)計的PCIe測速軟件在1小時內(nèi)對采集系統(tǒng)進(jìn)行了6次測試,,測試得到的結(jié)果如表1所示,。
由表1的測試結(jié)果可以看出,DMA寫的速度已經(jīng)達(dá)到理論帶寬的80%以上,,DMA讀的速度大約為580 MB/s,。經(jīng)過分析,測試速度較理論速度偏低大致有以下3個原因:(1)DMA讀取為非轉(zhuǎn)發(fā)事務(wù),,所以讀的速度比寫的要慢,;(2)中斷響應(yīng)和配置DMA寄存器延時造成速度降低;(3)計算機(jī)本身硬件條件導(dǎo)致傳輸速度偏低,。相比于成像模塊每秒產(chǎn)生15幀12 MB的圖像,,采集系統(tǒng)能夠很好地完成實時采集成像模塊生成的圖像。
將采集系統(tǒng)應(yīng)用于顯微鏡自動對焦圖像采集,,經(jīng)過長時間的采集測試,,未出現(xiàn)丟幀現(xiàn)象,采集系統(tǒng)正常工作,。圖3是采集的未經(jīng)解碼的原始圖像數(shù)據(jù),。圖4是通過快速插值解碼之后的彩色的圖像。兩幅圖中的黑點是鏡頭未清潔干凈導(dǎo)致,。實驗結(jié)果表明,,本系統(tǒng)能夠很好地采集顯微鏡自動對焦成像模塊生成的高分辨率圖像,性能穩(wěn)定,,適用于大數(shù)據(jù)量的實時快速采集,。
5 結(jié)束語
本文詳細(xì)介紹了基于PCI Express的圖像采集系統(tǒng),為大數(shù)據(jù)量的實時快速傳輸提供了有效的方案,。并通過測試證明了該系統(tǒng)能很好地應(yīng)用于顯微鏡自動對焦成像模塊的圖像采集,,實現(xiàn)了高分辨率圖像的實時顯示,。相對于熱門的USB3.0以及千兆以太網(wǎng),本設(shè)計在傳輸速度上有明顯的優(yōu)勢,,并且當(dāng)傳輸速度有更高的要求時,,還可以將x4通道擴(kuò)展成x8或x16通道,得到更高的傳輸速度,。
參考文獻(xiàn)
[1] 張磊.顯微鏡用數(shù)碼相機(jī)硬件結(jié)構(gòu)及其視頻流算法實現(xiàn)與應(yīng)用[D].杭州:浙江大學(xué),,2011.
[2] 安駿.基于橋接芯片PEX8111的PCIE總線接口設(shè)計[J].科技資訊,2010(3):23-24.
[3] 沈輝,,張萍.FPGA在PCI Express總線接口中的應(yīng)用[J].計算機(jī)應(yīng)用技術(shù),,2010,33(14):109-111.
[4] 李木國,,黃影,,劉于之.基于PCIe總線的高速數(shù)據(jù)采集卡設(shè)計與實現(xiàn)[J].測控技術(shù),2013,,32(7):19-22.
[5] 黃世中,,金志剛.利用WinDriver實現(xiàn)鏈?zhǔn)紻MA[J].電子設(shè)計工程,2013,,21(8):6-9.