摘 要:簡介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ù)的增加,對數(shù)據(jù)傳送的要求也越來越高,依靠單片機(jī)自帶的串口實(shí)現(xiàn)數(shù)據(jù)的串行傳輸已無法滿足要求,必須要進(jìn)行高速的并行數(shù)據(jù)傳輸。雙口RAM能夠方便地構(gòu)成各種工作方式下的高速數(shù)據(jù)傳送介質(zhì),解決數(shù)據(jù)傳輸?shù)退僖鸬钠款i問題。無論是并行處理網(wǎng)絡(luò)中的數(shù)據(jù)共享,還是流水線方式的高速數(shù)據(jù)傳輸,雙口RAM都可以發(fā)揮重要作用,從而保證數(shù)據(jù)通路的暢通。
一、IDT7005芯片
雙口RAM除了數(shù)據(jù)存儲(chǔ)功能外,還提供兩個(gè)完全獨(dú)立的端口,每個(gè)端口分別有自己的控制線、地址線和I/O數(shù)據(jù)線,允許雙端口同時(shí)讀寫數(shù)據(jù),適合于兩個(gè)單片機(jī)以總線方式對存儲(chǔ)空間的共享。
IDT7005是IDT公司生產(chǎn)的高速8kb的八位雙端口RAM器件,它具有存取速度快、功耗低、可完全異步操作、接口電路簡單等優(yōu)點(diǎn)。IDT7005L具有兩端完全對稱結(jié)構(gòu)(即兩套完全獨(dú)立的I/O控制線、地址線、數(shù)據(jù)線) 和仲裁中斷旗語邏輯模塊,使得IDT7005L成為真正的雙端口RAM,允許兩個(gè)控制器同時(shí)讀取任何存儲(chǔ)單元,但不允許同時(shí)寫或一讀一寫同一地址單元。該芯片內(nèi)部的功能結(jié)構(gòu)如圖1所示。
二、硬件電路接口設(shè)計(jì)
1. IDT7005L的旗語令牌傳遞法由于IDT7005具有兩套獨(dú)立的總線結(jié)構(gòu),可用多種方法解決兩邊對同一單元的爭用問題。
一般可以利用雙口RAM的BUSY信號,但當(dāng)兩端口對同一地址單元同時(shí)存取數(shù)據(jù)時(shí),其中一個(gè)端口處于等待狀態(tài),對于高速數(shù)據(jù)傳輸來說,插入等待狀態(tài)會(huì)降低數(shù)據(jù)傳輸效率,這在某些情況下是不能夠接受的,此時(shí)可以利用IDT7005L提供的旗語電路。這里介紹最為常用的旗語令牌傳遞法。IDT7005L的旗語操作見表1。
IDT7005內(nèi)部有八個(gè)獨(dú)立于存儲(chǔ)單元的鎖存器,最多將8kb存儲(chǔ)單元分為八部分,可用來指示是否相應(yīng)的共享RAM正被使用。當(dāng)一側(cè)端口訪問共享RAM時(shí)先向相應(yīng)的鎖存邏輯單元寫入“0”,如讀出“1”則表示共享RAM正被另一側(cè)占用,直到另一側(cè)端口釋放令牌,此時(shí)讀出的數(shù)據(jù)為“0”,可訪問相應(yīng)RAM。
另外,值得注意的是,對旗語進(jìn)行操作,應(yīng)先寫后讀,不要先讀后寫,以避免出現(xiàn)爭用系統(tǒng)總線的現(xiàn)象。
2. 總體設(shè)計(jì)方案
接口電路設(shè)計(jì)的上位機(jī)采用工業(yè)控制機(jī),AT89S52單片機(jī)作為下位機(jī),ISA總線與雙口RAM以及雙口RAM與單片機(jī)的總體通信方案原理見圖2。
(1) IDT7005芯片接口設(shè)計(jì)。由于共享RAM使用了存儲(chǔ)器尋址,而旗語令牌的鎖存邏輯單元使用了I/O尋址,所以SMEW信號和IOW信號相與后送給IDT7005的R/WR信號,同樣,SMER信號和IOR相與后送給IDT7005的OER信號。對共享RAM和旗語令牌訪問時(shí)片選信號分別采用CE 和SEM。ISA總線的A0~A12接到IDT7005的A0R~A12R作為地址線,A13~A19接到GAL20V8B的一組輸入端。本試驗(yàn)中,共享RAM可配置在D0000H~DFFFFH,旗語令牌可配置在300H~3FFH。
(2) ispGAL20V8B的讀寫控制電路程序設(shè)計(jì)。通用陣列邏輯GAL是由可編程的與陣列、固定(不可編程) 的或陣列和輸出邏輯宏單元(OLMC) 三部分構(gòu)成。GAL芯片須借助GAL的開發(fā)軟件和硬件,對其編程寫入后,才能使GAL芯片具有預(yù)期的邏輯功能。GAL20V8B有八個(gè)I/O口、14個(gè)輸入口、10個(gè)寄存器單元,最高頻率超過100MHz。它通過程序來控制可編程陣列區(qū)的軟連線,從而實(shí)現(xiàn)所需的邏輯電路。ISA總線接口卡上采用GAL20V8B芯片實(shí)現(xiàn)存儲(chǔ)器地址范圍選擇、I/O地址選擇、地址總線和數(shù)據(jù)總線的選通控制、ISA總線與雙口RAM間的控制信號產(chǎn)生等功能。該系統(tǒng)所采用的控制邏輯的程序如下。
MODULE IDT7005 //模塊IDT7005開始
TITLE‘IDT7005‘ //標(biāo)題語句
ADA PIN 15;
IOW,IOR,SMEMW,SMEMR
PIN1,2,4,5; //輸入管腳說明
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)燒寫后的管腳功能圖見圖3。
三、結(jié)束語
通過雙口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)簡單的優(yōu)點(diǎn),有很強(qiáng)的實(shí)際應(yīng)用價(jià)值。