?

基于PC機和運動控制卡的運動控制系統設計

2015-02-16 07:51張清勇張丹紅
關鍵詞:進入狀態控制卡時序

張清勇,張丹紅,姜 文

(武漢理工大學 自動化學院,湖北 武漢 430070)

?

基于PC機和運動控制卡的運動控制系統設計

張清勇,張丹紅,姜 文

(武漢理工大學 自動化學院,湖北 武漢 430070)

介紹了由PC機和運動控制卡構成的運動控制系統,設計了由FPGA和PCI專用接口芯片組成的運動控制卡PCI接口控制器,實現了上位機與運動控制卡之間靈活而高速地通信,理論最大通信速率最高可達140 MB/s。

運動控制卡;PCI總線;接口控制器;FPGA

運動控制卡是一種可用于各種運動控制場合的上位控制單元。工業運動控制系統中,大多數運動控制卡通過PCI總線與上位機通信,PCI總線接口控制器的性能直接決定了運動控制卡與上位機的通信性能。PCI總線規范十分復雜,采用CPLD或FPGA等可編程邏輯器件直接實現接口控制器在技術和經濟上要求比較高[1],為了達到PCI規范的嚴格要求,需要作大量的邏輯驗證、時序分析和程序調試,而采用專用PCI接口芯片和可編程邏輯器件相結合的設計方法可使設計開發者免除繁瑣的時序分析,增加接口設計的靈活性。

筆者設計的PCI接口控制器由專用PCI接口芯片和FPGA組成。PCI9054是美國PLX公司生產的一款32bit/33MHz的通用PCI總線控制芯片[2-5],突發傳輸速率可達到132 MB/s,能夠完成PCI總線信號與Local總線信號的相互轉換。

FPGA(field-programmable gate array),即現場可編程門陣列是在CPLD基礎上發展起來的新型高性能可編程邏輯器件[6],可完成極其復雜的時序與組合邏輯電路功能。該設計選用Altera公司Cyclone II系列的EP2C5T144完成PCI9054 Local總線與PCL6143 8086總線的對接。運動控制卡的大部分運動控制功能是由PCL6143實現的,EP2C5T144除了實現PCI9054與PCL6143總線接口的對接外,還可實現與PCI9054直接通信,以拓展運動控制卡的運動控制功能。

1 運動控制系統總體結構

筆者的運動函數是通過PCI驅動程序驅動PCI總線傳輸數據至運動控制卡。運動控制卡實現各種速度和位置控制,并提供通用和專用I/O口與外界連接,系統結構如圖1所示。系統中,上位機作為控制系統的核心部分[7-8],用戶通過操作界面直接調用運動函數庫的運動函數,PCI插槽直接插入PC機中,板卡提供外部接口與伺服驅動器、限位開關和指示燈等相連接。

圖1 運動控制系統總體結構圖

所設計的運動控制卡主要分為通信部分和運動控制部分,通信部分采用PCI9054作為橋接芯片與上位機進行通信,完成PCI總線信號到Local總線信號的轉換。FPGA用于實現PCI9054 Local總線與PCL6143 8086總線的邏輯粘合,保證PCI9054接收的上位機數據通過Local總線傳送至PCL6143,FPGA還可直接與PCI9054進行通信。運動控制部分的大部分功能由PCL6143實現,FPGA用來拓展PCL6143的功能。

2 PCI9054的Local總線

PCI9054提供了PCI總線、EEPROM和Local總線3個接口,PCI總線接口與PC機的PCI總線相接,以完成PC機PCI總線到Local總線的橋接,并在兩者之間傳遞數據和信息。Local總線負責與外部設備的總線相接,外部設備通過簡單的時序設計便可與PCI9054 Local端通信。

PCI9054具有3種工作模式:M模式、J模式和C模式。Local總線與PCI總線之間的數據傳輸有3種方式:PCI Initiator、PCI Target和DMA。該設計根據需求選擇了PCI9054數據傳輸方式為PCI Target,工作方式為C模式(數據、地址總線非復用),16位總線讀寫。在該工作模式中,字節使能信號LBE1#可等效為地址信號次低位LA1。由于PCI9054完成了PCI總線所需的全部時序,因此設計重點集中在Local總線,Local總線單周期寫時序圖如圖2所示。

