《電子技術(shù)應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于PCI總線的數(shù)據(jù)采集卡設計
基于PCI總線的數(shù)據(jù)采集卡設計
摘要: 雖然PCI總線也經(jīng)歷了從PCI、PCI-X到PCI Express的發(fā)展,但PCI總線由于存在時間長,開發(fā)工具、開發(fā)資料眾多,在對數(shù)據(jù)吞吐量要求不是很高的工業(yè)控制、測量領域仍有著頑強的生命力。筆者在學習了相關設計資料的基礎上,設計了基于PCI總線的數(shù)據(jù)采集卡,可以完成8路數(shù)字量I/O及4路差分14位A/D采集功能。本文將根據(jù)筆者的實際經(jīng)驗,介紹PCI接口擴展卡的軟硬件設計流程。
Abstract:
Key words :

  0 引言   

 
  隨著計算機軟硬件技術(shù)和控制、測量技術(shù)的不斷發(fā)展,許多工程技術(shù)人員都將PC機作為控制、測量開發(fā)的首選平臺。而PCI(Peripheral Component Interconnect,即外圍部件互連)總線作為一種高性能、通用的局部總線,是目前計算機插卡式外設總線的事實標準。PCI總線具有32/64位總線寬度。地址線和數(shù)據(jù)線復用,支持猝發(fā)傳輸,傳輸速率高達132MB/s;系統(tǒng)占用率低,具有較好的兼容性;有完備的即插即用(PnP)管理體制,可同時支持多組外圍設備。雖然PCI總線也經(jīng)歷了從PCI、PCI-X到PCI Express的發(fā)展,但PCI總線由于存在時間長,開發(fā)工具、開發(fā)資料眾多,在對數(shù)據(jù)吞吐量要求不是很高的工業(yè)控制、測量領域仍有著頑強的生命力。筆者在學習了相關設計資料的基礎上,設計了基于PCI總線的數(shù)據(jù)采集卡,可以完成8路數(shù)字量I/O及4路差分14位A/D采集功能。本文將根據(jù)筆者的實際經(jīng)驗,介紹PCI接口擴展卡的軟硬件設計流程。

 

1 PCI總線工作方式簡介   

PCI總線標準由intel于1991年提出,后由PCI-SIG(PCI Special Interest Group)接替了PCI規(guī)范的發(fā)展。PCI總線是一種時分復用的雙向應答總線,傳輸發(fā)起方稱為主設備,接收方稱為從設備。其主要信號定義如下:   RFAME:由主設備驅(qū)動,為低,指示一次傳輸?shù)拈_始。

DEVSEL:由從設備驅(qū)動,為低,指示響應傳輸請求。

ADO~AD31:地址、數(shù)據(jù)復用信號。PCI總線的數(shù)據(jù)傳輸以幀為單位,每次傳輸由一個地址周期和多個數(shù)據(jù)周期組成。首先給出本次傳輸?shù)氖椎刂罚竺婢o跟一個或多個4字節(jié)寬的數(shù)據(jù),連續(xù)傳輸多個數(shù)據(jù)時,其地址自動遞增。

C/BE0~C/BE3:這4根線在地址傳送周期,傳輸?shù)氖强偩€命令,C/BE0~C/BE3的不同組合指示在AD0~AD31上將要進行何種類型的操作,其代表的總線命令見表1;在數(shù)據(jù)傳送周期,傳輸?shù)氖亲止?jié)始能信號,用來表示在整個數(shù)據(jù)期間,AD31~AD0上的哪些字節(jié)為有效數(shù)據(jù)。

IRDY、TRDY:分別表示主設備準備好和從設備準備好。在傳輸過程中,只有IRDY和TRDY同時有效,傳輸才能繼續(xù);否則插入等待周期,用于在不同速度的設備之間協(xié)調(diào)工作。

表1地址傳送周期時。C/BE0~C/BE3所代表的總線命令PRSNT1、PRSNT2:PCI板對電源的請求信息,具體含義見表2。

將PCI接口卡插入計算機插座,加電后,BIOS會根據(jù)PCI接口卡上的配置信息,為其分配相應的I/O端口、存儲器空間、中斷及DMA等計算機資源。

2 PCI接口卡的硬件設計   

