《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于PCIe總線的顯微鏡圖像采集系統(tǒng)設(shè)計(jì)
基于PCIe總線的顯微鏡圖像采集系統(tǒng)設(shè)計(jì)
2015年電子技術(shù)應(yīng)用第2期
王府北,王佳華,吳瓊水
武漢大學(xué) 電子信息學(xué)院,湖北 武漢430072
摘要: 為了實(shí)現(xiàn)實(shí)時(shí)快速傳輸高分辨率圖像,設(shè)計(jì)了x4通道的PCI Express圖像采集系統(tǒng),應(yīng)用于顯微鏡自動(dòng)對(duì)焦成像模塊的大數(shù)據(jù)量傳輸。采用了Altera公司型號(hào)為EP4CGX30CF23C8的FPGA,該芯片內(nèi)部集成支持鏈?zhǔn)紻MA傳輸功能的PCIE硬核。利用Jungo公司的Windriver軟件實(shí)現(xiàn)了鏈?zhǔn)紻MA的上層應(yīng)用設(shè)計(jì)。經(jīng)測(cè)試與驗(yàn)證,該系統(tǒng)能很好地完成成像模塊圖像數(shù)據(jù)的實(shí)時(shí)采集并穩(wěn)定快速地傳送到上位機(jī),無(wú)掉幀現(xiàn)象,性能穩(wěn)定。系統(tǒng)適用于顯微鏡自動(dòng)對(duì)焦的高分辨率圖像模塊數(shù)據(jù)采集。
中圖分類號(hào): TN91
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)02-0042-03
Design of microscope image acquisition system based on PCI Express
Wang Fubei,Wang Jiahua,Wu Qiongshui
School of Electronic Information,Wuhan University,Wuhan 430072,China
Abstract: In order to realize real-time transmission of high-resolution images, the paper introduces the design of PCI Express image acquisition system in x4 channel. The system will be used in a large amount of data transmission of imaging module on Microscope.The system adopts a EP4CGX30CF23C8 FPGA of Altera company, and the chip integrates PCIE core which supports the function of chain DMA transmission. By using the Jungo company′s Windriver software, the paper has realized the design of the upper application of chain DMA. The system has been tested and verified that it can accomplish the acquisition of image data which comes from imaging module in real-time and transmitted rapidly and stably to upper monitor, with no frame dropping phenomenon and stable performance. This system is suitable for the data aquisition of the high-resolution and a large amount of data imaging module.
Key words : PCI Express;chain DMA;image acquisition

 

0 引言

  隨著圖像傳感器的快速發(fā)展,成像質(zhì)量和圖像幀率得到快速提升,高分辨率的圖像給人們的生活帶來(lái)了極大的便利。但與此同時(shí),快速、實(shí)時(shí)的傳輸圖像數(shù)據(jù)成了難題。傳統(tǒng)的顯微鏡系統(tǒng)主要使用人工操作,對(duì)操作人員的經(jīng)驗(yàn)和知識(shí)量要求比較高,并且存在很多不定因素。采用自動(dòng)對(duì)焦則大大解決了以上問題,目前國(guó)內(nèi)外顯微鏡自動(dòng)對(duì)焦在算法上都比較成熟,但圖像的分辨率并不是很高[1]。而提高圖像分辨率不僅提高了自動(dòng)對(duì)焦的精準(zhǔn)度,并且可以采集到樣品更多的細(xì)節(jié),給研究者提供更多的信息。鑒于以往顯微鏡圖像采集系統(tǒng)的不足,針對(duì)高分辨率圖像的數(shù)據(jù)采集,本文選擇了基于PCI Express(PCIe)總線的圖像采集系統(tǒng)實(shí)現(xiàn)顯微鏡圖像的采集。

  目前計(jì)算機(jī)使用最為廣泛的PCI總線接口最高工作頻率能達(dá)到66 MHz,峰值帶寬理論上可以達(dá)到532 MB/s,但這種并行總線的傳輸速度和帶寬已逐漸滿足不了高速傳輸?shù)囊蟆O啾葌鹘y(tǒng)的PCI總線,21世紀(jì)初提出的高速差分總線PCIe采用點(diǎn)對(duì)點(diǎn)串行連接、全雙工的傳輸方式大大提升了傳輸速度和帶寬。本文實(shí)現(xiàn)的1.0版本x4規(guī)格通道理論帶寬可達(dá)到2 GB/s,比USB3.0快,更是千兆以太網(wǎng)傳輸速度的8倍。