圖2 Local總線單周期寫時序圖

Local總線的讀、寫時序基本相同,以PCI Target單周期寫為例,首先PCI9054通過驅動LHOLD有效來申請Local總線的主控權,如果Local總線空閑,FPGA驅動LHOLDA有效以使PCI9054成為Local總線的主控。隨后PCI9054驅動ADS#有效,使得地址總線信號LA[ 31: 2]、字節使能信號LBE[ 3: 0]#和讀寫使能信號LW/R# 進入有效狀態,FPGA需對以上信號鎖存和譯碼來確定操作目標和操作類型。目標設備通過驅動READY#信號有效,來通知PCI9054目標設備已經準備好,這時PCI9054將數據傳輸到數據總線LD上,目標設備需在下一個時鐘上升沿讀取數據。而后PCI9054驅動BLAST#有效來表示單周期寫操作的結束。最后,PCI9054將使能LHOLD信號來釋放Local總線,FPGA也需使能LHOLDA信號。

3 PCL6143的8086總線

PCL6143是美國NPM公司設計的一款高性能、低成本的專用運動控制器[9],用戶通過簡單的內部控制指令就可實現復雜的運動功能。PCL6143能夠進行定速、直線加減速、S曲線加減速的速度控制,也可進行連續運動、定長運動、回原點運動等位置控制。1片PCL6143控制4個軸,用戶可以控制1個芯片或者多個芯片進行多軸直線插補,同時可對PCL各種運動狀態進行監視。此外,芯片可產生各種條件下的中斷信號,還具有用于控制伺服馬達驅動器的功能。

PCL6143 內部集成有各種不同接口電路, 允許與 4 種類型的 CPU 連接, 分別是 Z80、8086、H8 和 68000??紤]到通用性,該設計選擇應用廣泛的Intel接口(8086接口)實現16位數據傳輸。因運動控制功能已集成在芯片內部,故設計重點為PCL6143的8086總線接口,接口單周期寫時序圖如圖3所示。

圖3 8086總線單周期寫時序圖

針對時序圖3的時序條件的具體說明如表1所示。8086總線單周期讀時序分析基本與寫時序一致,以寫時序為例,由圖3和表1可知,FPGA首先要驅動地址總線A1~A4和片選信號CS#有效,且要滿足A1~A4和CS#的建立時間,在A1~A4保持有效至少10 ns和CS#保持有效至少4 ns后才能驅動WR#有效。在CS#有效后若WRQ#有效,則PCL6143處于忙碌狀態,請求CPU等待。待WRQ#無效后,CPU便將有效數據送至數據總線,等待至少12 ns后FPGA再置WR#為高電平,在WR#上升沿期間,數據被寫入至PCL6143。

表1 8086總線單周期寫時序表 ns

4 接口控制器的實現

PCI總線接口控制器中PCI9054實現其與PC機PCI總線的通信,FPGA實現PCI9054 Local端與PCL6143的通信,以及與PCI9054 Local端的直接通信。通過對Local總線和8086總線的時序分析可知,Local總線屬于同步總線接口,而8086總線屬于異步總線接口,兩者的接口時序完全不符。由于組合邏輯電路的產生延時并不固定,且容易產生毛刺和亞穩態,通過簡單組合邏輯電路將兩者進行邏輯粘合的方案可行性不高,筆者采用的Local端接口電路方案如圖4所示。

圖4 Local端接口控制器電路圖

圖4中,FPGA分別驅動Local總線和8086總線。FPGA驅動模塊左側接口與Local總線屬于同步通信,為減小時鐘偏斜和時鐘抖動,使用FPGA的鎖相環和全局時鐘網絡,且鎖相環的輸出經過全局時鐘網絡和輸出引腳直接驅動Local端時鐘。由于Local端只有一個從機,不存在總線仲裁問題,因此PCI9054 LHOLD信號線隨時申請主控權便可隨時獲得LHOLDA信號的應答。若將LHOLD和LHOLDA直接相連,很容易造成計算機運行的不穩定,這是因為當環境溫度、工作電壓等外界因素變化時,大多數邏輯器件的引腳延時會有相應的變化。利用D觸發器只在觸發時鐘有效邊沿對信號敏感的特性進行設計,可提高電路運行的穩定性,因此該設計將LHOLD在FPGA中經D觸發器后輸出為LHOLDA。

