專(zhuān)利名稱(chēng):一種直接存儲(chǔ)器訪(fǎng)問(wèn)控制器及利用其實(shí)現(xiàn)數(shù)據(jù)傳送的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)器訪(fǎng)問(wèn)技術(shù),具體地說(shuō),涉及一種具有地址卷繞功能(WRAP)的直接存儲(chǔ)器訪(fǎng)問(wèn)(DMA)控制器以及利用該控制器實(shí)現(xiàn)源地址和目的地址間數(shù)據(jù)傳送的方法。
背景技術(shù):
DMA可實(shí)現(xiàn)存儲(chǔ)空間的不同區(qū)域之間數(shù)據(jù)的傳送交換,其存儲(chǔ)訪(fǎng)問(wèn)過(guò)程中無(wú)需CPU的介入,由DMA控制器完成所有的控制。
圖1示出了現(xiàn)有的DMA控制器的結(jié)構(gòu)圖。其中,總線(xiàn)從(Slave)接口單元101與CPU相連,CPU通過(guò)該接口配置DMA的控制邏輯和寄存器組單元103的控制參數(shù),實(shí)現(xiàn)對(duì)DMA各種工作模式的控制功能;DMA請(qǐng)求和響應(yīng)接口單元102用來(lái)處理內(nèi)存到外設(shè)、外設(shè)到內(nèi)存和外設(shè)到外設(shè)依次通過(guò)總線(xiàn)Master接口單元105、信道邏輯和寄存器組單元104傳送的或直接通過(guò)總線(xiàn)Master接口單元105傳送的DMA請(qǐng)求和應(yīng)答信號(hào),并與CPU交互;信道邏輯和寄存器組單元104通過(guò)數(shù)據(jù)線(xiàn)和地址線(xiàn)與總線(xiàn)Master接口單元105相連,并由CPU通過(guò)總線(xiàn)Slave接口單元101來(lái)配置,實(shí)現(xiàn)對(duì)DMA的各個(gè)通道的參數(shù)設(shè)置,各個(gè)通道彼此獨(dú)立,分別具有一組專(zhuān)用寄存器和控制邏輯,允許進(jìn)行不同的訪(fǎng)問(wèn)控制和不同內(nèi)容的傳輸;總線(xiàn)Master接口單元105用于與外設(shè)和/或內(nèi)存相連,通過(guò)數(shù)據(jù)線(xiàn)實(shí)現(xiàn)對(duì)掛接在此地址總線(xiàn)上的存儲(chǔ)空間的數(shù)據(jù)傳送;中斷請(qǐng)求邏輯單元106用于當(dāng)DMA控制器中的通道邏輯有某通道傳輸結(jié)束或失敗時(shí),通知CPU查詢(xún)信道邏輯和寄存器組單元中的相關(guān)寄存器實(shí)現(xiàn)相應(yīng)的控制,從而完成DMA控制器和CPU的信息和數(shù)據(jù)的交互。
如圖2所示,圖2為信道邏輯和寄存器組單元104中一通道的的結(jié)構(gòu)圖,包括通過(guò)數(shù)據(jù)線(xiàn)與總線(xiàn)Master接口單元105相連以實(shí)現(xiàn)輸入數(shù)據(jù)的緩沖的先進(jìn)先出(FIFO)緩沖區(qū)201;源地址控制邏輯單元203,受通道控制邏輯單元202輸出的源地址控制信號(hào)的控制以控制源地址,例如8/16/32比特的地址訪(fǎng)問(wèn),一次訪(fǎng)問(wèn)后地址是否增長(zhǎng)等,讀取的數(shù)量等,將從源地址讀取的數(shù)據(jù)送到DMA通道,并緩存至先進(jìn)先出緩沖區(qū)201;目的地址控制邏輯單元204,受通道控制邏輯單元202輸出的目的地址控制信號(hào)控制以控制目的地址,將緩存在先進(jìn)先出緩沖區(qū)201的數(shù)據(jù)通過(guò)DMA通道、總線(xiàn)Master接口單元105發(fā)送數(shù)據(jù)到目的地址;通道控制邏輯單元202還向先進(jìn)先出緩沖區(qū)201輸出先進(jìn)先出地址控制信號(hào),例如FIFO的深度設(shè)定等功能,且還向中斷邏輯請(qǐng)求的單元106輸出中斷信號(hào)。
由DMA實(shí)現(xiàn)的源地址和目的地址間的數(shù)據(jù)傳送,其源地址和目的地址可以是內(nèi)存或外設(shè)。在對(duì)內(nèi)存的源或目的地址訪(fǎng)問(wèn)時(shí),每次傳送單字節(jié)或塊數(shù)據(jù)前,CPU需對(duì)DMA控制器進(jìn)行初始化,以確定當(dāng)前傳送的通道選擇、數(shù)據(jù)傳送模式、存儲(chǔ)器區(qū)域的首地址、傳送的總字節(jié)數(shù)等。DMA控制器對(duì)外設(shè)的訪(fǎng)問(wèn)地址是固定的,數(shù)據(jù)傳送的終結(jié)依靠DMA控制器中傳送字節(jié)寄存器控制;對(duì)內(nèi)存的訪(fǎng)問(wèn)地址是遞增或遞減的,數(shù)據(jù)傳送的終結(jié)依靠外界的信號(hào)控制。
如圖3所示,圖3為以源地址為外設(shè)、目的地址為內(nèi)存為例說(shuō)明由DMA實(shí)現(xiàn)的源地址和目的地址間的數(shù)據(jù)傳送的示意圖;其中目的地址包括第一存儲(chǔ)空間目的地址和第二存儲(chǔ)空間目的地址,外設(shè)的內(nèi)部通常包含有異步先進(jìn)先出(FIFO)緩存器;實(shí)線(xiàn)為數(shù)據(jù)流,虛線(xiàn)為控制流。具體的傳送過(guò)程如下a)當(dāng)DMA控制器中的DMA請(qǐng)求和響應(yīng)接口單元102接收到來(lái)自外設(shè)請(qǐng)求/響應(yīng)的信號(hào)時(shí),DMA請(qǐng)求和響應(yīng)接口單元102將該信號(hào)送至CPU,CPU在DMA控制器的中斷服務(wù)程序中初始化即配置傳送的目的地址例如第一存儲(chǔ)空間目的地址、源地址以及相應(yīng)的控制參數(shù),例如,當(dāng)前傳送的通道選擇、數(shù)據(jù)傳送模式、傳送的總字節(jié)數(shù)等;初始化完成后,DMA控制器成為主控者,在通道邏輯和寄存器組單元104的控制下,外設(shè)的數(shù)據(jù)通過(guò)總線(xiàn)Master接口單元105送至內(nèi)存例如第一存儲(chǔ)空間;b)當(dāng)外設(shè)來(lái)的數(shù)據(jù)已傳送完畢且需要將數(shù)據(jù)發(fā)送至另一指定的內(nèi)存空間例如第二存儲(chǔ)空間時(shí),DMA控制器終結(jié)DMA傳送;c)當(dāng)DMA控制器中的DMA請(qǐng)求和響應(yīng)接口單元102再次接收到來(lái)自外設(shè)請(qǐng)求/響應(yīng)的信號(hào)時(shí),DMA請(qǐng)求和響應(yīng)接口單元102將該信號(hào)送至CPU,CPU在DMA控制器的中斷服務(wù)程序中重新配置傳送數(shù)據(jù)的目的地址例如第二存儲(chǔ)空間目的地址、源地址、以及相應(yīng)的控制參數(shù);初始化完成后,在通道邏輯和寄存器組單元104的控制下,外設(shè)的數(shù)據(jù)通過(guò)總線(xiàn)Master接口單元105送至內(nèi)存例如第二存儲(chǔ)空間目的地址,當(dāng)外設(shè)來(lái)的數(shù)據(jù)已傳送完畢且需要將數(shù)據(jù)發(fā)送至另一指定的內(nèi)存空間例如第一存儲(chǔ)空間時(shí),DMA控制器終結(jié)DMA傳送;重復(fù)執(zhí)行步驟a至c,直至傳送完外設(shè)中所需傳送的數(shù)據(jù)。
在DMA控制器將數(shù)據(jù)從外設(shè)傳送至第二存儲(chǔ)空間的同時(shí),在CPU可以處理存儲(chǔ)至第一存儲(chǔ)空間的數(shù)據(jù),即,DMA控制器傳送數(shù)據(jù)與CPU處理已存儲(chǔ)于目的地址的數(shù)據(jù)是并行操作的。
從上述數(shù)據(jù)傳送過(guò)程可見(jiàn),為了提高各進(jìn)程的并發(fā)性,通常需要兩塊單獨(dú)的內(nèi)存地址,這導(dǎo)致了每次內(nèi)存地址切換時(shí)都需要CPU在DMA的中斷服務(wù)程序中配置傳送地址。如果各內(nèi)存地址太小,則會(huì)頻繁地打斷CPU,降低CPU的效率,增加了DMA的響應(yīng)時(shí)間;如果各內(nèi)存地址太大,則增大了信號(hào)的處理延遲,降低了系統(tǒng)的反應(yīng)速度,浪費(fèi)了內(nèi)存的空間,增加了芯片的面積和成本。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種DMA控制器,以減少CPU對(duì)DMA控制器的頻繁干預(yù)。本發(fā)明的另一目的在于提供利用該DMA控制器實(shí)現(xiàn)數(shù)據(jù)傳送的方法,以解決現(xiàn)有的DMA控制器在數(shù)據(jù)傳送過(guò)程中需要CPU頻繁地干預(yù)DMA控制器的問(wèn)題。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種直接存儲(chǔ)器訪(fǎng)問(wèn)DMA控制器,包括總線(xiàn)從接口單元,控制邏輯和寄存器組單元,總線(xiàn)主接口單元、直接存儲(chǔ)訪(fǎng)問(wèn)請(qǐng)求和響應(yīng)接口單元,與總線(xiàn)主接口單元通過(guò)數(shù)據(jù)線(xiàn)和地址線(xiàn)相連的通道邏輯和寄存器組單元,以及中斷請(qǐng)求邏輯單元;其中,通道邏輯和寄存器組單元包括,通過(guò)所述地址線(xiàn)與總線(xiàn)主接口單元相連的通道控制邏輯單元,受通道控制邏輯單元輸出的先進(jìn)先出地址信號(hào)的控制、通過(guò)所述數(shù)據(jù)線(xiàn)將來(lái)自總線(xiàn)主接口單元的數(shù)據(jù)緩存的先進(jìn)先出緩沖區(qū),受所述通道控制邏輯單元輸出的地址信號(hào)控制、向總線(xiàn)主接口單元提供讀寫(xiě)地址的地址控制邏輯單元,所述通道邏輯和寄存器組單元還包括,分別輸出地址卷繞邊界和地址卷繞使能的卷繞控制寄存器,和地址卷繞邏輯控制單元;該地址卷繞邏輯控制單元將卷繞控制寄存器輸出的地址卷繞邊界在地址卷繞使能控制下轉(zhuǎn)換為卷繞末地址,卷繞末地址與所述地址線(xiàn)的當(dāng)前地址比較,當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出用于置位當(dāng)前地址為卷繞首地址的控制信號(hào)至地址控制邏輯單元。
較佳地,所述地址卷繞邏輯控制單元包括,卷繞末地址轉(zhuǎn)換電路,將卷繞控制寄存器輸出的地址卷繞邊界轉(zhuǎn)換為卷繞末地址過(guò)渡信號(hào),該卷繞末地址過(guò)渡信號(hào)與地址卷繞使能相與后輸出;第一比較電路,將卷繞末地址轉(zhuǎn)換電路輸出的與當(dāng)前地址比較,當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出用于置位當(dāng)前地址為卷繞首地址的控制信號(hào)。
較佳地,所述地址卷繞邏輯控制單元還將卷繞控制寄存器輸出的地址卷繞邊界轉(zhuǎn)換為卷繞中間地址,所述卷繞中間地址與當(dāng)前地址比較,當(dāng)卷繞中間地址與當(dāng)前地址相等且當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出卷繞中斷信號(hào)至中斷請(qǐng)求邏輯單元。
較佳地,所述地址卷繞邏輯控制單元還包括,卷繞中間地址轉(zhuǎn)換電路,將卷繞控制寄存器輸出的地址卷繞邊界在地址卷繞使能控制下轉(zhuǎn)換為卷繞中間地址過(guò)渡信號(hào),該卷繞中間地址過(guò)渡信號(hào)與地址卷繞使能相與后輸出;第二比較電路,將卷繞中間地址電路輸出的所述卷繞中間地址與當(dāng)前地址比較,當(dāng)卷繞中間地址與當(dāng)前地址相等時(shí)輸出第一高電壓指示;第三比較電路,將卷繞末地址輸出的所述卷繞末地址與當(dāng)前地址比較,當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出第二高電壓指示;卷繞中斷產(chǎn)生電路,將第一高電壓指示與第二高電壓指示進(jìn)行或運(yùn)算,輸出卷繞中斷信號(hào)。
較佳地,所述卷繞控制寄存器輸出的地址卷繞邊界和地址卷繞使能分別為源地址卷繞邊界和源地址卷繞使能,所述地址卷繞邏輯控制單元為源地址卷繞邏輯控制單元,所述地址控制邏輯單元為受通道控制邏輯單元輸出的源地址信號(hào)控制向總線(xiàn)主接口單元提供源地址的源地址控制邏輯單元。
較佳地,所述卷繞控制寄存器輸出的地址卷繞邊界和地址卷繞使能分別為目的地址卷繞邊界和目的地址卷繞使能,所述地址卷繞邏輯控制單元為目的地址卷繞邏輯控制單元,所述地址控制邏輯單元為受通道控制邏輯單元輸出的目的地址信號(hào)控制向總線(xiàn)主接口單元提供目的地址的目的地址控制邏輯單元。
較佳地,所述卷繞控制寄存器輸出的地址卷繞邊界分別為源地址卷繞邊界和目的地址卷繞邊界,輸出的地址卷繞使能分別為源地址卷繞使能和目的地址卷繞使能,所述地址卷繞邏輯控制單元包括源地址卷繞邏輯控制單元和目的地址卷繞邏輯控制單元,所述地址控制邏輯單元包括,受通道控制邏輯單元輸出的源地址信號(hào)控制向總線(xiàn)主接口單元提供源地址的源地址控制邏輯單元,和,受通道控制邏輯單元輸出的目的地址信號(hào)控制向總線(xiàn)主接口單元提供目的地址的目的地址控制邏輯單元。
較佳地,所述卷繞中間地址值為地址卷繞長(zhǎng)度的一半。
較佳地,卷繞控制寄存器,和地址卷繞邏輯控制單元對(duì)應(yīng)一個(gè)DMA通道。
一種利用權(quán)利要求1所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器實(shí)現(xiàn)數(shù)據(jù)傳送的方法,包括,A)由CPU配置直接存儲(chǔ)器訪(fǎng)問(wèn)控制器的地址卷繞邊界和地址卷繞使能,CPU判斷是否有直接存儲(chǔ)訪(fǎng)問(wèn)請(qǐng)求,如果是,則執(zhí)行步驟B;否則等待;B)判斷地址卷繞使能是否有效,如果有效,則執(zhí)行步驟C;如果地址卷繞使能無(wú)效,則在每次直接存儲(chǔ)器訪(fǎng)問(wèn)控制器傳送數(shù)據(jù)之前,CPU執(zhí)行中斷,并在中斷程序中重新配置直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,直至待傳送的數(shù)據(jù)傳送完畢;C)直接存儲(chǔ)器訪(fǎng)問(wèn)控制器傳送數(shù)據(jù),并判斷當(dāng)前地址是否等于直接存儲(chǔ)器訪(fǎng)問(wèn)控制器由卷繞邊界轉(zhuǎn)換得到的卷繞末地址,如果是,則直接存儲(chǔ)器訪(fǎng)問(wèn)控制器將當(dāng)前地址置為卷繞首地址,返回步驟C,直至待傳送的數(shù)據(jù)傳送完畢,否則直接返回C,直至待傳送的數(shù)據(jù)傳送完畢。
較佳地,所述步驟C進(jìn)一步包括,判斷當(dāng)前地址是否等于直接存儲(chǔ)器訪(fǎng)問(wèn)控制器由卷繞邊界轉(zhuǎn)換得到的卷繞中間地址,如果當(dāng)前地址等于卷繞中間地址或者當(dāng)前地址等于卷繞末地址,則直接存儲(chǔ)器訪(fǎng)問(wèn)控制器向CPU輸出中斷信號(hào)。
較佳地,其特征在于,所述地址卷繞邊界和地址卷繞使能分別為源地址卷繞邊界和源地址卷繞使能,或者為目的地址卷繞邊界和目的地址卷繞使能,或者所述地址卷繞邊界包括源地址卷繞邊界和目的地址卷繞邊界,所述地址卷繞使能包括源地址卷繞使能和目的地址卷繞使能。
本發(fā)明通過(guò)在現(xiàn)有的DMA控制器的基礎(chǔ)上,增加了支持地址卷繞(WRAP)功能的硬件邏輯電路,使得傳統(tǒng)DMA控制器成為支持WRAP功能的DMA控制器,解決了現(xiàn)有的DMA控制器每次讀或?qū)憙?nèi)存中數(shù)據(jù)時(shí)都需要CPU干預(yù)重新配置DMA控制器參數(shù)的問(wèn)題,本發(fā)明的DMA控制器對(duì)于地址是內(nèi)存的數(shù)據(jù)訪(fǎng)問(wèn),只需配置一次DMA控制器,DMA控制器便可以持續(xù)地工作到數(shù)據(jù)傳送結(jié)束,減少了CPU的干預(yù),從而提高了系統(tǒng)的效率,簡(jiǎn)化了驅(qū)動(dòng)DMA控制器的軟件設(shè)計(jì),并且減少了數(shù)據(jù)傳送時(shí)緩存的存儲(chǔ)空間,同時(shí)由于卷繞中斷信號(hào)的產(chǎn)生,使得CPU可以及時(shí)地處理已傳送的數(shù)據(jù),提高了系統(tǒng)的并發(fā)性。
圖1示出了現(xiàn)有的DMA控制器的結(jié)構(gòu)圖;圖2為信道邏輯和寄存器組單元104中一通道的結(jié)構(gòu)圖;圖3為以源地址為外設(shè)、目的地址為內(nèi)存為例說(shuō)明由DMA實(shí)現(xiàn)的源地址和目的地址間的數(shù)據(jù)傳送的示意圖;圖4為本發(fā)明通道邏輯和寄存器組單元的結(jié)構(gòu)圖;圖5為本發(fā)明在傳統(tǒng)的DMA控制器中為一個(gè)DMA通道增加的用于實(shí)現(xiàn)源地址卷繞的硬件邏輯電路圖;圖6為卷繞控制寄存器各控制位信息示意圖;圖7為應(yīng)用本發(fā)明的DMA控制器實(shí)現(xiàn)數(shù)據(jù)的傳送的流程圖。
具體實(shí)施例方式
本發(fā)明在現(xiàn)有的傳統(tǒng)DMA控制器內(nèi)增加了支持地址卷繞(WRAP)功能的硬件邏輯電路,使得傳統(tǒng)DMA控制器成為支持WRAP功能的DMA控制器,簡(jiǎn)稱(chēng)為地址卷繞DMA控制器(WDMA),從而DMA控制器可以以地址卷繞的方式進(jìn)行數(shù)據(jù)的傳送,即,當(dāng)訪(fǎng)問(wèn)的當(dāng)前地址到達(dá)地址邊界時(shí),要訪(fǎng)問(wèn)的地址以設(shè)定的長(zhǎng)度繞回,繞回的長(zhǎng)度一般為2N,N為正整數(shù)。例如,以16個(gè)字節(jié)作為地址卷繞的邊界。假如當(dāng)前的訪(fǎng)問(wèn)地址是0x80000008,則CPU會(huì)依次訪(fǎng)問(wèn)下列地址
0x80000008-0x8000000f,0x80000000-0x80000007由于需要訪(fǎng)問(wèn)的地址空間是16字節(jié),在地址的邊界處(此時(shí)已讀取了8字節(jié)地址的內(nèi)容),即在0x8000000f處,下次地址訪(fǎng)問(wèn)時(shí),地址會(huì)從0x80000000開(kāi)始,再讀取剩余的8字節(jié)地址的內(nèi)容,直到0x80000007為止。DMA控制器以地址卷繞的方式進(jìn)行數(shù)據(jù)的傳送,這時(shí)一方面CPU可以使用最新的Cache中的內(nèi)容,同時(shí)硬件會(huì)繼續(xù)后面的Cache內(nèi)容的更新,并發(fā)的硬件工作提高了系統(tǒng)的整體性能。
如圖4所示,圖4為本發(fā)明通道邏輯和寄存器組單元的結(jié)構(gòu)圖。與現(xiàn)有的通道邏輯和寄存器組單元不同的是,通道控制邏輯單元202在當(dāng)前地址到達(dá)卷繞邊界時(shí)向地址控制邏輯單元輸出控制信號(hào),用于設(shè)置當(dāng)前地址為卷繞首地址,進(jìn)一步的,還可向DMA控制器中的中斷請(qǐng)求邏輯單元106輸出卷繞中斷信號(hào),以通知CPU傳送的數(shù)據(jù)中目前已有部分可以進(jìn)行刷新等處理。這里,既可以?xún)H是源地址卷繞,也可以?xún)H是目的地址卷繞,還可以是同時(shí)對(duì)源地址和目的地址卷繞。
如圖5所示,圖5為本發(fā)明在傳統(tǒng)的DMA控制器中為一個(gè)DMA通道增加的用于實(shí)現(xiàn)源地址卷繞的硬件邏輯電路圖。包括卷繞控制寄存器以及源地址卷繞邏輯控制單元,其中,卷繞控制寄存器對(duì)應(yīng)一DMA通道的控制屬性,各控制位信息如圖6所示第0位為源地址卷繞使能位,第1位為目的地址卷繞使能位,缺省值為0,1表示使能有效,0表示無(wú)效使能;第2位至第5位為源地址卷繞邊界,該信息在源地址卷繞使能位=1時(shí)有意義,第6位至第9位為目的地址卷繞邊界,該信息在目的地址卷繞使能位=1時(shí)有意義,上述源地址卷繞邊界和目的地址卷繞邊界的缺省值均為0001,且0000表示8字節(jié)WRAP,0001表示16字節(jié)WRAP,0010表示32字節(jié)WRAP,0011表示64字節(jié)WRAP,0100表示128字節(jié)WRAP,0101-1111預(yù)留;第10位至第31位為預(yù)留比特位。
源地址卷繞邏輯控制單元包括由卷繞末地址轉(zhuǎn)換電路構(gòu)成的轉(zhuǎn)換單元,第一比較電路、第二比較電路、第三比較電路以及卷繞中斷產(chǎn)生電路。較佳地,轉(zhuǎn)換單元還可包括卷繞中間地址轉(zhuǎn)換電路,卷繞末地址轉(zhuǎn)換電路和卷繞中間地址轉(zhuǎn)換電路的轉(zhuǎn)換部分可以共用一個(gè)轉(zhuǎn)換邏輯單元(如圖5所示),或者分別用各自的轉(zhuǎn)換邏輯單元。圖5中,卷繞控制寄存器輸出的源地址卷繞邊界送至轉(zhuǎn)換邏輯單元,該單元分別輸出卷繞末地址過(guò)渡信號(hào)和卷繞中間地址過(guò)渡信號(hào),其中,卷繞末地址過(guò)渡信號(hào)和源地址卷繞使能信號(hào)分別輸入至第一與門(mén),該與門(mén)輸出卷繞末地址;卷繞中間地址過(guò)渡信號(hào)和源地址卷繞使能信號(hào)分別輸入至第二與門(mén),該與門(mén)輸出卷繞中間地址;較佳地,卷繞中間地址的值為卷繞半地址,即,若卷繞地址為2N,N為正整數(shù),表示低位地址的位數(shù)(比特?cái)?shù)),則卷繞半地址為2N-1-1。
第一與門(mén)輸出的卷繞末地址和當(dāng)前地址分別輸入第一比較電路,當(dāng)卷繞末地址和當(dāng)前地址相等時(shí)該比較電路輸出一用于置位當(dāng)前地址等于卷繞首地址的控制信號(hào),較佳地,設(shè)置卷繞首地址為0地址,則該控制信號(hào)為清零信號(hào)。第一與門(mén)輸出的卷繞末地址和當(dāng)前地址還分別輸入第三比較電路,當(dāng)卷繞末地址和當(dāng)前地址相等時(shí)該比較電路輸出第一高電平;第二與門(mén)輸出的卷繞中間地址和當(dāng)前地址分別輸入第二比較電路,當(dāng)卷繞中間地址和當(dāng)前地址相等時(shí)該比較電路輸出第二高電平;卷繞中斷產(chǎn)生電路為或門(mén)電路,第一高電平和第二高電平分別輸入或門(mén)電路,或門(mén)電路輸出的高電平作為卷繞中斷信號(hào)送至主動(dòng)請(qǐng)求邏輯單元106。
目的地址卷繞邏輯控制單元與源地址卷繞邏輯控制單元結(jié)構(gòu)相同,所不同的是,目的地址卷繞邏輯控制單元的輸入與卷繞控制寄存器輸出的目的地址卷繞邊界信號(hào)、目的地址卷繞使能信號(hào)相連。
以卷繞邊界為128(128=27,N=7)、卷繞首地址為0x00、卷繞中間地址為卷繞半地址為例說(shuō)明上述硬件電路的工作原理。當(dāng)卷繞邊界為128卷繞首地址為0x00時(shí),則卷繞半地址為0x3f,卷繞末地址為0x7f,假設(shè)訪(fǎng)問(wèn)的起始地址為0x40。當(dāng)DMA開(kāi)始時(shí),訪(fǎng)問(wèn)地址的順序0x40-0x7f,為當(dāng)訪(fǎng)問(wèn)到0x7f時(shí),第一比較電路輸出控制信號(hào),將當(dāng)前地址更新為0x00,同時(shí)第三比較電路輸出第二高電平,通過(guò)或門(mén)電路輸出中斷信號(hào),以通知CPU可以對(duì)0x40-0x7f的數(shù)據(jù)進(jìn)行處理;在CPU處理0x40-0x7f數(shù)據(jù)的同時(shí),DMA控制器訪(fǎng)問(wèn)的地址順序?yàn)?x00-0x3f;當(dāng)訪(fǎng)問(wèn)到0x3f時(shí),第三比較電路輸出第二高電平,通過(guò)或門(mén)電路輸出中斷信號(hào),以通知CPU可以對(duì)0x00-0x3f的數(shù)據(jù)進(jìn)行處理,DMA控制器訪(fǎng)問(wèn)的地址順序?yàn)?x40-0x7f。由于地址卷繞的硬件邏輯電路的控制,CPU只需一次性的配置DMA控制器,DMA控制器就可以一直工作到數(shù)據(jù)搬移結(jié)束,較少了CPU的干預(yù),從而提供了系統(tǒng)的效率,并且簡(jiǎn)化了DMA控制器驅(qū)動(dòng)軟件的設(shè)計(jì)。
參見(jiàn)圖7所示,圖7為應(yīng)用本發(fā)明的DMA控制器實(shí)現(xiàn)數(shù)據(jù)的傳送的流程圖。以下以源地址和目的地址均為內(nèi)存、傳送突發(fā)數(shù)據(jù)為例說(shuō)明應(yīng)用本發(fā)明的DMA控制器實(shí)現(xiàn)數(shù)據(jù)的傳送方法。
首先,CPU初始化DMA控制器,即配置內(nèi)存的源地址卷繞界和源地址卷繞使能、卷繞首源地址、卷繞首目的地址、目的地址卷繞界和目的地址卷繞使能,并配置好工作模式以及起始源地址、起始目的地址、突發(fā)傳送長(zhǎng)度、待傳送數(shù)據(jù)總長(zhǎng)度等相關(guān)的參數(shù);假設(shè)起始源地址為0x800000040,起始目的地址為0x90000040,源地址卷繞界和目的地址卷繞界均為128字節(jié),突發(fā)傳送長(zhǎng)度為64字節(jié),總共的傳輸長(zhǎng)度為32×2×32字節(jié);接著,CPU等待DMA請(qǐng)求,當(dāng)收到DMA請(qǐng)求時(shí),CPU發(fā)送應(yīng)答消息給DMA控制器,DMA控制器成為主控者,判斷卷繞控制寄存器的值,當(dāng)DMA控制器具有地址卷繞功能時(shí),則訪(fǎng)問(wèn)內(nèi)存的地址變化按以地址卷繞的方式變化,直至所需傳送的數(shù)據(jù)全部傳送完畢,否則,按照現(xiàn)有技術(shù)的方式訪(fǎng)問(wèn)內(nèi)存,即,每次在傳送一次突發(fā)數(shù)據(jù)前,CPU對(duì)DMA控制器進(jìn)行初始化,然后再訪(fǎng)問(wèn)內(nèi)存,直至所需傳送的數(shù)據(jù)全部傳送完畢;在DMA控制器成為主控者進(jìn)行當(dāng)前突發(fā)傳送的同時(shí),當(dāng)CPU接收到DMA控制器輸出的卷繞中斷信號(hào)時(shí),CPU可以對(duì)上一次突發(fā)傳送的數(shù)據(jù)進(jìn)行更新處理,以提高系統(tǒng)各進(jìn)程的并發(fā)性。
上述以地址卷繞的方式訪(fǎng)問(wèn)內(nèi)存的過(guò)程是這樣的第一次突發(fā)傳送時(shí),DMA控制器將源地址的范圍為0x80000040-0x8000007f的數(shù)據(jù)傳送至目的地址范圍為0x90000040-0x9000007f的存儲(chǔ)空間,當(dāng)當(dāng)前訪(fǎng)問(wèn)源地址到達(dá)源地址卷繞末地址時(shí),DMA控制器輸出將當(dāng)前源地址更新為其卷繞首地址的控制信號(hào),較佳地,置源地址卷繞首地址為0x80000000,則輸出的控制信號(hào)為清零信號(hào),類(lèi)似地,當(dāng)當(dāng)前訪(fǎng)問(wèn)目的地址到達(dá)目的地址卷繞末地址時(shí),DMA控制器輸出將當(dāng)前目的地址更新為其卷繞首地址的控制信號(hào),較佳地,置目的地址卷繞首地址為0x90000000,則輸出的控制信號(hào)為清零信號(hào);第二次突發(fā)傳送時(shí),DMA控制器將源地址的范圍為0x80000000-0x8000003f的數(shù)據(jù)傳送至目的地址范圍為0x90000000-0x9000003f的存儲(chǔ)空間;在后續(xù)的突發(fā)傳送時(shí),訪(fǎng)問(wèn)地址的變化依次循環(huán)第一次突發(fā)傳送和第二次突發(fā)傳送的地址變化范圍。
上述實(shí)施例中,也可將目的地址卷繞使能配置為無(wú)效,這樣,目的地址的變化從起始目的地址遞增,目的地址范圍為0x90000040-0x900000bf。
下面說(shuō)明應(yīng)用本發(fā)明的DMA控制器將每次來(lái)自外設(shè)的突發(fā)數(shù)據(jù)分別傳送至第一目的地址內(nèi)存和第二目的地址內(nèi)存的傳送方法。
首先,CPU初始化DMA控制器,即配置目的地址卷繞界和目的地址卷繞使能,并配置好工作模式以及起始目的地址、突發(fā)傳送長(zhǎng)度、待傳送數(shù)據(jù)總長(zhǎng)度等相關(guān)的參數(shù);接著,CPU等待DMA請(qǐng)求,當(dāng)DMA控制器接收到來(lái)自外設(shè)請(qǐng)求/響應(yīng)的信號(hào)時(shí),將該信號(hào)送至CPU,CPU發(fā)送應(yīng)答消息給DMA控制器,DMA控制器成為主控者,判斷卷繞控制寄存器的值,當(dāng)DMA控制器具有地址卷繞功能時(shí),則訪(fǎng)問(wèn)內(nèi)存的地址變化按以地址卷繞的方式變化,直至所需傳送的數(shù)據(jù)全部傳送完畢,否則,按照現(xiàn)有技術(shù)的方式訪(fǎng)問(wèn)內(nèi)存,即,每次在傳送一次突發(fā)數(shù)據(jù)前,CPU對(duì)DMA控制器進(jìn)行初始化,然后再訪(fǎng)問(wèn)內(nèi)存,直至所需傳送的數(shù)據(jù)全部傳送完畢;在DMA控制器成為主控者進(jìn)行當(dāng)前突發(fā)傳送的同時(shí),當(dāng)CPU接收到DMA控制器輸出的卷繞中斷信號(hào)時(shí),CPU可以對(duì)上一次突發(fā)傳送的數(shù)據(jù)進(jìn)行更新處理,以提高系統(tǒng)各進(jìn)程的并發(fā)性。
從以上實(shí)施例可見(jiàn),應(yīng)用本發(fā)明的DMA控制器實(shí)現(xiàn)數(shù)據(jù)傳送,避免了上一次突發(fā)傳送后,在下一突發(fā)傳送時(shí)CPU重新配置DMA控制器,只需配置一次,并且,極大地節(jié)省了數(shù)據(jù)占用的存儲(chǔ)空間。
權(quán)利要求
1.一種直接存儲(chǔ)器訪(fǎng)問(wèn)DMA控制器,包括總線(xiàn)從接口單元,控制邏輯和寄存器組單元,總線(xiàn)主接口單元、直接存儲(chǔ)訪(fǎng)問(wèn)請(qǐng)求和響應(yīng)接口單元,與總線(xiàn)主接口單元通過(guò)數(shù)據(jù)線(xiàn)和地址線(xiàn)相連的通道邏輯和寄存器組單元,以及中斷請(qǐng)求邏輯單元;其中,通道邏輯和寄存器組單元包括,通過(guò)所述地址線(xiàn)與總線(xiàn)主接口單元相連的通道控制邏輯單元,受通道控制邏輯單元輸出的先進(jìn)先出地址信號(hào)的控制、通過(guò)所述數(shù)據(jù)線(xiàn)將來(lái)自總線(xiàn)主接口單元的數(shù)據(jù)緩存的先進(jìn)先出緩沖區(qū),受所述通道控制邏輯單元輸出的地址信號(hào)控制、向總線(xiàn)主接口單元提供讀寫(xiě)地址的地址控制邏輯單元,其特征在于,所述通道邏輯和寄存器組單元還包括,分別輸出地址卷繞邊界和地址卷繞使能的卷繞控制寄存器,和地址卷繞邏輯控制單元;該地址卷繞邏輯控制單元將卷繞控制寄存器輸出的地址卷繞邊界在地址卷繞使能控制下轉(zhuǎn)換為卷繞末地址,卷繞末地址與所述地址線(xiàn)的當(dāng)前地址比較,當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出用于置位當(dāng)前地址為卷繞首地址的控制信號(hào)至地址控制邏輯單元。
2.根據(jù)權(quán)利要求1所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,所述地址卷繞邏輯控制單元包括,卷繞末地址轉(zhuǎn)換電路,將卷繞控制寄存器輸出的地址卷繞邊界轉(zhuǎn)換為卷繞末地址過(guò)渡信號(hào),該卷繞末地址過(guò)渡信號(hào)與地址卷繞使能相與后輸出;第一比較電路,將卷繞末地址轉(zhuǎn)換電路輸出的與當(dāng)前地址比較,當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出用于置位當(dāng)前地址為卷繞首地址的控制信號(hào)。
3.根據(jù)權(quán)利要求1或2所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,所述地址卷繞邏輯控制單元還將卷繞控制寄存器輸出的地址卷繞邊界轉(zhuǎn)換為卷繞中間地址,所述卷繞中間地址與當(dāng)前地址比較,當(dāng)卷繞中間地址與當(dāng)前地址相等且當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出卷繞中斷信號(hào)至中斷請(qǐng)求邏輯單元。
4.根據(jù)權(quán)利要求3所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,所述地址卷繞邏輯控制單元還包括,卷繞中間地址轉(zhuǎn)換電路,將卷繞控制寄存器輸出的地址卷繞邊界在地址卷繞使能控制下轉(zhuǎn)換為卷繞中間地址過(guò)渡信號(hào),該卷繞中間地址過(guò)渡信號(hào)與地址卷繞使能相與后輸出;第二比較電路,將卷繞中間地址電路輸出的所述卷繞中間地址與當(dāng)前地址比較,當(dāng)卷繞中間地址與當(dāng)前地址相等時(shí)輸出第一高電壓指示;第三比較電路,將卷繞末地址輸出的所述卷繞末地址與當(dāng)前地址比較,當(dāng)卷繞末地址與當(dāng)前地址相等時(shí)輸出第二高電壓指示;卷繞中斷產(chǎn)生電路,將第一高電壓指示與第二高電壓指示進(jìn)行或運(yùn)算,輸出卷繞中斷信號(hào)。
5.根據(jù)權(quán)利要求1或2所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,所述卷繞控制寄存器輸出的地址卷繞邊界和地址卷繞使能分別為源地址卷繞邊界和源地址卷繞使能,所述地址卷繞邏輯控制單元為源地址卷繞邏輯控制單元,所述地址控制邏輯單元為受通道控制邏輯單元輸出的源地址信號(hào)控制向總線(xiàn)主接口單元提供源地址的源地址控制邏輯單元。
6.根據(jù)權(quán)利要求1或2所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,所述卷繞控制寄存器輸出的地址卷繞邊界和地址卷繞使能分別為目的地址卷繞邊界和目的地址卷繞使能,所述地址卷繞邏輯控制單元為目的地址卷繞邏輯控制單元,所述地址控制邏輯單元為受通道控制邏輯單元輸出的目的地址信號(hào)控制向總線(xiàn)主接口單元提供目的地址的目的地址控制邏輯單元。
7.根據(jù)權(quán)利要求1或2所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,所述卷繞控制寄存器輸出的地址卷繞邊界分別為源地址卷繞邊界和目的地址卷繞邊界,輸出的地址卷繞使能分別為源地址卷繞使能和目的地址卷繞使能,所述地址卷繞邏輯控制單元包括源地址卷繞邏輯控制單元和目的地址卷繞邏輯控制單元,所述地址控制邏輯單元包括,受通道控制邏輯單元輸出的源地址信號(hào)控制向總線(xiàn)主接口單元提供源地址的源地址控制邏輯單元,和,受通道控制邏輯單元輸出的目的地址信號(hào)控制向總線(xiàn)主接口單元提供目的地址的目的地址控制邏輯單元。
8.根據(jù)權(quán)利要求3所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,所述卷繞中間地址值為地址卷繞長(zhǎng)度的一半。
9.根據(jù)權(quán)利要求1所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,其特征在于,卷繞控制寄存器,和地址卷繞邏輯控制單元對(duì)應(yīng)一個(gè)DMA通道。
10.一種利用權(quán)利要求1所述的直接存儲(chǔ)器訪(fǎng)問(wèn)控制器實(shí)現(xiàn)數(shù)據(jù)傳送的方法,其特征在于,A)由CPU配置直接存儲(chǔ)器訪(fǎng)問(wèn)控制器的地址卷繞邊界和地址卷繞使能,CPU判斷是否有直接存儲(chǔ)訪(fǎng)問(wèn)請(qǐng)求,如果是,則執(zhí)行步驟B;否則等待;B)判斷地址卷繞使能是否有效,如果有效,則執(zhí)行步驟C;如果地址卷繞使能無(wú)效,則在每次直接存儲(chǔ)器訪(fǎng)問(wèn)控制器傳送數(shù)據(jù)之前,CPU執(zhí)行中斷,并在中斷程序中重新配置直接存儲(chǔ)器訪(fǎng)問(wèn)控制器,直至待傳送的數(shù)據(jù)傳送完畢;C)直接存儲(chǔ)器訪(fǎng)問(wèn)控制器傳送數(shù)據(jù),并判斷當(dāng)前地址是否等于直接存儲(chǔ)器訪(fǎng)問(wèn)控制器由卷繞邊界轉(zhuǎn)換得到的卷繞末地址,如果是,則直接存儲(chǔ)器訪(fǎng)問(wèn)控制器將當(dāng)前地址置為卷繞首地址,返回步驟C,直至待傳送的數(shù)據(jù)傳送完畢,否則直接返回C,直至待傳送的數(shù)據(jù)傳送完畢。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述步驟C進(jìn)一步包括,判斷當(dāng)前地址是否等于直接存儲(chǔ)器訪(fǎng)問(wèn)控制器由卷繞邊界轉(zhuǎn)換得到的卷繞中間地址,如果當(dāng)前地址等于卷繞中間地址或者當(dāng)前地址等于卷繞末地址,則直接存儲(chǔ)器訪(fǎng)問(wèn)控制器向CPU輸出中斷信號(hào)。
12.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述地址卷繞邊界和地址卷繞使能分別為源地址卷繞邊界和源地址卷繞使能,或者為目的地址卷繞邊界和目的地址卷繞使能,或者所述地址卷繞邊界包括源地址卷繞邊界和目的地址卷繞邊界,所述地址卷繞使能包括源地址卷繞使能和目的地址卷繞使能。
全文摘要
本發(fā)明公開(kāi)了一種具有地址卷繞功能(WRAP)的直接存儲(chǔ)器訪(fǎng)問(wèn)(DMA)控制器以及利用該控制器實(shí)現(xiàn)源地址和目的地址間數(shù)據(jù)傳送的方法,在現(xiàn)有的傳統(tǒng)DMA控制器內(nèi)增加了支持地址卷繞(WRAP)功能的硬件邏輯電路,使得傳統(tǒng)DMA控制器成為支持WRAP功能的DMA控制器,從而DMA控制器可以以地址卷繞的方式進(jìn)行數(shù)據(jù)的傳送,本發(fā)明的DMA控制器對(duì)于地址是內(nèi)存的數(shù)據(jù)訪(fǎng)問(wèn),只需配置一次DMA控制器,DMA控制器便可以持續(xù)地工作到數(shù)據(jù)傳送結(jié)束,減少了CPU的干預(yù)。
文檔編號(hào)G06F13/28GK1831799SQ20051005157
公開(kāi)日2006年9月13日 申請(qǐng)日期2005年3月7日 優(yōu)先權(quán)日2005年3月7日
發(fā)明者馬濤 申請(qǐng)人:華為技術(shù)有限公司