1 系統(tǒng)總體設(shè)計(jì)


001.jpg

  設(shè)計(jì)的整體結(jié)構(gòu)如圖1所示,系統(tǒng)給PCIe采集系統(tǒng)提供5 V電源,F(xiàn)PGA正常工作后開始執(zhí)行芯片的固化程序。首先通過IIC對(duì)CMOS傳感器進(jìn)行初始化,CMOS傳感器開始拍攝細(xì)胞的圖像,同時(shí)通過Cameralink接口將圖像數(shù)據(jù)送至系統(tǒng)數(shù)據(jù)緩存。FPGA將接收到的4對(duì)差分?jǐn)?shù)據(jù)解析得到圖像數(shù)據(jù),接著以鏈?zhǔn)紻MA傳輸方式將數(shù)據(jù)直接送至IP硬核,然后將數(shù)據(jù)打包送至上位機(jī),上位機(jī)通過應(yīng)用軟件將圖像顯示并保存。

2 系統(tǒng)硬件設(shè)計(jì)

  2.1 CMOS成像模塊

  本系統(tǒng)的圖像傳感器采用Aptina公司生成的MT9-F002I12STCU芯片。FPGA通過IIC協(xié)議對(duì)CMOS芯片進(jìn)行初始化,配置相關(guān)寄存器。初始化之后,圖像尺寸為4 096H×3 072V,每幀圖像大小為12 MB,每秒可生成15幀圖像。該模塊固定在顯微鏡上,單獨(dú)為其提供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ù)報(bào)文首先在設(shè)備的核心層中產(chǎn)生,然后再經(jīng)過設(shè)備的事務(wù)層、數(shù)據(jù)鏈路層和物理層,最終發(fā)送出去,接收端的數(shù)據(jù)也需要通過物理層、物理鏈路層和事務(wù)層,并最終到達(dá)核心層。目前主流的PCIe總線接口方法有兩種,方法1:用PEX8311芯片,該方法實(shí)現(xiàn)了物理層、數(shù)據(jù)鏈路層和事務(wù)層的控制邏輯,簡(jiǎn)單易實(shí)現(xiàn),但是缺乏靈活性和可配置性[2]。方法2:利用FPGA芯片內(nèi)部集成IP硬核,IP硬核完成了物理層和數(shù)據(jù)鏈路層的協(xié)議,用戶需自行設(shè)計(jì)PCIe的應(yīng)用層協(xié)議和TLP,開發(fā)難度較大,但可以根據(jù)需求合理配置[3]。本系統(tǒng)采用方法2,選用Altera公司的EP4CGX30CF23C8芯片,該芯片內(nèi)部集成了IP硬核模塊,可以實(shí)現(xiàn)x4通道的PCIe接口。