FPGA驅動模塊右側接口與8086總線屬于異步通信,驅動模塊需提供4根地址線供PCL6143片內尋址。由于FPGA需要與PCI9054直接通信以實現運動控制功能,因此自身也需4根地址線供其片內尋址。Local端的PCI_LA[4..2]和PCI_LBE1#用于片內尋址,PCI_LA5用于片外尋址,以區分FPGA和PCL6143。

Local端接口控制器的主體部分是由有限狀態機實現的,所設計的狀態機采用高效的one-hot編碼,運用三段式描述方法,使FSM做到同步寄存器輸出,消除了組合邏輯輸出的不穩定與產生毛刺的隱患,且更利于時序路徑分析,在FPGA上的綜合與布局布線效果更佳。狀態機的狀體轉移圖如圖5所示。

圖5 接口控制器狀態機的狀態轉移圖

一個完備的狀態機應該具備初始化狀態和默認狀態,所設計的狀體機初始化狀態和默認狀態都為IDLE。該狀態機的轉移是由驅動模塊的輸入信號PCI_ADS#、PCI_BLAST#、PCI_LW/R#和PCI_LA5的變化引起的。在初始狀態IDLE下,若Local端PCI_ADS#有效,則進入狀態ADSready,在該狀態中鎖存PCI_LA[5:2]和PCI_LBE1#,根據最高位地址線PCI_LA5判斷此次讀寫操作是PCL6143還是FPGA,若PCI_LA5為低電平則進入狀態PCL6143_CS,否則進入狀態FPGA_CS。

針對PCL6143的讀寫操作,在狀態PCL6143_CS中,驅動PCL6143片選信號PCL_CS#和地址信號FPGA_LA[4..1]有效,并判斷PCI_LW/R#,若為高電平則進入狀態PCL6143_write,否則進入狀態PCL6143_read。在狀態PCL6143_write或PCL6143_read中,驅動PCL6143寫信號PCL_WR#或讀信號PCL_RD#有效,并進入狀態PCL6143_dataready。在狀態PCL6143_dataready中判斷PCL_WRQ#,若有效則停留在原狀態,否則驅動PCI_READY#有效,即PCL6143已經準備好讀寫數據,并進入狀態PCL6143_datafinish。在狀態PCL6143_datafinish中,驅動PCL_WR#和PCL_RD#無效,并判斷PCI_BLAST#,若無效則停留在原狀態,即該次讀寫操作還未結束,否則驅動PCI_READY#和PCL6143_CS#無效并進入狀態STOP。在狀態STOP中,判斷PCI_LHOLD,若有效則停留在原狀態,即PCI9054還未釋放Local總線,否則進入狀態IDLE。

針對FPGA的讀寫操作,在狀態FPGA_CS中,判斷PCI_LW/R#,若為高電平則進入狀態FPGA_write,否則讀取在狀態PCI_ADS#鎖存的PCI_LA[ 4..2] 和PCI_LBE1#地址值并獲取該地址中的數據,進入狀態FPGA_read。在狀態FPGA_read中,將要讀的數據送至數據總線PCI_LD[15:0]上,保證PCI9054在讀取Local端數據時已將數據準備好,并進入狀態FPGA_readdataready。在狀態FPGA_readdataready中,驅動PCI_READY#有效,即通知PCI9054數據已經準備好,可以開始讀取數據,并進入狀態FPGA_datafinish。若此時處在狀態FPGA_write中,驅動PCI_READY#有效,即通知PCI9054已經準備好接收數據,并進入狀態FPGA_writedataready。狀態FPGA_writedataready中,獲取數據總線PCI_LD[15:0]的數據,并進入狀態FPGA_datafinish。在狀態FPGA_datafinish中,驅動狀態PCI_READY#無效,即通知PCI9054接收數據已經完成,并進入狀態STOP。在狀態STOP中,判斷PCI_LHOLD,若有效則停留在原狀態,否則進入狀態IDLE。

