《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > X-Scan X射線線陣列探測(cè)器并行幀捕獲卡

X-Scan X射線線陣列探測(cè)器并行幀捕獲卡

2008-10-30
作者:張?jiān)鲚x 沈 激 陳子瑜

  摘 要: 介紹了一個(gè)基于PCI總線的RS422并行幀捕獲卡。該卡用于X-Scan X射線線陣" title="線陣">線陣列探測(cè)器高速14bit圖像數(shù)據(jù)的獲取。簡(jiǎn)要敘述了X射線線陣列探測(cè)器的輸出以及基于PCI總線的數(shù)據(jù)獲取理論和方法,并介紹了所采用芯片的性能及應(yīng)用、卡的硬件設(shè)計(jì)思想和結(jié)構(gòu)以及軟件設(shè)計(jì)。
  關(guān)鍵詞: RS422接口 PCI總線 X射線 線陣列探測(cè)器 幀捕獲


1 X-ScanX射線線陣列探測(cè)器數(shù)據(jù)端口和幀捕獲卡
  X-Scan是芬蘭DT公司生產(chǎn)的X射線線陣列探測(cè)器,用于安全、工業(yè)、醫(yī)學(xué)和食品等領(lǐng)域的無(wú)損檢測(cè)或質(zhì)量控制中。探測(cè)器由探測(cè)元件、探測(cè)電子學(xué)和微控制器組成。探測(cè)器數(shù)據(jù)輸出采用RS422端口,為14位數(shù)據(jù)并行平衡(差分" title="差分">差分)輸出[1]。端口信號(hào)十分容易理解:行使能信號(hào)LEN和同步信號(hào)PCLK(PCLK信號(hào)頻率為2.2MHz)之間的關(guān)系如圖1所示。


  行使能信號(hào)LEN表明自上升沿" title="上升沿">上升沿后,經(jīng)t2時(shí)間探測(cè)器發(fā)送數(shù)據(jù);PCLK信號(hào)的上升沿用于計(jì)算機(jī)接口進(jìn)行數(shù)據(jù)讀操作。DT公司X-Scan平衡輸出定義為一對(duì)互為反相的TTL電平信號(hào)。
  一行數(shù)據(jù)定義為一幀,其中包含的數(shù)據(jù)是大量的,并且需要高速傳輸,所以計(jì)算機(jī)接口應(yīng)該基于PCI總線。為此研制了基于PCI總線的幀捕獲(Frame Grabbing )卡,以滿(mǎn)足X-Scan應(yīng)用的需要。
2 計(jì)算機(jī)接口設(shè)計(jì)
2.1 PCI總線
  PCI(Peripheral Component Interconnect)總線[2]是ISA/EISA總線之后的一種現(xiàn)今計(jì)算機(jī)中廣泛采用的局部總線,支持外圍設(shè)備進(jìn)行突發(fā)通訊,32位總線數(shù)據(jù)傳輸速率峰值達(dá)132MB/s,遠(yuǎn)遠(yuǎn)超過(guò)ISA/EISA總線5Mb/s的速度,適合X-Scan與計(jì)算機(jī)高速數(shù)據(jù)傳輸?shù)囊蟆?BR>  與ISA/EISA總線不同,PCI 總線協(xié)議及接口邏輯十分復(fù)雜,從而使得采用中小型規(guī)模器件開(kāi)發(fā)接口電路的方法難以實(shí)現(xiàn)。鑒于此, 許多廠家推出了專(zhuān)用的PCI 總線控制芯片, 其中AMCC公司生產(chǎn)的S59XX系列芯片因其功能強(qiáng)大、開(kāi)發(fā)方便而被廣泛應(yīng)用。本方案采用AMCC公司的專(zhuān)用芯片S5933[2]來(lái)實(shí)現(xiàn)PCI協(xié)議的執(zhí)行。
2.2 卡的組成
  卡由RS-422接口電平轉(zhuǎn)換、高速數(shù)據(jù)緩存、PCI總線控制器及控制邏輯等功能模塊組成。其結(jié)構(gòu)如圖2所示。

