《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于接口芯片CH365的PCI數(shù)據(jù)采集系統(tǒng)的設計
基于接口芯片CH365的PCI數(shù)據(jù)采集系統(tǒng)的設計
徐義翔 李正明
鎮(zhèn)江江蘇大學電氣學院(212013)
摘要: 一種基于PCI總線的高速數(shù)據(jù)采集傳輸系統(tǒng)的實現(xiàn)方法。概述了PCI總線控制專用芯片CH365的主要特點及其本地硬件地址的實現(xiàn)方法,并給出了在12通道數(shù)據(jù)采集系統(tǒng)中的應用實例。
Abstract:
Key words :

 摘   要: 一種基于PCI總線的高速數(shù)據(jù)采集傳輸系統(tǒng)的實現(xiàn)方法。概述了PCI總線控制專用芯片CH365的主要特點及其本地硬件地址的實現(xiàn)方法,并給出了在12通道數(shù)據(jù)采集系統(tǒng)中的應用實例。
關鍵詞: PCI總線  本地硬件地址  工作模式

  PCI 總線是先進的高性能32/64位局部總線,可同時支持多組外圍設備,不受制于處理器,數(shù)據(jù)吞吐量大,并能完全兼容現(xiàn)有的ISA/EISA/MCA等擴充總線。PCI總線以其高性能、高效率以及與現(xiàn)有標準的兼容性和預置的發(fā)展空間,被計算機界認為是最具發(fā)展?jié)摿Φ木植靠偩€標準。
  PCI總線是32位并可升級到64位的獨立于CPU的總線結構,總線速度高達33/66MHz,同步控制、猝發(fā)(burst)傳送使得數(shù)據(jù)傳送速率高達132Mbps位(32位總線)、264Mbps(64位總線)。線性猝發(fā)、成組數(shù)據(jù)傳輸是PCI總線的基本傳輸機制。一次猝發(fā)傳輸通常由1個地址周期和1個或多個數(shù)據(jù)周期組成。它解決了總線的速度問題,為PCI外設提供了一個高帶寬的數(shù)據(jù)通道,將外設從I/O總線上移下來,不需處理器的介入便可進行數(shù)據(jù)傳輸。PCI總線可進行隱式仲裁。當前主設備正在執(zhí)行數(shù)據(jù)傳送時,PCI機理允許總線仲裁發(fā)生。如果仲裁器決定將下一次總線所有權授予某個主設備,而不是當前交易的主設備,則它將從當前主設備取回GNT(仲裁信號允許主設備使用總線低電平有效)并將其發(fā)給總線的下一個所有者,直到當前主設備讓總線空閑時,下一個所有者才能取得總線所有權。這樣,在執(zhí)行仲裁總線周期的時間內(nèi)沒有浪費總線時間,提高了總線的效率。
  PC機中包含3種空間:存儲器空間、I/O空間和配置空間。存儲器空間主要包括內(nèi)存、顯存、擴展ROM和設備緩沖區(qū)等,一般用于存放大量數(shù)據(jù)和進行數(shù)據(jù)塊交換。I/O空間主要包括設備的控制寄存器和狀態(tài)寄存器,一般用于控制和查詢設備的工作狀態(tài)以及少量數(shù)據(jù)的交換。目前PC機的存儲器空間為4GB,地址范圍是00000000H~FFFFFFFFH,而I/O空間為64KB,地址范圍是0000H~FFFFH。配置空間主要用于向系統(tǒng)提供設備自身的基本信息,并接受系統(tǒng)對設備全局狀態(tài)的控制和查詢。
1  系統(tǒng)結構
  本系統(tǒng)是一個12路溫度數(shù)據(jù)采集控制系統(tǒng)。該系統(tǒng)具有良好的實時性,可以隨機選擇任何一路作為輸入,而不會影響到其他數(shù)據(jù)采集的結果。整個系統(tǒng)由1臺586工業(yè)控制計算機控制,采用基于PCI插卡的形式,輔以一系列外圍電路協(xié)同工作。系統(tǒng)結構框圖如圖1所示。

