用CH365實現(xiàn)PCI息線與DSP的通信
關(guān)鍵詞 PCI總線 CH365 雙口RAM CPLD DSP
引 言
隨著數(shù)控技術(shù)與裝備的發(fā)展,特別是在通用微機數(shù)控領(lǐng)域,以PC+運動控制器模式的開放式運動控制系統(tǒng),已經(jīng)越來越引起人們的重視。這種開放式的數(shù)控系統(tǒng)能夠在多種平臺上運行,可以和其他系統(tǒng)交互操作,并能給用戶提供一種統(tǒng)一風(fēng)格的交互方式;具有可互操作性、可移植性、檔次皆宜性和可互補性等特點。PC機技術(shù)引入運動控制領(lǐng)域,從軟件和硬件方面為開放式運動控制技術(shù)提供了新的發(fā)展空間和前進方向。
DSP作為運動控制器件的技術(shù)目前已趨于成熟,并成功地應(yīng)用于實際工業(yè)生產(chǎn)之中。TMS320C2407是美國TI(德州儀器)公司專為電機控制(DMC)應(yīng)用而推出的一種低價格、高性能的16位定點運算DSP。該器件將高性能的DSP內(nèi)核和豐富的微控制器外設(shè)功能集于一身,為控制系統(tǒng)應(yīng)用提供了一種理想的解決方案。
1 硬件電路總體設(shè)計方案
PC機與DSP之間的通信目前比較常用的方法是通過RS232串行通信,但這種方式速度較慢,且無法實現(xiàn)實時控制,故考慮應(yīng)用PC機的PCI接口來實施傳輸任務(wù)。PCI總線是一種高性能的32/64位地址、數(shù)據(jù)復(fù)用總線,它是一種獨立處理器的同步總線,可支持碎發(fā)傳送。其總線時鐘頻率為o~33MHz。在33MHz的工作頻率下達到了132MB/s的傳輸速度。PCI總線與其他主流總線相比,速度更快,實時性更好,可控性更佳,適用于高速實時的I/O控制卡;但由于PCI總線協(xié)議比較復(fù)雜,因此其接口電路實現(xiàn)起來并不容易,而采用通用PCI接口芯片就能很好地解決這一問題。
目前市場上常見的PCI橋芯片主要有AMCC、PLX、CYPRESS以及南京沁恒電子公司的CH36X等系列產(chǎn)品。根據(jù)比較以及此系統(tǒng)的實際要求,選用南京沁恒電子公司的CH365。此芯片具有如下特點:支持I/O端口映射、存儲器映射、擴展ROM以及中斷。CH365將32位高速PCI總線轉(zhuǎn)換為簡便易用的類似于ISA總線的8位主動并行接口,用于制作低成本的基于PCI總線的計算機板卡,以及將原先基于ISA總線的板卡升級到PCI總線上。
對本系統(tǒng)來說,PC機要發(fā)送控制指令和進行大量的數(shù)據(jù)計算,數(shù)據(jù)交換應(yīng)盡可能占用較短的機時和較少的內(nèi)存空間。另外,PCI總線與DSP之間還要進行大量、可靠的數(shù)據(jù)傳輸,它們均過多地占用CPU時間,導(dǎo)致CPU效率降低。使用雙口RAM交換信息,雙方將其當作自己存儲器的一部分,可保證高速、可靠的數(shù)據(jù)通信。本系統(tǒng)選用的CY7C133,完全能夠滿足數(shù)據(jù)傳輸?shù)囊蟆Y7C133是一款高速2K16位的雙口靜態(tài)RAM,允許2個(左、右)端口同時讀/寫數(shù)據(jù),每個端口具有獨立的控制信號線、地址線和數(shù)據(jù)線。可高速存取數(shù)據(jù),最短存取時間為25ns,可與大多數(shù)高速處理器配合使用,而無須插入等待狀態(tài)。CY7C133除具有雙端口存取功能外,還具有標識器功能,在數(shù)據(jù)傳送時可構(gòu)成多種接口形式。
2 接口電路的實現(xiàn)
2.1 雙口只AM的邏輯判斷
雙口RAM允許2個CPU同時讀取任何存儲單元(包括同時讀同一地址單元),但不允許同時寫或一讀一寫同一地址單元,否則就會出現(xiàn)寫入值和讀出值不是期望值的混亂狀態(tài)。雖然CY7C133硬件本身帶有BUSY控制信號來協(xié)調(diào)兩端的訪問,但BUSY信號腳要求與兩側(cè)CPU的READY線相連,而CH365并不具有READY信號線,因此,需要引入仲裁邏輯控制模塊。常用的雙口RAM解決地址競爭的途徑有:令牌傳遞法、基于郵箱機制的INT中斷法以及插入等待周期的BUSY法等。在本系統(tǒng)中我們采用第2種方法。
基于郵箱機制的INT中斷法的基本思想是:給每個端口分配一個地址作為郵箱,比如本系統(tǒng)可以令CH365使用00H,DSP使用8000H,這兩個地址用來裝載作為分配兩端口RAM使用權(quán)的依據(jù)數(shù)據(jù)。具體約定為:當左端口CH365寫地址單元00H時,通過邏輯器件可實現(xiàn)右中斷DSP_TNT(DSP中斷)為低,向DSP發(fā)出中斷請求,DSP讀地址單元00H時,DSP_INT為高,復(fù)位CH365發(fā)出的中斷請求。同理,當右端口寫地址單元8000H時,左中斷INT_REQ(CH365中斷)為低,可向左端口發(fā)出中斷請求;而當左端口讀地址8000H時,INT_REQ為高,復(fù)位DSP發(fā)出的中斷請求。當信箱內(nèi)容為00時,表示正在使用該方端口;當信箱內(nèi)容為FFH時,表示結(jié)束使用該端口。因此,雙方在對端口的其他單元進行讀寫操作開始時,需要向郵箱中寫入00H;操作結(jié)束,寫入FFH。如果沒有發(fā)生爭用,則直接進行讀寫操作;否則,慢的一方產(chǎn)生中斷,并查詢對方郵箱,直到對方郵箱內(nèi)容為FFH。具體實現(xiàn)可借助CPLD來完成。
2.2 總線擴展的解決方案
CH365的地址總線寬度是16位,數(shù)據(jù)總線寬度為8位,TMS320C2407的數(shù)據(jù)總線和地址總線的寬度均為16位,而CY7C133的數(shù)據(jù)總線寬度是16位,地址總線寬度是11位,所以DSP與CY7C133的接口并無特別之處;但是CH365與CY7C133之間的接口電路就需要對雙口RAM進行總線擴展了。基本思想是利用部分CPLD實現(xiàn)鎖存器的功能,通過對使能信號的控制,把16位數(shù)據(jù)進行分時讀寫,實現(xiàn)數(shù)據(jù)總線的擴展,即利用鎖存器作為虛擬總線。此處選用EPM7032的CPLD來解決總線擴展問題,其內(nèi)部電路如圖l所示。
下面討論CH365對雙口RAM的讀寫過程。當CH365對雙口RAM進行讀數(shù)據(jù)時,設(shè)定此時A0為高電平,此時16位數(shù)據(jù)均從雙口RAM中讀出,由于高8位數(shù)據(jù)線與CH365的8位數(shù)據(jù)線直接相連,所以高8位數(shù)據(jù)被立即讀入CH365中。同時,根據(jù)圖1中各信號的相互邏輯關(guān)系可以得到,讀鎖存器(U1)的使能信號G有效(高電平),OEN無效(高電平),因而低8位數(shù)據(jù)被送入U1中鎖存起來。接著CH365再進行一次讀操作,CH365_A0變成低電平,雙口RAM的片選信號變成無效電平,所以此次讀操作對雙口RAM不產(chǎn)生影響,而此時U1的使能信號G變成了無效電平,而OEN變成了有效電平,上次被鎖存的數(shù)據(jù)(即雙口RAM的低8位數(shù)據(jù))被送入CH365中,16位數(shù)據(jù)讀完成。當CH365對雙口RAM進行寫入操作時,設(shè)定此時CH365_A0為低電平,同樣可根據(jù)圖l判斷寫緩存器(U2)的使能信號G有效,而OEN無效,雙口RAM片選無效,因而數(shù)據(jù)被鎖存在U2中;接著CH365再進行一次寫操作,由于CH365_A0變成高電平,雙口RAM片選有效,U2的片選無效,OEN為有效電平,故此時16位數(shù)據(jù)同時寫入雙口RAM。從上面的分析可知,利用最低地址位CH365_AO的不同電平,CH365通過兩次連續(xù)的讀或?qū)懖僮鳎晒Φ貙崿F(xiàn)了對雙口RAM中數(shù)據(jù)的讀或?qū)?,只不過是讀入時是先讀入高8位,后讀入低8位;而寫入則是先寫入低8位,后寫入高8位。同時,兩片鎖存器不能出現(xiàn)同時被選中的情況.否則就會出現(xiàn)傳輸數(shù)據(jù)的混亂,導(dǎo)致傳輸錯誤。
本系統(tǒng)的硬件電路原理(主要部分)如圖2所示。由于TMS320C2407(3.3V)與雙口RAM(5V)的電平差別,加入了電壓轉(zhuǎn)換器件SN74LVTHl6245A。
3 PCI和DSP的通信
在硬件電路實現(xiàn)之后,把完成的板卡插于PC機的PCI插槽。上電后,根據(jù)系統(tǒng)提示安裝CH365驅(qū)動程序,在正確安裝好硬件之后,就可以在VC環(huán)境下編寫和調(diào)試PCI和DSP的通信軟件。
通過API函數(shù)編寫與DSP的相互數(shù)據(jù)交換程序,完成雙向的中斷申請和中斷響應(yīng),實現(xiàn)數(shù)據(jù)快速交換。
3.1 CH365的雙向通信程序
CH365支持PC機程序以單字節(jié)、雙字節(jié)(字)、四字節(jié)(雙字)為單位對I/O端口或者存儲器進行讀寫。在多字節(jié)連續(xù)讀寫操作期間,CH365每讀寫完一個字節(jié)數(shù)據(jù)后,就會自動將偏移地址加l,以指向下一個字節(jié)的偏移地址。我們可以通過向I/0口的00H寫數(shù)據(jù)實現(xiàn)向DSP申請中斷,DSP在響應(yīng)中斷后通過讀00H清除上位機的中斷。其程序如下:
3.2 DSP的雙向通信程序
為了方便觀察數(shù)據(jù)傳輸結(jié)果,本測試中設(shè)定,DSP寫空間為Ox0400~Ox07FF,讀空間為OxO000~Ox03FF,即可以通過DSP程序?qū)崿F(xiàn)從前l(fā)K單元讀取數(shù)據(jù)再寫入后lK單元,然后把后寫入的數(shù)據(jù)與PC機寫入的數(shù)據(jù)進行比較。如果吻合,則說明數(shù)據(jù)交換成功。圖3給出DSP的程序流程。
通過雙向的軟件測試,結(jié)果顯示數(shù)據(jù)交換完全正確。
結(jié)語
隨著計算機技術(shù)和電子技術(shù)的發(fā)展,將運算高速、功能強大的數(shù)字信號處理器應(yīng)用于運動控制,可以實現(xiàn)復(fù)雜的控制算法和高精度、高速度、多軸聯(lián)動功能,在數(shù)控應(yīng)用中,將會占據(jù)越來越重要的地位。而快速、準確的通信是這種運動控制器的基礎(chǔ)。本文提出的通信方式,具有性能可靠,硬件結(jié)構(gòu)簡單,價格便宜的優(yōu)點,有較好的應(yīng)用前景。
評論