筆者設計的PCI數(shù)據(jù)采集卡使用的PCI接口芯片是CH365,CH365可將32位高速PCI總線轉(zhuǎn)換為簡便易用的類似于ISA總線的8位主動并行接口,支持240字節(jié)的I/O端口映射、32 K字節(jié)的存儲器映射、擴展ROM以及中斷。本數(shù)據(jù)采集卡僅使用了I/O端口映射及中斷功能。本PCI數(shù)據(jù)采集卡使用MAXIM公司的4通道14位、差分、同時采樣ADC:MAX1338,實現(xiàn)A/D轉(zhuǎn)換功能,并將MAX1338的/EOLC引腳與CH365的INT_REQ引腳相連,以便在ADC轉(zhuǎn)換完成后,向PC機發(fā)出中斷申請。使用兩片74HC273作為輸出,一片用作8路I/O輸出,另一片用作對MAX1338控制命令的輸出。使用兩片74HC373作為輸入,一片用作8路I/O輸入,另一片采集MAX1338的狀態(tài)指示信號。使用TLP521-4對8路I/O輸入、輸出進行光電隔離。使用74LS138作為地址譯碼。

在制作印制板時,CH365的VCC與GND間應就近放置容量為0.1 μF高頻、低ESR的多層瓷片電容,連接PCI總線的電源線引腳可以自由選擇,但數(shù)量不宜少于4對。CH365屬于高頻數(shù)字電路,應該考慮信號阻抗匹配,在設計PCB板時需要參考PCI總線規(guī)范。建議CH365的PCI信號線的長度都小于35 mm,盡量走弧線或者45度線,避免直角或者銳角走線,并且盡量將信號走線布在元件面;CH365的PCI時鐘線CLK的長度盡量保持在50 mm~65 mm之間,并且不宜靠近其它信號線;在PCB背面保留大面積的接地覆銅,以減少周邊信號線的干擾。雖然PCI總線規(guī)范推薦使用四層板,但考慮成本等因素,可使用雙面板,雙面覆銅接地。筆者做的PCI數(shù)據(jù)采集卡即為雙面板,經(jīng)實驗驗證在工業(yè)現(xiàn)場環(huán)境下,該卡能夠穩(wěn)定工作。

3 PCI接口卡驅(qū)動程序及軟件設計   

在Windows系統(tǒng)中,為避免因不當?shù)挠布僮鞫鴮е孪到y(tǒng)崩潰,應用程序不再具有直接的硬件訪問權(quán),如果要操作硬件,必須借助設備驅(qū)動程序。驅(qū)動程序主要功能是完成對硬件板卡的內(nèi)存映像地址、I/O地址的存取,并正確處理來自板卡的硬件中斷。

Microsoft為設備驅(qū)動程序的編寫提供了“Windows De-vice Drivers Kit”(簡稱DDK)工具,它包含了驅(qū)動開發(fā)所需的各種類型的定義和內(nèi)核函數(shù)庫。用DDK編制的驅(qū)動程序有很高的運行效率,但是開發(fā)難度大,測試流程繁瑣。為減輕驅(qū)動開發(fā)者的負擔,很多第三方廠商提供了簡化驅(qū)動開發(fā)的軟件。如Numega公司的DriverStudio軟件,J ungo公司的WinDriver/KernelDriver軟件等。尤其是WinDriver/KernelDriver不要求開發(fā)者非常熟悉操作系統(tǒng)平臺,掌握核心開發(fā)、調(diào)試知識,即可在幾分鐘之內(nèi)開發(fā)出相應的驅(qū)動程序。但WinDriver的運行效率較低,因此,在對運行效率較高的場合,可使用KernelDriver進行開發(fā),以提高運行效率。

由于本采集卡的數(shù)據(jù)吞吐量不高,因此采用WinDri-ver6.21進行驅(qū)動程序的開發(fā),其開發(fā)過程如下:   

(1)運行Windriver程序,選擇"Create a new driver pro-ject”;   

(2)在彈出的“Select Your Device”窗口中,從列表中選擇自己的硬件設備。由于CH365的默認廠商標識(Vendor-ID)為4348H,設備標識(DeviceID)為5049H,因此選中“PCI:VendorID 4348 DeviceID5049”的PCI設備(如圖1)。

(3)單擊“Generate.INF file”按鈕,產(chǎn)生采集卡的驅(qū)動安裝信息文件。注意:需選中“Automatically Install the INFfile”復選框,以便可以在(4)步中測試采集卡(如圖2)。

(4)在“Define and Test Resources for Your Device”窗口中,設置采集卡的I/O地址及變量名,對于即插即用(Plug-and-play)設備,Windriver會自動發(fā)現(xiàn)其所用到的硬件資源(如:I/O范圍,存儲器范圍及中斷號等)(如圖3)。在此可對采集卡的I/O地址進行讀寫測試,以便驗證硬件設計是否正確。