2  新型PCI接口芯片CH365
2.1 CH365的特點
  PCI總線比其他總線要復雜得多,它有嚴格復雜的時序要求。為了實現(xiàn)自動配置和擴展需要,PCI接口有一個256字節(jié)的配置空間。所以,對于一般的PCI總線應用設計工程師,為了縮短開發(fā)設計周期,不必去設計復雜的接口模塊,甚至不必完全理解PCI規(guī)范的細節(jié),就能進行PCI用戶設備的設計,因為可直接采用專用的PCI接口芯片。通過使用專用芯片,設計者只需要使用相關的地址線、數(shù)據(jù)線以及幾個控制信號,就能實現(xiàn)PCI 總線與PCI用戶設備之間的連接。目前,國外已有比較成熟的PCI專用集成電路芯片的設計技術,如美國的PLX公司的PCI90xx 系列產(chǎn)品已被廣泛采用。這類芯片的通用性較強,但是同時也帶來成本高和開發(fā)周期長的問題。而我們已經(jīng)初步開發(fā)了基于ISA插槽的多路數(shù)據(jù)采集控制卡。在這樣的前提條件下要能使其工作在PCI總線,可采用PCI90xx芯片(每片價格一般在150元以上)或者AMCC公司的S59XX系列芯片(如常用的S5933,價格500多元/片)。這二種芯片價格都比較貴,而且雖然S5933支持DMA傳輸,但本系統(tǒng)中并不需要此功能即可完成工作要求。因此從降低開發(fā)成本和充分利用現(xiàn)有資源的角度考慮,本設計選擇了沁恒電子出品的一種新型PCI快速簡易接口芯片CH36X(價格只需24元/片)。CH36X系列PCI接口芯片不同于目前市場上運用的常規(guī)接口芯片,它是一種低成本、快速、簡易的接口芯片,能完成大部分的PCI接口工作,尤其是這種芯片具有本地硬件地址的功能,使原工作在ISA8位總線上的電路能夠平滑移植到PCI總線上而不需要非常大的硬件改動,而且底層驅(qū)動軟件的改動也較小,這將給上層控制軟件的優(yōu)化提供更多的時間,而不需要再花費大量時間在底層調(diào)試上。
2.2 CH365功能簡介
  CH365是一個連接PCI總線的通用接口芯片,支持I/O端口映射、存儲器映射、擴展ROM以及中斷;可將32位高速PCI總線轉(zhuǎn)換為簡便易用的類似于ISA總線的8位主動并行接口,用于制作低成本的基于PCI總線的計算機板卡;CH365的存儲器空間占用32KB,偏移地址0000H~7FFFH,且可以全部提供給外部設備使用(實際存儲器地址是存儲器基址加上偏移地址);CH365的I/O空間占用256B,由于偏移地址F0~FFH是CH365芯片自身的專用寄存器,所以可以提供240B給外部設備使用,偏移地址是00H~EFH,實際的I/O地址是I/O基址加上偏移地址。
  CH365的地址線A15~A0用于提供相對于基址的偏移地址;數(shù)據(jù)總線D7~D0在讀操作時用于輸入數(shù)據(jù),在寫操作時用于輸出數(shù)據(jù);IOP_RD、IOP_WR分別為I/O讀、I/O寫提供選通脈沖信號,而MEM_RD、MEM_WR分別為存儲器讀和存儲器寫提供選通脈沖信號。CH365提供的地址線、數(shù)據(jù)總線和讀寫選通信號線類似于ISA總線的信號線,而提供的讀寫選通信號只在CH365的基址映射范圍內(nèi)有效,相當于經(jīng)過片選之后的選通信號,所以外部設備可以省去片選信號。
  在I/O讀寫操作期間,CH365的A7~A0輸出I/O偏移地址,提供給外部設備的有效偏移地址范圍是00H~EFH,且CH365的A15~A10保持不變,而A9~A8輸出PCI總線的地址。如果使用本地硬件定址的功能,則應該對CH365 的A9~A0進行地址譯碼,以實現(xiàn)與ISA 總線相兼容的000H~3FFH地址范圍內(nèi)的I/O 端口定址。
  在存儲器讀寫操作期間,CH365的A14~A0輸出存儲器偏移地址,提供給外部設備的有效偏移地址范圍是0000H~7FFFH,且CH365的A15保持不變,但可以事先設定為高電平或者低電平,用于存儲器地址線的擴展或者頁面選擇。由于擴展ROM屬于存儲器的一種,所以其操作方式以及操作時序與存儲器相同。