為了保證設計穩定可靠,必須對設計附加時序約束,對綜合結果進行時序分析。該設計采用TimeQuest Timing Analyzer時序分析工具對全局時鐘、全局I/O、輸入最大/最小延時和輸出最大/最小延時進行約束,經布局布線優化后,時序分析報告結果顯示系統可以運行的最高時鐘頻率fmax=69.99 MHz (period=14.288 ns ),時序余量slack=5.712 ns,完全滿足設計要求。

5 結論

筆者提出了一種基于PC機和運動控制卡的運動控制系統設計方案,選用專用接口芯片PCI9054避免了復雜的邏輯設計和時序分析,采用高性能FPGA實現了PCI9054與PCL6143的通信并可拓展PCL6143部分運動控制功能。同時重點討論了PCI總線接口控制器的實現,分析了PCI9054 Local總線時序和PCL6143 8086總線時序,使用三段式狀態機實現了Local總線與8086總線的通信,以及FPGA與PCI9054的直接通信。靜態時序分析結果和現場通信測試表明,該設計穩定可靠,通信高效流暢。

[1] 劉軍智,王亞海.基于PCI9054與FPGA結合的PXI 總線接口電路的設計[J].電子質量,2010(7):9-11.

[2] 童鵬,吳新建.PCI9054芯片接口設計中若干問題的深入研究[J].電子技術應用,2005,31(10):64-66.

[3] 韓雪峰,黃炎,楊濤.基于PCI總線的高速數據采集接口的設計與實現[J].微計算機信息,2005,21(8):71-73.

[4] 謝黎明,陳宏濤.DSP運動控制器與PCI總線的接口設計[J].新技術新工藝,2010(5):36-37.

[5] 張丹紅,張孝勇,劉文.基于PCI9054的數據通信接口卡設計[J].武漢理工大學學報(信息與管理工程版),2013,35(3):305-308.

[6] 王金明.Verilog HDL程序設計教程[M].北京:人民郵電出版社,2004:1-8.

[7] 李穎,譚立新,張文凱.基于PC和運動控制卡的開放式運動控制系統[J].儀表技術,2007(4):43-44.

[8] 何林,孟憲翠,董硯,等.基于DSP和CPLD的運動控制器簡化設計與應用[J].自動化與儀表,2011(1):36-39.

[9] 羅繼合,劉建群,余孝偉,等.PCL6143運動控制器的原理及應用[J].國外電子元器件,2008(1):48-51.

ZHANG Qingyong:Laboratory Technician; School of Automation, WUT, Wuhan 430070, China.

[編輯:王志全]

Design of Motion Control System Based on PC and Motion Control Card

ZHANGQingyong,ZHANGDanhong,JIANGWen

Firstly, motion control system structure based on PC and movement control card was introduced. Then the realization of interface controller between PCI bus and special motion control chip by use of interface chip PCI9054 and programmable logic device FPGA was mainly described. The interface controller also implements the direct communication between FPGA and PCI9054 to expand the function of PCL6143, which makes the motion control system more open-ended. The maximal theoretical communication rate is up to 140MB/s.

motion control card; PCI bus; interface controller; FPGA

2015-09-06.

張清勇(1984-),女,湖北仙桃人,武漢理工大學自動化學院實驗師.

湖北省自然科學基金資助項目(2013CFB335).

2095-3852(2015)06-0837-04

A

TP23

10.3963/j.issn.2095-3852.2015.06.038

猜你喜歡
進入狀態控制卡時序
兼容多種運動控制卡的V割機數控系統關鍵技術*
清明
基于不同建設時序的地鐵互聯互通方案分析
三軸機械手控制器設計
任務型教學在初中數學中的應用探討
基于FPGA 的時序信號光纖傳輸系統
基于運動控制卡的桁架機器人控制系統設計
國企黨員領導干部應當進入狀態
基于云控制的運動控制卡硬件設計與實現*
基于模體演化的時序鏈路預測方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合