2.2.1 電平轉(zhuǎn)換
  電平轉(zhuǎn)換的要求是將來(lái)自X-Scan RS422輸出端口的差分?jǐn)?shù)據(jù)和控制信號(hào)" title="控制信號(hào)">控制信號(hào)轉(zhuǎn)換成TTL信號(hào)。組成的單元電路采用MAXIM公司的MAX3095 RS422 四接收器, 其電氣特性如圖3所示。MAX3095具有10Mbit/s的數(shù)據(jù)傳輸速率和90ns的傳輸延遲,滿(mǎn)足X-Scan 數(shù)據(jù)傳輸?shù)乃俾室螅贿€具有200mV的差分接收靈敏度以及15kV的靜電保護(hù)(ESD-Protected)措施,滿(mǎn)足X-Scan數(shù)據(jù)長(zhǎng)線傳輸?shù)囊蟆?/P>


2.2.2 PCI總線控制器S5933
  S5933[3]是符合PCI 規(guī)范2.1版本的32 位控制芯片,它提供三種物理接口:PCI 總線接口、外接(Add-On)總線接口和外接配置存儲(chǔ)器(非易失存儲(chǔ)器)接口(見(jiàn)圖4 ),其中,PCI 總線接口與PCI 總線相連,配置存儲(chǔ)器接口與非易失存儲(chǔ)器連接(在系統(tǒng)初始化時(shí)用來(lái)對(duì)S5933進(jìn)行配置),外接(Add-On)總線接口與用戶(hù)數(shù)據(jù)設(shè)備的連接是卡設(shè)計(jì)者最需要關(guān)注的地方。


  S5933中有兩個(gè)獨(dú)立的FIFO(8×32bit),用于PCI到ADD-ON和ADD-ON到PCI兩個(gè)方向的數(shù)據(jù)傳輸,F(xiàn)IFO的空滿(mǎn)狀態(tài)信號(hào)及讀寫(xiě)控制信號(hào)可供外加接口使用。利用FIFO進(jìn)行數(shù)據(jù)傳輸是S5933數(shù)據(jù)傳輸方式中主要的一種(其余還有兩種方式:MAILBox方式和PASS_THrμ方式)。FIFO方式控制邏輯簡(jiǎn)單,易于實(shí)現(xiàn),是本卡采用的方式。本卡中,數(shù)據(jù)傳送只有ADD-ON到PCI單一方向,所應(yīng)用FIFO的狀態(tài)信號(hào)及控制信號(hào)只需WRFULL(滿(mǎn)/非滿(mǎn))和-(寫(xiě)入)信號(hào)。
  S5933 既可以作為 PCI總線的主設(shè)備接口,也可作為從設(shè)備接口。此卡設(shè)計(jì)中,S5933 采用主控模式,由它發(fā)起DMA操作。
