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