CH365支持PC機程序以單字節(jié)、雙字節(jié)(字)、4字節(jié)(雙字)為單位對I/O端口或者存儲器進行讀寫。在多字節(jié)連續(xù)讀寫操作期間,CH365 每讀寫完1個字節(jié)數(shù)據(jù),就會自動將偏移地址加1,以指向下一字節(jié)的偏移地址。
3  硬件實現(xiàn)
3.1 采集部分
  當8255接收到計算機的采集控制數(shù)據(jù)后,即將數(shù)據(jù)傳輸給4線/16線譯碼器(此處選擇了HCF4514BEY作為譯碼器),譯碼器輸出1路選擇信號選中12路達林頓管(MC1413)驅(qū)動的一路,之后MC1413一路繼電器吸合,將溫度數(shù)據(jù)傳輸給下一步驟。在對12路溫度數(shù)據(jù)采集時,雖然可以考慮采用比電磁繼電器體積小得多的集成塊式的模擬數(shù)據(jù)選擇器,但考慮到工業(yè)現(xiàn)場電磁干擾比較強烈,為了使系統(tǒng)能更加穩(wěn)定地工作,所以選擇了電磁繼電器進行選擇測量。
3.2 斷偶檢測、冷端補償及放大
  熱電偶在工業(yè)現(xiàn)場使用中有可能發(fā)生斷線故障,因此很有必要設置斷偶保護電路。冷端補償采用的是半導體PN結補償法,采用了美國NS公司的LM335作為二端齊納管工作。LM335是結構精密、容易校準的集成溫度傳感器,在+10mV/°K下,具有一個與絕對溫度直接成正比的擊穿電壓,其動態(tài)阻抗低于1Ω,工作在400?滋A~5mA的電流范圍時,其性能并無變化。對微弱熱電偶信號進行處理之前應將其放大,并根據(jù)K型熱電偶的特性,放大倍數(shù)可選40,此時放大后的電壓為52mV×40=2V,符合A/D轉(zhuǎn)換器MC14433的輸入電壓要求。
3.3 A/D轉(zhuǎn)換電路
  A/D轉(zhuǎn)換主要有二大接口:模擬輸入端和數(shù)據(jù)輸出端。在A/D數(shù)據(jù)轉(zhuǎn)換系統(tǒng)的設計中,其很大程度上依賴于內(nèi)部或外部的DC電壓基準所建立的電壓精度。因此設計基準電壓最關鍵的問題是精度要高和溫漂要小。本設計選擇了ADI公司的ADR29X系列的基準電壓源。
3.4 基于PCI接口的傳輸
  本系統(tǒng)采用PCI總線,利用其高達33MHz(32 位)的傳輸速率完成連續(xù)采樣。并從快速方便,且能盡最大可能降低成本的角度考慮,本系統(tǒng)選擇了沁恒電子公司的CH36X系列芯片。該芯片完全可滿足系統(tǒng)的要求。
3.5 CH365及外圍輔助工作電路的實現(xiàn)原理框圖
  CH365外圍輔助工作電路具體接線框圖如圖2所示。圖2中用了2塊型號為ATF16LV8C-10PC的16V8。一塊用來實現(xiàn)本地硬件地址,另一塊用來設置板卡ID。