3 系統(tǒng)軟件設(shè)計(jì)

  3.1 鏈?zhǔn)紻MA傳輸設(shè)計(jì)

  圖像數(shù)據(jù)傳輸采用DMA技術(shù)保證其實(shí)時(shí)性[4],利用鏈?zhǔn)紻MA技術(shù)提高DMA執(zhí)行效率并配合SGDMA技術(shù)解決計(jì)算機(jī)離散物理頁(yè)的DMA傳輸問題[5]。鏈?zhǔn)紻MA區(qū)別于普通DMA的最大特點(diǎn)就是可以一次執(zhí)行多次DMA,因此執(zhí)行效率非常高,非常適合于上位機(jī)上物理分頁(yè)地址不連續(xù)的DMA數(shù)據(jù)傳輸。本系統(tǒng)中僅用到DMA寫模塊,數(shù)據(jù)由FPGA流向計(jì)算機(jī)。具體實(shí)現(xiàn)的方法是:在主機(jī)端開辟一塊內(nèi)存區(qū)域,用來(lái)存儲(chǔ)描述符表。描述符表是用來(lái)描述在主機(jī)與外設(shè)之間數(shù)據(jù)傳輸有關(guān)的地址與長(zhǎng)度信息的,它由一個(gè)表頭和多個(gè)描述符組成。數(shù)據(jù)傳輸前,用戶將控制參數(shù)、端點(diǎn)地址、內(nèi)存物理地址寫入并啟功傳輸。鏈?zhǔn)紻MA控制器會(huì)及時(shí)從內(nèi)存中讀取描述符表來(lái)指揮DMA的傳輸過程。

  3.2 驅(qū)動(dòng)程序設(shè)計(jì)

  驅(qū)動(dòng)程序采用Jungo公司開發(fā)的Windriver軟件,并利用其特有的KernelPlugln(KP)技術(shù)實(shí)現(xiàn)高效的中斷數(shù)據(jù)采集服務(wù)。主要依靠3個(gè)函數(shù):KP_IntAtIrqt、KP_IntAtDpc、KP_Call。

  KP_IntAtIrqt:高優(yōu)先級(jí)中斷服務(wù)程序,硬件中斷產(chǎn)生時(shí),該函數(shù)被調(diào)用。當(dāng)返回值大于零時(shí)繼續(xù)調(diào)用KP_IntAtDpc。本項(xiàng)目中,數(shù)據(jù)采集的全部工作都在該函數(shù)里面完成。當(dāng)一幅圖像采集完成后返回1以便繼續(xù)調(diào)用IntAtDpc低優(yōu)先級(jí)中斷。

  KP_IntAtDpc:低優(yōu)先級(jí)中斷服務(wù)程序,KP_IntAtIrqt返回值大于零時(shí)被調(diào)用,本項(xiàng)目中不做任何處理,返回值永遠(yuǎn)大于零以調(diào)用用戶模式下的中斷服務(wù)程序。

  KP_Call:主要用于用戶模式與KP通信,本項(xiàng)目中用來(lái)傳遞數(shù)據(jù)緩沖區(qū)以及描述符表的地址,需要注意的是用戶應(yīng)用程序與KP驅(qū)動(dòng)程序擁有不同的虛擬地址系統(tǒng),因此應(yīng)用程序的地址在驅(qū)動(dòng)程序里不能直接使用,需要經(jīng)過地址轉(zhuǎn)換才能使用。

002.jpg

  圖2是中斷數(shù)據(jù)采集的流程圖。為提高數(shù)據(jù)采集效率,采用兩片緩沖區(qū)交替緩沖機(jī)制,應(yīng)用程序首先申請(qǐng)兩片數(shù)據(jù)緩沖區(qū),并且對(duì)其初始化。然后通過KP_Call函數(shù)將緩沖區(qū)的地址及其頁(yè)表信息等傳入驅(qū)動(dòng)程序內(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ù)兩個(gè)鏈?zhǔn)紻MA描述符表,然后根據(jù)狀態(tài)寄存器的值判斷啟動(dòng)對(duì)應(yīng)的鏈?zhǔn)紻MA以及更新下次將要使用的鏈?zhǔn)紻MA描述符表,圖像采集卡將根據(jù)描述符表將數(shù)據(jù)寫入相應(yīng)數(shù)據(jù)緩沖區(qū)的對(duì)應(yīng)地址。最后,再次根據(jù)狀態(tài)寄存器的值判斷一幅圖像是否采集完成,若完成則通知應(yīng)用程序并繼續(xù)等待下一次中斷,否則直接等待下一次中斷。

