两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

直接存儲(chǔ)訪問(wèn)控制器的制作方法

文檔序號(hào):6651471閱讀:238來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):直接存儲(chǔ)訪問(wèn)控制器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種控制器,尤其涉及一種直接存儲(chǔ)訪問(wèn)控制器(DirectMemory Access Controller,DMAC)。
背景技術(shù)
直接存儲(chǔ)訪問(wèn)(Direct Memory Access,DMA)通道,是指在沒(méi)有主處理器干預(yù)的設(shè)備間直接交換數(shù)據(jù)的通道。對(duì)DMA通道的控制,一般由DMA控制器完成。
目前,對(duì)DMA通道的控制,一般需要主處理器對(duì)每個(gè)連續(xù)的地址重新配置一次,而且不同的DMA通道之間的直接切換,需要CPU來(lái)參與,這對(duì)于CPU資源有限、多個(gè)DMA通道任務(wù)間頻繁切換,且每個(gè)DMA通道所要傳輸?shù)牡刂凡贿B續(xù)的設(shè)備而言,是很難實(shí)現(xiàn)的。因此,能否提出一種DMA控制器,只需占用少量的CPU資源就可以實(shí)現(xiàn)多個(gè)DMA通道任務(wù)間的頻繁切換,已經(jīng)成為業(yè)界亟待解決的問(wèn)題。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種直接存儲(chǔ)訪問(wèn)控制器,只需占用少量的CPU資源就可以實(shí)現(xiàn)多個(gè)DMA通道任務(wù)間的頻繁切換。
為解決上述問(wèn)題,本發(fā)明提供一種直接存儲(chǔ)訪問(wèn)控制器,在CPU對(duì)節(jié)點(diǎn)設(shè)備提出的直接存儲(chǔ)訪問(wèn)通道中斷請(qǐng)求進(jìn)行初始化配置后,控制節(jié)點(diǎn)設(shè)備與非易失型存儲(chǔ)器之間直接交換數(shù)據(jù),該直接存儲(chǔ)訪問(wèn)控制器包括中斷控制器、分割單元、寄存器組、邏輯地址暫存器接口、節(jié)點(diǎn)設(shè)備接口、主控制器,其中,主控制器,用于控制和協(xié)調(diào)各模塊的工作,并在直接存儲(chǔ)訪問(wèn)通道結(jié)束傳輸后發(fā)出傳輸結(jié)束信號(hào)給CPU;寄存器組,用于提供一個(gè)與CPU通信的接口,存儲(chǔ)有處理器發(fā)出的命令以及配置的參數(shù),包括通道中斷請(qǐng)求的優(yōu)先級(jí);節(jié)點(diǎn)設(shè)備接口,用于提供與節(jié)點(diǎn)設(shè)備之間的通信協(xié)議,包括接收來(lái)自節(jié)點(diǎn)設(shè)備的直接存儲(chǔ)訪問(wèn)通道中斷請(qǐng)求,在主控制器的控制下給出該直接存儲(chǔ)訪問(wèn)通道被服務(wù)的信號(hào),并從該節(jié)點(diǎn)設(shè)備讀出或?qū)懭霐?shù)據(jù);中斷控制器,與主控制器、寄存器組、節(jié)點(diǎn)設(shè)備相連,用于根據(jù)節(jié)點(diǎn)設(shè)備發(fā)出的直接存儲(chǔ)訪問(wèn)通道的中斷請(qǐng)求優(yōu)先級(jí)參數(shù),與自身的中斷響應(yīng)策略來(lái)確定向主控制器提出中斷請(qǐng)求的時(shí)間;分割單元,與主控制器、節(jié)點(diǎn)設(shè)備接口、邏輯地址暫存器接口、非易失型存儲(chǔ)器接口相連,用于在主控制器的控制下,根據(jù)所述寄存器組中存儲(chǔ)的參數(shù),將長(zhǎng)的直接存儲(chǔ)訪問(wèn)傳輸分割成多個(gè)短的直接存儲(chǔ)訪問(wèn)傳輸,分割的原則是非易失型存儲(chǔ)器接口每次訪問(wèn)非易失型存儲(chǔ)器時(shí),地址空間必須連續(xù)、塊對(duì)齊且最大的塊數(shù)在預(yù)設(shè)的最大允許傳輸塊數(shù)之內(nèi),分割后獲得本次傳輸?shù)氖走壿媺K地址和傳輸塊數(shù)參數(shù);邏輯地址暫存器接口,用于在分割模塊的控制下,從邏輯地址暫存器中讀出本次直接存儲(chǔ)訪問(wèn)通道傳輸?shù)臄?shù)據(jù)存儲(chǔ)在非易失型存儲(chǔ)器中的簇鏈結(jié)構(gòu)信息;非易失型存儲(chǔ)器接口,用于提供與非易失型存儲(chǔ)器通信的協(xié)議,在主控制器的控制下,根據(jù)分割單元獲得的本次傳輸?shù)膮?shù),從非易失型存儲(chǔ)器中讀出或?qū)懭霐?shù)據(jù)。
利用本發(fā)明所述的DMA控制器,多個(gè)DMA通道任務(wù)間的切換工作可以自主完成,僅需少量的CPU資源,可以將長(zhǎng)的不連續(xù)的傳輸?shù)刂纷詣?dòng)切割為連續(xù)的,因此允許每個(gè)DMA通道所要傳輸?shù)牡刂凡贿B續(xù)。同時(shí),DMA通道初始化配置簡(jiǎn)單,只需要配置通道優(yōu)先級(jí)、簇鏈結(jié)構(gòu)起始地址、首字節(jié)相對(duì)第一簇的偏移量、傳輸長(zhǎng)度和傳輸方向等基本參數(shù)即可。而且,DMA通道傳輸?shù)氖腔趬K的方式,塊的長(zhǎng)度是可配置的。本發(fā)明還支持自動(dòng)長(zhǎng)度分割功能,將一個(gè)長(zhǎng)文件傳輸分割成多個(gè)短的DMA通道傳輸。同時(shí),本發(fā)明支持以多通道按塊時(shí)分復(fù)用的方式共享總線帶寬,支持多種帶寬分配方案,支持多塊傳輸。


