摘 要:文章簡要介紹了PCI總線從模式接口芯片PCI9052的主要特點、結構組成和特色功能,并通過一個實例介紹了PCI9052在運動控制卡中的典型應用,具體包括運動控制卡的實現原理,硬件電路、驅動程序、功能庫函數和操作界面的設計及其抗干擾措施
關鍵詞:PCI總線;PCI接口芯片9052;運動控制卡
一:引言
目前,國外有關運動控制方面的技術已經比較成熟,其研究的內容主要集中在提高運動控制器的靈活性,可集成性及標準化程度三個方面。而與國外相比,我國在運動控制領域的研發起步較晚,國內有關這方面的產品在穩定性、可靠性和實用性方面仍然存在諸多問題。因此開發一款成本低廉、功能強大穩定的運動控制卡具有良好的應用前景。
二:PCI總線接口芯片PCI9052
PCI總線是一種先進的高性能32/64位地址數據復用局部總線,可以同時支持多組外圍設備,具有高數據傳輸率、即插即用、低功耗、適應性強等特點。一般,實現PCI總線接口的方法主要有兩種:一是采用CPLD或FPGA設計PCI接口,這種方法比較靈活,但是其難度較高,設計周期也較長。二是采用專用的PCI接口芯片,可以大大減少設計者的工作量,從而縮短開發周期,降低開發成本。而本運動控制卡采用PCI9052芯片進行設計。
1:PCI9052的主要特點有 :
(1)、支持突發操作:PCI9052提供讀寫FIFO,支持突發存儲器映射和I/O映射方式在 PCI總線和局部總線存取數據。
(2)、可編程局部總線配置:PCI9052支持多路復用和非多路復用的8/16/32位局部總線。
(3)、先讀模式:即預鎖存數據可從PCI9052內部FIFO寄存器先于局部總線讀取。
(4)、四個局部片選信號(五個局部地址空間):其基地址和每一個片選(局部地址空間)的范圍可由串行EEPROM或主控設備進行編程。
(5)、PCI鎖定機制:PCI主控設備可以通過鎖定信號獨占對PCI9052的訪問。
2:組成結構

