數(shù)據(jù)傳送
1.什么是數(shù)據(jù)傳送[1]
數(shù)據(jù)傳送是指數(shù)據(jù)從一種設(shè)備傳送到另一種設(shè)備,或從同一個(gè)設(shè)備的一個(gè)存儲(chǔ)位置傳送到另一個(gè)存儲(chǔ)位置中去。
2.數(shù)據(jù)傳送的方向[2]
串行通信中,數(shù)據(jù)通常是在兩個(gè)站點(diǎn)(如終端和微機(jī))之間進(jìn)行傳送,按照數(shù)據(jù)流的方向可分成三種基本的傳送模式,這就是全雙工方式、半雙工方式和單工方式。單工方式目前已很少采用,下面僅介紹前兩種模式。
1.全雙工方式(full duplex)
若數(shù)據(jù)的發(fā)送和接收分別使用兩套獨(dú)立的資源、由兩條不同的傳輸線同時(shí)傳送,使通信雙方都能在同一時(shí)刻進(jìn)行發(fā)送和接收操作,這樣的傳送方式就是全雙工制,如圖1所示。在全雙工方式下,通信系統(tǒng)的每一端都設(shè)置了發(fā)送器和接收器,因此,能控制數(shù)據(jù)同時(shí)在兩個(gè)方向上傳送。全雙工方式無須進(jìn)行方向的切換,因此,沒有切換操作所產(chǎn)生的時(shí)間延遲(一般為毫秒級(jí)),這對(duì)那些不能有時(shí)間延誤的交互式應(yīng)用(例如遠(yuǎn)程監(jiān)測(cè)和控制系統(tǒng))十分有利。

