2.9.4DMA總線時序
當選定存貯器作為源地址或目的地址,在訪問存貯器時,MREQ信號變為低電平。當選定I/O作為源地址或目的地址,在訪問I/O時,I0RQ信號變為低電平。
當選定I/O(或存貯器映象I/O)作為源地址或目的地址時,用外部DREQ輸入信號控製DMA定時,而用TEND輸出信號表示DMA操作結束。
注意,芯片外部I/O設備的地址,不可以和芯片內部的I/O以及控製寄存器的地址重.甚至於進行DMA操作時,也要注意不能發生地址重疊。
進行I/O訪問時,自動插入1個等待狀態。可以使用芯片內的可編程等待狀態發生器,.或外部輸入等待狀態信號WAIT來插入附加的等待狀態。注意,對於存貯器映象I/O的訪問不自動插入這個I/O等待狀態。
采用存貯器-存貯器傳送方式時(隻有通道0有此功能),外部DREQ0輸入信號不鑪理睬。自動進行的DMA時序,可以通過編程選定成組傳送或者是周期竊取方式。
當進行DMA操作,1個存貯器地址,在地址總線之間發生進位或借位(越過64KB界限)時,自動插入1個內部狀態,使最短總線周期被延長4個時鍾周期。
2.9.5DMA通道優先級
對於兩個通道同時發出DREQ請求信號時,通道0優先於通逍1當通道0正在進行存洗器存貯器的傳送時,通道1不能投入運行,要一直等到通道0的操作結束,通道1才能運行如果通道1正在運行,通道0也不能運行,一直等到通道1交還總線控製權後。
2.9.6DMAC和BUSREQ、BURACK
使用BUSREQ和BUSACK信號,允許其它外部設備獲得64180的總線控製權。也就是說,BUSREQ和BUSACK的優先級別高於芯片內的DMAC,能把正在操作的芯片內的DMAC掛起來,使芯片內的DMAC在對存貯器或I/O訪問的斷點處,把對總線的控製權交給外部設備。因為一個字節的DMA傳送操作,需要一個讀周期和一個寫周期,在DMA讀周期之後,但在DMA寫周期之前,把DMAC掛起來是可能的。當外部設備釋放了對64180的總線控製權(BUSREQ為高電平)後,芯片內的DMAC能夠正確無誤的把被進起的DMA操作繼續進行下去。
2.9.7DMAC內部中斷請求芯片內DMA中斷請求的產生電路。
當64180的通道0和通道1各自進行的DMA操作結束(字節計數器=0)時,DE1和DE0)兩位自動清除。DE1和DE0的零值一直保持到重新對它寫入1為止。由於DE1和DE0是使用電平信號,如果CPU中的IEF1狀態標誌位已被置1,就將會發出中斷請求信號。因此在進入DMA中斷服務程序時,要禁止DMA中斷(編程使通道的DIE位=0),以免DMA再次發出中斷。在允許CPU中斷之前(也就是IEF1被置1之前),應使DMAC重新裝入地址和字節計數器,然後再將DIE位置1,才重新允許DMA發出中斷請求。在重新裝入地It.和字節計數器的同時,可以通過編程使通道的DE位重新為1。
2.9.8DMAC和NMI
與其他中斷方式不同的是,NMI能自動禁止DMAC操作。這是通過它能對DSTAT寄存器的DME位清0來實現的。因此,NMI中斷服務程序可以隨時響應緊急事件,不會因為DMAC占用總線而延遲。NMP也能夠有效地用來作為夭折DMA操作的外部輸入控信號。由於對DME位清0,所以兩個通道的DMA操作都被掛起。
如果在DMA寫周期的T,之前,即1或1的時鍾狀態下跳沿之前發生NMI負變,DMAC將被掛起,在現行周期的末尾,CPU將響應NMI。
用設置通道的DE位為1,可以重新啟動通道操作。DMA將從被NMI掛起的斷點處正確地重新開始運行。
在RESET(複位)期間,將DSTAT寄存器、DM0DE寄存器和DCNTL寄存器的有關位,預置成規定的初始狀態。這些規定初始狀態,在前麵有關章節中均已敘述,這裏不再重複了。同時,RESET能使正在進行的芯片內DMA操作立即停止,以便CPU利用總線來執行RESET操作。然而,在RESET期間,地址寄存器(SAR0、DAR0、MAR1和IAR1)和字節計數器(BCR0、RCR1)的內容不被改變。
2.10異步串行通訊接口(ASCI)
在641S0芯片內的異步舊行通訊接口ASCI,有兩個完全獨立的全雙工通道。由於對下列的功能都可以進行編程,使得ASCI能夠直接和各種標準的通用異步接收發送器UART進行通訊。這些標準的UART包括HD6350CM0SACIA和串行通訊接口(SCI)。HD6301係列的CM0S單片控製器裏裝有SCI。
▲ASCI的主要功能如下所列。每個通道都具有完全獨立的可編程能力。
全雙工通訊。
數據長度為7位或8位。
第9個數據位作為多處理機通訊的程序控製位。
1個或2個停止位。
奇校驗、偶校驗或無奇偶校驗。
奇偶校驗出錯、超限、幀出錯等的檢測。
可編程的波特率發生器,有1/扨和1/64方式。當CPU的fc=6.144MHz時,傳送速度高達38.4K位/秒。
調製解調器的控製信號——通道0有DCD0、CTS0和RTS0,通道1隻有CTS1。
可編程選定允許中斷或禁止中斷。
能夠和芯片內的DMAC進行數據傳送。
2.10.1ASCI框圖
ASCI的框圖。
2.10.2ASCI寄存器介紹
▲ASCI的發送移位寄存器0,1——TSR0,1(TransmitShiftRegister0,1)
當ASCI的發送移位寄存器(TSR)從ASCI的發送數據寄存器(TDR)收到數據時數據就從TXA引腳移出。當發送完成時,下一個字節數據(如果有)又自動從TDR寄存器裝入TSR寄存器,開始下一次發送。如果沒有要發送的數據時,TSR空載,從TXA引輸出一個連續的高電平。TSR寄存器不能用程序訪問。
▲ASCI的發送數據寄存器0,1TDR0,1(TransmitDataRegister0,1)(I/O地址=06H,07H)