專利名稱:一種帶有仲裁器的多通道dma控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種DMA控制器,尤其涉及一種帶有仲裁器的多通道DMA控制器。
背景技術(shù):
在以CPU為主控設(shè)備的數(shù)據(jù)處理系統(tǒng)和SOC芯片中,數(shù)據(jù)的傳輸通常采用3種方式.①輪詢方式CPU周期性檢測(cè)從設(shè)備的狀態(tài),在適當(dāng)?shù)臅r(shí)間從源設(shè)備中取出數(shù)據(jù)并寫入目的設(shè)備.采用這種方式時(shí),將占用大量的處理器時(shí)間,且數(shù)據(jù)傳輸速度受CPU指令執(zhí)行時(shí)間的限制.②中斷方式當(dāng)從設(shè)備需要進(jìn)行數(shù)據(jù)傳輸時(shí),向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)后執(zhí)行數(shù)據(jù)傳輸任務(wù).采用這種方式時(shí),CPU不必主動(dòng)查詢從設(shè)備狀態(tài),節(jié)省了部分處理器時(shí)間,但傳輸過程仍受CPU控制,并未提高數(shù)據(jù)傳輸速度.③直接存儲(chǔ)器存取(direct memory access,DMA)方式。DMA是指數(shù)據(jù)傳送時(shí)不需要CPU的介入,I/O設(shè)備和存儲(chǔ)器之間直接進(jìn)行大量數(shù)據(jù)信息交換的傳輸方法。它是由硬件設(shè)備代替CPU接管總線并負(fù)責(zé)數(shù)據(jù)傳輸,省去了由CPU負(fù)責(zé)傳輸時(shí)所必須的尋址指令。DMA傳輸方式與輪詢及中斷方式相比,具有傳輸速度快、I/O響應(yīng)時(shí)間短、CPU額外開銷小的明顯優(yōu)點(diǎn),可使整個(gè)系統(tǒng)的性能大大提高。圖1是現(xiàn)有技術(shù)中常見的DMA系統(tǒng)的總體框圖。CPU、DMA控制器、片內(nèi)外存儲(chǔ)器和高速I/O連接在高速總線上,各種低速外設(shè)連接在低速總線上,并且通過總線橋和高速總線相連。總線上的設(shè)備如果要進(jìn)行DMA傳輸,則向DMA控制器發(fā)起請(qǐng)求,DMA控制器在獲得總線使用權(quán)后,控制源設(shè)備和目的設(shè)備進(jìn)行傳輸,并在傳輸結(jié)束后歸還總線使用權(quán)。DMA 傳輸過程中無需CPU參與,節(jié)省CPU的額外開銷。中國專利(申請(qǐng)?zhí)?00910080751,公開號(hào)101504633)公開了一種多通道DMA控制器,該DMA控制器包括多個(gè)DMA通道模塊和一個(gè)多路復(fù)用模塊,每個(gè)DMA通道模塊分別包括一個(gè)數(shù)據(jù)緩沖存儲(chǔ)及其控制模塊和一組控制寄存器,所有通道的數(shù)據(jù)緩沖存儲(chǔ)及其控制模塊都連接到一個(gè)多路復(fù)用模塊。這種DMA控制器可以在一定程度上降低片上系統(tǒng)上總線仲裁塊和存儲(chǔ)單元的開銷,并提高系統(tǒng)的重用性。該中國專利所述設(shè)備有以下不足①只有一個(gè)多路復(fù)用模塊來進(jìn)行多通道控制, 無法應(yīng)付多個(gè)通道同時(shí)發(fā)起DMA傳輸?shù)那闆r,也沒有靈活的仲裁策略可供選擇;②每次DMA 基本傳輸基本需要兩個(gè)周期,傳輸速度比較慢,不適合高速數(shù)據(jù)傳輸場(chǎng)合。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種可以工作在兩組總線上的,帶有仲裁器的多通道DMA控制器,以提高DMA傳輸?shù)膫鬏斔俣?,提供更加靈活和合理的DMA多通道仲裁策略。本發(fā)明包含六個(gè)子模塊DMA引擎、2個(gè)主設(shè)備接口、從設(shè)備接口、通道仲裁器和寄存器堆,其中
所述的DMA引擎與DMA控制器中各個(gè)模塊相連,負(fù)責(zé)控制和協(xié)調(diào)DMA控制器各模塊的工作。
所述的主設(shè)備接口與總線相連,與DMA引擎相連。其接受DMA引擎的配置,并以總線上主設(shè)備身份控制源設(shè)備和目的設(shè)備之間完成DMA傳輸。所述的從設(shè)備接口與總線相連,與DMA引擎相連。CPU可以通過從設(shè)備接口向DMA 控制器中讀寫數(shù)據(jù),配置DMA控制器中各種寄存器,檢查當(dāng)前DMA控制器狀態(tài)。所述的通道仲裁器與DMA引擎相連,與多路開關(guān)相連,包括的寄存器有仲裁策略寄存器、輪轉(zhuǎn)算法寄存器、狀態(tài)寄存器、固定優(yōu)先級(jí)寄存器、輪轉(zhuǎn)優(yōu)先級(jí)寄存器。通道仲裁器接受DMA引擎的配置,并在多個(gè)DMA通道同時(shí)發(fā)起DMA請(qǐng)求時(shí),進(jìn)行通道仲裁。通道仲裁器可以根據(jù)各通道的優(yōu)先級(jí)選擇下一個(gè)進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ溃魍ǖ赖膬?yōu)先級(jí)可以事先確定,也可以由CPU和DMA控制器由特定的仲裁策略確定。所述的寄存器堆與DMA引擎相連,與多路開關(guān)相連,分為主控制狀態(tài)寄存器和各通道寄存器。主控制狀態(tài)寄存器用于配置整個(gè)DMA傳輸設(shè)置;各通道寄存器可以修改和配置各通道源地址、目的地址、傳輸數(shù)據(jù)幀大小、工作模式以及優(yōu)先級(jí)設(shè)置。
進(jìn)一步地,上述帶有仲裁器的多通道DMA控制器還具有以下特點(diǎn)主設(shè)備接口包括一個(gè)AHB主設(shè)備接口,一個(gè)FIFO緩存,其中
所述的AHB主設(shè)備接口和一組AHB總線相連,用于以主設(shè)備身份控制源設(shè)備和目的設(shè)備之間完成DMA傳輸;DMA引擎通過地址、傳輸數(shù)據(jù)、工作模式信息對(duì)AHB主設(shè)備接口進(jìn)行配置。所述的FIFO緩存接收從AHB主設(shè)備接口讀入的數(shù)據(jù),并向AHB主設(shè)備接口發(fā)送寫出的數(shù)據(jù),F(xiàn)IFO緩存設(shè)有FIFO空滿標(biāo)志位,防止溢出。進(jìn)一步地,上述帶有仲裁器的多通道DMA控制器還具有以下特點(diǎn)DMA引擎包括一個(gè)中斷控制器、一個(gè)配置單元、一組配置寄存器,其中
所述的配置單元接收來自從設(shè)備接口的信號(hào),按照CPU的要求,修改或者讀取配置寄存器、寄存器堆和通道仲裁器中的寄存器,實(shí)現(xiàn)改變通道配置、修改仲裁策略、配置傳輸信息的功能。所述的中斷控制器接收來自DMA傳輸發(fā)起設(shè)備的請(qǐng)求,然后向CPU發(fā)送中斷,使 CPU可以配置DMA控制器,并釋放總線使用權(quán)。所述的配置寄存器包含著DMA傳輸所需的配置信息,它可以由CPU通過從設(shè)備接口和配置單元直接修改,也可以通過MUX讀取通道仲裁得到的通道配置信息,配置寄存器的內(nèi)容輸出給主設(shè)備接口,用于完成DMA傳輸。本發(fā)明還提供一種基于帶有仲裁器的多通道DMA控制器的通道仲裁策略,包括以下步驟
(1)當(dāng)兩個(gè)或兩個(gè)以上的通道同時(shí)發(fā)起DMA傳輸要求時(shí),通道仲裁器開始工作。(2)讀取仲裁策略寄存器,確定要使用的仲裁算法若使用輪轉(zhuǎn)算法,則從步驟 (3)到(5);若使用固定優(yōu)先級(jí),則從步驟(6)到(7);若使用不同服務(wù)分配比的輪轉(zhuǎn)優(yōu)先級(jí)算法,則從步驟(8)到(12)。(3)讀取輪轉(zhuǎn)算法寄存器中的輪轉(zhuǎn)順序和狀態(tài)寄存器中的前次仲裁結(jié)果。(4)確定本次仲裁結(jié)果,確定的方法是根據(jù)輪轉(zhuǎn)順序和前次仲裁結(jié)果,確定本次輪轉(zhuǎn)的優(yōu)先級(jí),然后選擇本次進(jìn)行傳輸?shù)耐ǖ馈?br>
(5)輸出仲裁結(jié)果,并將其保存在狀態(tài)寄存器中,跳到步驟(13)。(6)讀取固定優(yōu)先級(jí)寄存器中的優(yōu)先級(jí)順序。(7)確定并輸出仲裁結(jié)果,跳到步驟(13)。(8)檢查輪轉(zhuǎn)優(yōu)先級(jí)寄存器中是否有正在執(zhí)行的優(yōu)先級(jí)組順序,若有跳到步驟 (9),若沒有跳到步驟(10)。(9)根據(jù)已經(jīng)有的值,確定并輸出本次仲裁結(jié)果,跳到步驟(13)。(10)讀取輪轉(zhuǎn)優(yōu)先級(jí)寄存器中的服務(wù)分配比和不同優(yōu)先級(jí)組的內(nèi)容。(11)計(jì)算并保存不同優(yōu)先級(jí)組的順序,計(jì)算的辦法是通過調(diào)節(jié)不同優(yōu)先級(jí)組出現(xiàn)的次數(shù),確保最后得到要求的服務(wù)分配比。(12)根據(jù)計(jì)算得到的值,確定并輸出本次仲裁結(jié)果,跳到步驟(13)。(13)根據(jù)仲裁結(jié)果,操作MUX使對(duì)應(yīng)通道導(dǎo)通,將對(duì)應(yīng)通道的源地址、目的地址、 傳輸數(shù)據(jù)幀大小、工作模式信息輸送到DMA引擎中。本發(fā)明還提供一種基于帶有仲裁器的多通道DMA控制器的二級(jí)流水線DMA傳輸方式,即使用DMA控制器的兩個(gè)主設(shè)備接口,其中一個(gè)主設(shè)備接口通過讀數(shù)據(jù)總線和源地址總線,從源設(shè)備讀取數(shù)據(jù),放入公共FIFO緩存,另一個(gè)主設(shè)備接口通過寫數(shù)據(jù)總線和目的地址總線,將公共FIFO緩存中的數(shù)據(jù)寫入目的設(shè)備。同時(shí),DMA控制器也可以通過修改配置寄存器,選擇只用一個(gè)主設(shè)備接口,進(jìn)行傳統(tǒng)的時(shí)分復(fù)用的DMA傳輸。采用本發(fā)明的技術(shù)方案后,當(dāng)多個(gè)DMA通道同時(shí)發(fā)起DMA傳輸請(qǐng)求時(shí),通道仲裁器可以提供靈活、公平和多樣的仲裁策略,滿足了不同服務(wù)的要求;采用二級(jí)流水線的DMA傳輸,與傳統(tǒng)的DMA傳輸相比,速度提高近一倍,更加適合高速數(shù)據(jù)傳輸場(chǎng)合,拓展了應(yīng)用范圍。
圖1是現(xiàn)有技術(shù)常見的DMA系統(tǒng)的總體框圖; 圖2是本發(fā)明改進(jìn)的DMA系統(tǒng)的總體框圖; 圖3是本發(fā)明的DMA控制器的系統(tǒng)模塊圖; 圖4是DMA控制器中主設(shè)備接口的結(jié)構(gòu)和連接關(guān)系圖; 圖5是DMA控制器中通道仲裁器的工作流程圖; 圖6是DMA控制器中DMA引擎和從設(shè)備接口的結(jié)構(gòu)和連接關(guān)系圖。
具體實(shí)施例方式以下結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明。圖2是本發(fā)明改進(jìn)的DMA系統(tǒng)的總體框圖。如圖所示,系統(tǒng)中具有兩組總線,兩組總線的數(shù)據(jù)線分別作為讀數(shù)據(jù)總線和寫數(shù)據(jù)總線,兩組總線的地址線分別作為源地址總線和目的地址總線。圖2還示出整個(gè)系統(tǒng)的結(jié)構(gòu),包括CPU、DMA控制器、片內(nèi)外存儲(chǔ)器、高速I/O、總線橋和低速外設(shè),其中
CPU連接在高速總線上,處理DMA控制器發(fā)送的DMA傳輸請(qǐng)求,賦予DMA控制器總線使用權(quán)。
DMA控制器連接在高速總線上,處理設(shè)備發(fā)起的DMA傳輸請(qǐng)求,向CPU申請(qǐng)總線使用權(quán),全程負(fù)責(zé)DMA傳輸,在傳輸結(jié)束后歸還總線使用權(quán)。片內(nèi)外存儲(chǔ)器連接在高速總線上,包括片內(nèi)RAM控制器、片內(nèi)Flash控制器和存儲(chǔ)器控制器,可以作為DMA傳輸?shù)脑丛O(shè)備或者目的設(shè)備。高速I/O連接在高速總線上,包括USB控制器、藍(lán)牙控制器等高速數(shù)據(jù)傳輸接口, 可以作為DMA傳輸?shù)脑丛O(shè)備或者目的設(shè)備。低速外設(shè)連接在低速總線上,并且通過總線橋和高速總線相連,包括I2C控制器、 UART控制器等低速數(shù)據(jù)傳輸接口,可以作為DMA傳輸?shù)脑丛O(shè)備或者目的設(shè)備。應(yīng)當(dāng)指出,上述結(jié)構(gòu)可以使用在多種總線協(xié)議中,例如,AMBA總線和Wishbone總線等。AMBA總線規(guī)范是ARM公司設(shè)計(jì)的一種用于高性能嵌入式系統(tǒng)的總線標(biāo)準(zhǔn);Wishbone 總線是一種片上系統(tǒng)IP核互聯(lián)體系結(jié)構(gòu),由OpenCores組織提出和維護(hù)。本發(fā)明中以AMBA 總線規(guī)范為例,說明系統(tǒng)工作原理和過程。圖3是本發(fā)明的DMA控制器的系統(tǒng)模塊圖。如圖所示,DMA控制器由DMA引擎、2 個(gè)主設(shè)備接口、從設(shè)備接口、通道仲裁器和寄存器堆組成,其中
DMA引擎是DMA控制器的核心模塊,它控制和協(xié)調(diào)DMA控制器各模塊的工作,修改或讀取各種寄存器,根據(jù)各通道所配置的工作模式及預(yù)設(shè)優(yōu)先級(jí)完成各種傳輸任務(wù)。主設(shè)備接口是DMA控制器和總線之間的接口,用于在DMA控制器獲得總線使用權(quán)后,以主設(shè)備身份控制源設(shè)備和目的設(shè)備之間完成DMA傳輸;系統(tǒng)中共有兩個(gè)主設(shè)備接口, 主設(shè)備接口 1對(duì)應(yīng)的一組總線是源地址總線和讀數(shù)據(jù)總線,用于從源設(shè)備讀取數(shù)據(jù),主設(shè)備接近歐2對(duì)應(yīng)的一組總線是目的地址總線和寫數(shù)據(jù)總線,用于向目的設(shè)備寫入數(shù)據(jù)。從設(shè)備接口是DMA控制器和總線之間的接口,用于CPU向DMA控制器中讀寫數(shù)據(jù), CPU以此修改或者讀取DMA控制器中各種寄存器,檢查當(dāng)前DMA控制器狀態(tài)或者配置DMA控制器以使DMA傳輸開始。系統(tǒng)共有兩組總線,DMA控制器可以任選從設(shè)備接口 1或者從設(shè)備接口 2中的一個(gè),與CPU進(jìn)行通信。通道仲裁器用于當(dāng)多個(gè)DMA通道同時(shí)發(fā)起DMA請(qǐng)求時(shí),進(jìn)行通道仲裁。優(yōu)先級(jí)仲裁器可以根據(jù)各通道的優(yōu)先級(jí)選擇下一個(gè)進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ?,仲裁機(jī)制可以固定確定, 也可以由CPU和DMA控制器由特定的仲裁策略確定。寄存器堆分為主控制狀態(tài)寄存器和各通道寄存器。主控制狀態(tài)寄存器用于配置整個(gè)DMA傳輸設(shè)置;各通道寄存器可以修改和配置各通道源地址、目的地址、傳輸數(shù)據(jù)幀大小、工作模式以及優(yōu)先級(jí)設(shè)置。圖4是DMA控制器中主設(shè)備接口的結(jié)構(gòu)和連接關(guān)系圖。如圖所示,主設(shè)備接口包括一個(gè)AHB主設(shè)備接口,一個(gè)FIFO緩存,其中
AHB主設(shè)備接口和一組總線相連,用于以主設(shè)備身份控制源設(shè)備和目的設(shè)備之間完成 DMA傳輸;hrdata和Iiwdata是讀寫數(shù)據(jù)線,haddr是地址線,hresp表示從設(shè)備響應(yīng)類型, hgrant表示總線的grant信號(hào),hready表示當(dāng)前傳輸完成,hlock用于總線鎖定,hbusreq 用于總線請(qǐng)求,hprot、hwrite、hsize、hburst和htrans都用于設(shè)置傳輸選項(xiàng);DMA引擎通過地址、傳輸數(shù)據(jù)、工作模式信息等對(duì)AHB主設(shè)備接口進(jìn)行配置。FIFO緩存接收從AHB主設(shè)備接口傳來的讀數(shù)據(jù)hrdata,并發(fā)送到寫數(shù)據(jù)hwrata, FIFO緩存設(shè)有FIFO空滿標(biāo)志位,防止溢出;DMA控制器中有兩個(gè)主設(shè)備接口,分別用于從源設(shè)備讀取數(shù)據(jù)和向目的設(shè)備寫入數(shù)據(jù),故兩個(gè)主設(shè)備接口的FIFO緩存共用。主設(shè)備接口根據(jù)DMA引擎的配置和讀取的主控制狀態(tài)寄存器中的值確定傳輸源地址、目的地址、傳輸數(shù)據(jù)幀大小、工作模式等,并由AHB主設(shè)備接口進(jìn)行傳輸,傳輸中得到數(shù)據(jù)暫存在FIFO緩存中。本發(fā)明的DMA控制器采用二級(jí)流水線傳輸方式,即具有兩個(gè)主設(shè)備接口,可以同時(shí)在兩組總線上傳輸數(shù)據(jù),其中一個(gè)主設(shè)備接口從源設(shè)備讀取數(shù)據(jù),放入公共FIFO緩存, 另一個(gè)主設(shè)備接口將公共FIFO緩存中的數(shù)據(jù)寫入目的設(shè)備,與傳統(tǒng)的使用一條總線進(jìn)行 DMA傳輸?shù)姆椒ㄏ啾?,此方法?jié)省一半時(shí)間。應(yīng)當(dāng)指出,DMA控制器也可以通過修改配置寄存器,選擇只用一個(gè)主設(shè)備接口,進(jìn)行傳統(tǒng)的DMA傳輸。圖5是DMA控制器中通道仲裁器的工作流程圖,包括如下步驟
(1)當(dāng)兩個(gè)或兩個(gè)以上的通道同時(shí)發(fā)起DMA傳輸要求時(shí),通道仲裁器開始工作。(2)讀取仲裁策略寄存器,確定要使用的仲裁算法若使用輪轉(zhuǎn)算法,則從步驟 (3)到(5);若使用固定優(yōu)先級(jí),則從步驟(6)到(7);若使用不同服務(wù)分配比的輪轉(zhuǎn)優(yōu)先級(jí)算法,則從步驟(8)到(12)。(3)讀取輪轉(zhuǎn)算法寄存器中的輪轉(zhuǎn)順序和狀態(tài)寄存器中的前次仲裁結(jié)果。(4)確定本次仲裁結(jié)果,確定的方法是根據(jù)輪轉(zhuǎn)順序和前次仲裁結(jié)果,確定本次輪轉(zhuǎn)的優(yōu)先級(jí),然后選擇本次進(jìn)行傳輸?shù)耐ǖ馈?5)輸出仲裁結(jié)果,并將其保存在狀態(tài)寄存器中,跳到步驟(13)。(6)讀取固定優(yōu)先級(jí)寄存器中的優(yōu)先級(jí)順序。(7)確定并輸出仲裁結(jié)果,跳到步驟(13)。(8)檢查輪轉(zhuǎn)優(yōu)先級(jí)寄存器中是否有正在執(zhí)行的優(yōu)先級(jí)組順序,若有跳到步驟 (9),若沒有跳到步驟(10)。(9)根據(jù)已經(jīng)有的值,確定并輸出本次仲裁結(jié)果,跳到步驟(13)。(10)讀取輪轉(zhuǎn)優(yōu)先級(jí)寄存器中的服務(wù)分配比和不同優(yōu)先級(jí)組的內(nèi)容。(11)計(jì)算并保存不同優(yōu)先級(jí)組的順序,計(jì)算的辦法是通過調(diào)節(jié)不同優(yōu)先級(jí)組出現(xiàn)的次數(shù),確保最后得到要求的服務(wù)分配比。(12)根據(jù)計(jì)算得到的值,確定并輸出本次仲裁結(jié)果,跳到步驟(13)。(13)根據(jù)仲裁結(jié)果,操作MUX使對(duì)應(yīng)通道導(dǎo)通,將對(duì)應(yīng)通道的源地址、目的地址、 傳輸數(shù)據(jù)幀大小、工作模式信息輸送到DMA引擎中。應(yīng)當(dāng)指出,工作流程中涉及到的仲裁策略寄存器、輪轉(zhuǎn)算法寄存器、固定優(yōu)先級(jí)寄存器和輪轉(zhuǎn)優(yōu)先級(jí)寄存器都可以通過從設(shè)備接口由CPU修改,這可以為仲裁過程提供多種選擇。輪轉(zhuǎn)算法的示例如下,假設(shè)從輪轉(zhuǎn)算法寄存器中讀到的輪轉(zhuǎn)順序是通道2、通道 1、通道0、通道3、通道2,從狀態(tài)寄存器中讀到的前次仲裁結(jié)果是通道1,則本次仲裁的優(yōu)先級(jí)順序是通道0、通道3、通道2、通道1。不同分配比的輪轉(zhuǎn)優(yōu)先級(jí)算法的示例如下,假設(shè)從輪轉(zhuǎn)優(yōu)先級(jí)寄存器中讀到的服務(wù)分配比是“通道0 通道1 通道2 通道3=4 3 2 1”,不同優(yōu)先級(jí)組的內(nèi)容是
優(yōu)先級(jí)組A 通道0、通道1、通道2、通道3; 優(yōu)先級(jí)組B 通道1、通道2、通道3、通道0 ;優(yōu)先級(jí)組C 通道2、通道3、通道0、通道1 ; 優(yōu)先級(jí)組D 通道3、通道0、通道1、通道2 ;
則在后面10個(gè)單位時(shí)間內(nèi),選擇優(yōu)先級(jí)組的次序應(yīng)該是優(yōu)先級(jí)組A、優(yōu)先級(jí)組B、優(yōu)先級(jí)組A、優(yōu)先級(jí)組C、優(yōu)先級(jí)組B、優(yōu)先級(jí)組A、優(yōu)先級(jí)組D、優(yōu)先級(jí)組A、優(yōu)先級(jí)組B、優(yōu)先級(jí)組 C0圖6是DMA控制器中DMA引擎和從設(shè)備接口的結(jié)構(gòu)和連接關(guān)系圖。如圖所示,DMA 引擎主要由中斷控制器、配置單元、配置寄存器組成,其中
配置單元是DMA引擎的核心部分,它接收來自從設(shè)備接口的信號(hào),按照CPU的要求,修改或者讀取配置寄存器、寄存器堆和通道仲裁器中的寄存器,實(shí)現(xiàn)改變通道配置、修改仲裁策略、配置傳輸信息的功能。中斷控制器接收來自DMA傳輸發(fā)起設(shè)備的請(qǐng)求,然后向CPU發(fā)送中斷,使CPU可以配置DMA控制器,并釋放總線使用權(quán)。配置寄存器包含著DMA傳輸所需的配置信息,它可以由CPU通過從設(shè)備接口和配置單元直接修改,也可以通過MUX讀取通道仲裁得到的通道配置信息,配置寄存器的內(nèi)容輸出給主設(shè)備接口,用于完成DMA傳輸。DMA引擎接收來自DMA傳輸發(fā)起設(shè)備的請(qǐng)求,向CPU發(fā)送中斷,DMA傳輸發(fā)起設(shè)備也可以直接向CPU中斷。CPU通過從設(shè)備接口修改配置寄存器等,然后賦予DMA控制器總線使用權(quán)。DMA引擎在得到總線使用權(quán)后,將配置寄存器中的值傳輸給主設(shè)備接口,控制主設(shè)備接口完成DMA傳輸,傳輸完成后交出總線使用權(quán),并向CPU發(fā)送中斷。從設(shè)備接口是DMA控制器和總線之間的接口,用于CPU向DMA控制器中讀寫數(shù)據(jù), CPU以此修改或者讀取DMA控制器中各種寄存器,檢查當(dāng)前DMA控制器狀態(tài)或者配置DMA控制器以使DMA傳輸開始。hrdata和Iiwdata是讀寫數(shù)據(jù)線,haddr是地址線,hready_resp和 hready表示傳輸完成,hresp表示從設(shè)備響應(yīng)類型,hsel是從設(shè)備選中信號(hào),hwrite、hsiZe 和htrans都用于設(shè)置傳輸選項(xiàng)。以上所述僅為本發(fā)明的具體實(shí)施方式
,并不用以限制本發(fā)明,任何本發(fā)明所屬領(lǐng)域內(nèi)的技術(shù)人員,在本發(fā)明揭露的技術(shù)范圍內(nèi),所作的修改或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種帶有仲裁器的多通道DMA控制器,包括DMA引擎、兩個(gè)主設(shè)備接口、從設(shè)備接口、 通道仲裁器和寄存器堆,其特征在于所述的DMA引擎與主設(shè)備接口、從設(shè)備接口、通道仲裁器和寄存器堆均有連接,負(fù)責(zé)控制和協(xié)調(diào)DMA控制器各部分的工作;所述的主設(shè)備接口與總線相連,與DMA引擎相連;其接受DMA引擎的配置,并以總線上主設(shè)備身份控制源設(shè)備和目的設(shè)備之間完成DMA傳輸;所述的從設(shè)備接口與總線相連,與DMA引擎相連;CPU可以通過從設(shè)備接口向DMA控制器中讀寫數(shù)據(jù),配置DMA控制器中各種寄存器,檢查當(dāng)前DMA控制器狀態(tài);所述的通道仲裁器與DMA引擎相連,與多路開關(guān)相連,包括的寄存器有仲裁策略寄存器、輪轉(zhuǎn)算法寄存器、狀態(tài)寄存器、固定優(yōu)先級(jí)寄存器和輪轉(zhuǎn)優(yōu)先級(jí)寄存器;通道仲裁器接受DMA引擎的配置,并在多個(gè)DMA通道同時(shí)發(fā)起DMA請(qǐng)求時(shí),進(jìn)行通道仲裁;通道仲裁器可以根據(jù)各通道的優(yōu)先級(jí)選擇下一個(gè)進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ溃魍ǖ赖膬?yōu)先級(jí)可以事先確定, 也可以由CPU和DMA控制器由通道仲裁策略確定;所述的寄存器堆與DMA引擎相連,與多路開關(guān)相連;寄存器堆分為主控制狀態(tài)寄存器和各通道寄存器;主控制狀態(tài)寄存器用于配置整個(gè)DMA傳輸設(shè)置;各通道寄存器可以修改和配置各通道源地址、目的地址、傳輸數(shù)據(jù)幀大小、工作模式以及優(yōu)先級(jí)設(shè)置。
2.根據(jù)權(quán)利要求1所述的多通道DMA控制器,其特征在于所述的主設(shè)備接口包括一個(gè)AHB主設(shè)備接口,一個(gè)FIFO緩存,其中所述的AHB主設(shè)備接口和一組AHB總線相連,用于以主設(shè)備身份控制源設(shè)備和目的設(shè)備之間完成DMA傳輸;DMA引擎通過地址、傳輸數(shù)據(jù)、工作模式信息對(duì)AHB主設(shè)備接口進(jìn)行配置;所述的FIFO緩存接收從AHB主設(shè)備接口讀入的數(shù)據(jù),并向AHB主設(shè)備接口發(fā)送寫出的數(shù)據(jù),F(xiàn)IFO緩存設(shè)有FIFO空滿標(biāo)志位,防止溢出。
3.根據(jù)權(quán)利要求1所述的多通道DMA控制器,其特征在于所述的DMA引擎包括一個(gè)中斷控制器、一個(gè)配置單元、一組配置寄存器,其中所述的配置單元接收來自從設(shè)備接口的信號(hào),按照CPU的要求,修改或讀取配置寄存器、寄存器堆和通道仲裁器中的寄存器;所述的中斷控制器接收來自DMA傳輸發(fā)起設(shè)備的請(qǐng)求,然后向CPU發(fā)送中斷,使CPU可以配置DMA控制器,并釋放總線使用權(quán);所述的配置寄存器包含著DMA傳輸所需的配置信息,它可以由CPU通過從設(shè)備接口和配置單元直接修改,也可以通過MUX讀取通道仲裁得到的通道配置信息,配置寄存器的內(nèi)容輸出給主設(shè)備接口,用于完成DMA傳輸。
4.根據(jù)權(quán)利要求1所述的多通道DMA控制器,其特征在于所述的通道仲裁策略,包括以下步驟(1)當(dāng)兩個(gè)或兩個(gè)以上的通道同時(shí)發(fā)起DMA傳輸要求時(shí),通道仲裁器開始工作;(2)讀取仲裁策略寄存器,確定要使用的仲裁算法若使用輪轉(zhuǎn)算法,則執(zhí)行步驟(3) 到(5);若使用固定優(yōu)先級(jí),則執(zhí)行步驟(6)到(7);若使用不同服務(wù)分配比的輪轉(zhuǎn)優(yōu)先級(jí)算法,則執(zhí)行步驟(8)到(12);(3)讀取輪轉(zhuǎn)算法寄存器中的輪轉(zhuǎn)順序和狀態(tài)寄存器中的前次仲裁結(jié)果;(4)確定本次仲裁結(jié)果,確定的方法是根據(jù)輪轉(zhuǎn)順序和前次仲裁結(jié)果,確定本次輪轉(zhuǎn)的優(yōu)先級(jí),然后選擇本次進(jìn)行傳輸?shù)耐ǖ溃?5)輸出仲裁結(jié)果,并將其保存在狀態(tài)寄存器中,跳到步驟(13);(6)讀取固定優(yōu)先級(jí)寄存器中的優(yōu)先級(jí)順序;(7)確定并輸出仲裁結(jié)果,跳到步驟(13);(8)檢查輪轉(zhuǎn)優(yōu)先級(jí)寄存器中是否有正在執(zhí)行的優(yōu)先級(jí)組順序,若有跳到步驟(9),若沒有跳到步驟(10);(9)根據(jù)已經(jīng)有的值,確定并輸出本次仲裁結(jié)果,跳到步驟(13);(10)讀取輪轉(zhuǎn)優(yōu)先級(jí)寄存器中的服務(wù)分配比和不同優(yōu)先級(jí)組的內(nèi)容;(11)計(jì)算并保存不同優(yōu)先級(jí)組的順序,計(jì)算的方法是通過調(diào)節(jié)不同優(yōu)先級(jí)組出現(xiàn)的次數(shù),確保最后得到要求的服務(wù)分配比;(12)根據(jù)計(jì)算得到的值,確定并輸出本次仲裁結(jié)果,跳到步驟(13);(13)根據(jù)仲裁結(jié)果,操作MUX使對(duì)應(yīng)通道導(dǎo)通,將對(duì)應(yīng)通道的源地址、目的地址、傳輸數(shù)據(jù)幀大小、工作模式信息輸送到DMA引擎中。
全文摘要
本發(fā)明公開了一種帶有仲裁器的多通道DMA控制器。現(xiàn)有控制器傳輸速度比較慢,不適合高速數(shù)據(jù)傳輸場(chǎng)合。本發(fā)明包括DMA引擎、2個(gè)主設(shè)備接口、從設(shè)備接口、通道仲裁器和寄存器堆。所述的主設(shè)備接口與總線相連,與DMA引擎相連;所述的從設(shè)備接口與總線相連,與DMA引擎相連;所述的通道仲裁器與DMA引擎相連,與多路開關(guān)相連,包括的寄存器有仲裁策略寄存器、輪轉(zhuǎn)算法寄存器、狀態(tài)寄存器、固定優(yōu)先級(jí)寄存器、輪轉(zhuǎn)優(yōu)先級(jí)寄存器;所述的寄存器堆與DMA引擎相連,與多路開關(guān)相連,分為主控制狀態(tài)寄存器和各通道寄存器。本發(fā)明DMA傳輸速度較快,更加適合高速數(shù)據(jù)傳輸場(chǎng)合,拓展了應(yīng)用范圍。
文檔編號(hào)G06F13/30GK102231142SQ20111020493
公開日2011年11月2日 申請(qǐng)日期2011年7月21日 優(yōu)先權(quán)日2011年7月21日
發(fā)明者嚴(yán)軍, 吳翔, 張俊, 沈海斌 申請(qǐng)人:浙江大學(xué)