2.半雙工方式(half duplex)
當(dāng)使用同一條傳輸線既作輸入又作輸出時(shí),雖然數(shù)據(jù)可以在兩個(gè)方向上傳送,但顯然通信雙方不能同時(shí)收發(fā)數(shù)據(jù),即它們只能依賴分寸切換方向?qū)崿F(xiàn)互相收發(fā)數(shù)據(jù)。這樣的傳送方式就是半雙工制,如圖2所示。采用半雙工方式時(shí),通信系統(tǒng)每一端的發(fā)送器和接收器,通過收/發(fā)開關(guān)接到通信線上,進(jìn)行方向的切換,因此,會(huì)產(chǎn)生時(shí)間延遲。收/發(fā)開關(guān)實(shí)際上是由軟件控制的電子開關(guān)。
目前多數(shù)終端和串行接口都有半雙工模式的換向功能,也為全雙工模式提供了兩條獨(dú)立的引腳。在實(shí)際使用時(shí),有時(shí)并不需要通信雙方同時(shí)既發(fā)送又接收,像打印機(jī)這類的單向傳送設(shè)備,半雙工就能勝任,也無須倒向。
3.數(shù)據(jù)傳送方式和類型[3]
1.8237A的DMA操作方式
在8237A的有效操作周期內(nèi),8237A將以下述4種傳送方式之一進(jìn)行DMA操作。
1)單字節(jié)傳送方式
此時(shí)8237A獲得總線控制權(quán)后僅傳送一個(gè)字節(jié)的數(shù)據(jù),然后釋放系統(tǒng)總線,歸還給CPU使用。同時(shí)修改通道內(nèi)的當(dāng)前地址寄存器和當(dāng)前字計(jì)數(shù)寄存器的內(nèi)容,當(dāng)計(jì)數(shù)器從0減為FFFFH時(shí),產(chǎn)生終止計(jì)數(shù)信號(hào),使EOP變?yōu)榈碗娖健?
單字節(jié)傳送方式的優(yōu)點(diǎn)是保證在任何二次DMA操作之間,CPU至少能在一個(gè)總線周期內(nèi)獲得總線控制權(quán),達(dá)到CPU與DMA控制器處于并行工作的狀態(tài)。
2)數(shù)據(jù)塊傳送方式
此時(shí),8237A一旦獲得總線控制權(quán)后將連續(xù)傳送完一個(gè)數(shù)據(jù)塊(它由N個(gè)字節(jié)的數(shù)據(jù)組成),然后釋放系統(tǒng)總線歸還給CPU使用。在這種傳送方式中,一次DMA操作最多能傳送64KB的數(shù)據(jù)塊,DMA傳送結(jié)束將取決于下面兩種條件中的任一個(gè):當(dāng)前字計(jì)數(shù)寄存器的內(nèi)容從0減為FFFFH時(shí),并發(fā)出EOP有效信號(hào);外部強(qiáng)加一個(gè)EOP為低電平的輸入信號(hào)時(shí),迫使8237A退出DMA操作。
在數(shù)據(jù)塊傳送方式中,要求DMA請(qǐng)求信號(hào)DREQ保持到DACK變?yōu)橛行r(shí)即可,因?yàn)?237A一旦進(jìn)入有效周期后就不再去采樣DREQ信號(hào)了。
3)請(qǐng)求傳送方式
這種傳送方式類似于數(shù)據(jù)傳送方式,但此時(shí)要求在數(shù)據(jù)傳送期間必須保持DREQ信號(hào)有效。因?yàn)榇藭r(shí)8237A每傳送一個(gè)字節(jié)的數(shù)據(jù)之后都要采樣DREQ引腳。當(dāng)出現(xiàn)當(dāng)前字計(jì)數(shù)寄存器由0變?yōu)镕FFFH或者EOP輸入端加入低電平信號(hào)或者DREQ信號(hào)無效時(shí)都將停止DMA傳送。
4)級(jí)聯(lián)方式
這是當(dāng)多片8237A級(jí)聯(lián)應(yīng)用時(shí)采用的傳送方式,從而實(shí)現(xiàn)多于4個(gè)通道的DMA方式。此時(shí),從片8237A的HRQ和HLDA引腳應(yīng)和主片8237A某個(gè)通道的DREQ和DACK引腳依次連接。
以上4種DMA傳送方式均由方式控制字中的D7和D6兩位來控制。
2.?dāng)?shù)據(jù)傳送類型
在單字節(jié)傳送、數(shù)據(jù)塊傳送和請(qǐng)求傳送3種傳送方式下,都可以采用DMA讀、DMA寫和校驗(yàn)傳送3種基本傳送類型,它們是通過方式控制字來設(shè)定的;此外,還有存儲(chǔ)器到存儲(chǔ)器、壓縮時(shí)序、自動(dòng)預(yù)置和循環(huán)優(yōu)先級(jí)4種特殊的傳送類型,它們是通過8237A的命令字來設(shè)定的。
1)DMA讀
實(shí)現(xiàn)從存儲(chǔ)器到I/O接口器件的傳送,此時(shí)8237將發(fā)出MEMR和IOW控制信號(hào)以實(shí)現(xiàn)DMA讀操作。
2)DMA寫
實(shí)現(xiàn)從I/O接口器件到存儲(chǔ)器的傳送,此時(shí)8237A將發(fā)出IOR和MEMW控制信號(hào),以實(shí)現(xiàn)DMA寫操作。
3)校驗(yàn)傳送
用于校驗(yàn)8237A的內(nèi)部功能,它也產(chǎn)生地址的an/減1,字計(jì)數(shù)值減1及當(dāng)計(jì)數(shù)值從0減為FFFFH時(shí)產(chǎn)生EOP信號(hào)等,但所有的讀/寫控制信號(hào)都處于無效狀態(tài)。
4)存儲(chǔ)器到存儲(chǔ)器傳送
用來實(shí)現(xiàn)數(shù)據(jù)塊從一個(gè)存儲(chǔ)空間快速地傳送到另一個(gè)存儲(chǔ)空問。但這種類型僅適用于通道0和通道1,此時(shí)通道0產(chǎn)生源存儲(chǔ)器的地址,通道1產(chǎn)生目的存儲(chǔ)器的地址,每傳送一個(gè)字節(jié)的數(shù)據(jù)需執(zhí)行8個(gè)狀態(tài),前4個(gè)狀態(tài)用于從源存儲(chǔ)器中讀取數(shù)據(jù)并存放于8237A中的數(shù)據(jù)暫存器,而后4個(gè)狀態(tài)用于將數(shù)據(jù)暫存器的內(nèi)容寫入到目的存儲(chǔ)器中。
5)自動(dòng)預(yù)置傳送
它可在完成DMA服務(wù)并出現(xiàn)EOP有效信號(hào)后,將該通道的基地址寄存器和基本字節(jié)計(jì)數(shù)器的內(nèi)容重新裝入當(dāng)前地址寄存器和當(dāng)前字節(jié)計(jì)數(shù)器中,從而使該通道繼續(xù)執(zhí)行另一次DMA服務(wù),無須CPU來預(yù)置上述地址值和計(jì)數(shù)值。
6)循環(huán)優(yōu)先傳送
這是一種采用循環(huán)優(yōu)先級(jí)管理方式使8237A中4個(gè)通道的優(yōu)先級(jí)別做動(dòng)態(tài)地循環(huán)改變,從而使每一個(gè)通道都有享受最高優(yōu)先級(jí)別的資格,防止了一個(gè)通道獨(dú)占DMA操作的局面。
7)壓縮時(shí)序傳送
這是一種能獲得更高的數(shù)據(jù)傳送率的傳送類型。