4 實(shí)驗(yàn)結(jié)果分析

  采集圖像之前先通過Altera公司設(shè)計(jì)的PCIe測(cè)速軟件在1小時(shí)內(nèi)對(duì)采集系統(tǒng)進(jìn)行了6次測(cè)試,測(cè)試得到的結(jié)果如表1所示。

005.jpg

  由表1的測(cè)試結(jié)果可以看出,DMA寫的速度已經(jīng)達(dá)到理論帶寬的80%以上,DMA讀的速度大約為580 MB/s。經(jīng)過分析,測(cè)試速度較理論速度偏低大致有以下3個(gè)原因:(1)DMA讀取為非轉(zhuǎn)發(fā)事務(wù),所以讀的速度比寫的要慢;(2)中斷響應(yīng)和配置DMA寄存器延時(shí)造成速度降低;(3)計(jì)算機(jī)本身硬件條件導(dǎo)致傳輸速度偏低。相比于成像模塊每秒產(chǎn)生15幀12 MB的圖像,采集系統(tǒng)能夠很好地完成實(shí)時(shí)采集成像模塊生成的圖像。

003.jpg

  將采集系統(tǒng)應(yīng)用于顯微鏡自動(dòng)對(duì)焦圖像采集,經(jīng)過長(zhǎng)時(shí)間的采集測(cè)試,未出現(xiàn)丟幀現(xiàn)象,采集系統(tǒng)正常工作。圖3是采集的未經(jīng)解碼的原始圖像數(shù)據(jù)。圖4是通過快速插值解碼之后的彩色的圖像。兩幅圖中的黑點(diǎn)是鏡頭未清潔干凈導(dǎo)致。實(shí)驗(yàn)結(jié)果表明,本系統(tǒng)能夠很好地采集顯微鏡自動(dòng)對(duì)焦成像模塊生成的高分辨率圖像,性能穩(wěn)定,適用于大數(shù)據(jù)量的實(shí)時(shí)快速采集。

004.jpg

5 結(jié)束語(yǔ)

  本文詳細(xì)介紹了基于PCI Express的圖像采集系統(tǒng),為大數(shù)據(jù)量的實(shí)時(shí)快速傳輸提供了有效的方案。并通過測(cè)試證明了該系統(tǒng)能很好地應(yīng)用于顯微鏡自動(dòng)對(duì)焦成像模塊的圖像采集,實(shí)現(xiàn)了高分辨率圖像的實(shí)時(shí)顯示。相對(duì)于熱門的USB3.0以及千兆以太網(wǎng),本設(shè)計(jì)在傳輸速度上有明顯的優(yōu)勢(shì),并且當(dāng)傳輸速度有更高的要求時(shí),還可以將x4通道擴(kuò)展成x8或x16通道,得到更高的傳輸速度。

  參考文獻(xiàn)

  [1] 張磊.顯微鏡用數(shù)碼相機(jī)硬件結(jié)構(gòu)及其視頻流算法實(shí)現(xiàn)與應(yīng)用[D].杭州:浙江大學(xué),2011.

  [2] 安駿.基于橋接芯片PEX8111的PCIE總線接口設(shè)計(jì)[J].科技資訊,2010(3):23-24.

  [3] 沈輝,張萍.FPGA在PCI Express總線接口中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用技術(shù),2010,33(14):109-111.

  [4] 李木國(guó),黃影,劉于之.基于PCIe總線的高速數(shù)據(jù)采集卡設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù),2013,32(7):19-22.

  [5] 黃世中,金志剛.利用WinDriver實(shí)現(xiàn)鏈?zhǔn)紻MA[J].電子設(shè)計(jì)工程,2013,21(8):6-9.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。