新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 焊縫檢測系統中PCI總線高速數據采集卡設計

        焊縫檢測系統中PCI總線高速數據采集卡設計

        作者: 時間:2012-03-09 來源:網絡 收藏

        2.5 PCI接口芯片

        PCI總線協議2.1版出現以后,集成芯片商們紛紛推出了與其兼容的總線接口芯片。其中,AMCC(Applied Micro Circuit Corperation)公司的S5933接口方便、控制靈活,軟件配置簡單,在高速網絡接口、數字通信、高速成像等領域有著廣泛應用。S5933S8593最突出的優點是能夠作為PCI主控設備發起DMA操作,即S5933完全具備雙字DMA控制器的功能。

        圖3是結合系統應用而繪制的S5933結構框圖。由圖3可知,S5933內部具有配置寄存器組和操作寄存器組,配置寄存器組用于控制S5933在PCI總線系統中的運作方式(訪問延遲、能否發起主控DMA操作等)以及記錄系統分配給S5933的資源信息(如中斷引腳、I/O等),而PCI總線和外加電路之間的數據交換則通過操作寄存器組實現。以I/O資源為例,計算機上電后,系統將分配給S5933的I/O資源首地址填入基地址寄存器,此值決定了操作寄存器組在I/O空間中的映射位置(S5933的操作寄存器組缺省地映射到I/O地址空間,便于軟件操作),見圖3。之后,CPU只需執行簡單的I/O操作就可以讀寫操作寄存器組,隱含的地址譯碼工作由S5933完成。外加電路控制邏輯則保證操作寄存器組與外加電路的正常通信。S5933提供了三種形式的外加電路接口,高速使用信箱(Mailbox)寄存器實現雙字輸出,用FIFO方式實現高速DMA寫操作。



        3 高速的軟件設計

        3.1 虛擬設備驅動程序的設計

        系統的控制軟件工作在WINDOWS98操作系統下,為此開發了高速的虛擬設備驅動程序(VXD)。由S5933的結構可知,VXD需要實現雙字I/O操作和物理內存管理。雙字I/O的操作相對簡單,調用虛擬機管理器(VMM)的SIMULATE_VM_IO例程即可,較困難的是物理內存管理。由于S5933發起的DMA操作需要物理內存的起始地址,因此必須涉及頁面級的物理內存操作,故采用下述內存管理策略:

        應用程序加載VXD;
        加載成功后發送申請緩沖區的事件給VXD;
        VXD使用PAGEALLOCATE例程得到地址連續的適當長度(如四頁即16K字節)的物理內存;
        鎖定緩沖區并將物理地址逆映射為線性地址;
        將物理首地址填入S5933的寫RAM地址寄存器;
        允許S5933進行主控DMA傳輸;
        傳輸完畢時,應用程序請求VXD釋放上述物理內存。
        3.2 應用VXD設計數據采集程序

        將VXD放在應用程序的同級目錄下,則以下VC++代碼就能動態加載(VXDVIEWER可驗證)一個VXD:

        HANDLE hDEVICE=CreateFile("\\\\.\\pathname",0,0,NULL,0,FILE_FLAG_DELETE_ON_CLOSE,NULL);
        編好的VXD為應用程序提供了若干服務例程,應用程序執行下面的代碼即可調用服務例程ZHC1:

        DeviceIoControl(HDEVICE,ZHC1,lpinbuffer,ninsize,lpoutbuffer,noutsize,NULL,NULL);

        數據采集算法如下:
        DO {讀取寫RAM字節計數器;
        再次讀取寫RAM字節計數器;
        IF 計數器內容為零 THEN
        跳出循環進行后續數據處理;
        ELSEIF 兩次讀取的結果不同 THEN
        不做任何處理而進入下一次循環;
        ELSE
        清相應的狀態標志并設置有關寄存器以從斷點處續傳;
        ENDIF
         }

        調試表明,應用VXD的數據采集程序能夠穩定、高速地采集外部數據。對焊縫缺陷自動超聲檢測系統的實際測試表明,該高速數據采集卡能滿足缺陷回波的檢測要求。圖4(a)為實際測試時用示波器觀測到的模擬放大電路的輸出信號,圖4(b)是A/D轉換后、截掉始波并經半波整流后得到的信號。

        高速數據采集卡具有體積小、可靠性高、控制邏輯更改方便、可擴展性強等優點。對于檢測厚度為10~100mm的鋼板,一次采集的數據最多為4KB,至多只需0.13ms就可將數據從卡上FIFO經PCI總線傳入內存。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 惠水县| 平阳县| 青铜峡市| 泗水县| 灌南县| 民县| 乳源| 曲阜市| 新晃| 基隆市| 合肥市| 丹江口市| 五家渠市| 定西市| 若羌县| 乐都县| 中卫市| 云龙县| 万盛区| 孟州市| 栖霞市| 肥东县| 佳木斯市| 建瓯市| 离岛区| 锦屏县| 汤阴县| 互助| 蒲江县| 保德县| 麻江县| 东宁县| 康乐县| 阜新市| 柳州市| 沙湾县| 精河县| 林甸县| 颍上县| 长沙市| 雅安市|