(5)在“Select Code Generation Options”窗口中,選中合適的開發(fā)語言及開發(fā)平臺。在此選擇“Ms Developer Studic6,5”(即Microsoft VisualC++6/5),以便Windriver生成合適的驅(qū)動程序框架及相應的API函數(shù)(如圖4)。

(6)保存Windriver產(chǎn)生的驅(qū)動開發(fā)工程后,Windriver會自動打開相應的開發(fā)環(huán)境(此處為:Microsoft VisualC++6),以便開發(fā)人員進行后續(xù)開發(fā)。

通過以上步驟,Windriver生成一個基于Visual C++語言的程序框架,開發(fā)人員可以在此框架的基礎上進行修改,加入自己的程序,實現(xiàn)對硬件的操作。現(xiàn)以筆者編制的程序(工程文件名為ADC)為例進行介紹。

在程序初始化階段,先調(diào)用PCI_Get_WD_handle(),判斷驅(qū)動程序windrvr6.sys是否已被加載,如果驅(qū)動程序已被加載,則調(diào)用ADC_LocateAndOpenBoard()函數(shù),打開數(shù)據(jù)采集卡。在退出應用程序前,需先調(diào)用ADC_Close()函數(shù),關閉數(shù)據(jù)采集卡。

MAX1338和8路I/O的寄存器操作可通過ADC_ReadByte()、ADC_WriteByte()兩個函數(shù)完成。對CH365內(nèi)部配置寄存器的讀寫可通過ADC_Read-PCIReg()、ADC_WritePCIReg()兩個函數(shù)完成。完成應用程序的開發(fā)后,數(shù)據(jù)采集卡在其他的PC機上工作時,需提供windrvr6.sys、windrvr6.inf、wd_utils.dll、數(shù)據(jù)采集卡的,inf文件以及自己開發(fā)的應用程序或DLL。以便于PC機安裝相應的驅(qū)動程序,對板卡進行配置、操作。本文根據(jù)筆者的實踐經(jīng)驗,簡要介紹了PCI擴展卡的開發(fā)流程,給出了一套快速可行的解決方案。該方案簡單易行、調(diào)試方便,可使工程技術(shù)人員迅速掌握PCI總線的開發(fā)技術(shù),從而設計出符合工程需求的PCI擴展卡。

 

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲人人精品| 午夜精品福利在线观看| 国产精品九九| 欧美日韩精品二区| 欧美高清视频在线| 蜜桃av噜噜一区二区三区| 久久精品天堂| 欧美专区亚洲专区| 欧美一区二区私人影院日本| 亚洲欧美变态国产另类| 亚洲一区二区视频| 亚洲天堂成人在线观看| 99视频在线精品国自产拍免费观看| 亚洲国产精品激情在线观看| 欧美一区二区私人影院日本| 亚洲欧美日韩一区在线| 亚洲综合色视频| 亚洲一区国产| 亚洲欧美另类久久久精品2019| 一区二区三区欧美日韩| 在线亚洲美日韩| 亚洲午夜电影| 亚洲欧美激情一区二区| 小黄鸭精品aⅴ导航网站入口| 午夜精品久久久久久99热| 亚洲免费网站| 欧美在线视频一区二区| 久久激情网站| 91久久精品国产91久久性色tv| 亚洲欧洲午夜| 一本大道久久精品懂色aⅴ| 一区二区三区偷拍| 亚洲欧美综合另类中字| 久久成人羞羞网站| 久久综合精品国产一区二区三区| 久久夜色精品国产欧美乱| 免费亚洲婷婷| 欧美日韩mp4| 国产精品hd| 国产欧美日韩三区| 影音先锋中文字幕一区| 亚洲激情午夜| 中文在线资源观看网站视频免费不卡 | 亚洲欧美激情在线视频| 欧美一区国产二区| 日韩视频精品在线观看| 亚洲综合视频1区| 久久久久成人网| 欧美日本免费| 国产乱肥老妇国产一区二| 黄色成人免费网站| 亚洲精品孕妇| 午夜国产精品视频| 亚洲激情婷婷| 亚洲免费伊人电影在线观看av| 久久精品国产免费观看| 女仆av观看一区| 国产精品久久久久久模特 | 亚洲六月丁香色婷婷综合久久| 亚洲一区欧美激情| 久久夜色精品国产亚洲aⅴ| 欧美精品一区二区三区在线播放| 国产精品久久午夜夜伦鲁鲁| 国内精品视频久久| 99re热这里只有精品视频| 欧美一区二区视频在线观看2020| 亚洲精品系列| 欧美资源在线| 欧美日韩视频| 红桃视频一区| 亚洲一品av免费观看| 亚洲激情视频网| 久久国产福利| 欧美日韩视频在线一区二区| 国模私拍一区二区三区| 中国av一区| 亚洲精品国产视频| 久久精品一区蜜桃臀影院| 欧美日韩精品三区| 精品动漫av| 午夜日本精品| 亚洲一区二区四区| 蜜臀91精品一区二区三区| 国产精品揄拍一区二区| 亚洲精品在线视频| 久久精品国产清自在天天线| 亚洲女优在线| 欧美日韩国产片| 狠狠88综合久久久久综合网| 亚洲图片在线观看| 99在线观看免费视频精品观看| 久久国产精品亚洲va麻豆| 国产精品大片| 日韩视频一区二区| 亚洲精品免费在线播放| 久久久久成人网| 国产日韩欧美电影在线观看| 一区二区三区国产盗摄| av成人免费观看| 欧美激情免费在线| 1024亚洲| 亚洲韩国精品一区| 久久亚洲春色中文字幕| 国产丝袜一区二区三区| 亚洲欧美日韩成人| 亚洲男女自偷自拍图片另类| 欧美日本在线看| 91久久精品国产| 亚洲人体一区| 欧美国产1区2区| 在线不卡中文字幕| 亚洲第一天堂无码专区| 久久久精品国产一区二区三区 | 欧美激情五月| 亚洲第一色在线| 亚洲高清成人| 美女任你摸久久| 在线欧美不卡| 亚洲国产日韩欧美在线图片| 久久人人九九| 黄色成人在线观看| 久久精品论坛| 欧美3dxxxxhd| 亚洲国产精品久久久久秋霞不卡| 亚洲欧洲精品一区二区三区| 亚洲日韩成人| 在线视频日韩精品| 91久久在线观看| 狂野欧美激情性xxxx| 国产日韩在线一区二区三区| 亚洲欧美文学| 久久精品国产一区二区三| 国产欧美日韩精品a在线观看| 亚洲永久免费观看| 欧美一区二区日韩一区二区| 国产精品揄拍500视频| 午夜精品久久| 久久午夜精品| 亚洲高清成人| 99国产精品久久久| 欧美日韩午夜视频在线观看| 一区二区欧美激情| 欧美一级夜夜爽| 国产亚洲福利| 亚洲激情一区二区| 欧美日韩国产999| 正在播放亚洲一区| 久久xxxx| 亚洲国产精品第一区二区三区| 一本色道久久综合精品竹菊| 国产精品久久久久77777| 性色av香蕉一区二区| 久久综合影视| 日韩一区二区电影网| 性欧美办公室18xxxxhd| 狠狠操狠狠色综合网| 99国产精品私拍| 国产精品麻豆va在线播放| 欧美在线一级视频| 欧美xxxx在线观看| 一区二区高清在线观看| 久久狠狠婷婷| 91久久久久久久久| 亚洲综合电影| 国产专区综合网| 一区二区免费在线播放| 国产日韩欧美日韩| 亚洲精品小视频在线观看| 国产精品国产三级国产专播品爱网 | 欧美刺激性大交免费视频| 一区二区三区国产在线观看| 久久久久国色av免费看影院| 亚洲黄色毛片| 欧美中文在线观看| 91久久精品美女| 欧美一区二区三区在线视频 | 欧美日韩精品免费在线观看视频| 午夜精品视频| 欧美伦理a级免费电影| 羞羞视频在线观看欧美| 欧美日本一区| 久久精品视频免费| 国产精品电影观看| 最近中文字幕mv在线一区二区三区四区| 国产精品久久福利| 亚洲激情综合| 国产性天天综合网| 亚洲视频精选| 亚洲高清二区| 久久久久久久久伊人| 洋洋av久久久久久久一区| 久久综合给合| 亚洲欧美日韩精品综合在线观看| 欧美精品久久久久久久免费观看| 欧美一区二区三区在线看| 国产精品久久77777| 亚洲精品中文字幕在线| 国产亚洲一区二区三区| 亚洲欧美日韩精品一区二区 | 亚洲午夜激情|