圖1為根據(jù)本發(fā)明實(shí)施例所述的DMA控制器應(yīng)用系統(tǒng)示意圖;圖2為根據(jù)本發(fā)明實(shí)施例所述的DMA控制器結(jié)構(gòu)示意圖;圖3為根據(jù)本發(fā)明實(shí)施例所述的DMA控制器中的主控制器的狀態(tài)機(jī)示意圖。
具體實(shí)施例方式
如圖1所示,應(yīng)用本發(fā)明的系統(tǒng)可以由處理器16,A類(lèi)節(jié)點(diǎn)設(shè)備20、22,B類(lèi)節(jié)點(diǎn)設(shè)備24、26,邏輯地址暫存器14、包括非易失型存儲(chǔ)器接口的DMAC控制器10、非易失型存儲(chǔ)器12構(gòu)成。
處理器16的主要功能是對(duì)每次DMA傳輸進(jìn)行初始化配置和過(guò)程中的異常進(jìn)行處理。
節(jié)點(diǎn)分為兩類(lèi),A類(lèi)節(jié)點(diǎn)和B類(lèi)節(jié)點(diǎn)。A類(lèi)節(jié)點(diǎn)是指節(jié)點(diǎn)本身需要提供訪問(wèn)非易失型存儲(chǔ)器的邏輯地址及傳輸長(zhǎng)度,對(duì)該類(lèi)節(jié)點(diǎn)的每次DMA傳輸,其數(shù)據(jù)存儲(chǔ)在非易失型存儲(chǔ)器上必須是邏輯地址連續(xù)的一段數(shù)據(jù)。B類(lèi)節(jié)點(diǎn)是指節(jié)點(diǎn)本身不直接提供非易失型存儲(chǔ)器的邏輯地址,其邏輯地址存儲(chǔ)在邏輯地址暫存器中,B類(lèi)節(jié)點(diǎn)每次進(jìn)行DMAC傳輸時(shí),處理器通知DMAC控制器該節(jié)點(diǎn)準(zhǔn)備訪問(wèn)的邏輯地址存儲(chǔ)在地址暫存器中的位置。在多音頻處理器中,F(xiàn)AT加速器屬于A類(lèi)節(jié)點(diǎn),其它設(shè)備,例如各種音頻播放器都屬于B類(lèi)節(jié)點(diǎn)。若節(jié)點(diǎn)需要進(jìn)行DMA傳輸,該節(jié)點(diǎn)提出DMA請(qǐng)求給主處理器或DMAC控制器。
邏輯地址暫存器14,給每個(gè)將要進(jìn)行DMA傳輸?shù)腂類(lèi)節(jié)點(diǎn)分配一個(gè)連續(xù)的空間,用于存儲(chǔ)其訪問(wèn)非易失型存儲(chǔ)器的邏輯地址簇鏈結(jié)構(gòu)。
DMAC控制器10的主要功能是控制節(jié)點(diǎn)與非易失型存儲(chǔ)設(shè)備12之間交換數(shù)據(jù)。
其中,非易失型存儲(chǔ)器接口的主要功能是將DMAC控制器10的DMA傳輸控制命令轉(zhuǎn)化為訪問(wèn)非易失型存儲(chǔ)器的具體的時(shí)序。
圖2所示為根據(jù)本發(fā)明實(shí)施例所述的DMAC控制器的結(jié)構(gòu)框圖,由主控制器108、中斷控制器106、寄存器組112、A類(lèi)型節(jié)點(diǎn)接口102、B類(lèi)型節(jié)點(diǎn)接口100、分割單元110、邏輯地址暫存器接口104和非易失型存儲(chǔ)器接口114構(gòu)成。
其中,中斷控制器106的主要功能是根據(jù)通道提出的帶優(yōu)先級(jí)的傳輸中斷請(qǐng)求和中斷響應(yīng)策略來(lái)確定哪個(gè)通道被服務(wù),并決定何時(shí)向主控制器提出中斷請(qǐng)求。其中斷策略是1)不同優(yōu)先級(jí)同時(shí)請(qǐng)求高優(yōu)先級(jí)先服務(wù);2)同一優(yōu)先級(jí)的中斷請(qǐng)求采用輪詢(xún)的方法復(fù)用,輪詢(xún)的方法分為兩種,一種是每一塊傳輸結(jié)束開(kāi)始服務(wù)下一個(gè)同優(yōu)先級(jí)的DMA通道傳輸,另一種是DMA通道傳輸任務(wù)結(jié)束后,服務(wù)下一個(gè)同優(yōu)先級(jí)的DMA通道傳輸。
3)低優(yōu)先級(jí)的服務(wù)被高優(yōu)先級(jí)的服務(wù)中斷。
其中各中斷的優(yōu)先級(jí)由主處理器在在該DMA傳輸初始化時(shí)配置。中斷源可以是來(lái)之于節(jié)點(diǎn)的硬中斷,也可以是來(lái)之于主處理器的軟中斷。每個(gè)DMA的中斷是否允許響應(yīng)既該各中斷的使能信號(hào)也是在DMA傳輸初始化時(shí)配置。
分割單元110的主要功能是將長(zhǎng)的DMA傳輸分割成多個(gè)短DMA傳輸。分割的原則是非易失型存儲(chǔ)器接口每次訪問(wèn)非易失型存儲(chǔ)器時(shí)地址空間必須連續(xù)、塊對(duì)齊且最大的塊數(shù)受限制。
每次分割由以下條件決定該DMA通道需要傳輸?shù)拈L(zhǎng)度、每次傳輸?shù)淖畲笤试S的塊數(shù)、分割后的每次DMA傳輸?shù)倪壿嫷刂繁仨氝B續(xù)。每個(gè)DMA通道最大允許的傳輸塊數(shù)可以在該DMA傳輸初始化時(shí)配置。
對(duì)于A類(lèi)節(jié)點(diǎn)的DMA傳輸分割方法如下如果A類(lèi)節(jié)點(diǎn)提出要求傳輸?shù)臄?shù)據(jù)跨過(guò)的塊數(shù)大于最大允許傳輸塊數(shù),則將這次的DMA傳輸長(zhǎng)度設(shè)為最大允許傳輸塊數(shù)。
如果A類(lèi)節(jié)點(diǎn)提出要求傳輸?shù)臄?shù)據(jù)跨過(guò)的塊數(shù)不大于最大允許傳輸塊數(shù),則將這次的DMA傳輸長(zhǎng)度設(shè)為數(shù)據(jù)跨過(guò)的塊數(shù)。
對(duì)于B類(lèi)節(jié)點(diǎn)的DMA傳輸分割方法如下主控制器給出該DMA通道的這次DMA傳輸?shù)膫鬏旈L(zhǎng)度、邏輯地址暫存器的地址以及這次DMA傳輸?shù)氖走壿媺K地址相對(duì)于該地址暫存器的地址的內(nèi)容的偏移量。
該分割后得到兩個(gè)參數(shù),一個(gè)是這次DMA傳輸?shù)氖走壿媺K地址和傳輸塊數(shù)。
首邏輯塊地址按以下原則得到1)根據(jù)地址暫存器的地址從地址暫存器中將對(duì)應(yīng)項(xiàng)(“項(xiàng)”是指簇鏈結(jié)構(gòu)中儲(chǔ)存連續(xù)的段)讀出,該項(xiàng)包括首邏輯塊地址以及數(shù)據(jù)存儲(chǔ)連續(xù)長(zhǎng)度。
2)若數(shù)據(jù)存儲(chǔ)的連續(xù)長(zhǎng)度大于偏移量,則首邏輯塊地址就是首地址所在的邏輯塊的地址。若數(shù)據(jù)存儲(chǔ)的連續(xù)長(zhǎng)度小于偏移量,則將地址偏移量減去連續(xù)長(zhǎng)度,地址暫存器地址跳到下一項(xiàng)重復(fù)。
其中,本發(fā)明實(shí)施例中所述偏移量的概念,是因?yàn)樵趯?shí)際的應(yīng)用中,如MP3播放,可能需要從某一個(gè)字節(jié)開(kāi)始到另一個(gè)以字節(jié)為單位的地址結(jié)束。因此,有時(shí)需要引入第一個(gè)簇的偏移量和傳輸長(zhǎng)度的參數(shù)。例如地址指示緩沖區(qū)內(nèi)的數(shù)據(jù)表示為,起始扇區(qū)2,結(jié)束扇區(qū)為3,如果按照512字節(jié)/扇區(qū)的計(jì)算,那么就是1024個(gè)字節(jié)。但是所需的數(shù)據(jù)位于2和3扇區(qū)之間的第500-700字節(jié),那么就需要在第一簇的偏移量設(shè)置為500,傳輸長(zhǎng)度為200,獲得這之間的數(shù)據(jù),而非扇區(qū)2和3的全部數(shù)據(jù)。
當(dāng)找到首邏輯塊地址后,按以下原則確定傳輸塊數(shù)1)如果DMA要求傳輸?shù)臄?shù)據(jù)跨過(guò)的塊數(shù)大于最大傳輸塊數(shù),且最大傳輸塊的地址在當(dāng)前項(xiàng)的所表示的地址空間內(nèi),則傳輸塊數(shù)就是當(dāng)前DMA的最大傳輸塊數(shù)。
2)如果DMA要求傳輸?shù)臄?shù)據(jù)跨過(guò)的塊數(shù)大于最大傳輸塊數(shù),且最大傳輸塊的地址超出當(dāng)前項(xiàng)的所表示的地址空間內(nèi),則傳輸塊數(shù)就是首邏輯塊當(dāng)前項(xiàng)的所表示的地址空間內(nèi)最大的塊所跨越的塊數(shù)。
3)如果DMA要求傳輸?shù)臄?shù)據(jù)跨過(guò)的塊數(shù)不大于最大傳輸塊數(shù),且最大傳輸塊的地址在當(dāng)前項(xiàng)的所表示的地址空間內(nèi),則傳輸塊數(shù)就是當(dāng)前DMA要求傳輸?shù)臄?shù)據(jù)跨過(guò)的塊數(shù)。
4)如果DMA要求傳輸?shù)臄?shù)據(jù)跨過(guò)的塊數(shù)不大于最大傳輸塊數(shù),且最大傳輸塊的地址超出當(dāng)前項(xiàng)的所表示的地址空間內(nèi),則傳輸塊數(shù)就是首邏輯塊當(dāng)前項(xiàng)的所表示的地址空間內(nèi)最大的塊所跨越的塊數(shù)。
寄存器組112的主要功能是提供一個(gè)與主處理器通信的軟件接口。寄存器組可以分為命令寄存器、狀態(tài)寄存器、參數(shù)寄存器。命令寄存器的主要功能是存儲(chǔ)住處理器發(fā)出的命令。狀態(tài)寄存器的主要是存儲(chǔ)一些狀態(tài)變量,主處理器通過(guò)讀出這些變量可以知道DMA控制狀態(tài)。參數(shù)寄存器主要存儲(chǔ)DMA通道一些參數(shù),如地址暫存器中起始地址、首字節(jié)偏移量、傳輸長(zhǎng)度和傳輸方向等。
邏輯地址暫存器接口104的主要功能是在分割單元110的控制下從邏輯地址暫存器中讀出該DMA通道的簇鏈結(jié)構(gòu)。
A類(lèi)節(jié)點(diǎn)接口102的主要功能是處理與A類(lèi)節(jié)點(diǎn)間通信的協(xié)議,包括接收某一節(jié)點(diǎn)的DMA通道請(qǐng)求、邏輯地址和傳輸長(zhǎng)度。在主控制器的控制下給出該DMA通道被服務(wù)信號(hào),并從該設(shè)備讀出或向該設(shè)備寫(xiě)入數(shù)據(jù)。
B類(lèi)節(jié)點(diǎn)接口100的主要功能是處理與B類(lèi)節(jié)點(diǎn)間通信的協(xié)議,包括接收某一節(jié)點(diǎn)的DMA通道請(qǐng)求,在主控制器的控制下給出該DMA通道被服務(wù)信號(hào),并從該設(shè)備讀出或向該設(shè)備寫(xiě)入數(shù)據(jù)。
非易失型存儲(chǔ)器接口114的主要功能是處理與非易失型存儲(chǔ)器進(jìn)行通信的協(xié)議,包括向非易失型存儲(chǔ)器發(fā)出讀或?qū)懻?qǐng)求,并從非易失型存儲(chǔ)器讀出或向非易失型存儲(chǔ)器接口寫(xiě)入數(shù)據(jù)。
主控制器108的主要功能是控制和協(xié)調(diào)各模塊工作,并產(chǎn)生中斷或指示信號(hào)。
其中,主控制108的狀態(tài)機(jī)如圖3所示,由IDLE、LOAD、Pr_RD、RD、RD_J、RD_WT、RD_E、Pr_WR、WR1、WR2、WR_J、WR_WT和WR_E狀態(tài)構(gòu)成IDLE該狀態(tài)表示處于空閑狀態(tài)。當(dāng)從中斷控制器接收一個(gè)中斷時(shí),進(jìn)行LOAD狀態(tài)。
LOAD在LOAD狀態(tài),對(duì)給DMA進(jìn)行分割,在分割的過(guò)程中可能修改偏移量。如果是讀,下一狀態(tài)是Pr_RD,如果是寫(xiě),則下一個(gè)狀態(tài)是Pr WR。
Pr_RD向非易失型存儲(chǔ)器接口提出讀請(qǐng)求。當(dāng)非易失型存儲(chǔ)器接口給出讀請(qǐng)求響應(yīng)信號(hào)是進(jìn)入RD。
RD主要的功能從控制非易失型存儲(chǔ)器接口向節(jié)點(diǎn)設(shè)備接口傳輸數(shù)據(jù)。但該塊傳輸結(jié)束,進(jìn)入RD_J。
RD_J主要功能是判斷下一個(gè)這次DMA請(qǐng)求是否結(jié)束。如果是,則進(jìn)入RD_E,否則進(jìn)入RD_WT。
RD_WT主要功能是等待非易失型存儲(chǔ)器接口數(shù)據(jù)有效信號(hào)和節(jié)點(diǎn)設(shè)備緩沖區(qū)有效信號(hào)。當(dāng)這兩各設(shè)備同時(shí)有效時(shí),進(jìn)入RD。
RD_E完成一些結(jié)束操作,如更新?tīng)顟B(tài)寄存器。
Pr_WR.向非易失型存儲(chǔ)器接口提出寫(xiě)請(qǐng)求。當(dāng)非易失型存儲(chǔ)器接口給出寫(xiě)請(qǐng)求響應(yīng)信號(hào)是進(jìn)入WR1。
WR1主要的功能控制非易失型存儲(chǔ)器接口接收節(jié)點(diǎn)設(shè)備接口傳輸來(lái)的數(shù)據(jù)。但該塊傳輸結(jié)束,進(jìn)入WR2。
WR2在該狀態(tài)時(shí)非易失型存儲(chǔ)器接口將剛接收的數(shù)據(jù)寫(xiě)入存儲(chǔ)介質(zhì),當(dāng)數(shù)據(jù)寫(xiě)完時(shí),進(jìn)行WR_J。
WR_J主要功能是判斷下一個(gè)這次DMA請(qǐng)求是否結(jié)束。如果是,則進(jìn)入WR_E,否則進(jìn)入WR_WT。
WR_WT主要功能是等待非易失型存儲(chǔ)器接口緩沖區(qū)有效信號(hào)和節(jié)點(diǎn)設(shè)備數(shù)據(jù)有效信號(hào)。當(dāng)這兩各設(shè)備同時(shí)有效時(shí),進(jìn)入WR1。
WR_E完成一些結(jié)束操作,如更新?tīng)顟B(tài)寄存器其中,關(guān)于中斷響應(yīng)的時(shí)序?yàn)閷?duì)較高優(yōu)先級(jí)的中斷,需立即執(zhí)行的,當(dāng)狀態(tài)機(jī)處于讀操作的任意一個(gè)狀態(tài)時(shí),則下一狀態(tài)是RD_E,當(dāng)狀態(tài)機(jī)處于寫(xiě)操作的任意一個(gè)狀態(tài)時(shí),則下一狀態(tài)是WR_E。
對(duì)與同優(yōu)先級(jí)的中斷,需按塊時(shí)分共享總線帶寬時(shí),當(dāng)狀態(tài)機(jī)處于讀操作,當(dāng)RD_J時(shí),下一狀態(tài)是RD_E,當(dāng)狀態(tài)機(jī)處于寫(xiě)操作,當(dāng)WR_J時(shí),下一狀態(tài)是WR_E。
對(duì)于低優(yōu)先級(jí)的中斷,只能在IDLE狀態(tài)下仲裁決定。
在利用本發(fā)明的DMAC控制器控制進(jìn)行數(shù)據(jù)交換時(shí),可以執(zhí)行如下步驟步驟1主處理器對(duì)DMA通道進(jìn)行初始化,初始化的參數(shù)包括DMAC控制器向非易失型存儲(chǔ)器接口提出傳輸請(qǐng)求時(shí)每次最大傳輸塊數(shù)、中斷優(yōu)先級(jí)和傳輸方向(即是讀請(qǐng)求還是寫(xiě)請(qǐng)求),對(duì)于B類(lèi)節(jié)點(diǎn)的DMA,還需配置邏輯地址暫存器地址、偏移量和傳輸長(zhǎng)度。
步驟2DMAC控制器接收到該DMA通道中斷請(qǐng)求,該中斷可以是來(lái)自于節(jié)點(diǎn)的硬中斷,也可以是來(lái)之與處理器的軟中斷。
步驟3中斷控制器根據(jù)中斷響應(yīng)策略決定何時(shí)響應(yīng)該中斷。當(dāng)DMAC控制器決定為該DMA通道服務(wù)時(shí),進(jìn)入步驟4。
步驟4首先按分割原則對(duì)該DMA通道傳輸進(jìn)行分割,確定分割后的DMA傳輸?shù)膫鬏旈L(zhǎng)度,然后完成這次DMA數(shù)據(jù)傳輸。當(dāng)這次短的DMA傳輸結(jié)束后,判斷該節(jié)點(diǎn)的DMA通道傳輸是否結(jié)束,如果結(jié)束給出DMA傳輸結(jié)束中斷或指示信號(hào)給主處理器,如果沒(méi)有結(jié)束,則由DMAC更新這次該節(jié)點(diǎn)DMA通道的參數(shù),如邏輯地址暫存器地址和偏移量,再次傳輸。
下面結(jié)合圖3中的狀態(tài)機(jī)翻轉(zhuǎn)示意,說(shuō)明DMAC控制非易失性存儲(chǔ)器與節(jié)點(diǎn)播放器間數(shù)據(jù)傳輸?shù)牧鞒蹋俗x、寫(xiě)兩類(lèi)操作。
其中讀操作的流程包括以下步驟(請(qǐng)同時(shí)參照?qǐng)D4的狀態(tài)變化)步驟100,DMAC在空閑狀態(tài)(IDEL),等待命令輸入;步驟110,DMAC接收到讀取指令和相關(guān)參數(shù)后,轉(zhuǎn)入初始化(LOAD)狀態(tài),獲取此次操作的源、目標(biāo)設(shè)備和扇區(qū)形式表示的讀寫(xiě)地址,并且可以將其中一部分參數(shù)寫(xiě)入到參數(shù)寄存器,如地址與長(zhǎng)度參數(shù);
步驟120,DMAC判斷是讀操作指令還是寫(xiě)操作指令,如果是讀操作指令,轉(zhuǎn)為“準(zhǔn)備讀數(shù)據(jù)”(Pr_RD)狀態(tài),執(zhí)行步驟130,否則,轉(zhuǎn)為“準(zhǔn)備寫(xiě)數(shù)據(jù)”(Pr_WR)狀態(tài),執(zhí)行步驟180;步驟130,DMAC向作為源設(shè)備的非易失性存儲(chǔ)器的存儲(chǔ)器控制器提出讀請(qǐng)求,指示當(dāng)前要讀取的扇區(qū)號(hào),該存儲(chǔ)器控制器將指定扇區(qū)的數(shù)據(jù)讀入內(nèi)部RAM,向DMAC返回響應(yīng)信號(hào),若目標(biāo)播放器準(zhǔn)備好接收數(shù)據(jù)的信號(hào)同時(shí)有效,轉(zhuǎn)入“讀數(shù)據(jù)”(RD)狀態(tài);步驟140,在DMAC控制下,所述存儲(chǔ)器控制器將內(nèi)部RAM中的數(shù)據(jù)通過(guò)DMA總線直接傳輸?shù)侥繕?biāo)播放器的FIFO緩存器中,在一個(gè)扇區(qū)數(shù)據(jù)傳輸完成后,DMAC轉(zhuǎn)入“讀數(shù)據(jù)結(jié)束”(RD_J)狀態(tài);在一次傳輸過(guò)程中,可以由DMAC做一個(gè)發(fā)起,由這兩個(gè)設(shè)備自動(dòng)完成數(shù)據(jù)在DMA總線上的傳輸,播放器會(huì)從FIFO緩存器中不斷讀出數(shù)據(jù),并給出緩存器是否可寫(xiě)入數(shù)據(jù)的有效信號(hào)。也可以由DMAC控制器來(lái)統(tǒng)一協(xié)調(diào)兩個(gè)設(shè)備間數(shù)據(jù)的傳輸。
步驟150,DMAC判斷此次操作要讀取的數(shù)據(jù)是否均已傳輸完畢,如果沒(méi)有,執(zhí)行步驟160,否則,執(zhí)行步驟170;步驟160,DMAC轉(zhuǎn)入讀數(shù)據(jù)-等待狀態(tài)回應(yīng)(RD_WT)狀態(tài),取出下一要讀取的扇區(qū)號(hào)并通知所述存儲(chǔ)器控制器,等待存儲(chǔ)器控制器完成當(dāng)前扇區(qū)數(shù)據(jù)讀出的響應(yīng)信號(hào)和播放器準(zhǔn)備好接收數(shù)據(jù)的信號(hào),如這兩個(gè)信號(hào)同時(shí)有效,轉(zhuǎn)入“讀數(shù)據(jù)”(RD)狀態(tài),返回步驟140;步驟170,DMAC轉(zhuǎn)入“讀數(shù)據(jù)更新“(RD_E)狀態(tài),更新?tīng)顟B(tài)寄存器組中的狀態(tài)變量并在參數(shù)寄存器組中寫(xiě)入需要返回的參數(shù),向主處理器發(fā)出中斷信號(hào),完成一次從非易失性存儲(chǔ)器讀取數(shù)據(jù)傳送到播放器的操作,返回步驟110;步驟180,DMAC先向目標(biāo)非易失性存儲(chǔ)器的存儲(chǔ)器控制器提出寫(xiě)請(qǐng)求,指示當(dāng)前數(shù)據(jù)要寫(xiě)入的扇區(qū)號(hào),存儲(chǔ)器控制器準(zhǔn)備好后,給出響應(yīng)信號(hào),如播放器也已給出數(shù)據(jù)已準(zhǔn)備好的指示信號(hào),則轉(zhuǎn)入“寫(xiě)數(shù)據(jù)1”(WR1)狀態(tài);
步驟190,在DMAC的控制下,將作為源設(shè)備的播放器緩存器中的數(shù)據(jù)讀出,經(jīng)DMA總線寫(xiě)入到存儲(chǔ)器控制器的內(nèi)部RAM,內(nèi)部RAM已寫(xiě)滿或數(shù)據(jù)已傳輸完成后,轉(zhuǎn)為“寫(xiě)數(shù)據(jù)2”(WR2)狀態(tài);步驟200,存儲(chǔ)器控制器將內(nèi)部RAM中的數(shù)據(jù)寫(xiě)入非易失性存儲(chǔ)器當(dāng)前指定的扇區(qū),數(shù)據(jù)寫(xiě)完后轉(zhuǎn)為“寫(xiě)數(shù)據(jù)結(jié)束”(WR_J)狀態(tài);步驟210,DMAC判斷此次操作要寫(xiě)入的數(shù)據(jù)是否已寫(xiě)完,如果沒(méi)有,執(zhí)行步驟220,否則,執(zhí)行步驟230;步驟220,DMAC轉(zhuǎn)入寫(xiě)數(shù)據(jù)-等待狀態(tài)回應(yīng)(WR_WT)狀態(tài),取出下一要寫(xiě)入的扇區(qū)號(hào)并通知所述存儲(chǔ)器控制器,等待存儲(chǔ)器控制器和播放器已準(zhǔn)備好的信號(hào),如這個(gè)信號(hào)同時(shí)有效,返回步驟190;步驟230,DMAC轉(zhuǎn)為“寫(xiě)數(shù)據(jù)更新”(WR_E)狀態(tài),更新?tīng)顟B(tài)寄存器組中的狀態(tài)變量并在參數(shù)寄存器寫(xiě)入需要返回的參數(shù),向主處理器發(fā)出中斷信號(hào),完成一次從播放器讀取數(shù)據(jù)傳送到非易失性存儲(chǔ)器的操作,返回步驟110。
權(quán)利要求
1.一種直接存儲(chǔ)訪問(wèn)控制器,在處理器對(duì)節(jié)點(diǎn)設(shè)備提出的直接存儲(chǔ)訪問(wèn)通道中斷請(qǐng)求進(jìn)行初始化配置后,控制節(jié)點(diǎn)設(shè)備與非易失型存儲(chǔ)器之間直接交換數(shù)據(jù),其特征在于,包括中斷控制器、分割單元、寄存器組、邏輯地址暫存器接口、節(jié)點(diǎn)設(shè)備接口、主控制器,其中,主控制器,用于控制和協(xié)調(diào)各模塊的工作,并在直接存儲(chǔ)訪問(wèn)通道結(jié)束傳輸后發(fā)出傳輸結(jié)束信號(hào)給處理器;寄存器組,用于提供一個(gè)與處理器通信的接口,存儲(chǔ)有處理器發(fā)出的命令以及配置的參數(shù),包括每次最大傳輸塊數(shù)、通道中斷請(qǐng)求的優(yōu)先級(jí);節(jié)點(diǎn)設(shè)備接口,用于提供與節(jié)點(diǎn)設(shè)備之間的通信協(xié)議,包括接收來(lái)自節(jié)點(diǎn)設(shè)備的直接存儲(chǔ)訪問(wèn)通道中斷請(qǐng)求,在主控制器的控制下給出該直接存儲(chǔ)訪問(wèn)通道被服務(wù)的信號(hào),并從該節(jié)點(diǎn)設(shè)備讀出或?qū)懭霐?shù)據(jù);中斷控制器,與主控制器、寄存器組、節(jié)點(diǎn)設(shè)備相連,用于根據(jù)節(jié)點(diǎn)設(shè)備發(fā)出的直接存儲(chǔ)訪問(wèn)通道的中斷請(qǐng)求優(yōu)先級(jí)參數(shù),與自身的中斷響應(yīng)策略來(lái)確定向主控制器提出中斷請(qǐng)求的時(shí)間;分割單元,與主控制器、節(jié)點(diǎn)設(shè)備接口、邏輯地址暫存器接口、非易失型存儲(chǔ)器接口相連,用于在主控制器的控制下,根據(jù)所述寄存器組中存儲(chǔ)的參數(shù),將長(zhǎng)的直接存儲(chǔ)訪問(wèn)傳輸分割成多個(gè)短的直接存儲(chǔ)訪問(wèn)傳輸,分割的原則是非易失型存儲(chǔ)器接口每次訪問(wèn)非易失型存儲(chǔ)器時(shí),地址空間必須連續(xù)、塊對(duì)齊且最大的塊數(shù)在預(yù)設(shè)的最大允許傳輸塊數(shù)之內(nèi),分割后獲得本次傳輸?shù)氖走壿媺K地址和傳輸塊數(shù)參數(shù);邏輯地址暫存器接口,用于在分割模塊的控制下,從邏輯地址暫存器中讀出本次直接存儲(chǔ)訪問(wèn)通道傳輸?shù)臄?shù)據(jù)存儲(chǔ)在非易失型存儲(chǔ)器中的簇鏈結(jié)構(gòu)信息;非易失型存儲(chǔ)器接口,用于提供與非易失型存儲(chǔ)器通信的協(xié)議,在主控制器的控制下,根據(jù)分割單元獲得的本次傳輸?shù)膮?shù),從非易失型存儲(chǔ)器中讀出或?qū)懭霐?shù)據(jù)。
2.如權(quán)利要求1所述的控制器,其特征在于,所述的主控制器在直接存儲(chǔ)訪問(wèn)通道結(jié)束傳輸后發(fā)出的傳輸結(jié)束信號(hào),為中斷信號(hào)。
3.如權(quán)利要求1所述的控制器,其特征在于,所述的主控制器在直接存儲(chǔ)訪問(wèn)通道結(jié)束傳輸后發(fā)出的傳輸結(jié)束信號(hào),為指示信號(hào)。
4.如權(quán)利要求1所述的控制器,其特征在于,所述的寄存器組包括命令寄存器,用于存儲(chǔ)處理器發(fā)出的命令;狀態(tài)寄存器,用于存儲(chǔ)狀態(tài)變量,處理器通過(guò)讀取這些變量獲知直接存儲(chǔ)訪問(wèn)控制狀態(tài);參數(shù)寄存器,用于存儲(chǔ)處理器對(duì)傳輸中斷請(qǐng)求初始化配置的參數(shù),包括每次最大傳輸塊數(shù)、中斷請(qǐng)求優(yōu)先級(jí)、傳輸方向、邏輯地址暫存器中的起始地址、首字節(jié)偏移量、傳輸長(zhǎng)度。
5.如權(quán)利要求1所述的控制器,其特征在于,所述節(jié)點(diǎn)設(shè)備接口為A類(lèi)節(jié)點(diǎn)設(shè)備接口,其中,A類(lèi)節(jié)點(diǎn)設(shè)備是指節(jié)點(diǎn)本身需要提供訪問(wèn)非易失型存儲(chǔ)器的邏輯地址及傳輸長(zhǎng)度。
6.如權(quán)利要求1所述的控制器,其特征在于,所述節(jié)點(diǎn)設(shè)備接口為B類(lèi)節(jié)點(diǎn)設(shè)備接口,其中,B類(lèi)節(jié)點(diǎn)設(shè)備是指節(jié)點(diǎn)本身不直接提供非易失型存儲(chǔ)器的邏輯地址,其邏輯地址存儲(chǔ)在邏輯地址暫存器中,B類(lèi)節(jié)點(diǎn)設(shè)備每次進(jìn)行直接存儲(chǔ)訪問(wèn)傳輸時(shí),由處理器指示該節(jié)點(diǎn)準(zhǔn)備訪問(wèn)的邏輯地址存儲(chǔ)在邏輯地址暫存器中的位置。
7.如權(quán)利要求1所述的控制器,其特征在于,所述中斷控制器的中斷策略包括1)不同優(yōu)先級(jí)同時(shí)請(qǐng)求時(shí),高優(yōu)先級(jí)的中斷先服務(wù);2)同一優(yōu)先級(jí)的中斷請(qǐng)求采用輪詢(xún)的方式復(fù)用;3)低優(yōu)先級(jí)的服務(wù)被高優(yōu)先級(jí)的服務(wù)中斷。
全文摘要
本發(fā)明公開(kāi)了一種直接存儲(chǔ)訪問(wèn)控制器,由中斷控制器、分割單元、寄存器組、邏輯地址暫存器接口、節(jié)點(diǎn)設(shè)備接口、主控制器組成,其中,中斷控制器根據(jù)中斷響應(yīng)策略決定何時(shí)向主控制器發(fā)送該DMA通道傳輸請(qǐng)求中斷,當(dāng)DMAC控制器決定為該DMA通道服務(wù)時(shí),首先對(duì)該DMA通道傳輸進(jìn)行分割,確定分割后的DMA傳輸?shù)膫鬏旈L(zhǎng)度,然后完成這次DMA數(shù)據(jù)傳輸。當(dāng)這次短的DMA傳輸結(jié)束后,判斷該節(jié)點(diǎn)的DMA通道傳輸是否結(jié)束,如果結(jié)束給出DMA傳輸結(jié)束中斷或指示信號(hào)給主處理器,如果沒(méi)有結(jié)束,則更新這次該節(jié)點(diǎn)DMA通道的參數(shù),再次傳輸。本發(fā)明僅占用少量的CPU資源即實(shí)現(xiàn)了多個(gè)DMA通道任務(wù)間頻繁切換的問(wèn)題。
文檔編號(hào)G06F13/20GK1804823SQ20051013222
公開(kāi)日2006年7月19日 申請(qǐng)日期2005年12月22日 優(yōu)先權(quán)日2005年12月22日
發(fā)明者王軍, 金傳恩 申請(qǐng)人:北京中星微電子有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
通江县| 乐东| 达拉特旗| 海安县| 探索| 胶州市| 文昌市| 从江县| 柳林县| 泽库县| 文水县| 余江县| 宜都市| 河池市| 鹤壁市| 庐江县| 北海市| 巴彦县| 仁寿县| 平果县| 忻城县| 九台市| 孝感市| 高邑县| 旅游| 台南县| 甘泉县| 沅江市| 银川市| 隆化县| 河津市| 普格县| 万源市| 清原| 密云县| 夏河县| 吕梁市| 白水县| 丹寨县| 新绛县| 延边|