摘 要:簡(jiǎn)介IDT7005芯片,一種基于IDT7005芯片的數(shù)控運(yùn)動(dòng)控制卡接口電路和ispGAL20V8B的控制電路程序設(shè)計(jì)。
關(guān)鍵詞:雙口RAM;數(shù)控運(yùn)動(dòng)控制卡;接口電路設(shè)計(jì)
在高速單片機(jī)數(shù)據(jù)采集和處理系統(tǒng)中,隨著采集數(shù)據(jù)量及數(shù)據(jù)處理任務(wù)的增加,對(duì)數(shù)據(jù)傳送的要求也越來(lái)越高,依靠單片機(jī)自帶的串口實(shí)現(xiàn)數(shù)據(jù)的串行傳輸已無(wú)法滿(mǎn)足要求,必須要進(jìn)行高速的并行數(shù)據(jù)傳輸。雙口RAM能夠方便地構(gòu)成各種工作方式下的高速數(shù)據(jù)傳送介質(zhì),解決數(shù)據(jù)傳輸?shù)退僖鸬钠款i問(wèn)題。無(wú)論是并行處理網(wǎng)絡(luò)中的數(shù)據(jù)共享,還是流水線方式的高速數(shù)據(jù)傳輸,雙口RAM都可以發(fā)揮重要作用,從而保證數(shù)據(jù)通路的暢通。
一、IDT7005芯片
雙口RAM除了數(shù)據(jù)存儲(chǔ)功能外,還提供兩個(gè)完全獨(dú)立的端口,每個(gè)端口分別有自己的控制線、地址線和I/O數(shù)據(jù)線,允許雙端口同時(shí)讀寫(xiě)數(shù)據(jù),適合于兩個(gè)單片機(jī)以總線方式對(duì)存儲(chǔ)空間的共享。
IDT7005是IDT公司生產(chǎn)的高速8kb的八位雙端口RAM器件,它具有存取速度快、功耗低、可完全異步操作、接口電路簡(jiǎn)單等優(yōu)點(diǎn)。IDT7005L具有兩端完全對(duì)稱(chēng)結(jié)構(gòu)(即兩套完全獨(dú)立的I/O控制線、地址線、數(shù)據(jù)線) 和仲裁中斷旗語(yǔ)邏輯模塊,使得IDT7005L成為真正的雙端口RAM,允許兩個(gè)控制器同時(shí)讀取任何存儲(chǔ)單元,但不允許同時(shí)寫(xiě)或一讀一寫(xiě)同一地址單元。該芯片內(nèi)部的功能結(jié)構(gòu)如圖1所示。
二、硬件電路接口設(shè)計(jì)
1. IDT7005L的旗語(yǔ)令牌傳遞法由于IDT7005具有兩套獨(dú)立的總線結(jié)構(gòu),可用多種方法解決兩邊對(duì)同一單元的爭(zhēng)用問(wèn)題。
一般可以利用雙口RAM的BUSY信號(hào),但當(dāng)兩端口對(duì)同一地址單元同時(shí)存取數(shù)據(jù)時(shí),其中一個(gè)端口處于等待狀態(tài),對(duì)于高速數(shù)據(jù)傳輸來(lái)說(shuō),插入等待狀態(tài)會(huì)降低數(shù)據(jù)傳輸效率,這在某些情況下是不能夠接受的,此時(shí)可以利用IDT7005L提供的旗語(yǔ)電路。這里介紹最為常用的旗語(yǔ)令牌傳遞法。IDT7005L的旗語(yǔ)操作見(jiàn)表1。
IDT7005內(nèi)部有八個(gè)獨(dú)立于存儲(chǔ)單元的鎖存器,最多將8kb存儲(chǔ)單元分為八部分,可用來(lái)指示是否相應(yīng)的共享RAM正被使用。當(dāng)一側(cè)端口訪問(wèn)共享RAM時(shí)先向相應(yīng)的鎖存邏輯單元寫(xiě)入“0”,如讀出“1”則表示共享RAM正被另一側(cè)占用,直到另一側(cè)端口釋放令牌,此時(shí)讀出的數(shù)據(jù)為“0”,可訪問(wèn)相應(yīng)RAM。
另外,值得注意的是,對(duì)旗語(yǔ)進(jìn)行操作,應(yīng)先寫(xiě)后讀,不要先讀后寫(xiě),以避免出現(xiàn)爭(zhēng)用系統(tǒng)總線的現(xiàn)象。
2. 總體設(shè)計(jì)方案
接口電路設(shè)計(jì)的上位機(jī)采用工業(yè)控制機(jī),AT89S52單片機(jī)作為下位機(jī),ISA總線與雙口RAM以及雙口RAM與單片機(jī)的總體通信方案原理見(jiàn)圖2。