2.2.3 高速數(shù)據(jù)緩存
  由于S5933中FIFO 深度不足,來(lái)自探測(cè)器的大量數(shù)據(jù)直接流入,就會(huì)使得FIFO 瞬間寫(xiě)滿(mǎn)而S5933仍然不能獲得PCI總線控制權(quán)以及出現(xiàn)溢出和丟失數(shù)據(jù)。為此,在S5933 Add-On接口與MAX3095之間插入數(shù)據(jù)緩存。這里采用了IDT公司生產(chǎn)的IDT72V235高速先進(jìn)先出存儲(chǔ)器(FIFO),100MHz存取速率,18位數(shù)據(jù)輸入和18位數(shù)據(jù)輸出,容量為2048×18 bit。其結(jié)構(gòu)見(jiàn)圖5。


  高速流入的數(shù)據(jù)先在外部FIFO中緩存,內(nèi)部FIFO非滿(mǎn)時(shí)再作傳送。由于X-Scan是以幀為單位高速傳送數(shù)據(jù)的,而幀與幀之間又有足夠的間隙時(shí)間,2K容量的外部FIFO足以防止數(shù)據(jù)的丟失。
  IDT72V235可以單片使用,也可以級(jí)聯(lián)或擴(kuò)展使用,本卡中IDT72V235是單片使用的。
  數(shù)據(jù)輸入端由寫(xiě)時(shí)鐘(WCLK)和寫(xiě)使能()控制。當(dāng)有效且FIFO非滿(mǎn)時(shí)(滿(mǎn)標(biāo)志為高),數(shù)據(jù)在寫(xiě)時(shí)鐘WCLK的上升沿被寫(xiě)入。輸出端由讀時(shí)鐘(RCLK)和讀使能端()控制,當(dāng)有效且FIFO非空時(shí)(空標(biāo)志為高),數(shù)據(jù)在讀時(shí)鐘RCLK的上升沿讀入輸出寄存器,并在輸出使能()為低時(shí)輸出到端口。讀時(shí)鐘與寫(xiě)時(shí)鐘可以同步,也可以異步。本卡中時(shí)鐘異步,讀時(shí)鐘信號(hào)由S5933 33MHz的BPCLOCK提供;寫(xiě)時(shí)鐘信號(hào)由RS422端口提供,它們決定了數(shù)據(jù)寫(xiě)入速率為2.2MHz,讀出速率為33MHz。
  復(fù)位(為低)時(shí)FIFO讀取擴(kuò)展邏輯控制信號(hào)。這些信號(hào)定義了FIFO的八種工作模式,本卡中它們接地,F(xiàn)IFO定義在非同步IDT標(biāo)準(zhǔn)模式,時(shí)序圖見(jiàn)圖6。其中,讀出延遲tA和寫(xiě)入滿(mǎn)到出現(xiàn)滿(mǎn)標(biāo)志延遲tWFF都是最大6.5ns。


2.2.4 數(shù)據(jù)傳輸控制
  數(shù)據(jù)控制用于S5933與FIFO,以及FIFO與外部設(shè)備之間的傳輸控制。采用Lattice公司的可編程邏輯芯片ispLSI1016作為邏輯控制器,其性能指標(biāo)為:最高頻率110MHz;10ns傳輸延遲。ispLSI1016編程后,與S5933及IDT72V235之間的邏輯關(guān)系如圖7所示。


  使能信號(hào)EN有效,而FIFO IDT72V235中有數(shù)據(jù)(/=1)且S5933 FIFO未滿(mǎn)(WRFULL=0)時(shí),IDT72V235將數(shù)據(jù)驅(qū)動(dòng)到輸出寄存器上;在下一個(gè)BPCLK周期,將IDT72V235輸出寄存器中的數(shù)據(jù)寫(xiě)入S5933 FIFO。
3 編程與程序設(shè)計(jì)
  編程與程序設(shè)計(jì)包括ispLSI1016芯片的編程、S5933寄存器編程以及驅(qū)動(dòng)程序的開(kāi)發(fā)。ispLSI1016芯片的編程是利用ispDesignEXPERT開(kāi)發(fā)系統(tǒng)及VHDL語(yǔ)言實(shí)現(xiàn)的,這里不再贅述。