3.6 本地硬件地址的實現(xiàn)
  CH365提供了一種可以由產(chǎn)品制造商選定PCI設備I/O 地址的方法,即本地硬件定址。其原理是將PCI設備的部分I/O 地址譯碼通過外圍的二級譯碼電路實現(xiàn)。外圍的二級譯碼電路比較簡單,與ISA總線的I/O地址譯碼類似。CH365將PCI總線I/O操作的地址同步提供給外圍電路,當外圍電路對地址譯碼匹配后,則向CH365請求本地硬件定址, 再由CH365請求PCI總線在該I/O地址進行I/O 操作。
  CH365 內(nèi)部已經(jīng)限定了本地硬件定址的地址范圍是03FFH~0000H,它對應于ISA板卡的I/O地址范圍。當PC機進行I/O操作時,CH365的A9~A0總是同步輸出操作地址,外圍的二級譯碼電路只需要對地址A9~A0進行匹配比較。CH365要求外圍的二級譯碼延時不超過20ns,也就是說,外圍電路對地址譯碼比較后產(chǎn)生本地硬件定址請求的時間不能超過20ns。實際的外圍譯碼電路通常選用可編程器件16V8。在本例中選擇了ATF16LV8C-10PC,可以自行對ATF16LV8C-10PC的編程數(shù)據(jù)進行修改,使CH365定位到指定的I/O端口地址。使用本地硬件定址功能后,CH365不僅在該硬件定址范圍響應I/O操作,同時也在計算機自動分配的I/O地址范圍內(nèi)響應I/O操作。
3.7 CH365的工作模式的指定
  為了在不增加引腳的前提下提供更多可用功能,CH365對部分引腳進行復用,通過“工作模式設定”進行功能選擇。“工作模式設定”的具體方法是:將本地端8 位數(shù)據(jù)信號線D7~D0采用上拉或下拉的方式設定為所需的高電平或低電平,CH365被復位后則根據(jù)這些信號線的默認狀態(tài)設定工作模式及參數(shù)。而這些信號線在作為8位數(shù)據(jù)總線被驅(qū)動時,因為一般外部設備的驅(qū)動電流不小于1mA,所以上拉或下拉都不會影響其對數(shù)據(jù)總線的驅(qū)動。另外,CH365僅在被復位后的1?滋s內(nèi)一次性設定工作模式以及參數(shù)。所以,如果外部設備的驅(qū)動能力很小或者是OC集電極開路驅(qū)動,則只可以在復位后的短時間內(nèi)實現(xiàn)下拉,而在其余時間屏蔽下拉或者轉(zhuǎn)換成上拉。CH365的具體設定工作模式如表1所示。

4  軟件實現(xiàn)
  CH365提供了CH365DLL.H和CH365DLL.LIB 2個文件來設計Windows下的應用程序。對于一般的VC編譯環(huán)境,將上述2個文件放置在應用程序同一目錄下,然后將CH365DLL.LIB添加到應用程序的鏈接庫中。當應用程序被編譯時就會自動鏈接。
4.1 初始化CH365的源代碼
  #include <windows.h>
  #include <stdlib.h>
  #include <stdio.h>
  #include <conio.h>
  #include <winioctl.h>
  #include″CH365DLL.H″  //如果在DOS下使用,請
                //使用DOS庫
  #define DIN_PORT 0xef//數(shù)據(jù)輸入端口
  mPCH365_IO_REG mIoBase;//I/O基址
  UCHAR Read_data( );  //讀(上傳)1個字節(jié)數(shù)據(jù)的
                   //子程序
  void Write_data(UCHAR data);//寫(下傳)1個字
                //節(jié)數(shù)據(jù)的子程序和主程序
  void main( ) {
  UCHAR data,Input_data;
  int i;
               //若要使用DLL則需要先加載
  if (LoadLibrary(″CH365DLL.DLL″)==NULL ) return;
               //加載DLL失敗
  if(CH365OpenDevice(FALSE,F(xiàn)ALSE)==INVALID_HANDLE_
  VALUE ) return;    //打開CH365設備
  CH365GetIoBaseAddr(&mIoBase);
             //使用系統(tǒng)為CH365自動分配的I/O基址
  for (i=0;i<=30;i++) { //測試
  Input_data=rand( )%0x0100; //隨機數(shù)0~255
  printf(″*****WRITE DATA=%2x″,Input_data);
  Write_data(Input_data);
             //少量延時,等待處理1個字節(jié)的數(shù)據(jù)
  data=Read_data( );
             //少量延時,等待處理1個字節(jié)的數(shù)據(jù)
  printf(″*****READ DATA=%2x″,data);
  if(data==Input_data) printf(″*****test correct!\n″);
  else printf(″*****test wrong!\n″);
  }
  }
