新聞中心

        EEPW首頁 > 模擬技術(shù) > 設計應用 > 基于PCI總線模塊的多路串行數(shù)據(jù)采集系統(tǒng)

        基于PCI總線模塊的多路串行數(shù)據(jù)采集系統(tǒng)

        作者: 時間:2012-04-12 來源:網(wǎng)絡 收藏
        ile/mndz/uploadfile/201204/20120412024922517.jpg" width=450>

          同步通信對時鐘的同步要求非常嚴格,設計時應該注意收/發(fā)兩方必須使用同一時鐘來控制數(shù)據(jù)的傳輸。另外,_T32內(nèi)存讀寫分為單周期模式和突發(fā)模式。突發(fā)模式即在給出首地址后主設備連續(xù)讀寫多個數(shù)據(jù),這在FPGA中需要用戶端地址每周期自動增1的操作。

          3 系統(tǒng)軟件開發(fā)

          3.1 驅(qū)動程序

          設備的硬件資源由Windows操作系統(tǒng)根據(jù)PC機中所有設備對資源的占有來統(tǒng)一分配。為了保證系統(tǒng)的安全和穩(wěn)定性,在Windows2000及其后的微軟操作系統(tǒng)中,運行在ring3層的用戶應用程序無法直接訪問硬件,而必須通過運行于ring0層的設備驅(qū)動程序來訪問。設備驅(qū)動不僅要實現(xiàn)對硬件的操作,還要為用戶應用程序提供專用的API函數(shù)庫,以方便用戶實現(xiàn)對硬件的操作訪問。

          Windows XP操作系統(tǒng)下的驅(qū)動程序一般是基于WDM(Windows Driver Model)模型開發(fā)的。該模型中的上層應用程序通過調(diào)用Win32 API函數(shù)發(fā)出對設備的訪問請求,I/O管理器則根據(jù)這個請求構(gòu)造合適的IRP(I/O Request Packet,I/O請求包),并將其傳給設備驅(qū)動程序,接著由驅(qū)動程序直接訪問硬件完成IRP處理,最后由I/O管理器把數(shù)據(jù)和結(jié)構(gòu)返回給應用程序。

          WDM驅(qū)動比較常用的有以下三種方法:

          第一種是直接使用Windows DDK(Device

          Driver Kit,驅(qū)動程序開發(fā)包)開發(fā)的驅(qū)動程序面向Windows內(nèi)核,該方法工作穩(wěn)定,效率更高。但必須精通Windows內(nèi)部體系結(jié)構(gòu)及設備驅(qū)動程序的體系結(jié)構(gòu)等,因此開發(fā)難度較大。

          第二種是使用DriverStudio。此工具軟件已經(jīng)做了很多基礎性工作,也進行了一些封裝。

          第三種是使用WinDriver,使用該方法時,開發(fā)者只需要在用戶模式下編寫程序來調(diào)用它提供的通用驅(qū)動即可。其中Drvier Wizard可以進行硬件診斷和自動代碼生成。另外還可以將對速度要求較高的模塊插入內(nèi)核運行來獲取更好的性能。本系統(tǒng)即采用WinDriver開發(fā)方法。

          3.2 WinDriver中的重要函數(shù)

          利用WinDriver開發(fā)驅(qū)動程序通常有兩種方法:第一種是利用Driver Wizard生成的代碼進行修改;第二種是直接利用WinDriver提供的API函數(shù)來編寫自己的程序。本系統(tǒng)即采用這種方法,開發(fā)時首先要注意包含所有相關(guān)的頭文件。其基本驅(qū)動程序的結(jié)構(gòu)及API函數(shù)如下:

          

          3.3 中斷實現(xiàn)

          總線的通信方式有查詢和中斷兩種方式。查詢方式實現(xiàn)簡單,但是難以適應實時性要求較高的場合,而且上位機軟件資源占用率過大



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 蓬溪县| 无为县| 宁陕县| 古田县| 寿阳县| 炉霍县| 乐陵市| 林州市| 左贡县| 肃北| 屏东县| 龙南县| 正阳县| 鹿邑县| 临邑县| 通海县| 北海市| 稻城县| 绥芬河市| 崇文区| 镇巴县| 合江县| 宁国市| 若羌县| 仁寿县| 平湖市| 南投市| 隆安县| 磐石市| 察雅县| 肥西县| 屯门区| 武夷山市| 台东县| 凤山市| 齐齐哈尔市| 贵溪市| 南雄市| 和平县| 乌鲁木齐市| 巨鹿县|