如圖1所示,PCI9052是由PCI 總線接口邏輯、局部總線接口邏輯、串行EEPROM接口邏輯和內部邏輯組成。
3:PCI9052的部分功能及操作
(1)、初始化
在上電時,PCI總線將PCI9052的內部寄存器設置為缺省值,同時,PCI9052輸出局部復位信號,并且檢查EEPROM是否存在,如果其存在且第一個16字節非空,則PCI9052根據EEPROM內容設置內部寄存器,否則設為缺省值。
(2)、復位
PCI9052支持硬件復位和軟件復位。一、硬件復位:當RST#信號輸入有效時,將引起整個PCI9052復位,并輸出LREST#局部復位信號。二、軟件復位:通過設置CNTRL中的軟件復位字節來復位,并輸出LRESET#信號。PCI9052保持這個狀態直到PCI總線上的主機清除軟件復位字節。
(3)、對串行EEPROM接口的訪問
復位后,PCI9052開始讀串行EEPROM,若讀出的第一個字非FFFFH,則繼續進行讀操作,否則認為無效。PCI總線的主設備對EEPROM進行讀寫操作之前需要將寄存器位CNTRL[25]設置為“1”,并控制CNTRL[24]位以產生串行EEPROM的時鐘,然后從EEDI送入指令代碼。結束操作時,將CNTRL[25]設置為“0”即可。
(4)、對內部寄存器的訪問
PCI9052提供了兩種類型的片內寄存器,即PCI配置寄存器和局部配置寄存器,二者都可以由PCI總線和串行EEPROM訪問,也可以通過設置CNTRL[13:12]禁止對串行EEPROM的訪問。這些寄存器主要有:(其中“*”表示數值,取值范圍是0~3)
<1>、設備與廠商寄存器:用于標識設備類別和制造廠家。
<2>、狀態寄存器:內含與PCI總線相關的事件信息。
<3>、命令寄存器:控制設備對PCI訪問的響應。
<4>、地址范圍寄存器(LAS*RR):用于定義板卡上資源所占用的地址空間的大小。
<5>、基址寄存器(LAS*BA):用于定義板卡上資源所占用的基地址,并將之重映射到
PCI地址空間中,以便PC機對板卡進行訪問。
<6>、總線區域描述寄存器(LAS*BRD):用于定義地址空間的具體工作特性。
<7>、片選信號控制寄存器(CS*BASE):用來確定片選信號有效的地址范圍,從而為硬件提供片選信號CS*。
(5)、PCI中斷(INTA#)的產生
要產生中斷INTA#,首先將INTCSR[6]設置為“1”。若以軟件方式產生中斷,只需將INTCSR[7]設置為“1”即可;如果需要由局部總線上的設備產生中斷信號INTi1和INTi2,再生成中斷INTA#的方式,只要將INTCSR的相關位按要求進行設置即可。
三:PCI9052的應用實例
1:運動控制卡的實現原理

圖2為設計的一款基于PCI總線的運動控制卡的系統結構圖。系統采用了PCI專用接口芯片PCI9052實現運動控制芯片PCL5023與PCI總線之間的高速通信;采用CPLD(復雜可編程邏輯器件,其優點是:系統集成化程度高,方便邏輯功能的更改,修改時無需改動硬件設計)實現卡上邏輯電路功能。如圖所示:系統采用兩片PCL5023芯片實現對電機的運動控制。其中一片PCL5023控制軸1和軸2,另外一片PCL5023控制軸3和軸4。使用時須正確設置PCI9052的EEPROM的參數,使得系統上電時能夠正確初始化PCI9052的內部寄存器(如對PCI配置寄存器和PCI局部配置寄存器進行正確設定后,才能使計算機上的存儲空間地址和卡上的局部存儲空間地址形成一一映射的關系)。正確上電配置后,通過高頻脈沖驅動步進電機或者伺服電機,完成預期的速度輸出要求。而且同一系統中可以同時使用多塊本款運動控制卡,從而達到對多軸的運動控制,滿足在多種情況下的運動控制要求。
2:整個系統的設計包括兩個方面,即硬件電路設計和軟件設計。
(1):硬件電路設計
具體包括電路原理圖的設計,設計時充分考慮了總體元件的分布,使其滿足熱效應原則、抗干擾原則、最近相鄰原則,并同時保證了板卡設計的正確性、可靠性、合理性、經濟性以及熱設計、電磁抗干擾等(接地、配置退耦電容等)。而卡上外部信號與內部信號使用光耦合器進行有效隔離。
(2):軟件設計
具體包括驅動程序、功能庫函數以及人機界面的設計。
a:驅動程序的設計
由于在WINDOWS操作系統下,不能直接訪問計算機設備上的硬件資源。因此,要實現對運動控制卡的硬件資源的訪問必須編寫運行在核心態的設備驅動程序。而windriver具有對PCI接口芯片的良好支持以及無需精通操作系統以及驅動程序方面的知識等優點,所以本設計采用了windriver來開發設備驅動程序。具體步驟大致如下: 在創建驅動程序項目時,在項目中添加程序文件P9052lib.c,在驅動程序源代碼中包括頭文件P9052lib.h,在源代碼開始時調用P9052_Open()來獲得板卡的一個句柄“HANDLE”,然后在程序中調用 P9052_ReadBlock()、P9052_WriteBlock()、P9052_ReadByte()、P9052_ReadWord()、P9052_ReadDWord()、P9052_WriteByte()、P9052_WriteWord()、P9052_WriteDWord()、P9052_IntEnable()、P9052_IntDisable()、P9052_IntWait()等函數來完成對板卡內存的讀取、使能/禁止中斷等操作,同時修改并添加必要的代碼,在驅動程序的最后用 P9052_Close()來關閉對板卡的調用。
b:運動控制卡功能庫函數的設計
為了給用戶提供一個良好的軟、硬件開發平臺,滿足在一定的情況下,用戶可以通過調用提供的接口函數來獲得實際需要的運動控制模式,這些運動控制模式主要有:單軸的恒速運動模式、單軸的梯形運動模式、單軸的S曲線形運動模式(如圖3)、單軸的返回模式、雙軸的線性和圓形插補運動模式以及多軸點對點運動模式等。所以需要編寫豐富的功能庫函數來完成對系統的初始化、脈沖的輸入輸出配置、中斷控制、位置控制、插補參數配置、I/O口的控制和監測以及各種運動模式等。所有這些功能庫函數均采用C語言編寫。

如圖3所示,電機轉速在加減速區和最大速度之間實現了平滑轉換,這樣可以有效的降低沖擊和磨損,從而有利于提高電機和機械系統的壽命。
庫函數的設計原理是利用API函數實現對PCL5023芯片的寄存器的讀寫操作。而這些讀寫操作實現對相應的寄存器寫入某些特定的值,從而控制電機在一定的操作模式下工作。對應于不同的操作模式,不同的操作內容,對寄存器的讀寫操作也不相同,而且對其操作的步驟也有特定的要求。如圖4所示,通過CPU發出的數據信號和控制信號對PCL5023的內部寄存器實行讀寫操作,從而實現對電機的控制。
c:操作界面的編寫
為了實現對電機的實時精確控制,本軟件系統設計了比較人性化的人機操作界面,以完成對需要的操作,具體包括軸的選擇及其參數配置、運動參數以及插補參數的選擇、操作模式的選擇等。編程語言采用VC++6.0。
四:抗干擾措施
在硬件電路中采用以下措施:在交流伺服系統的輸入電源上使用噪聲濾波器、在交流伺服系統的功率電源采用隔離變壓器、在系統中的不同功能模塊實行電源分組供電以防止設備間的相互干擾以及采用光電耦合器將運動控制卡的內部電路與伺服驅動器的輸入、輸出電路隔離開,以防止干擾從外部進入到運動控制卡或主機等。
另外,在軟件系統中也采用了一些抗干擾措施,比如,采用平均值法以避免系統的隨機誤差對采樣結果的影響,采用比較取舍法以剔除個別異常數據等。
五:結束語
本文主要介紹了PCI9052接口芯片的主要特點、結構組成、相關功能及其相應的操作,同時結合實際介紹了PCI9052在運動控制卡設計中的應用,具體包括有運動控制卡實現原理、硬件電路的設計以及驅動程序、功能庫函數和人機界面的設計。實踐證明,采用這種專業接口芯片進行運動控制卡的開發,不但大大的縮短了設計周期,降低了產品的成本,而且采用PCI9052開發的本款運動控制卡實用性強、可靠性好、并具有良好的可擴張性。
參考文獻:
1:PLX PCI9052 Data Book[M], 2000
2:WinDriver User’s Guide[M],Jungo Ltd, Version6.02, 2003
3:李貴山:PCI局部總線開發者指南[M],西安電子科技大學出版社,1997
4:尹 勇:PCI設計開發寶典[M],北京航空航天大學出版社,2005