4.2 I/O端口讀寫程序的編寫
  CH365 的輸入、輸出信號與TTL電平和CMOS電平兼容,可以連接ADC/DAC/MCU等芯片。輸出引腳的驅(qū)動電流大于10mA,可以在串接限流電阻后直接驅(qū)動LED顯示。CH365提供了用于I/O 地址譯碼的8 根地址線A7~A0,有效偏移地址范圍是0EFH~00H,長度不超過240 字節(jié)。一般情況下,外部電路無需片選線或者直接強制片選。
  基于CH365的通用驅(qū)動程序WDM和動態(tài)鏈接庫DLL,則上述操作的C 語言程序如下:
  UCHAR mByte;//數(shù)據(jù)單元,用于保存從I/O端口中
            //讀出的數(shù)據(jù)或者準備寫入I/O的數(shù)據(jù)
  mPCH365_IO_REG mIoBase;//I/O端口基址,實際數(shù)據(jù)
            //單元的地址等于基址加上偏移地址
  CH365GetIoBaseAddr(&mIoBase);//獲取I/O端口的基址,
            //這是可選操作,不必執(zhí)行;如果不獲取I/O基址則可以
            //在I/O操作中只指定偏移地址,相當于I/O 基址為0;
            //在調(diào)用CH365的DLL后,DLL會自動將偏移地址加上
            //基址再進行I/O操作;存儲器與此類似,如果存儲器操
            //作中只指定偏移地址,則DLL會自動加上存儲器基址
  CH365ReadIoByte(& mIoBase -> mCh365IoPort[0x00],&mByte);
            //上述操作從I/O端口的00H偏移地址讀取1個字節(jié)的
            //數(shù)據(jù),即讀入第1組緩沖輸入
  CH365WriteIoByte(& mIoBase -> mCh365IoPort[0x01],0x47);
            //上述操作將數(shù)據(jù)47H寫到I/O端口的01H偏移地址,即
            //作為第2組鎖存輸出
  CH365SetA15_A8(0x24); //設置A13為高電平,A10為高
               //電平,其余引腳為低電平
5  結束語
  本系統(tǒng)采用新型PCI接口芯片CH365完成采集卡的設計,并采用了本地硬件地址的快速實現(xiàn)方法。CH365以其強大的功能和簡單的用戶接口,為PCI總線接口的開發(fā)提供了一種簡潔快速的方法。設計者只需設計出本地接口硬件外圍電路,就可以通過CH365快速掛接到PCI總線上。系統(tǒng)經(jīng)測試能夠高速地進行數(shù)據(jù)的采集和傳送,可應用于高速數(shù)據(jù)采集卡、網(wǎng)卡及視頻采集卡等設備的研發(fā)中。隨著PCI總線的普及,基于PCI總線的采集傳輸系統(tǒng)將有十分廣闊的應用前景。
參考文獻
1   李貴山.PCI局部總線開發(fā)者指南.西安:西安電子科技大學出版社,1996
2   Shanley T,Anderson D.PCI系統(tǒng)結構.北京:電子工業(yè)出版社,2000
3   WinChiphead Corp.PCI Bus Interface Chip CH365  UserBook(Ver.1).2003
4   聞伍椿.運算放大器在電測技術中的應用.北京:機械工業(yè)出版社,1989
 

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