3.1 S5933寄存器編程
  PCI總線規(guī)范定義了256字節(jié)的配置空間,分為預(yù)定義頭域和設(shè)備依賴(lài)區(qū)域兩部分。
  頭域包括設(shè)備制造商標(biāo)識(shí)ID、設(shè)備ID、版本ID、分類(lèi)代碼三個(gè)寄存器(用于識(shí)別設(shè)備及其功能)、基地址寄存器BADR(用來(lái)確定該設(shè)備的存儲(chǔ)和I/O" title="I/O">I/O空間需求)、中斷引腳和中斷編號(hào)兩個(gè)寄存器以及延時(shí)計(jì)數(shù)寄存器Min-Gnt和Max-Lat(用來(lái)設(shè)置DMA)等。
  設(shè)備依賴(lài)區(qū)域包括位于PCI總線一側(cè)和擴(kuò)充總線接口一側(cè)的兩組操作寄存器,用于監(jiān)測(cè)S5933的狀態(tài)并控制其運(yùn)行。本卡用到的操作寄存器有: MWTC(主控寫(xiě)計(jì)數(shù))、MWAR(主控寫(xiě)地址)、MCSR(主控控制/狀態(tài))和INTCSR(中斷控制/狀態(tài))等寄存器。
  配置空間數(shù)據(jù)編程在與S5933連接的一片非易失存儲(chǔ)器(nvRAM)中進(jìn)行,系統(tǒng)加電或復(fù)位后, S5933將從nvRAM下載銷(xiāo)售商標(biāo)識(shí)符VID和設(shè)備標(biāo)識(shí)符DID,如果合法,則下載基地址單元BADR的內(nèi)容,其值必須是C1H/C0H/C2H/FFH/E8H/10H。如果都正確,便依次讀入配置數(shù)據(jù),決定I/O或存儲(chǔ)器空間的大小。然后將每個(gè)區(qū)域的起始地址寫(xiě)回到BADR中,區(qū)域的起始地址必須是區(qū)域大小的倍數(shù)。每一個(gè)BADR都是物理地址(PCI設(shè)備自己不能單獨(dú)確定存儲(chǔ)器或I/O的地址,所有的地址影射都必須由系統(tǒng)來(lái)完成,而不是應(yīng)用程序)。
3.2 驅(qū)動(dòng)程序設(shè)計(jì)
  Windows系統(tǒng)下對(duì)設(shè)備的訪問(wèn)需要通過(guò)設(shè)備驅(qū)動(dòng)程序進(jìn)行,所以需要開(kāi)發(fā)卡的驅(qū)動(dòng)程序。
  采用Jungo公司提供的WinDriver設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)工具包[4]來(lái)開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序。開(kāi)發(fā)時(shí)可以有兩種方法可供選擇:一是利用 WinDriver Winzard;二是利用WinDriver提供的用戶(hù)態(tài)函數(shù)庫(kù),后者要求程序員熟悉WinDriver的用戶(hù)態(tài)函數(shù)以及PCI設(shè)備的控制過(guò)程,相對(duì)的難度較大。但這兩種方法產(chǎn)生的驅(qū)動(dòng)程序結(jié)構(gòu)基本上沒(méi)有什么區(qū)別,大體結(jié)構(gòu)如下:
  打開(kāi)WinDriver設(shè)備;查找所要訪問(wèn)的PCI設(shè)備;枚舉該設(shè)備的資源(內(nèi)存、I/O、中斷等);鎖定該設(shè)備的資源,避免其它的程序調(diào)用;訪問(wèn)板卡上的資源;解鎖資源;關(guān)閉WinDriver設(shè)備。
  本卡采用第一種方法,步驟如下:
  (1)安裝好PCI數(shù)據(jù)采集卡;
  (2)利用WinDriver Winzard檢測(cè)采集卡;
  (3)測(cè)試硬件,生成驅(qū)動(dòng)程序代碼;
  (4)修改代碼,加入定制的功能;
  (5)在用戶(hù)態(tài)執(zhí)行與調(diào)試代碼;
  (6)將性能苛刻部分插入到核心態(tài)。
  驅(qū)動(dòng)程序流程圖如圖8所示。生成的驅(qū)動(dòng)程序可獲得令人滿(mǎn)意的探測(cè)數(shù)據(jù)。


  此卡為X-Scan X射線線陣列探測(cè)器數(shù)據(jù)獲取而研制。探測(cè)器通過(guò)RS-422數(shù)據(jù)接口給捕獲卡提供14位數(shù)字圖像數(shù)據(jù),數(shù)據(jù)是逐幀連續(xù)發(fā)出的,幀信號(hào)有效后,以2.2MHz時(shí)鐘并行連續(xù)輸出768個(gè)14 Bits的數(shù)據(jù)(一幀數(shù)據(jù))。實(shí)際應(yīng)用表明,該卡滿(mǎn)足探測(cè)器逐幀、連續(xù)、高速捕獲數(shù)據(jù)的需要。
參考文獻(xiàn)
1 User’s Manual of X-ray Linear Array Detector.Detection Technology Inc. Finland,2002
2 PCI Local Bus Specification Revision 2.0.PCI SIG,1993
3 AMCC PCI Products Data Book.San Diego:Applied Micro Circuits Corporation,1998
4 KernelDriver v6.11 User’s Guide.Jungo Ltd,1997~2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。