(1) IDT7005芯片接口設(shè)計(jì)。由于共享RAM使用了存儲(chǔ)器尋址,而旗語(yǔ)令牌的鎖存邏輯單元使用了I/O尋址,所以SMEW信號(hào)和IOW信號(hào)相與后送給IDT7005的R/WR信號(hào),同樣,SMER信號(hào)和IOR相與后送給IDT7005的OER信號(hào)。對(duì)共享RAM和旗語(yǔ)令牌訪問(wèn)時(shí)片選信號(hào)分別采用CE 和SEM。ISA總線的A0~A12接到IDT7005的A0R~A12R作為地址線,A13~A19接到GAL20V8B的一組輸入端。本試驗(yàn)中,共享RAM可配置在D0000H~DFFFFH,旗語(yǔ)令牌可配置在300H~3FFH。
(2) ispGAL20V8B的讀寫(xiě)控制電路程序設(shè)計(jì)。通用陣列邏輯GAL是由可編程的與陣列、固定(不可編程) 的或陣列和輸出邏輯宏單元(OLMC) 三部分構(gòu)成。GAL芯片須借助GAL的開(kāi)發(fā)軟件和硬件,對(duì)其編程寫(xiě)入后,才能使GAL芯片具有預(yù)期的邏輯功能。GAL20V8B有八個(gè)I/O口、14個(gè)輸入口、10個(gè)寄存器單元,最高頻率超過(guò)100MHz。它通過(guò)程序來(lái)控制可編程陣列區(qū)的軟連線,從而實(shí)現(xiàn)所需的邏輯電路。ISA總線接口卡上采用GAL20V8B芯片實(shí)現(xiàn)存儲(chǔ)器地址范圍選擇、I/O地址選擇、地址總線和數(shù)據(jù)總線的選通控制、ISA總線與雙口RAM間的控制信號(hào)產(chǎn)生等功能。該系統(tǒng)所采用的控制邏輯的程序如下。
MODULE IDT7005 //模塊IDT7005開(kāi)始
TITLE‘IDT7005‘ //標(biāo)題語(yǔ)句
ADA PIN 15;
IOW,IOR,SMEMW,SMEMR
PIN1,2,4,5; //輸入管腳說(shuō)明
A14,A15,A16,A17,A18,A19PIN7,8,9,10,11,13;
K1,K2,K3,K4PIN23,22,21,20;
OE,CE,RW,SEMPIN18,19,17,16;
S1= [A14,A15,A16,A17] ; //地址譯碼組合
S2= [K1,K2,K3,K4] ;
EQUATIONS //邏輯方程描述
WHEN (S1==S2) THENADA=1
ELSEADA=0;
! CE = ! ( SMEMW&SMEMR) &ADA&(A18&A19) ;
! SEM=! (IOW&IOR) &! (! A18#A19) ;
RW=SMEMW&IOW;
OE=SMEMR&IOR;
END //模塊IDT7005結(jié)束
經(jīng)燒寫(xiě)后的管腳功能圖見(jiàn)圖3。

三、結(jié)束語(yǔ)
通過(guò)雙口RAM實(shí)現(xiàn)單片機(jī)與上位機(jī)數(shù)據(jù)通信接口電路的設(shè)計(jì)及其ISA模式應(yīng)用,利用IDT7005芯片實(shí)現(xiàn)了數(shù)控機(jī)床運(yùn)動(dòng)控制卡主從式處理器間的通信,試驗(yàn)證明,該方法與串行和并行通信相比,具有速度快、數(shù)據(jù)傳輸可靠性高、抗干擾能力強(qiáng)、實(shí)現(xiàn)簡(jiǎn)單的優(yōu)點(diǎn),有很強(qiáng)的實(shí)際應(yīng)用價(jià)值。