專利名稱:一種基于雙AHB Master接口的片上DMA控制器實現方法
技術領域:
本發明涉及嵌入式系統芯片中先進高性能總線的數據傳輸,具體的說是一種基于 雙AHB (Advanced High-performance Bus,先進高性能總線)Master (主設備)接口的片上 DMA (Direct Memory Access,直接內存存取)控制器實現方法。
背景技術:
集成電路制作工藝進入深亞微米之后,ICdntegrated Circuit,集成電路)設計 能力滯后于工藝水平日甚,勢必要提出新的設計思想和設計方法,SoC(System on Chip, 片上系統)是基于嵌入式系統的一種新的設計思想和設計方法,是將微處理器、模擬IP核 (Intellectual Property core,知識產權核)、數字IP核和存儲器(或片外存儲控制接口) 集成在單一芯片上,不僅提高了產品的集成度,而且大大降低了制造成本,使得最終產品的 價格為普通消費者能夠承擔。其中 AMBA(Advanced Micocontroller Bus Architecture, 先進微控制器總線體系結構)總線是ARM公司(Advanced RISCMachines,先進RISC機器 公司)提出的總線結構,由于其開放的總線規范,這種總線得到了廣泛的應用。AMBA總線 的目的是推出芯片內部總線的規范。AMBA總線有三個版本:AMBA1. 0,AMBA2. O和AMBA3. O。 目前AMBA2. O規范作為SoC的一種較為成熟的總線標準,其定義了 3種不同的系統總線 1)AHB (先進高性能總線);2) ASB (Advanced System Bus,先進系統總線);3) APB (Advanced Peripheral Bus,先進外圍設備總線)。AHB總線是新一代AMBA總線,作為高性能系統骨干總線,用于連接高性能、高時 鐘速率的系統模塊,如完成處理器、片上存儲器、存儲器控制器、中斷控制器等模塊間的通
fn °ASB總線是第一代AMBA系統總線,用于高性能系統模塊間通信。目前已被AHB所 取代。APB總線主要用于低速且低功率的外圍,可針對外圍作功率消耗及復雜接口的最 佳化。在具有AHB總線的片上系統中,DMA控制器作為與ARM微處理器并列的主器件出現。 對于AHB總線而言,片上DMA控制器既是AHB總線的從設備,又與ARM微處理器一樣是AHB 總線的主設備。增加一個用于完成存儲器直接存取的DMA控制器,以減少ARM微處理器傳 輸數據的壓力。DMA控制器技術本身就是一種代替微處理器完成存儲器與外部設備之間大量數 據傳送的方法,也稱直接存儲器存取方法。目前廣泛應用的DMA控制器,當有輸入設備需 要進行DMA數據傳輸時,其通過DMA請求觸發器向DMA控制器發出DMA請求。在此之前 CPU (Central Processing Unit,中央處理單元)已經將地址等控制信息配給DMA控制器內 的地址寄存器中。當DMA控制器接到DMA請求時,其向CPU發起總線占用請求。CPU通常在 執行完當前的指令后將總線控制權交給DMA控制器,此時DMA控制器的控制和狀態寄存器 發生變化,表明已經獲得總線控制權,并發起一次DMA數據傳輸。在數據傳輸過程中,計數 器對傳輸的數據量進行計數,直到計數器值等于傳輸長度時停止計數,并改變控制和狀態寄存器的內容。DMA控制器向CPU歸還總線控制權。這樣就能使CPU節省對外設的查詢時 間。這種DMA控制器大部分僅適用于單層總線,需要的緩存FIF0(First In First Out,先入先出隊列)數據緩存器過大,DMA控制器的每個通道未能實現靈活的流控管理,并 且未能與以AMBA2. 0總線規范為標準的SoC這種新的嵌入式設計方法結合起來。導致這些 DMA控制器產品效率難以提高,無法適應多層的AHB總線結構,無法滿足日益增長的對性能 的需求,并且難以集成到自主設計的SoC系統中,重用性不高。
發明內容
針對現有技術中存在的缺陷,本發明的目的在于提供一種基于雙AHB Master接口 的片上DMA控制器實現方法,即在具有AHB總線的片上系統中,設計具有雙master接口的 片上DMA控制器,解決目前的DMA控制器,大部分僅適用于單層總線,內部緩存過大,無法有 效的提高總線的利用率,每個DMA通道也未能實現靈活的流控管理的問題。為達到以上目的,本發明采取的技術方案是一種基于雙AHB Master接口的片上DMA控制器實現方法,其特征在于包括以下步 驟步驟1,在DMA控制器開始工作前,由ARM微處理器通過APB總線對DMA控制器中 的DMA配置寄存器單元進行初始化配置,所述初始化配置包括對32個DMA通道的通道配 置寄存器,源地址寄存器,目的地址寄存器,傳輸數據長度寄存器進行初始化配置,即確定 每個DMA通道的使能,工作模式,有效數據寬度,數據源的起始地址,數據目的的起始地址, 以及傳輸數據長度;所述工作模式包括主動模式,被動模式,軟件模式;所述有效數據寬度 包括 byte,half word, word ;步驟2,開始數據傳輸過程,DMA控制器等待出現的DMA請求信號,所述DMA請求信 號為在主動模式,被動模式,軟件模式下均有效的dma_req,或僅在被動模式下有效的dma_ last_req,在dma_req對應的通道的使能有效的情況下,根據有效的請求信號DMA控制器的 仲裁單元仲裁出當前需要響應的通道號,并同時產生pahb_req信號和Current_laSt_req, 給AHBjiiasterO接口單元,如果沒有請求則繼續在此步驟中等待執行;步驟3,當AHBjnasterO接口單元在pahb_req信號為高的情況下,得到仲裁單元仲 裁出的通道號后,根據這個通道號對應通道的配置信息,所述對應通道的配置信息包括對 應通道的工作模式,有效數據寬度,數據源的起始地址,數據目的的起始地址,以及傳輸數 據長度,將其轉變為一次INCR4類型或4個連續SINGLE類型的AHBjnasterO的ARB總線 信號,根據p_ram_select的指示將從源地址讀回的數據存儲在DMA數據緩存寄存器組中, 并對這個通道讀回的數據量進行計數,每次INCR4類型或者4個連續SINGLE類型的傳輸完 成時產生pahb_aCk完成信號,給仲裁單元,同時將產生的qahbjeq信號、該通道的配置信 息以及數據存儲的位置q_ram_SeleCt傳遞給AHBjnasterl接口單元;步驟4,AHBjnasterl接口單元在qahb_req信號為高的情況下,獲得AHBjnasterO 接口單元傳遞的信息后,將其轉變為一次INCR4類型或4個連續SINGLE類型的AHB_ masterl的AHB總線信號,根據q_ram_SeleCt的指示從DMA數據緩存寄存器組里面讀出相 應的數據,并通過AHBjnasterl接口單元的AHB總線寫到目的地址上去;每次INCR4類型或
6者4個連續SINGLE類型的傳輸完成時產生qahb_ack完成信號,給AHBjnasterO接口單元,步驟5,當DMA控制器完成當前響應通道本次DMA請求全部的數據傳輸,AHB_ masterO接口單元同時將該通道對應的DMA中斷信號dma_int和DMA請求清零信號dma_clr 信號拉高,并用dma_Clr信號清零對應通道的外設或內存RAM發出的dma_req,使其不參加 下一次的仲裁;DMA配置寄存器單元在檢測到中斷信號dma_int時,將對應的通道的通道完 成狀態寄存器置高,對應通道的使能信號關閉,此時表示該通道的請求響應完成,跳到步驟 7 ;若DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則跳到步驟6 ;步驟6,當DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則不作 任何信號調整,直接跳轉到步驟2 ;此時該通道對應的DMA請求信號dma_req或dma_laSt_ req依然有效,與其它未被DMA控制器響應的有效通道請求一起參與仲裁單元的下一次仲 裁;步驟7,ARM微處理器通過APB總線對DMA控制器中,已完成本次DMA請求全部數 據傳輸的當前響應通道的配置寄存器單元(源地址寄存器,目的地址寄存器,傳輸數據長 度寄存器)進行重新配置,并重新打開當前響應通道的使能信號后跳到步驟2。在上述技術方案的基礎上,每次DMA控制器數據傳輸只響應32個通道中的一個通 道,每個通道的實現方法相同。在上述技術方案的基礎上,當DMA控制器未完成當前響應通道η全部的數據傳輸 時,η = 0,1,2……31,其后續數據傳輸過程如下1)在DMA控制器通道η開始數據傳輸之前,ARM微控制器通過APB總線對通道η 的通道配置寄存器,源地址寄存器,目的地址寄存器,傳輸數據長度寄存器進行相應配置, 并打開通道η的使能信號;2)仲裁單元根據仲裁原則確定響應通道η ;3)AHB_maSter0接口單元將根據通道η的源地址寄存器發出相應的一次INCR4類 型或者4個連續SINGLE類型的傳輸地址及控制信號;將從源地址讀回的數據,存到DMA數 據緩存寄存器組;并對讀回的數據量按字節進行計數;并在DMA控制器完成通道η本次DMA 請求全部的數據傳輸時產生通道η請求的清零信號dma_Clr和中斷信號dma_int,同時將該 通道的配置信息以及數據存儲的位置q_ram_SeleCt傳遞給AHBjnasterl接口單元,4)AHB_masterl接口單元將根據通道η的目的地址寄存器發出相應的一次符合 AHB總線要求的INCR4類型或者4個連續SINGLE類型的傳輸地址及控制信號,同時根據q_ ram_select信號的指示將從DMA數據緩存寄存器組讀出的數據,寫到對應的目的地址上;5)該通道為主動模式或軟件模式的情況下若通道η的計數器未達到傳輸數據長 度寄存器配置的值,則重復執行步驟2),3),4),否則執行步驟6);該通道為被動模式的情況下,若仲裁單元未檢測到通道η的dma_laSt_req有效, 或DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則重復執行步驟2),3), 4),否則執行步驟6);6)通道η的數據傳輸結束,通道η的使能關閉。在上述技術方案的基礎上,在一次數據傳輸過程中,AHBjiiasterO總線用于對傳輸 源進行讀數據,AHB_masterl總線用于對傳輸目的進行寫數據。在上述技術方案的基礎上,DMA數據緩存寄存器組用來緩存數據,內部數據流從AHB_masterO接口單元到DMA數據緩存寄存器組最后到AHBjnasterl接口單元,整個內部數 據傳輸過程為3級流水。在上述技術方案的基礎上,在DMA控制器完成一次DMA數據傳輸時產生一個中斷 信號用來指示一次傳輸完畢,或在DMA計數器計數滿后產生中斷信號用來指示一次傳輸完 畢。在上述技術方案的基礎上,所述DMA控制器包括DMA APB接口單元,作為APB總線接口供APB總線從此設備接口對DMA控制器的 DMA配置寄存器進行配置,DMA配置寄存器單元,由通道配置寄存器,源地址寄存器,目的地址寄存器,傳輸數 據長度寄存器以及32個通道完成狀態寄存器,32個通道完成狀態屏蔽寄存器,32個通道中 斷屏蔽寄存器組成;所述32個通道為32個DMA通道,32個DMA通道都有各自的通道配置 寄存器,源地址寄存器,目的地址寄存器和傳輸數據長度寄存器,其中每個通道配置寄存器 的有效位寬為8位,DMA數據緩存寄存器組寄存器組空間為32byte,寬度為32bits,深度為8,且能 進行字節寫,有兩個接口,一個為讀口,另一個為寫口,在內部分為兩片A和B,每片空間為 16byte,通過AHBjnasterO或AHBjnasterl接口單元的ram_select信號來選擇當前對哪片 寄存器組操作,仲裁單元從當前的32個DMA通道的有效請求中,根據當前響應的通道號,仲裁 出下一個響應的一個通道號,連同這個通道對應的所有配置寄存器單元信息傳遞給AHB_ masterO接口單元,并在接收到當前通道的AHBjnasterO接口單元響應完成信號pahb_ack 后,產生對AHBjnasterO接口單元下一次的請求pahb_req ;仲裁單元仲裁的原則是輪詢,其 仲裁的時間是檢測到pahb_aCk信號為高電平或者32個通道均無有效請求的空閑狀態,每 次只有一個輸入請求得到響應;檢測仲裁單元當前響應的通道的通道配置模式,如果配置 為被動模式,則預先配置當前響應通道的數據傳輸長度無效,同時根據檢測當前響應通道 的dma_last_req信號是否為高電平,如果為高電平,則表示當前響應的通道只剩最后一次 INCR4類型或4個連續SINGLE類型數據需要傳輸,此時仲裁單元需要使送出的current last_req信號為高電平,以此信號告知AHBjiiasterO接口單元接下來進行最后一次數據傳 輸,如果仲裁單元當前響應的通道的模式為主動模式或者軟件模式,則使輸出的current laSt_req信號為低電平,AHBjnasterO接口單元AHB_masterO接口單元的AHB總線總是對數據源進行操 作,即總是進行AHB總線讀操作,在檢測到仲裁單元發出的pahb_req請求信號后,將即將響 應的通道號對應的所有配置寄存器單元信息轉換為AHBjnasterO接口單元的一次INCR4類 型或者4個連續的SINGLE類型傳輸,根據p_ram_select的指示將源地址p_srC_addr對應 的數據讀回到DMA數據緩存寄存器組,并對這個通道讀回的數據量進行計數,并在這一次 傳輸完成時產生pahb_ack完成信號,在完成當前響應通道本次DMA請求全部的數據傳輸時 產生dma請求清零信號dma_clr和中斷信號dma_int,否則不產生,AHBjnasterl接口單元AHB_masterl接口單元的AHB總線總是對數據目的進行 操作,即總是進行AHB寫操作,每一次選中設備進行一次數據傳輸也為INCR4類型或者4個 連續的SINGLE類型傳輸,并在這一次數據傳輸完成時產生qahb_aCk完成信號;即在檢測到AHBjnasterO接口單元發出的qahb_req請求信號后,將AHBjnasterO接口單元提供的 與當前響應的通道號對應的數據目的的起始地址,以及目的地址是否增加信號轉換為AHB_ masterl接口單元的AHB總線行為,根據AHBjnasterO接口單元提供q_ram_select的值, 從DMA數據緩存寄存器組里面讀出相應的數據,并通過AHBjiiasterl接口單元的AHB總線 寫到目的地址q_src_addr對應的地址上去。本發明所述的基于雙AHB Master接口的片上DMA控制器實現方法,以AHB總線為 基礎,設計了一種基于雙AHB Master接口的片上DMA控制器實現方法。雙AHB Master接 口不僅減少了數據傳輸的延時,而且只需要較小的內部FIFO;并能同時適用于多層AHB總 線系統。對于每個DMA通道添加了流控管理,使每一個通道均可以靈活的工作在三種模式 軟件模式、主動模式和被動模式。并且它結構簡單,實現方便,因此易于重用到以其它高性 能ARM微處理器為基礎的SoC設計中。
本發明有如下附圖圖1基于雙AHB Master接口的片上DMA控制器的結構示意圖,圖2仲裁單元輸入輸出信號的時序圖,圖3AHB_masterO接口單元輸入輸出信號的時序圖,圖4AHB_masterl接口單元輸入輸出信號的時序圖。
具體實施例方式以下結合附圖對本發明作進一步詳細說明。本發明將DMA控制器設計為一個基本獨立于ARM微處理器的AHB總線主設備,能 夠根據配置寄存器的值,獨立的響應AHB從設備發出的DMA請求,更大程度的提高ARM微處 理器效率。本發明所述DMA控制器擁有兩個AHB Master接口,能夠適應總線利用率更高的 多層總線系統。其優點在于雙AHB master接口不僅減少了數據傳輸的延時,而且僅需要 較小的內部FIFO;并能同時適用于多層AHB總線系統,更有效的利用AHB總線帶寬。同時對 于每個DMA通道添加了流控管理,使每一個通道均可以靈活的工作在三種模式軟件模式、 主動模式和被動模式。本發明的技術方案包括以下幾點1)DMA 控制器有 2 個 AHB master 接 口,一個是 AHBjnasterO 接 口,一個是 AHB_ masterl接口。AHBjnasterO和AHBjnasterl接口都可以單獨作為一層AHB總線的主設備。 在一次數據傳輸過程中,AHBjnasterO總線用于對傳輸源進行讀數據,AHB_masterl總線用 于對傳輸目的進行寫數據。2) DMA控制器提供四種傳輸數據的通道存儲器到外設;存儲器到存儲器;外設到 存儲器;外設到外設。3) DMA控制器具有32個DMA通道來傳送數據。每一個DMA通道只對一個數據源或 一個數據目標進行服務,即一對一服務。對于全雙工的外設來說發送和接收各需要一個獨 立的數據通道。對于傳輸源和傳輸目的來說,源地址和目的地址可以為遞增或者非遞增模 式;每一個DMA通道支持byte (字節)、half_WOrd (半字)或者word (字)數據傳輸;支持大、小端數據。4)每一個DMA通道均可以工作在三種工作模式軟件模式、主動模式和被動模式。 每一個通道者β由dma_req、dma_last_req禾口 dma_clr三個信號進 亍握手。5) DMA控制器有內部FIFO 32bit*8 (DMA數據緩存寄存器組)用來緩存數據,內部 數據流從AHBjnasterO接口單元到DMA數據緩存寄存器組最后到AHBjnasterl接口單元, 整個內部數據傳輸過程為3級流水。每級數據流傳輸都可以同時進行,因此可減少數據在 DMA控制器內部的傳輸延時。6) DMA控制器具有APB接口。該接口符合APB總線規范,ARM微處理器可以通過 APB接口對DMA控制器的DMA配置寄存器進行配置。7)DMA控制器中斷信號。可以在DMA控制器完成一次DMA數據傳輸時產生一個中 斷信號,也可以在DMA計數器計數滿后產生中斷信號。這一般用來指示一次傳輸完畢。可 以對DMA控制器的中斷信號進行屏蔽。本發明所述DMA控制器的結構如圖1所示。其中DMA APB接口單元,作為APB總線接口供APB總線(APB BUS)從此設備接口對DMA 控制器的DMA配置寄存器進行配置。DMA配置寄存器單元,由通道配置寄存器,源地址寄存器,目的地址寄存器,傳輸數 據長度寄存器以及32個通道完成狀態寄存器,32個通道完成狀態屏蔽寄存器,32個通道中 斷屏蔽寄存器組成,可采用現有技術實現。DMA控制器開始工作前,首先由ARM微處理器通 過APB總線(APB BUS)對每個DMA通道(32個DMA通道)的通道配置寄存器,源地址寄存 器,目的地址寄存器,傳輸數據長度寄存器進行初始化配置,即確定每個DMA通道的使能, 工作模式(主動模式,被動模式,軟件模式),有效數據寬度(byte,half word,word),數據 源的起始地址,數據目的的起始地址,以及傳輸數據長度。32個通道(DMA通道)都有各自的通道配置寄存器,源地址寄存器,目的地址寄存 器和傳輸數據長度寄存器,其中每個通道配置寄存器的有效位寬為8位。以通道O(PDCO) 的通道配置寄存器為例(其他通道的通道配置寄存器結構與此相同),其結構如表1所示表1PDC0通道配置寄存器
子地址屬性標志寬度缺省值0x00RffPdc0_cfg320x000000x0通道配置寄存器各字段和比特定義如下
名稱比特定義reserved31 8保留PdcO_size7:6指示通道0的數據寬度 0 8bits byte
DMA數據緩存寄存器組寄存器組空間為32byte,寬度為32bits,深度為8,可以進 行字節寫。有兩個接口,一個為讀口,另一個為寫口。這個寄存器組在內部分為兩片A和B, 每片空間為16byte,通過AHBjnasterO或AHBjnasterl接口單元的ram_select信號來選 擇(即對應于寄存器組地址的最高位),當前對哪片寄存器組操作。如當AHBjiiasterO接 口單元對A片進行寫數據操作時,AHB_masterl接口單元可以同時對B片寄存器組進行讀 操作,這樣也提高了 DMA控制器數據處理的效率。
仲裁單元從當前的32個DMA通道的有效請求中,根據當前響應的通道號,仲裁 出下一個響應的一個通道號,連同這個通道對應的所有配置寄存器單元信息傳遞給AHB_ masterO接口單元。并在接收到當前通道的AHBjnasterO接口單元響應完成信號pahb_ ack(脈沖信號)后,產生對AHBjnasterO接口單元下一次的請求pahb_req(脈沖信號)。 仲裁單元仲裁的原則是輪詢,其仲裁的時間是檢測到pahb_aCk信號為高電平或者32個通 道均無有效請求的空閑狀態,每次只有一個輸入請求得到響應。32個通道的輸入請求分別 為R0 (對應通道0),R1, R2, ... , R31,初始狀態下規定32個輸入請求被仲裁單元響應的優先 級順序為> R310假設當前仲裁單元仲裁的結果是Rm(0彡m < 31)被 響應,則下一次輪詢優先順序為Rm+1 > Rm+2 > ...,例如當m = O時,則下一次輪詢優先順 序為R1 > R2 > . . . > R31 > R。,當m = 2時,則下一次輪詢優先順序為R3 > R4 > · · · > R31 > R。> R1 > R2,當 m = 11 時,則下一次輪詢優先順序為 R12 > R13 > · · · > R31 > R0 > R1 > R2... > R11^即將Rm以及在初始狀態中優先級高于Rm的所有輸入請求作為一個整體(內 部優先級不變),將Rtl Rm的優先級調整到Rm+1,Rm+2,...,R31之后。若當前m的取值為31 則下一次輪詢的優先順序為R0 > R1 > R2 > · · · > R31。檢測仲裁單元當前響應的通道的通道配置模式,如果配置為被動模式,則預先配 置當前響應通道的數據傳輸長度無效,同時根據檢測當前響應通道的dma_last_req信號 是否為高電平,如果為高電平,則表示當前響應的通道只剩最后一次INCR4類型或4個連續 SINGLE類型數據需要傳輸,此時仲裁單元需要使送出的CUrrent_laSt_req信號為高電平, 以此信號告知AHBjiiasterO接口單元接下來進行最后一次數據傳輸。如果仲裁單元當前 響應的通道的模式為主動模式或者軟件模式,則使輸出的CUrrent_last_req信號為低電 平。仲裁單元輸入輸出信號的時序如圖2所示。圖2中各種信號的意義如下Uhclk 輸入到DMA控制器的時鐘信號。2、dma_req[31:0] :DMA控制器32個通道各自的輸入請求信號。Obit代表通道0。3,dma_last_req[31:0]僅在被動模式下有效,表示DMA控制器32個通道各自的 還有最后一批數據需要傳輸的請求信號,Obit代表通道0。4、current_num[6:0]仲裁單元指示AHBjnasterO接口單元當前需要處理的通道 號。0-31分別對應0-31號通道。為63時表示當前沒有通道請求,為空閑狀態。5、pahb_req 仲裁單元根據有效的dma_req或dma_last_req請求產生對AHB_ masterO接口單元的請求信號。6、current_last_req 仲裁單元以此信號告知AHBjnasterO接口單元接下來進行 最后一批數據傳輸。7、p_ram_select :AHB_master0接口單元讀回數據后緩存到哪一片寄存器組。初 始化時,該信號為低電平,表示AHBjiiasterO接口單元總線讀回的數據緩存到A片寄存器 組。當檢測到pahb_ack信號為高電平時,進行翻轉。下次AHBjnasterO接口讀回的數據將 緩存到B片寄存器組。8、p_src_addr :AHB_masterO接口單元當前響應通道的源地址。9、pahb_size :AHB_masterO接口單元當前響應通道的數據寬度。10、pahb_ack :AHB_masterO接口單元完成當前需要響應的通道號(current_
13num[6:0])的數據傳輸時,給出的完成信號。AHBjnasterO接口單元AHB_masterO接口單元的AHB總線總是對數據源進行操 作,即總是進行AHB總線讀操作。在檢測到仲裁單元發出的pahb_req請求信號后,將即 將響應的通道號對應的所有配置寄存器單元信息轉換為AHBjnasterO接口單元的AHB總 線信號,根據p_ram_select的指示將源地址p_srC_addr對應的數據讀回到DMA數據緩存 寄存器組,并對這個通道讀回的數據量進行計數(data_COimt)。在完成當前響應通道本次 DMA請求全部的數據傳輸時,產生dma請求清零信號dma_clr和中斷信號dma_int。請求清 零信號與中斷信號的產生原則為先檢測AHBjiiasterO接口單元響應的通道工作模式。如 果為被動模式,則檢測Current_laSt_req信號是否為1,如果為1(或者檢測該通道的內部 data_count[15:0]計數器是否滿為FFFF),此時DMA控制器完成當前響應通道本次DMA請 求全部的數據傳輸,則產生相應的dma_clr信號和dma_int信號(同時置該DMA通道的配 置pdc_en為低,并保留當前產生的中斷通道號到配制寄存器)。否則DMA控制器未完成當 前響應通道本次DMA請求全部的數據傳輸,不產生dma_clr信號和dma_int信號。如果不 為被動模式,則檢測data_COimt計數器是否等于該通道的傳輸數據長度寄存器值,如果等 于,此時DMA控制器完成當前響應通道本次DMA請求全部的數據傳輸,則產生相應的dma_ clr 信號(清零 dma_req 禾Π dma_last_req)禾Π dma_int,否則不產生。AHBjnasterO接口單元支持的AHB總線傳輸協議為AMBA 2. O的子集。為了簡化設 計,AHBjiiasterO接口單元的AHB傳輸規定,每一次選中設備進行一次數據傳輸為INCR4類 型或者4個連續的SINGLE類型傳輸,并在這一次數據傳輸完成時產生pahb_aCk完成信號。 AHBjnasterO接口單元輸入輸出信號的時序如圖3所示。圖3中各種信號的意義如下(部分信號已在圖2中出現過,其含義相同,不再說明 了)1、p_src_inc_enable :AHB_masterO接口單元當前響應通道的傳輸源地址是否增 加。2、phaddr[31:0] :AHB_masterO 接口 單元的 AHB 總線地址信號。3、phrdata[31:0] :AHB_masterO 接口單元的 AHB 總線讀數據信號。4、mem_addr =DMA數據緩存寄存器組地址信號。5,mem_wda =DMA數據緩存寄存器組寫數據信號。6、hready :AHB_masterO 接口 單元的 AHB 總線 ready 信號。7、q_ram_select 指示AHBjnasterl接口單元讀DMA數據緩存寄存器組的哪一片。 其值與當前AHBjnasterO接口單元已經完成的一次INCR4類型或者4個連續的SINGLE類型 傳輸中,指示將從源地址讀回的數據存儲到DMA數據緩存寄存器組哪一片的p_ram_select 值保持一致。8、qahb_req :AHB_masterO接口單元根據DMA數據緩存寄存器組中有效的數據產 生對AHBjnasterl接口單元的請求信號。9、q_src_inc_enable :AHB_masterl接口單元當前響應通道的傳輸目的地址是否 增加。10、qahb_size[l:0] :AHB_masterl接口單元當前響應通道的數據寬度。ll、q_src_addr[31:0] :AHB_masterl接口單元當前響應通道的目的地址。
12、qahb_ack =AHBjnasterl接口單元完成當前需要響應的通道號的數據傳輸時, 給出的完成信號。AHBjnasterl接口單元AHB_masterl接口單元的AHB總線總是對數據目的進行 操作,即總是進行AHB寫操作。每一次選中設備進行一次數據傳輸也為INCR4類型或者4 個連續的SINGLE類型傳輸,并在這一次數據傳輸完成時產生qahb_aCk完成信號。即在檢 測到AHBjnasterO接口單元發出的qahb_req請求信號后,將AHBjnasterO接口單元提供的 與當前響應的通道號對應的數據目的的起始地址,以及目的地址是否增加信號轉換為AHB_ master 1接口單元的AHB總線行為。根據AHBjnasterO接口單元提供q_ram_select的值, 從DMA數據緩存寄存器組里面讀出相應的數據,并通過AHBjiiasterl接口單元的AHB總線 寫到目的地址q_src_addr對應的地址上去。AHB_masterl接口單元輸入輸出信號的時序如 圖4所示。圖4中各種信號的意義如下(部分信號已在圖3中出現過,其含義相同,不再說明 了)1、mem_addrb =DMA數據緩存寄存器組讀地址信號。2、mem_rdb =DMA數據緩存寄存器組讀數據信號。3、qhaddr[31:0] :AHB_masterl 接口 單元的 AHB 總線地址信號。4、qhwdata[31:0] :AHB_masterl 接口 單元的 AHB 總線寫數據信號。如上所述,本發明所述的基于雙AHB Master接口的片上DMA控制器的實現方法 中DMA配置寄存器單元在DMA控制器開始工作前,由ARM微處理器通過APB總線對 DMA控制器中的DMA配置寄存器單元進行初始化配置。DMA數據緩存寄存器組用來緩存數據,內部數據流為3級流水。可減少數據傳輸 延時。仲裁單元當前DMA控制器的32個DMA通道的有效請求為兩個或兩個以上時,仲
裁單元決定由哪個通道進行數據傳輸工作。AHBjnasterO接口單元AHB_masterO接口單元的AHB總線總是對數據源進行操 作,即總是進行AHB總線讀操作。AHBjnasterl接口單元AHB_masterl接口單元的AHB總線總是對數據目的進行操 作,即總是進行AHB總線寫操作。這種基于雙AHB Master接口的片上DMA控制器的數據傳輸過程的實現方法可以 具體分為以下幾個步驟步驟1,ARM微處理器通過APB總線對DMA控制器中的DMA配置寄存器單元進行初 始化配置(即對32個通道下配置)。所述配置的具體過程詳見上述。步驟2,DMA控制器等待出現的DMA請求信號dma_req(主動模式,被動模式,軟 件模式均有效)或dma_last_req(僅在被動模式下有效),在dma_req對應的通道的使能 有效的情況下,根據有效的請求信號DMA控制器的仲裁單元仲裁出當前需要響應的通道號 current—num[6 0],并同時產生 pahb_req 信號禾口 current_last—req,給 AHB—masterO 接 Π 單元,所述信號的具體產生過程詳見上述。如果沒有請求則繼續等待執行步驟2。步驟3,當AHBjnasterO接口單元在pahb_req信號為高的情況下,得到仲裁單元仲裁出的通道號后,根據這個通道號對應通道的配置信息,所述對應通道的配置信息包括 對應通道的工作模式,有效數據寬度,數據源的起始地址,數據目的的起始地址,以及傳輸 數據長度,將其轉變為一次INCR4(循序位址增加)類型或4個連續SINGLE (單次)類型 的AHBjnasterO的AHB總線信號,根據p_ram_select的指示將從源地址讀回的數據存儲在 DMA數據緩存寄存器組中,并對這個通道讀回的數據量進行計數(data_COimt)。每次INCR4 類型或者4個連續SINGLE類型的傳輸完成時產生pahb_aCk完成信號,給仲裁單元。同時 將產生的qahb_req信號、該通道的配置信息以及數據存儲的位置q_ram_SeleCt ( S卩DMA數 據緩存寄存器組的哪一片)傳遞給AHBjiiasterl接口單元。步驟4,AHBjnasterl接口單元在qahb_req信號為高的情況下,獲得AHBjnasterO 接口單元傳遞的信息后,將其轉變為一次INCR4類型或4個連續SINGLE類型的AHB_ masterl的AHB總線信號,根據q_ram_SeleCt的指示從DMA數據緩存寄存器組里面讀出相 應的數據,并通過AHBjnasterl接口單元的AHB總線寫到目的地址上去。每次INCR4類型 或者4個連續SINGLE類型的傳輸完成時產生qahb_ack完成信號,給AHBjnasterO接口單元。步驟5,若DMA控制器完成當前響應通道本次DMA請求全部的數據傳輸,AHB_ masterO接口單元同時將該通道對應的DMA中斷信號dma_int和DMA請求清零信號dma_clr 信號拉高,并用dma_Clr信號清零對應通道的外設或內存RAM發出的dma_req,使其不參加 下一次的仲裁;DMA配置寄存器單元在檢測到中斷信號dma_int時,將對應的通道的通道 完成狀態寄存器置高,對應通道的使能信號關閉,此時表示該通道的請求響應完成,跳到步 驟7 ;若DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則跳到步驟6 ;步驟6,當DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則不作 任何信號調整,直接跳轉到步驟2,此時該通道對應的DMA請求信號dma_req或dma_laSt_ req依然有效,與其它未被DMA控制器響應的有效通道請求一起參與仲裁單元的下一次仲 裁。步驟7,ARM微處理器通過APB總線對DMA控制器中,已完成本次DMA請求全部數 據傳輸的當前響應通道的配置寄存器單元(源地址寄存器,目的地址寄存器,傳輸數據長 度寄存器)進行重新配置,并重新打開當前響應通道的使能信號后跳到步驟2。進一步,這種基于雙AHB master接口的片上DMA控制器內部有32個通道,其中每 次DMA控制器數據傳輸只響應其中一個通道,每個通道的實現方法相同,即都按上述步驟 1 7處理數據。進一步,當DMA控制器未完成當前響應通道η全部的數據傳輸時,η = 0,1,2…… 31,其后續數據傳輸過程如下1)在DMA控制器通道η開始數據傳輸之前,ARM微控制器通過APB總線對通道η 的通道配置寄存器,源地址寄存器,目的地址寄存器,傳輸數據長度寄存器進行相應配置, 并打開通道η的使能信號。2)仲裁單元根據仲裁原則確定響應通道η。3)AHB_maSter0接口單元將根據通道η的源地址寄存器發出相應的一次INCR4類 型或者4個連續SINGLE類型的傳輸地址及控制信號(當這個通道號對應的通道配置寄存 器中P_src_inc_enable的值為1,則以前該通道號對應的源地址P_src_addr為起始地址,
16轉變為一次INCR4類型的AHB總線傳輸;若P_src_inc_enable的值為0,則同樣以P_src_ addr為起始地址轉變為4個連續SINGLE類型的AHB總線傳輸)。將從源地址讀回數據,存 到DMA數據緩存寄存器組。并對讀回的數據量按字節進行計數(data_COimt)。并在DMA控 制器完成通道η本次DMA請求全部的數據傳輸時產生通道η請求的清零信號dma_Clr和 中斷信號dma_int(所述信號的具體產生過程詳見上述)。同時將該通道的配置信息(工作 模式,有效數據寬度,數據源的起始地址,數據目的的起始地址,以及傳輸數據長度)以及 數據存儲的位置q_ram_SeleCt (即DMA數據緩存寄存器組的哪一片)傳遞給AHBjnasterl 接口單元。4)AHB_maSterl接口單元將根據通道η的目的地址寄存器(P_deS_addr)發出相 應的一次符合AHB總線要求的INCR4類型或者4個連續SINGLE類型的傳輸地址及控制信 號(當這個通道號對應的通道配置寄存器中P_dst_inc_enable的值為1,則以前該通道號 對應的源地址P_deS_addr為起始地址,轉變為一次INCR4類型的AHB總線傳輸;若P_dst_ inc_enable的值為0,則同樣以P_des_addr為起始地址轉變為4個連續SINGLE類型的AHB 總線傳輸)。同時根據q_ram_SeleCt信號的指示將從DMA數據緩存寄存器組讀出的數據, 寫到相應的目的地址上。5)該通道為主動模式或軟件模式的情況下若通道η的計數器(data_COimt)未 達到傳輸數據長度寄存器配置的值,即DMA控制器未完成當前響應通道本次DMA請求全部 的數據傳輸,則重復執行步驟2),3),4),否則執行步驟6)。該通道為被動模式的情況下,若仲裁單元未檢測到通道η的dma_laSt_req有效, 或DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則重復執行步驟2),3), 4),否則執行步驟6)6)通道η的數據傳輸結束,通 η的使能關閉。
權利要求
一種基于雙AHB Master接口的片上DMA控制器實現方法,其特征在于包括以下步驟步驟1,在DMA控制器開始工作前,由ARM微處理器通過APB總線對DMA控制器中的DMA配置寄存器單元進行初始化配置,所述初始化配置包括對32個DMA通道的通道配置寄存器,源地址寄存器,目的地址寄存器,傳輸數據長度寄存器進行初始化配置,即確定每個DMA通道的使能,工作模式,有效數據寬度,數據源的起始地址,數據目的的起始地址,以及傳輸數據長度;所述工作模式包括主動模式,被動模式,軟件模式;所述有效數據寬度包括byte,half word,word;步驟2,開始數據傳輸過程,DMA控制器等待出現的DMA請求信號,所述DMA請求信號為在主動模式,被動模式,軟件模式下均有效的dma_req,或僅在被動模式下有效的dma_last_req,在dma_req對應的通道的使能有效的情況下,根據有效的請求信號DMA控制器的仲裁單元仲裁出當前需要響應的通道號,并同時產生pahb_req信號和current_last_req,給AHB_master0接口單元,如果沒有請求則繼續在此步驟中等待執行;步驟3,當AHB_master0接口單元在pahb_req信號為高的情況下,得到仲裁單元仲裁出的通道號后,根據這個通道號對應通道的配置信息,所述對應通道的配置信息包括對應通道的工作模式,有效數據寬度,數據源的起始地址,數據目的的起始地址,以及傳輸數據長度,將其轉變為一次INCR4類型或4個連續SINGLE類型的AHB_master0的AHB總線信號,根據p_ram_select的指示將從源地址讀回的數據存儲在DMA數據緩存寄存器組中,并對這個通道讀回的數據量進行計數,每次INCR4類型或者4個連續SINGLE類型的傳輸完成時產生pahb_ack完成信號,給仲裁單元,同時將產生的qahb_req信號、該通道的配置信息以及數據存儲的位置q_ram_select傳遞給AHB_master1接口單元;步驟4,AHB_master1接口單元在qahb_req信號為高的情況下,獲得AHB_master0接口單元傳遞的信息后,將其轉變為一次INCR4類型或4個連續SINGLE類型的AHB_master1的AHB總線信號,根據q_ram_select的指示從DMA數據緩存寄存器組里面讀出相應的數據,并通過AHB_master1接口單元的AHB總線寫到目的地址上去;每次INCR4類型或者4個連續SINGLE類型的傳輸完成時產生qahb_ack完成信號,給AHB_master0接口單元,步驟5,當DMA控制器完成當前響應通道本次DMA請求全部的數據傳輸,AHB_master0接口單元同時將該通道對應的DMA中斷信號dma_int和DMA請求清零信號dma_clr信號拉高,并用dma_clr信號清零對應通道的外設或內存RAM發出的dma_req,使其不參加下一次的仲裁;DMA配置寄存器單元在檢測到中斷信號dma_int時,將對應的通道的通道完成狀態寄存器置高,對應通道的使能信號關閉,此時表示該通道的請求響應完成,跳到步驟7;若DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則跳到步驟6;步驟6,當DMA控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則不作任何信號調整,直接跳轉到步驟2;此時該通道對應的DMA請求信號dma_req或dma_last_req依然有效,與其它未被DMA控制器響應的有效通道請求一起參與仲裁單元的下一次仲裁;步驟7,ARM微處理器通過APB總線對DMA控制器中,已完成本次DMA請求全部數據傳輸的當前響應通道的配置寄存器單元(源地址寄存器,目的地址寄存器,傳輸數據長度寄存器)進行重新配置,并重新打開當前響應通道的使能信號后跳到步驟2。
2.如權利要求1所述的基于雙AHBMaster接口的片上DMA控制器實現方法,其特征在于每次DMA控制器數據傳輸只響應32個通道中的一個通道,每個通道的實現方法相同。
3.如權利要求1所述的基于雙AHBMaster接口的片上DMA控制器實現方法,其特征在 于,當DMA控制器未完成當前響應通道η全部的數據傳輸時,η = 0,1,2……31,其后續數據 傳輸過程如下1)在DMA控制器通道η開始數據傳輸之前,ARM微控制器通過APB總線對通道η的通 道配置寄存器,源地址寄存器,目的地址寄存器,傳輸數據長度寄存器進行相應配置,并打 開通道η的使能信號;2)仲裁單元根據仲裁原則確定響應通道η;3)AHB_maSter0接口單元將根據通道η的源地址寄存器發出相應的一次INCR4類型或 者4個連續SINGLE類型的傳輸地址及控制信號;將從源地址讀回的數據,存到DMA數據緩 存寄存器組;并對讀回的數據量按字節進行計數;并在DMA控制器完成通道η本次DMA請求 全部的數據傳輸時產生通道η請求的清零信號dma_Clr和中斷信號dma_int,同時將該通道 的配置信息以及數據存儲的位置q_ram_SeleCt傳遞給AHBjnasterl接口單元,4)AHB_masterl接口單元將根據通道η的目的地址寄存器發出相應的一次符合AHB總 線要求的INCR4類型或者4個連續SINGLE類型的傳輸地址及控制信號,同時根據q_ram_ select信號的指示將從DMA數據緩存寄存器組讀出的數據,寫到對應的目的地址上;5)該通道為主動模式或軟件模式的情況下若通道η的計數器未達到傳輸數據長度寄 存器配置的值,則重復執行步驟2),3),4),否則執行步驟6);該通道為被動模式的情況下,若仲裁單元未檢測到通道η的dma_last_req有效,或DMA 控制器未完成當前響應通道本次DMA請求全部的數據傳輸,則重復執行步驟2),3),4),否 則執行步驟6);6)通道η的數據傳輸結束,通道η的使能關閉。
4.如權利要求1或2或3所述的基于雙AHBMaster接口的片上DMA控制器實現方法, 其特征在于在一次數據傳輸過程中,AHB_masterO總線用于對傳輸源進行讀數據,AHB_ masterl總線用于對傳輸目的進行寫數據。
5.如權利要求1或2或3所述的基于雙AHBMaster接口的片上DMA控制器實現方法, 其特征在于DMA數據緩存寄存器組用來緩存數據,內部數據流從AHBjiiasterO接口單元到 DMA數據緩存寄存器組最后到AHBjiiasterl接口單元,整個內部數據傳輸過程為3級流水。
6.如權利要求1或2或3所述的基于雙AHBMaster接口的片上DMA控制器實現方法, 其特征在于在DMA控制器完成一次DMA數據傳輸時產生一個中斷信號用來指示一次傳輸 完畢,或在DMA計數器計數滿后產生中斷信號用來指示一次傳輸完畢。
7.如權利要求1或2或3所述的基于雙AHBMaster接口的片上DMA控制器實現方法, 其特征在于,所述DMA控制器包括DMA APB接口單元,作為APB總線接口供APB總線從此設備接口對DMA控制器的DMA配 置寄存器進行配置,DMA配置寄存器單元,由通道配置寄存器,源地址寄存器,目的地址寄存器,傳輸數據長 度寄存器以及32個通道完成狀態寄存器,32個通道完成狀態屏蔽寄存器,32個通道中斷屏 蔽寄存器組成;所述32個通道為32個DMA通道,32個DMA通道都有各自的通道配置寄存 器,源地址寄存器,目的地址寄存器和傳輸數據長度寄存器,其中每個通道配置寄存器的有效位寬為8位,DMA數據緩存寄存器組寄存器組空間為32byte,寬度為32bits,深度為8,且能進行字 節寫,有兩個接口,一個為讀口,另一個為寫口,在內部分為兩片A和B,每片空間為16byte, 通過AHBjnasterO或AHBjnasterl接口單元的ram_select信號來選擇當前對哪片寄存器 組操作,仲裁單元從當前的32個DMA通道的有效請求中,根據當前響應的通道號,仲裁出下一 個響應的一個通道號,連同這個通道對應的所有配置寄存器單元信息傳遞給AHBjiiasterO 接口單元,并在接收到當前通道的AHBjnasterO接口單元響應完成信號pahb_aCk后,產生 對AHBjnasterO接口單元下一次的請求pahb_req ;仲裁單元仲裁的原則是輪詢,其仲裁的 時間是檢測到pahb_aCk信號為高電平或者32個通道均無有效請求的空閑狀態,每次只有 一個輸入請求得到響應;檢測仲裁單元當前響應的通道的通道配置模式,如果配置為被動 模式,則預先配置當前響應通道的數據傳輸長度無效,同時根據檢測當前響應通道的dma_ last_req信號是否為高電平,如果為高電平,則表示當前響應的通道只剩最后一次INCR4 類型或4個連續SINGLE類型數據需要傳輸,此時仲裁單元需要使送出的current_laSt_req 信號為高電平,以此信號告知AHBjiiasterO接口單元接下來進行最后一次數據傳輸,如果 仲裁單元當前響應的通道的模式為主動模式或者軟件模式,則使輸出的Current_laSt_req 信號為低電平,AHBjnasterO接口單元AHB_masterO接口單元的AHB總線總是對數據源進行操作,即 總是進行AHB總線讀操作,在檢測到仲裁單元發出的pahb_req請求信號后,將即將響應的 通道號對應的所有配置寄存器單元信息轉換為AHBjiiasterO接口單元的一次INCR4類型或 者4個連續的SINGLE類型傳輸,根據p_ram_select的指示將源地址p_srC_addr對應的數 據讀回到DMA數據緩存寄存器組,并對這個通道讀回的數據量進行計數,并在這一次傳輸 完成時產生pahb_aCk完成信號,在完成當前響應通道本次DMA請求全部的數據傳輸時產生 dma請求清零信號dma_clr和中斷信號dma_int,否則不產生,AHBjiiasterl接口單元AHB_masterl接口單元的AHB總線總是對數據目的進行操作, 即總是進行AHB寫操作,每一次選中設備進行一次數據傳輸也為INCR4類型或者4個連 續的SINGLE類型傳輸,并在這一次數據傳輸完成時產生qahb_aCk完成信號;即在檢測到 AHBjnasterO接口單元發出的qahb_req請求信號后,將AHBjnasterO接口單元提供的與 當前響應的通道號對應的數據目的的起始地址,以及目的地址是否增加信號轉換為AHB_ master 1接口單元的AHB總線行為,根據AHBjnasterO接口單元提供q_ram_select的值, 從DMA數據緩存寄存器組里面讀出相應的數據,并通過AHBjiiasterl接口單元的AHB總線 寫到目的地址q_src_addr對應的地址上去。
全文摘要
一種基于雙AHB Master接口的片上DMA控制器實現方法,包括以下步驟1,對DMA配置寄存器單元進行初始化配置;2,仲裁單元根據DMA請求信號仲裁出當前需要響應的通道號給AHB_master0接口單元,或等待執行;3,AHB_master0接口單元完成數據傳遞,并發送信息給AHB_master1接口單元;4,AHB_master1接口單元完成數據傳遞,并發送信息給AHB_master0接口單元;5,若完成當前響應的本次DMA請求全部的數據傳輸跳到步驟7;否則跳到步驟6;6,不作任何信號調整,直接跳轉到步驟2;7,重新配置配置寄存器單元,跳到步驟2。本發明采用雙AHB_Master接口減少了數據傳輸的延時,只需要較小的內部FIFO;能同時適用于多層AHB總線系統,易于重用到以其它高性能ARM微處理器為基礎的SoC設計中。
文檔編號G06F13/28GK101901200SQ201010250368
公開日2010年12月1日 申請日期2010年8月11日 優先權日2010年8月11日
發明者劉婷, 張曦璐, 張繼勇, 溫玉屏, 謝振新 申請人:烽火通信科技股份有限公司