專利名稱::一種片上dma結(jié)構(gòu)及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及高性能處理器領(lǐng)域,特別涉及到一種片上DMA結(jié)構(gòu)及其實(shí)現(xiàn)方法。技術(shù)背景數(shù)據(jù)吞吐能力是高性能處理器設(shè)計(jì)中的關(guān)鍵問題。為了提高高性能處理器數(shù)據(jù)的吞吐能力通常的辦法是增加處處理器的數(shù)據(jù)通路位寬或提高數(shù)據(jù)的吞吐頻率。這兩種方法都存在著不足第一種方法,通過增加數(shù)據(jù)位寬提高吞吐能力,處理器的引腳數(shù)會(huì)激增,影響處理器的可靠性;第二種辦法,提高數(shù)據(jù)的吞吐頻率,會(huì)直接導(dǎo)致處理器的處理功耗過高。因此在設(shè)計(jì)高性能處理器中,可以采用增加片上DMA(DirectMemoryAccess)的方法,來提高高性能處理器的數(shù)據(jù)吞吐能力。DMA(DriectMemoryAccess)技術(shù)本身是一種代替微處理器完成存儲(chǔ)器與外部設(shè)備或存儲(chǔ)器之間大量數(shù)據(jù)傳送的方法,也稱直接存儲(chǔ)器存取方法。在微機(jī)系統(tǒng)內(nèi),外設(shè)與內(nèi)存間的數(shù)據(jù)傳送通常是通過CPU執(zhí)行一段程序來實(shí)現(xiàn)的,但利用DMA技術(shù)則可不用CPU介入就能實(shí)現(xiàn)外設(shè)與內(nèi)存之間數(shù)據(jù)的直接傳送。DMA的主要優(yōu)點(diǎn)是當(dāng)需要把一個(gè)外設(shè)的大量數(shù)據(jù)送到指定內(nèi)存時(shí),它可以自動(dòng)完成傳送任務(wù),也就是說外設(shè)發(fā)出一個(gè)DMA請(qǐng)求,則DMA電路暫停CPU的操作,并控制外設(shè)與內(nèi)存之間進(jìn)行一次傳數(shù),然后再讓CPU繼續(xù)執(zhí)行程序,這樣就使CPU節(jié)省了大量對(duì)外設(shè)的查詢時(shí)間,從而提高了系統(tǒng)的整體性能。DMA的產(chǎn)品主要有美國(guó)英特爾公司(Intel)生產(chǎn)的8237芯片和82258系統(tǒng)。由于沒有中斷處理功能和系統(tǒng)總線接口功能,8237和82258在系統(tǒng)中使用時(shí),需要中斷控制器(8259)和設(shè)計(jì)系統(tǒng)接口輔助邏輯,這使得系統(tǒng)應(yīng)用很繁瑣,而且這種DMA的工作結(jié)構(gòu)和實(shí)現(xiàn)方式也降低了應(yīng)用系統(tǒng)的可靠性。隨著微電子技術(shù)的發(fā)展,單芯片的集成度不斷提高,在這樣的實(shí)現(xiàn)條件下,出現(xiàn)了在高性能微處理器中嵌入DMA來提高數(shù)據(jù)吞吐能力的產(chǎn)品。主要是美國(guó)德州儀器公司(TexasInstrument,Tl)設(shè)計(jì)的MSP430微控器系列以及TMS320X240系列產(chǎn)品。這些產(chǎn)品應(yīng)用資料中對(duì)于DMA的描述都是/人應(yīng)用方法上介紹居多,至于其結(jié)構(gòu)和具體實(shí)現(xiàn)方式等都未見有詳細(xì)描述。國(guó)內(nèi)對(duì)于高性能處理器的研究近些年也才展開,關(guān)于在自主設(shè)計(jì)的高性能處理器中使用片上DMA的介紹,未見報(bào)道。國(guó)內(nèi)關(guān)于DMA的資料也大多是針對(duì)8237和82258以及L82C37A等產(chǎn)品如何使用的心得和介紹。這些DMA產(chǎn)品應(yīng)用范圍窄、應(yīng)用復(fù)雜,難以集成到自主設(shè)計(jì)的片上處理器系統(tǒng)中。本發(fā)明是以自主設(shè)計(jì)的32位高性能數(shù)字信號(hào)處理器SMDSP為背景,在SMDSP上設(shè)計(jì)了一種片上DMA的結(jié)構(gòu)及其實(shí)現(xiàn)方法。由于它結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)方便,因此易于應(yīng)用到其它高性能處理器的設(shè)計(jì)中。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種廣泛適用的片上DMA的結(jié)構(gòu)及其實(shí)現(xiàn)方法。而且結(jié)構(gòu)簡(jiǎn)單,實(shí)現(xiàn)方便。本發(fā)明所采取的技術(shù)方案是一種片上DMA結(jié)構(gòu),其特征在于包括寄存器組,在DMA工作前由CPU通過外設(shè)數(shù)據(jù)總線對(duì)寄存器組進(jìn)行初始化配置,確定DMA的工作狀態(tài)、數(shù)據(jù)的地址值和即將要傳輸數(shù)據(jù)的個(gè)數(shù);優(yōu)先級(jí)仲裁單元,當(dāng)CPU和DMA之間發(fā)生讀寫沖突時(shí),DMA/CPU優(yōu)先級(jí)仲裁才艮據(jù)當(dāng)前的傳輸狀態(tài)和CPU的中斷控制器傳來的信號(hào)進(jìn)行判斷,是否把控制權(quán)交給DMA,當(dāng)DMA取得優(yōu)先權(quán)進(jìn)行數(shù)據(jù)傳輸時(shí),根據(jù)DMA內(nèi)部通道的數(shù)量決定是否需要仲裁,當(dāng)DMA內(nèi)部通道為兩個(gè)或兩個(gè)以上時(shí),優(yōu)先.級(jí)仲裁單元進(jìn)行仲裁,決定哪個(gè)通道進(jìn)行數(shù)據(jù)傳輸工作;DMA數(shù)據(jù)緩沖寄存器,用于緩沖存儲(chǔ)低速的數(shù)據(jù)I/O設(shè)備向DMA發(fā)送的數(shù)據(jù),使得DMA的數(shù)據(jù)傳輸速率和CPU的處理速率相匹配;中斷設(shè)置和接收單元,一是當(dāng)DMA傳輸完成時(shí)利用該單元在系統(tǒng)中斷寄存器中設(shè)置相應(yīng)中斷標(biāo)志位表示一次數(shù)據(jù)傳輸完成,CPU可根據(jù)該中斷標(biāo)志位進(jìn)行相應(yīng)處理;二是當(dāng)數(shù)據(jù)I/O設(shè)備就緒時(shí)會(huì)對(duì)系統(tǒng)發(fā)送請(qǐng)求傳輸數(shù)據(jù)的中斷請(qǐng)求信號(hào),該中斷請(qǐng)求信號(hào)由中斷設(shè)置和接收單元接收并對(duì)系統(tǒng)中斷寄存器的相應(yīng)中斷標(biāo)志位進(jìn)行設(shè)置,CPU根據(jù)該中斷標(biāo)志位進(jìn)行DMA工作方式的配置并啟動(dòng)DMA進(jìn)行數(shù)據(jù)傳輸工作;加/減1控制邏輯,通過CPU對(duì)寄存器組中的全局狀態(tài)控制寄存器的配置,力口/減1控制邏輯實(shí)現(xiàn)對(duì)寄存器組中數(shù)據(jù)寄存器的修改,即實(shí)現(xiàn)加1或減1或保持不變的操作;DMA總線,包括DMA地址總線和DMA數(shù)據(jù)總線,DMA地址總線上傳送的是要讀出或?qū)懭霐?shù)據(jù)在存儲(chǔ)器中的起始地址;DMA數(shù)據(jù)總線上傳送的是要讀出或?qū)懭氲臄?shù)據(jù),它傳輸?shù)臄?shù)據(jù)經(jīng)過DMA數(shù)據(jù)緩沖寄存器中轉(zhuǎn)后傳送到內(nèi)部或外部存儲(chǔ)器。當(dāng)DMA內(nèi)部通道為兩通道DMAO和DMA1時(shí),所述的中斷設(shè)置和接收單元的電路結(jié)構(gòu)為測(cè)試信號(hào)TEST1和外部中斷信號(hào)EINT經(jīng)過控制信號(hào)C1和控制信號(hào)C2控制的二選一選擇器M21—1后接反向器inv—1的輸入,inv一1的輸出接二輸入與門and2—1的輸入,二^r入與門and2—1的輸出才妄到二輸入或非門nor2_1的一個(gè)輸入端,二輸入或非門nor2—1的輸出作為三與非門nand3_1的一個(gè)輸入端,電路復(fù)位信號(hào)RESET接到二輸入或非門nor2一1的另一個(gè)輸入端,全局控制寄存器的最低兩位信號(hào)START[1]和START[O]接二輸入或非門nor2—2后接反向器inv—2,反向器inv—2的輸出接到三與非門nand3—1的第二個(gè)輸入端;用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道的輸入信號(hào)DMAE經(jīng)過反向器inv—3輸出到三與非門nand3—1的第三個(gè)輸入端;三與非門nand3一1的輸出接控制信號(hào)C3和控制信號(hào)C4控制的二選一選擇器M21—2的一個(gè)輸入端,測(cè)試信號(hào)TEST2接選擇器M21—2的另一個(gè)輸入端,選擇器M21—2的輸出接由inv一4和inv—5組成的鎖存器,鎖存器的一個(gè)輸出端為中斷標(biāo)志信號(hào)INT一SIG,鎖存器的另一個(gè)輸出端接系統(tǒng)時(shí)鐘CLK控制的傳輸門TG后經(jīng)過反向器inv—6連接到二輸入與門and2—1的輸入端。當(dāng)DMA內(nèi)部通道為兩通道DMA0和DMA1時(shí),所述的DMA/CPU優(yōu)先級(jí)仲裁的電路結(jié)構(gòu)為DMA內(nèi)部通道DMA1的全局控制寄存器的控制位信號(hào)DMA1—PRI[1]和使能信號(hào)DMA1—EN接二輸入與門and2—2的兩個(gè)輸入端,DMA內(nèi)部通道DMA0的全局控制寄存器的控制位信號(hào)DMA0—PRI[1]和使能信號(hào)DMAO—EN接二輸入與門and2—3的兩個(gè)輸入端;二輸入與門and2_2和二輸入與門and2—3的輸出端分別接到二輸入或非門nor2—3的兩個(gè)輸入端,二輸入或非門nor2—3的輸出經(jīng)反向器inv—8后接或門or2—2的輸入;狀態(tài)標(biāo)識(shí)信號(hào)DMA1—ST和DMA0—ST接或門or2—1的兩個(gè)輸入,或門or2_1的輸出連到三與非門nand3—2的一個(gè)輸入端,使能信號(hào)DMA—EN接三與非門nand3—2)的另一個(gè)輸入,環(huán)形仲裁信號(hào)CIR經(jīng)過反向器inv—7取反后接三與非門nand3一2的第三個(gè)輸入端;三與非門nand3_2的輸出接反向器inv一9的輸入,反向器inv—9的輸出接或門or2—2的第二個(gè)輸入端;DMA內(nèi)部通道DMA1的全局控制寄存器的控制位信號(hào)DMA1—PRI和使能信號(hào)DMA1—EN接與門and2—4的兩個(gè)輸入,DMA內(nèi)部通道DMA0的全局控制寄存器的控制位信號(hào)DMAO—PRI[O]和使能信號(hào)DMAO—EN接與門and2—5的兩個(gè)輸入;與門and2_4和與門and2—5的兩個(gè)輸出接到二輸入或非門nor2—4的輸入,或非門nor2_4的輸出接反向器inv—10;反向器inv—10的輸出和或門or2—2的輸出接二輸入與非門nand2一1的輸入,二輸入與非門nand2—1的輸出接反向器inv—11,反向器inv—11的輸出為優(yōu)先級(jí)仲裁信號(hào)DMA/CPU—PRI。當(dāng)DMA內(nèi)部通道為兩通道DMAO和DMA1時(shí),所述的加/減1控制邏輯的電路結(jié)構(gòu)為全局控制寄存器中的控制位INCSRC和DECSRC接二輸入同或門xnor2—1的輸入,二輸入同或門xnor2—1的輸出經(jīng)反向器inv—12接三輸入與非門nand3_3的第一個(gè)輸入端,用于切換DMA傳輸?shù)淖x寫操作的信號(hào)WRE經(jīng)反向器inv—13后接三輸入與非門nand3_3的第二個(gè)輸入端,用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道的輸入信號(hào)DMAE接三輸入與非門nand3一3的第三個(gè)輸入端;全局控制寄存器中的控制位INCDST和DECDST接二輸入同或門xnor2—2的輸入,二輸入同或門xnor2—2的輸出經(jīng)反向器invJ4接三輸入與非門nand3—4的第一個(gè)輸入端,用于切換DMA傳輸?shù)淖x寫操作的信號(hào)WRE接三輸入與非門nand3_4的第二個(gè)輸入端,用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道的輸入信號(hào)DMAE接三輸入與非門nand3—4的第三個(gè)輸入端;三輸入與非門nand3—3的輸出接反向器inv_15,反向器inv—15的輸出為允許或不允許對(duì)源地址寄存器進(jìn)行加減運(yùn)算的信號(hào)SRCAE;三輸入與非門門3^3_4的輸出接反向器inv一16,反向器inv—16的輸出為允許或不允許對(duì)目的地址寄存器進(jìn)行加減運(yùn)算的信號(hào)DSTAE;INCSRC與三輸入與非門nand3—3的輸出接二輸入或門or2—3的輸入;全局控制寄存器中的控制位INCSRC與三輸入與非門nand3—4的輸出接二輸入或門or2—4的輸入;二輸入或門or2—3的輸出和二輸入或門or2一4的輸出接二輸入與非門nand2_2的兩個(gè)輸入端,二輸入與非門nand2_2的輸出與系統(tǒng)時(shí)鐘CLK分別接二輸入與非門nand2一3的兩個(gè)輸入端,二輸入與非門nand2_3的輸出接反向器inv—17,反向器inv—17的輸出為加1操作的控制信號(hào)INC;力。1操作的控制信號(hào)INC接反向器inv_18的輸入,反向器inv—18的輸出為減1操作的控制信號(hào)DEC。一種片上DMA實(shí)現(xiàn)方法,其特;f正在于DMA內(nèi)部通道至少為一個(gè),當(dāng)DMA內(nèi)部通道為兩個(gè)或兩個(gè)以上時(shí),每個(gè)通道的實(shí)現(xiàn)方法相同,所述DMA內(nèi)部通道的實(shí)現(xiàn)方法如下(1)在DMA進(jìn)行數(shù)據(jù)傳輸開始前,CPU先通過外設(shè)數(shù)據(jù)總線對(duì)DMA通道內(nèi)部的寄存器組進(jìn)行初始化配置。配置過程即外設(shè)地址總線上的值經(jīng)地址譯碼器的譯碼產(chǎn)生寫使能信號(hào),用于對(duì)DMA寄存器組中的一個(gè)寄存器進(jìn)行寫操作,外設(shè)數(shù)據(jù)總線上的配置數(shù)據(jù)在寫使能信號(hào)有效時(shí)寫入到相應(yīng)的寄存器中,一個(gè)寄存器的配置完成。CPU要DMA寄存器組中的每個(gè)寄存器進(jìn)行配置后,即完成整個(gè)DMA的初始化配置。(2)根據(jù)CPU對(duì)通道內(nèi)部的寄存器組中的全局狀態(tài)控制寄存器的初始化配置,力口/減1控制邏輯對(duì)通道內(nèi)的力口/減1模塊進(jìn)行控制,實(shí)現(xiàn)對(duì)寄存器組中的數(shù)據(jù)寄存器進(jìn)4于加1或減1或保持不變的操作;(3)根據(jù)優(yōu)先級(jí)仲裁單元、中斷接收和設(shè)置單元判斷結(jié)果控制選通器將哪路數(shù)據(jù)傳輸?shù)紻MA地址總線上,進(jìn)行數(shù)據(jù)讀取,當(dāng)數(shù)據(jù)地址已經(jīng)上了DMA地址總線后,數(shù)據(jù)會(huì)緊隨其后從存儲(chǔ)器搬運(yùn)到相應(yīng)通道內(nèi)部的數(shù)據(jù)緩沖寄存器中,到DMA數(shù)據(jù)總線上;(4)通過比較器的輸出來判斷傳輸個(gè)數(shù)寄存器的值是否為0,即是否傳輸完畢,當(dāng)傳輸完畢時(shí),比較器會(huì)觸發(fā)中斷接收和設(shè)置模塊產(chǎn)生中斷信號(hào)給CPU,告知數(shù)據(jù)傳輸結(jié)束,交還總線使用權(quán),至此,一次DMA數(shù)據(jù)傳送過程完成。當(dāng)所DMA內(nèi)部通道為兩個(gè)通道DMAO和DMA1時(shí),其中所述通道DMAO的實(shí)現(xiàn)方法如下(1)在DMA進(jìn)行數(shù)據(jù)傳輸開始前,CPU通過外設(shè)數(shù)據(jù)總線對(duì)通道DMAO內(nèi)部的寄存器組進(jìn)行初始化配置;CPU通過外設(shè)地址總線經(jīng)地址譯碼器的譯碼產(chǎn)生控制配置通道DMAO寄存器組的信號(hào),CPU控制并選擇通過第一選通器的寄存器輸入到DMAO力口/減1模塊的信號(hào);(2)根據(jù)CPU對(duì)通道DMAO內(nèi)部的寄存器組中的全局狀態(tài)控制寄存器的初始化配置,DMAO力口/減1控制邏輯對(duì)通道內(nèi)的DMAO力口/減1模塊進(jìn)行控制,對(duì)傳輸計(jì)數(shù)寄存器、目的地址寄存器和源地址寄存器進(jìn)行加1或減1或保持不變的操作;(3)根據(jù)優(yōu)先級(jí)仲裁單元、DMAO中斷設(shè)置模塊和DMAO狀態(tài)位讀寫模塊的判斷結(jié)果控制第三選通器將哪路數(shù)據(jù)傳輸?shù)紻MA地址總線上,進(jìn)行數(shù)據(jù)讀取,當(dāng)數(shù)據(jù)地址已經(jīng)上了DMA地址總線后,數(shù)據(jù)會(huì)緊隨其后從存儲(chǔ)器搬運(yùn)到DMAO內(nèi)部的數(shù)據(jù)緩沖寄存器中,再根據(jù)優(yōu)先級(jí)仲裁單元的仲裁結(jié)果來選擇將DMO通道或者DMA1通道的數(shù)據(jù)經(jīng)過第四選通器傳送到DMA凄t據(jù)總線上;(4)通過DMA0比較器的輸出來判斷傳輸個(gè)數(shù)寄存器的值是否為0,即是否傳輸完畢,當(dāng)傳輸完畢時(shí),DMA0比較器會(huì)觸發(fā)DMA0中斷設(shè)置模塊產(chǎn)生DMA0中斷信號(hào)DINT0給CPU,告知數(shù)據(jù)傳輸結(jié)束,交還總線使用權(quán),至此,一次DMA數(shù)據(jù)傳送過程完成。所述的DMA通過兩個(gè)通道DMA0和DMA1之間的優(yōu)先級(jí)仲裁決定由哪個(gè)通道進(jìn)行數(shù)據(jù)傳輸,優(yōu)先級(jí)仲裁的實(shí)現(xiàn)方法有兩種固定優(yōu)先級(jí)和輪轉(zhuǎn)優(yōu)先級(jí)。固定優(yōu)先級(jí)是默認(rèn)DMAO或DMA1具有更高優(yōu)先級(jí),而輪轉(zhuǎn)優(yōu)先級(jí)是4艮據(jù)最近服務(wù)的通道優(yōu)先級(jí)降到最低的原則進(jìn)行仲裁,這是^f艮據(jù)全局狀態(tài)控制寄存器中的相應(yīng)位進(jìn)行i殳定的。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果(1)本發(fā)明的片上DMA結(jié)構(gòu)及其實(shí)現(xiàn)方法簡(jiǎn)單,與其它功能部件的時(shí)序配合容易,提高了DMA工作的可靠性。(2)本發(fā)明的片上DMA具有自己的優(yōu)先級(jí)仲裁和中斷設(shè)置與接收單元,盡可能的減輕了CPU的負(fù)擔(dān),使兩者傳輸數(shù)據(jù)速率相匹配。(3)本發(fā)明的片上DMA有自己獨(dú)立的數(shù)據(jù)和地址總線,可以傳輸32位數(shù)據(jù)。圖1是本發(fā)明片上DMA結(jié)構(gòu)示意圖;圖2是本發(fā)明的片上DMA實(shí)現(xiàn)方法流程圖;圖3是本發(fā)明的一種中斷設(shè)置和接收單元結(jié)構(gòu)示意圖;圖4是本發(fā)明的一種DMA/CPU優(yōu)先級(jí)仲裁結(jié)構(gòu)示意圖;圖5是本發(fā)明的一種加/減1控制邏輯結(jié)構(gòu)示意圖。具體實(shí)施方式一種片上DMA的實(shí)現(xiàn)方法,DMA的結(jié)構(gòu)如圖1所示。其中,DMA寄存器組是由DMA全局狀態(tài)控制寄存器、源地址寄存器、目的地址寄存器和傳輸個(gè)數(shù)寄存器組成,在DMA開始工作前首先由CPU通過外設(shè)總線對(duì)寄存器組中的全局狀態(tài)控制寄存器、源地址和目的地址寄存器和傳輸個(gè)數(shù)寄存器進(jìn)行初始化配置,即確定DMA的工作狀態(tài)(如優(yōu)先級(jí)仲裁模式和讀寫同步方式)、數(shù)據(jù)的起始地址值(即待讀出的數(shù)據(jù)在存儲(chǔ)器中的首地址)、數(shù)據(jù)的目的地址值(即待寫入的數(shù)據(jù)在目的存儲(chǔ)器中的首地址)和待傳輸數(shù)據(jù)的個(gè)數(shù)。優(yōu)先級(jí)仲裁單元包括CPU/DMA之間的優(yōu)先級(jí)仲裁和DMA內(nèi)部?jī)赏ǖ繢MA0和DMA1之間的優(yōu)先級(jí)仲裁,當(dāng)CPU和DMA之間發(fā)生讀寫沖突時(shí),用該模塊進(jìn)行仲裁即確定CPU總線控制權(quán),當(dāng)DMA取得優(yōu)先權(quán)進(jìn)行數(shù)據(jù)傳輸時(shí),DMA1和DMAO兩通道需要進(jìn)行仲裁即決定哪個(gè)通道進(jìn)行數(shù)據(jù)傳輸工作。DMA數(shù)據(jù)緩沖寄存器,用于緩沖存儲(chǔ)低速的數(shù)據(jù)I/O設(shè)備向DMA發(fā)送的數(shù)據(jù),通過DMA數(shù)據(jù)緩沖寄存器的作用,使得DMA的數(shù)據(jù)傳輸速率和CPU的處理速率相匹配。中斷設(shè)置和接收單元,一是當(dāng)DMA傳輸完成時(shí)利用該單元在系統(tǒng)中斷寄存器中設(shè)置相應(yīng)中斷標(biāo)志位表示一次數(shù)據(jù)傳輸完成,CPU可根據(jù)該中斷標(biāo)志位進(jìn)行相應(yīng)處理;二是當(dāng)數(shù)據(jù)I/O設(shè)備就緒時(shí)會(huì)對(duì)系統(tǒng)發(fā)送請(qǐng)求傳輸數(shù)據(jù)的中斷請(qǐng)求信號(hào),該中斷請(qǐng)求信號(hào)由DMA的中斷設(shè)置和接收單元接收并對(duì)系統(tǒng)中斷寄存器的相應(yīng)中斷標(biāo)志位進(jìn)行設(shè)置,CPU根據(jù)該中斷標(biāo)志位進(jìn)行DMA工作方式的配置并啟動(dòng)DMA進(jìn)行數(shù)據(jù)傳輸工作。加/減1控制邏輯通過對(duì)全局狀態(tài)控制寄存器的配置,對(duì)源地址寄存器、目的地址寄存器和傳輸個(gè)數(shù)寄存器進(jìn)行修改,即進(jìn)行相應(yīng)的加1或者/減1的操作。DMA總線,包括DMA地址總線和DMA數(shù)據(jù)總線。DMA地址總線(24位)上傳送的是要讀出或?qū)懭霐?shù)據(jù)在存儲(chǔ)器中的起始地址,它傳輸?shù)牡刂穬?nèi)容由源地址和目的地址寄存器提供;DMA數(shù)據(jù)總線(32位)上傳送的是要讀出或?qū)懭氲臄?shù)據(jù),它傳輸?shù)臄?shù)據(jù)經(jīng)過DMA數(shù)據(jù)緩沖寄存器中轉(zhuǎn)后傳送到目的存儲(chǔ)器。DMA全局控制寄存器的位寬為16位,結(jié)構(gòu)如下表1所示。表1全局控制寄存器的位寬<table>tableseeoriginaldocumentpage15</column></row><table>DMA全局控制器的功能位定義如下表2所示。表2DMA全局控制器的狀態(tài)位定義縮寫復(fù)位值名稱描述START00DMA啟動(dòng)控制控制DMA開始和停止?fàn)顟B(tài),在沒有丟失數(shù)據(jù)的情況下停止DMA傳輸下表為START位的組合和DMA的操作BitlbitO功能00DMA的讀或?qū)懸呀?jīng)完成;忽略任何數(shù)據(jù)的讀,取消任何待定的讀或?qū)?。DMA被復(fù)位準(zhǔn)備下一次傳輸?shù)拈_始(復(fù)位值)01在DMA停止以前完成已開始的一個(gè)字讀或?qū)?。如果讀或?qū)憶]有開始,那么不再有讀和寫發(fā)生10在DMA停止以前完成已開始的數(shù)據(jù)塊的傳輸(包括讀和寫)如果沒有數(shù)據(jù)塊傳輸,那么不再有讀和寫發(fā)生I1DMA從復(fù)位狀態(tài)或前一個(gè)狀態(tài)重新啟動(dòng)。當(dāng)DMA—次傳輸完成,START位保持在ll在以下任一個(gè)條件時(shí),設(shè)置START位為ll重新開始傳i5。當(dāng)傳送計(jì)數(shù)器的設(shè)置的值不為OXOTC位為OSTAT00DMA狀態(tài)STAT指定DMA的狀態(tài)并且每個(gè)周期都更新,下表為STAT位和DMA狀態(tài)bit3bit2功能00DMA在寫和讀之間被保持,這是復(fù)位時(shí)的值01DMA在讀和寫的中間被保持10保留11DMA忙,包括DMA執(zhí)行讀或?qū)?等待源同步中斷、等待目的同歩中斷INCSRC0DMA源地址遞增當(dāng)INCSRC=1,源地址在每次讀后遞增DECSRC0DMA源地址遞減當(dāng)DECSRC-l,源地址在每次讀后遞減當(dāng)INCSRC=DECSRC,每次讀后不修改源地址INCDST0DMA目的地址遞增當(dāng)INCDST=1,目的地址在每次被寫后遞增DECDST0DMA目的地址遞減當(dāng)DECDST-l,目的地址在每次被寫后遞減當(dāng)INCDST=DECDST,每次寫后不修改目的地址。SYNC0DMA同步模式源地址和目的地址的同步方式下表概述SYNC位和DMA同步Bit9Bit8功能00不同步,忽略中斷(復(fù)位值)01源地址同步。當(dāng)中斷發(fā)生時(shí),執(zhí)行讀10目的地址同步。當(dāng)中斷發(fā)生時(shí),執(zhí)行寫11源地址同步和目的地址同步。當(dāng)中斷發(fā)生時(shí),執(zhí)行讀;下一個(gè)中斷發(fā)生時(shí),執(zhí)行寫TC0DMA傳輸模式影響傳送計(jì)數(shù)器的操作。當(dāng)TC-0,傳送計(jì)數(shù)變?yōu)?時(shí),不終止傳輸當(dāng)TC=1,t傳送計(jì)數(shù)變?yōu)?時(shí),終止傳輸TCINT0DMA傳送計(jì)數(shù)器中斷當(dāng)TCINT-l,傳送計(jì)數(shù)器為0時(shí),設(shè)置DMA中斷。當(dāng)TCINT-O,傳送計(jì)數(shù)器為0時(shí),不設(shè)置DMA中斷。PRI00CPU/DMA優(yōu)先模式PRI位定義CPU/DMA優(yōu)先級(jí)Bitl3Bitl2功能00CPU優(yōu)先級(jí)高于DMA(這也是復(fù)位值)01保留10優(yōu)先級(jí)輪流1'lDMA優(yōu)先級(jí)高于CPUPRIORITYMODE0DMA通道優(yōu)先級(jí)模式當(dāng)PRIORITYMODE=0,兩個(gè)DMA通道優(yōu)先級(jí)固定,即通道0—直優(yōu)先于通道l當(dāng)prioritymode=1,兩個(gè)DMA通道優(yōu)先權(quán)輪流。復(fù)位后DMA通道o優(yōu)先,復(fù)位后,最近使用的通道(不論是讀還是寫)具有更低的優(yōu)先級(jí)圖2為DMA的實(shí)現(xiàn)方法流程圖,DMA為左右對(duì)稱的雙通道,下面以DMAO通道為例進(jìn)行說明第一步,在DMA進(jìn)行數(shù)據(jù)傳輸開始前,CPU通過外設(shè)數(shù)據(jù)總線(32bit)對(duì)DMAO內(nèi)部的寄存器組(包括全局狀態(tài)控制寄存器、源地址和目的地址寄存器、傳輸計(jì)數(shù)寄存器等)進(jìn)行初始化配置,即確定DMA的工作方式(如優(yōu)先級(jí)仲裁模式和讀寫同步方式)、數(shù)據(jù)的起始地址值(即待讀出的數(shù)據(jù)在存儲(chǔ)器中的首地址)、數(shù)據(jù)的目的地址值(即待寫入的數(shù)據(jù)在目的存儲(chǔ)器中的首地址)和待傳輸數(shù)據(jù)的個(gè)數(shù)。另外通過外設(shè)地址總線(24bit)經(jīng)DMAO地址譯碼器的譯碼產(chǎn)生控制配置DMAO寄存器組的信號(hào)以及控制選擇哪組寄存器通過第一選通器輸入到DMAO力口/減1模塊的信號(hào)。第二步,根據(jù)DMAO全局狀態(tài)控制寄存器的初始配置,DMA0力口/減1控制邏輯會(huì)對(duì)DMAO力。/減1模塊進(jìn)行控制,對(duì)操作數(shù)(數(shù)據(jù)源地址寄存器、數(shù)據(jù)目的地址寄存器和數(shù)據(jù)傳輸個(gè)數(shù)寄存器)進(jìn)行加1、減1或保持不變的操作。第三步,根據(jù)DMAO優(yōu)先級(jí)仲裁模塊、處理外部中斷信號(hào)EINTO的同步控制模塊和狀態(tài)位讀寫模塊的判斷結(jié)果控制第三選通器將哪路數(shù)據(jù)傳輸?shù)紻MA地址總線上,進(jìn)行數(shù)據(jù)讀取。當(dāng)數(shù)據(jù)地址已經(jīng)上了DMA地址總線后,數(shù)據(jù)會(huì)緊隨其后從存儲(chǔ)器搬運(yùn)到DMA內(nèi)部的數(shù)據(jù)緩沖寄存器,在根據(jù)狀態(tài)位的判斷和優(yōu)先級(jí)控制模塊的仲裁結(jié)果來選擇將哪條通道(DMA0/DMA1)傳送的數(shù)據(jù)經(jīng)過第四選通器放到DMA數(shù)據(jù)總線上。第四步,通過DMAO比較器的輸出來判斷DMAO傳輸個(gè)數(shù)寄存器的值是否為0(即是否傳輸完畢),當(dāng)傳輸完畢時(shí),它會(huì)觸發(fā)DMAO中斷設(shè)置模塊產(chǎn)生DMAO中斷信號(hào)DINTO給CPU告知數(shù)據(jù)傳輸結(jié)束,交還總線使用權(quán)。這樣,一次DMA數(shù)據(jù)傳送過程完成。需要進(jìn)一步說明的是DMA通過DMAO和DMA1兩個(gè)通道進(jìn)行數(shù)據(jù)傳輸,具體的實(shí)現(xiàn)方式有兩種固定優(yōu)先級(jí)和輪轉(zhuǎn)優(yōu)先級(jí),前者是默認(rèn)DMAO或DMA1有更高優(yōu)先級(jí),而后者是根據(jù)最近服務(wù)的通道優(yōu)先級(jí)降到最低的原則進(jìn)行仲裁,這是根據(jù)全局狀態(tài)控制寄存器中的相應(yīng)位進(jìn)行設(shè)定的;此外,當(dāng)DMA和CPU之間產(chǎn)生了凝:據(jù)傳輸沖突時(shí),其DMA/CPU優(yōu)先級(jí)仲裁單元會(huì)沖艮據(jù)當(dāng)前的傳輸狀態(tài)和CPU的中斷控制器傳來的信號(hào)進(jìn)行判斷,是否把控制權(quán)交給DMA。中斷接收電^各結(jié)構(gòu),如圖3所示信號(hào)TEST1和EINT經(jīng)過在C1和C2控制的二選一選4奪器M21—1后接反向器invj的輸入,inv—1的輸出接入二輸入與門and2—1的輸入,二輸入與門and2_1的輸出接到二輸入或非門后輸出到三與非nand3—1的一個(gè)輸入端。RESET接到二輸入或非門nor2_1的另一個(gè)輸入。START[1]、START[O]接二輸入或非門nor2_2后接反向器inv—2,其輸出接到三與非nand3—1的第二個(gè)輸入端。DMAE接反向器inv—3輸出到三與非nand3—1的第三個(gè)輸入端。三與非nand3—1的輸出接C3和C4控制的二選一選擇器M21—2的其中一個(gè)輸入,另一個(gè)輸入為TEST2。二選一選擇器M21—2的輸入接入由inv—4和inv—5組成的鎖存器,該鎖存器輸出為INT_SIG,并接由CLK控制的傳輸門TG后經(jīng)過反向器inv—6連接到二輸入與門and2—1的輸入。其中TEST1和EINT分別是測(cè)試和外部中斷信號(hào),經(jīng)過由C1、C2控制的二選一的多路選擇器輸出到反饋環(huán)。當(dāng)電路復(fù)位時(shí),RESET-1,將與或非門的一個(gè)輸入信號(hào)置1,數(shù)據(jù)結(jié)果由反饋保持復(fù)位值。輸入信號(hào)START[1:0]是全局控制寄存器的最低兩位,控制DMA傳輸?shù)膯?dòng)與停止。當(dāng)START[1:0]-00時(shí),中止所有正在進(jìn)行的傳輸,準(zhǔn)備重新進(jìn)行新一次的DMA傳輸。輸入信號(hào)DMAE用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道,當(dāng)DMA完成某一次讀寫操作時(shí),該DMA通道空閑,DMAE=0,等待下一次同步中斷的出現(xiàn)。如果DMA控制器被設(shè)置為無同步的工作模式下,則只要某通道被選中,則相應(yīng)的DMAE保持為高電平。電路的輸出信號(hào)INT—SIG表示DMA傳輸啟動(dòng)后,DMA控制器所等待的同步信號(hào)是否出現(xiàn),該信號(hào)為高電平表示有同步中斷信號(hào)出現(xiàn)。DMA/CPU優(yōu)先級(jí)仲裁結(jié)構(gòu),如圖4所示DMA1—PRI[1]和DMA1—EN接二輸入與門and2—2的兩個(gè)輸入端,DMA0—PRI[1]和DMA0—EN接二輸入與門and2—3的兩個(gè)輸入端;二輸入與門and2—2和二輸入與門and2—3的兩個(gè)輸出接到二輸入或非門nor2一3的兩個(gè)輸入,二輸入或非門nor2_3的輸出經(jīng)反向器inv_8后接或門or2—2的輸入;DMA1_ST和DMA0—ST接或門or2—1的兩個(gè)輸入,或門or2—1的輸出連到三與非nand3—2的一個(gè)輸入端,DMA_EN接三與非nand3—2的另一個(gè)輸入,CIR經(jīng)過反向器inv一7取反后接三與非nand3一2的第三個(gè)輸入。三與非nand3一2的輸出接反向器jnv一9的輸入,反向器inv—9的輸出接或門or2—2的第二個(gè)輸入端。DMA1—PRI和DMA1—EN接與門and2—4的兩個(gè)輸入,DMA0—PRI和DMA0—EN接與門and2_5的兩個(gè)輸入;與門and2—4和與門and2—5的兩個(gè)輸出接到二輸入或非門nor2_4的輸入,或非門nor2—4的輸出接反向器inv—10。反向器inv一10的輸出和或門or2_2的輸出接二輸入與非門nand2—1的輸入,二輸入與非門nand2_1的輸出接反向器inv—11,反向器inv—11的輸出為DMA/CPU—PRI。其中,DMA控制器利用其內(nèi)部DMA總線傳輸數(shù)據(jù),當(dāng)與CPU的存取發(fā)生沖突時(shí),仲裁是必不可少的。當(dāng)它們之間不存在訪問沖突時(shí),CPU和DMA控制器的存取是并行完成的。仲裁規(guī)則由DMA通道中的DMAPRI位(即全局狀態(tài)控制寄存器的第12位和第13位)界定,詳見表1。系統(tǒng)復(fù)位時(shí),全局控制寄存器將被清零,系統(tǒng)默認(rèn)CPU優(yōu)先。DMAPRI[1:0]是全局控制寄存器中的第13位與第12位,該值由用戶設(shè)置,在重新編程之前不發(fā)生變化。信號(hào)CIR為環(huán)形仲裁的結(jié)果,所謂環(huán)形仲裁,是指設(shè)置CPU和DMA通道的優(yōu)先級(jí)使它們輪流存取,當(dāng)它們?cè)谶B續(xù)的指令周期中發(fā)生訪問沖突時(shí),CPU具有較高的優(yōu)先級(jí);若在下一個(gè)指令周期中,兩者再次發(fā)生對(duì)同樣資源的訪問沖突時(shí),DMA具有更高優(yōu)先級(jí)。CIR=1時(shí),表示該模塊CPU有存取請(qǐng)求。若此時(shí),DMA兩個(gè)通道中至少有一個(gè)對(duì)同一資源也提出了存取請(qǐng)求,則二者存在沖突。CPU或DMA的優(yōu)先級(jí)哪個(gè)較高是由全局狀態(tài)控制位DMAPRI決定。DMA/CPU_PRI=0代表CPU優(yōu)先級(jí)較高,DMA/CPU—PRI=1代表DMA優(yōu)先級(jí)較高)。力口/減1控制邏輯結(jié)構(gòu),如圖5所示INCSRC和DECSRC接二輸入同或門xnor2—1的輸入,二輸入同或門xnor2—1的輸出經(jīng)反向器invJ2接三輸入與非門nand3—3的第一個(gè)輸入,WRE經(jīng)反向器inv_13后接三輸入與非門nand3—3的第二個(gè)輸入,DMAE接三輸入與非門nand3—3的第三個(gè)輸入。INCDST和DECDST接二輸入同或門xnor2—2的輸入,二輸入同或門xnor2—2的輸出經(jīng)反向器inv—14接三輸入與非門nand3_4的第一個(gè)輸入,WRE接三輸入與非門nand3_4的第二個(gè)輸入,DMAE接三輸入與非門nand3—4的第三個(gè)輸入。三輸入與非門nand3—3的輸出接反向器inv—15,反向器invJ5的輸出為SRCAE。三輸入與非門nand3—4的輸出接反向器inv—16,反向器inv—16的輸出為DSTAE。INCSRC與三輸入與非門nand3—3的輸出接二輸入或門or2—3的輸入;INCDST與三輸入與非門nand3—4的輸出接二輸入或門or2—4的輸入。二輸入或門or2—3的輸出和二輸入或門or2—4的輸出接二輸入與非門nand2_2的兩個(gè)輸入端,二輸入與非門nand2—2的輸出與CLK分別接二輸入與非門nand2—3的兩個(gè)輸入端,二輸入與非門nand2—3的輸出接反向器inv—17,反向器inv—17的輸出為INC。INC接反向器inv—18的輸入,反向器inv—18的輸出為DEC。其中,INCSRC、DECSRC、INCDST、DECDST都是全局控制寄存器中的控制位,DMAE信號(hào)用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道,WRE信號(hào)用于切換DMA傳輸?shù)淖x寫操作。當(dāng)WRE-0時(shí),執(zhí)行讀才喿作,對(duì)源地址執(zhí)行加1、減1或不變操作;當(dāng)WRE=1時(shí),執(zhí)行寫操作,此時(shí)將對(duì)目的地址執(zhí)行加1、減1或不變操作。CNTE是與選通將傳輸個(gè)數(shù)值傳送到加/減1模塊的信號(hào)相反的信號(hào),即當(dāng)傳輸個(gè)數(shù)寄存器的值傳送到加/減1模塊中時(shí),該CNTE=0,導(dǎo)致DEC=0,進(jìn)行減1操作。在輸出信號(hào)中,SRCAE表示允許(1)或不允許(0)對(duì)源地址進(jìn)行加減運(yùn)算;DSTAE則表示允許(1)或不允許(0)對(duì)目的地址進(jìn)行加減運(yùn)算。信號(hào)DEC和INC是減1或加1的控制信號(hào),用于控制加1/減1運(yùn)算模塊,當(dāng)輸出DEC=0時(shí),執(zhí)行減1操作;當(dāng)輸出INC=0時(shí),執(zhí)行加1操作。上述是以兩個(gè)通道為例闡述了本發(fā)明的詳細(xì)實(shí)施情況,當(dāng)DMA通道為一個(gè)時(shí),實(shí)現(xiàn)將更容易,當(dāng)DMA通道為多個(gè)時(shí),根據(jù)兩個(gè)通道的詳細(xì)實(shí)施情況,根據(jù)用戶的實(shí)際需求可以對(duì)相應(yīng)的具體結(jié)構(gòu)等作適應(yīng)性的變化,只要不脫離本發(fā)明權(quán)利要求書的描述范圍,都在本發(fā)明的保護(hù)范圍內(nèi),因此,本發(fā)明是廣泛的。權(quán)利要求1、一種片上DMA結(jié)構(gòu),其特征在于包括寄存器組,在DMA工作前由CPU通過外設(shè)數(shù)據(jù)總線對(duì)寄存器組進(jìn)行初始化配置,確定DMA的工作狀態(tài)、數(shù)據(jù)的地址值和即將要傳輸數(shù)據(jù)的個(gè)數(shù);優(yōu)先級(jí)仲裁單元,當(dāng)CPU和DMA之間發(fā)生讀寫沖突時(shí),DMA/CPU優(yōu)先級(jí)仲裁根據(jù)當(dāng)前的傳輸狀態(tài)和CPU的中斷控制器傳來的信號(hào)進(jìn)行判斷,是否把控制權(quán)交給DMA,當(dāng)DMA取得優(yōu)先權(quán)進(jìn)行數(shù)據(jù)傳輸時(shí),根據(jù)DMA內(nèi)部通道的數(shù)量決定是否需要仲裁,當(dāng)DMA內(nèi)部通道為兩個(gè)或兩個(gè)以上時(shí),優(yōu)先級(jí)仲裁單元進(jìn)行仲裁,決定哪個(gè)通道進(jìn)行數(shù)據(jù)傳輸工作;DMA數(shù)據(jù)緩沖寄存器,用于緩沖存儲(chǔ)低速的數(shù)據(jù)I/O設(shè)備向DMA發(fā)送的數(shù)據(jù),使得DMA的數(shù)據(jù)傳輸速率和CPU的處理速率相匹配;中斷設(shè)置和接收單元,一是當(dāng)DMA傳輸完成時(shí)利用該單元在系統(tǒng)中斷寄存器中設(shè)置相應(yīng)中斷標(biāo)志位表示一次數(shù)據(jù)傳輸完成,CPU可根據(jù)該中斷標(biāo)志位進(jìn)行相應(yīng)處理;二是當(dāng)數(shù)據(jù)I/O設(shè)備就緒時(shí)會(huì)對(duì)系統(tǒng)發(fā)送請(qǐng)求傳輸數(shù)據(jù)的中斷請(qǐng)求信號(hào),該中斷請(qǐng)求信號(hào)由中斷設(shè)置和接收單元接收并對(duì)系統(tǒng)中斷寄存器的相應(yīng)中斷標(biāo)志位進(jìn)行設(shè)置,CPU根據(jù)該中斷標(biāo)志位進(jìn)行DMA工作方式的配置并啟動(dòng)DMA進(jìn)行數(shù)據(jù)傳輸工作;加/減1控制邏輯,通過CPU對(duì)寄存器組中的全局狀態(tài)控制寄存器的配置,加/減1控制邏輯實(shí)現(xiàn)對(duì)寄存器組中數(shù)據(jù)寄存器的修改,即實(shí)現(xiàn)加1或減1或保持不變的操作;DMA總線,包括DMA地址總線和DMA數(shù)據(jù)總線,DMA地址總線上傳送的是要讀出或?qū)懭霐?shù)據(jù)在存儲(chǔ)器中的起始地址;DMA數(shù)據(jù)總線上傳送的是要讀出或?qū)懭氲臄?shù)據(jù),它傳輸?shù)臄?shù)據(jù)經(jīng)過DMA數(shù)據(jù)緩沖寄存器中轉(zhuǎn)后傳送到內(nèi)部存儲(chǔ)器或外部存儲(chǔ)器。2、根據(jù)權(quán)利要求1所述的一種片上DMA結(jié)構(gòu),其特征在于-.當(dāng)DMA內(nèi)部通道為兩通道DMAO和DMA1時(shí),所述的中斷設(shè)置和接收單元的電路結(jié)構(gòu)為測(cè)試信號(hào)TEST1和外部中斷信號(hào)EINT經(jīng)過控制信號(hào)C1和控制信號(hào)C2控制的二選一選擇器M21—1后接反向器irw_1的輸入,inv—1的輸出接二輸入與門and2一1的輸入,二輸入與門and2—1的輸出接到二輸入或非門nor2—1的一個(gè)輸入端,二輸入或非門nor2—1的輸出作為三與非門nand3—1的一個(gè)lt入端,電路復(fù)位信號(hào)RESET接到二輸入或非門nor2—1的另一個(gè)輸入端,全局控制寄存器的最低兩位信號(hào)START[1]和START[O]接二輸入或非門nor2一2后接反向器inv—2,反向器inv—2的輸出接到三與非門nand3—1的第二個(gè)輸入端;用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道的輸入信號(hào)DMAE經(jīng)過反向器inv—3輸出到三與非門nand3—1的第三個(gè)輸入端;三與非門nand3—1的輸出接控制信號(hào)C3和控制信號(hào)C4控制的二選一選擇器M21—2的一個(gè)輸入端,測(cè)試信號(hào)TEST2接選擇器M21—2的另一個(gè)輸入端,選擇器M21—2的輸出接由inv—4和inv—5組成的鎖存器,鎖存器的一個(gè)輸出端為中斷標(biāo)志信號(hào)INT—SIG,鎖存器的另一個(gè)輸出端接系統(tǒng)時(shí)鐘CLK控制的傳輸門TG后經(jīng)過反向器inv—6連接到二輸入與門and2一1的輸入端。3、根據(jù)權(quán)利要求1所述的一種片上DMA結(jié)構(gòu),其特征在于當(dāng)DMA內(nèi)部通道為兩通道DMA0和DMA1時(shí),所述的DMA/CPU優(yōu)先級(jí)仲裁的電路結(jié)構(gòu)為DMA內(nèi)部通道DMA1的全局控制寄存器的控制位信號(hào)DMA1—PRI[1]和使能信號(hào)DMA1—EN接二輸入與門and2—2的兩個(gè)輸入端,DMA內(nèi)部通道DMA0的全局控制寄存器的控制位信號(hào)DMA0—PRI[1]和使能信號(hào)DMA0—EN接二專俞入與門and2—3的兩個(gè)輸入端;二輸入與門and2—2和二$#入與門and2_3的輸出端分別接到二輸入或非門nor2—3的兩個(gè)輸入端,二輸入或非門nor2—3的輸出經(jīng)反向器inv—8后接或門or2—2的輸入;狀態(tài)標(biāo)識(shí)信號(hào)DMA1一ST和DMA0—ST接或門or2—1的兩個(gè)輸入,或門or2_1的輸出連到三與非門nand3—2的一個(gè)輸入端,使能信號(hào)DMA—EN接三與非門nand3_2)的另一個(gè)輸入,環(huán)形仲裁信號(hào)CIR經(jīng)過反向器im^7取反后接三與非門nand3—2的第三個(gè)輸入端;三與非門nand3—2的輸出接反向器inv—9的輸入,反向器inv—9的輸出接或門or2—2的第二個(gè)輸入端;DMA內(nèi)部通道DMA1的全局控制寄存器的控制位信號(hào)DMA1—PRI[O]和使能信號(hào)DMA1—EN接與門and2—4的兩個(gè)輸入,DMA內(nèi)部通道DMAO的全局控制寄存器的控制位信號(hào)DMA0—PRI和使能信號(hào)DMAO—EN接與門and2—5的兩個(gè)輸入;與門and2—4和與門and2—5的兩個(gè)輸出接到二輸入或非門門0「2_4的輸入,或非門nor2—4的輸出接反向器inv—10;反向器inv—10的輸出和或門or2—2的輸出接二輸入與非門nand2—1的輸入,二輸入與非門nand2—1的輸出接反向器inv—11,反向器inv_11的輸出為優(yōu)先級(jí)仲裁信號(hào)DMA/CPU—PRI。4、根據(jù)權(quán)利要求1所述的一種片上DMA結(jié)構(gòu),其特征在于當(dāng)DMA內(nèi)部通道為兩通道DMAO和DMA1時(shí),所述的加/減1控制邏輯的電路結(jié)構(gòu)為全局控制寄存器中的控制位INCSRC和DECSRC接二輸入同或門xnor2—1的輸入,二輸入同或門xnor2一1的輸出經(jīng)反向器inv—12接三輸入與非門nand3—3的第一個(gè)輸入端,用于切換DMA傳輸?shù)淖x寫操作的信號(hào)WRE經(jīng)反向器inv一13后接三輸入與非門nand3—3的第二個(gè)輸入端,用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道的輸入信號(hào)DMAE接三輸入與非門nand3一3的第三個(gè)輸入端;全局控制寄存器中的控制位INCDST和DECDST接二輸入同或門xnor2—2的輸入,二輸入同或門xnor2—2的輸出經(jīng)反向器inv—14接三輸入與非門nand3—4的第一個(gè)輸入端,用于切換DMA傳輸?shù)淖x寫操作的信號(hào)WRE接三輸入與非門nand3—4的第二個(gè)輸入端,用于選擇進(jìn)行數(shù)據(jù)傳輸?shù)腄MA通道的輸入信號(hào)DMAE接三輸入與非門nand3—4的第三個(gè)輸入端;三輸入與非門nand3—3的輸出接反向器inv—15,反向器inv—15的輸出為允許或不允許對(duì)源地址寄存器進(jìn)行加減運(yùn)算的信號(hào)SRCAE;三輸入與非門nand3—4的輸出接反向器inv—16,反向器inv_16的輸出為允許或不允許對(duì)目的地址寄存器進(jìn)行加減運(yùn)算的信號(hào)DSTAE;INCSRC與三輸入與非門nand3—3的輸出接二輸入或門or2—3的輸入;全局控制寄存器中的控制位INCSRC與三輸入與非門nand3_4的輸出接二輸入或門or2—4的輸入;二輸入或門or23的輸出和二輸入或門or24的輸出接二輸入與非門nand2—2的兩個(gè)輸入端,二輸入與非門nand2—2的輸出與系統(tǒng)時(shí)鐘CLK分別接二輸入與非門nand2—3的兩個(gè)輸入端,二輸入與非門nand2—3的輸出接反向器inv—17,反向器inv—17的輸出為加1操作的控制信號(hào)INC;力口1操作的控制信號(hào)INC接反向器inv—18的輸入,反向器inv—18的輸出為減1操作的控制信號(hào)DEC。5、權(quán)利要求1所述的一種片上DMA結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征在于DMA內(nèi)部通道至少為一個(gè),當(dāng)DMA內(nèi)部通道為兩個(gè)或兩個(gè)以上時(shí),每個(gè)通道的實(shí)現(xiàn)方法相同,所述DMA內(nèi)部通道的實(shí)現(xiàn)方法如下(1)在DMA進(jìn)行數(shù)據(jù)傳輸開始前,CPU先通過外設(shè)數(shù)據(jù)總線對(duì)DMA通道內(nèi)部的寄存器組進(jìn)行初始化配置,即外設(shè)地址總線上的值經(jīng)地址譯碼器的譯碼產(chǎn)生寫使能信號(hào),用于對(duì)DMA寄存器組中的一個(gè)寄存器進(jìn)行寫操作,外設(shè)數(shù)據(jù)總線上的配置凄t據(jù)在寫使能信號(hào)有效時(shí)寫入到相應(yīng)的寄存器中,一個(gè)寄存器的配置完成,CPU要DMA寄存器組中的每個(gè)寄存器進(jìn)行配置后,即完成整個(gè)DMA的初始化配置;(2)根據(jù)CPU對(duì)通道內(nèi)部的寄存器組中的全局狀態(tài)控制寄存器的初始化配置,力口/減1控制邏輯對(duì)通道內(nèi)的力口/減1模塊進(jìn)行控制,實(shí)現(xiàn)對(duì)寄存器組中的數(shù)據(jù)寄存器進(jìn)行加1或減1或保持不變的操作;(3)根據(jù)優(yōu)先級(jí)仲裁單元、中斷接收和設(shè)置單元的判斷結(jié)果控制選通器將哪路數(shù)據(jù)傳輸?shù)紻MA地址總線上,進(jìn)行數(shù)據(jù)讀取,當(dāng)數(shù)據(jù)地址已經(jīng)上了DMA地址總線后,數(shù)據(jù)會(huì)緊隨其后從存儲(chǔ)器搬運(yùn)到相應(yīng)通道內(nèi)部的數(shù)據(jù)緩沖寄存器中,再根據(jù)優(yōu)先級(jí)仲裁單元的仲裁結(jié)果來選擇將哪條通道傳送的數(shù)據(jù)經(jīng)過選通器放到DMA數(shù)據(jù)總線上;(4)通過比較器的輸出來判斷傳輸個(gè)數(shù)寄存器的值是否為0,即是否傳輸完畢,當(dāng)傳輸完畢時(shí),比較器會(huì)觸發(fā)中斷接收和設(shè)置單元產(chǎn)生中斷信號(hào)給CPU,告知數(shù)據(jù)傳輸結(jié)束,交還總線使用權(quán),至此,一次DMA數(shù)據(jù)傳送過程完成。6、根據(jù)權(quán)利要求5所述的一種片上DMA實(shí)現(xiàn)方法,其特征在于當(dāng)所DMA內(nèi)部通道為兩個(gè)通道DMA0和DMA1時(shí),其中所述通道DMAO的實(shí)現(xiàn)方法如下:(1)在DMA進(jìn)行數(shù)據(jù)傳輸開始前,CPU通過外設(shè)數(shù)據(jù)總線對(duì)通道DMAO內(nèi)部的寄存器組進(jìn)行初始化配置;CPU通過外設(shè)地址總線經(jīng)地址譯碼器的譯碼產(chǎn)生控制配置通道DMAO寄存器組的信號(hào),CPU控制并選擇通過第一選通器的寄存器輸入到DMAO力口/減1模塊的信號(hào);初始化配置,DMAO力口/減1控制邏輯對(duì)通道內(nèi)的DMAO力口/減1模塊進(jìn)行控制,對(duì)傳輸計(jì)數(shù)寄存器、目的地址寄存器和源地址寄存器進(jìn)行加1或減1或保持不變的4喿作;(3)根據(jù)優(yōu)先級(jí)仲裁單元、DMAO中斷設(shè)置模塊和DMAO狀態(tài)位讀寫模塊的判斷結(jié)果控制第三選通器將哪路數(shù)據(jù)傳輸?shù)紻MA地址總線上,進(jìn)行數(shù)據(jù)讀取,當(dāng)數(shù)據(jù)地址已經(jīng)上了DMA地址總線后,數(shù)據(jù)會(huì)緊隨其后從存儲(chǔ)器搬運(yùn)到DMAO內(nèi)部的數(shù)據(jù)緩沖寄存器中,再根據(jù)優(yōu)先級(jí)仲裁單元的仲裁結(jié)果來選擇將通道傳送的凄史據(jù)經(jīng)過第四選通器傳送到DMA數(shù)據(jù)總線上;(4)通過DMAO比較器的輸出來判斷傳輸個(gè)數(shù)寄存器的值是否為0,即是否傳輸完畢,當(dāng)傳輸完畢時(shí),DMAO比較器會(huì)觸發(fā)DMAO中斷設(shè)置模塊產(chǎn)生DMAO中斷信號(hào)DINTO給CPU,告知數(shù)據(jù)傳輸結(jié)束,交還總線使用權(quán),至此,一次DMA數(shù)據(jù)傳送過程完成。7、根據(jù)權(quán)利要求6所述的一種片上DMA實(shí)現(xiàn)方法,其特征在于包括所述的DMA通過兩個(gè)通道DMA0和DMA1之間的優(yōu)先級(jí)仲裁決定由哪個(gè)通道進(jìn)行數(shù)據(jù)傳輸,優(yōu)先級(jí)仲裁的實(shí)現(xiàn)方法有兩種固定優(yōu)先級(jí)和輪轉(zhuǎn)優(yōu)先級(jí)。固定優(yōu)先級(jí)是默認(rèn)DMAO或DMA1具有更高優(yōu)先級(jí),而輪轉(zhuǎn)優(yōu)先級(jí)是根據(jù)最近服務(wù)的通道優(yōu)先級(jí)降到最低的原則進(jìn)行仲裁,這是根據(jù)全局狀態(tài)控制寄存器中的相應(yīng)位進(jìn)行設(shè)定的。全文摘要本發(fā)明公開了一種片上DMA結(jié)構(gòu)及其實(shí)現(xiàn)方法,片上DMA結(jié)構(gòu)包括DMA寄存器組,優(yōu)先級(jí)仲裁單元,DMA數(shù)據(jù)緩沖寄存器,中斷設(shè)置和接收單元,加/減1控制邏輯,片上DMA用于存儲(chǔ)器與存儲(chǔ)器之間數(shù)據(jù)傳輸?shù)耐ǖ罃?shù)據(jù)傳輸?shù)膶挾葹?2位,由于有其獨(dú)立的內(nèi)部地址和數(shù)據(jù)總線支持,所以可以實(shí)現(xiàn)CPU與DMA控制器的操作并發(fā)進(jìn)行,且DMA傳輸速率與CPU相匹配;獨(dú)立的地址加/減1模塊控制源與目的地址寄存器和傳輸個(gè)數(shù)的自動(dòng)增減;DMA內(nèi)部有兩種優(yōu)先級(jí)判斷模式,該DMA實(shí)現(xiàn)方法可廣泛地應(yīng)用于高性能處理器的設(shè)計(jì)中,結(jié)構(gòu)簡(jiǎn)單、可靠。文檔編號(hào)G06F13/30GK101127018SQ20071017549公開日2008年2月20日申請(qǐng)日期2007年9月29日優(yōu)先權(quán)日2007年9月29日發(fā)明者寧趙,車德亮申請(qǐng)人:北京時(shí)代民芯科技有限公司;中國(guó)航天時(shí)代電子公司第七七二研究所