欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

直接存儲(chǔ)器存取控制器以及數(shù)據(jù)傳輸方法

文檔序號(hào):6480071閱讀:236來源:國知局
專利名稱:直接存儲(chǔ)器存取控制器以及數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信領(lǐng)域,具體地,涉及一種直接存儲(chǔ)器存取控制器以及數(shù)據(jù)傳輸方法。
背景技術(shù)
目前,大規(guī)模復(fù)雜控制芯片設(shè)計(jì)主要采用的片上系統(tǒng)(Systemon Chip,簡(jiǎn)稱為 SoC)技術(shù),該技術(shù)通過互連總線結(jié)構(gòu)將控制器、存儲(chǔ)器、各種特殊處理設(shè)備連接成為一個(gè)互 相協(xié)作的整體系統(tǒng),從而形成特定的具有復(fù)雜功能的芯片。 直接存儲(chǔ)器存取(Direct Memory Access,簡(jiǎn)稱為DMA)控制器(DMA Controller, 簡(jiǎn)稱為DMAC)是SoC系統(tǒng)中必不可少的部件,其主要在系統(tǒng)中進(jìn)行一定規(guī)模數(shù)據(jù)塊的傳輸 (或稱為搬運(yùn))工作,從而釋放SOC系統(tǒng)中控制器的負(fù)擔(dān),提高SOC系統(tǒng)整體性能。
傳統(tǒng)的DMAC多采用串行工作的原理,即,一次DMA數(shù)據(jù)傳輸操作包括首先進(jìn)行讀 數(shù)據(jù)操作,將一段數(shù)據(jù)讀入DMAC內(nèi)部的緩存器中,然后再將該段數(shù)據(jù)從緩存器中寫出到相 關(guān)設(shè)備。這樣,一次DMA數(shù)據(jù)傳輸操作的時(shí)間總和為讀數(shù)據(jù)時(shí)間和寫數(shù)據(jù)時(shí)間的總和???見,DMAC的串行工作方式所需的數(shù)據(jù)傳輸時(shí)間較長(zhǎng)、傳輸速度慢。 在相關(guān)技術(shù)中,為了解決DMAC的串行工作方式所需的數(shù)據(jù)傳輸時(shí)間較長(zhǎng)的問題, 采用了增加DMA的總線接口的個(gè)數(shù)的方法,這種方法能夠提高DMA的數(shù)據(jù)讀寫效率,但是, 在一定程度上增加了設(shè)計(jì)和使用的復(fù)雜性。 此外,在相關(guān)技術(shù)中,DMAC進(jìn)行數(shù)據(jù)傳輸時(shí),能夠?qū)崿F(xiàn)的數(shù)據(jù)輔助處理功能有限。 目前,DMA數(shù)據(jù)傳輸大多采用一維搬運(yùn)方式,即,設(shè)置好搬運(yùn)的起始地址和終止地址,當(dāng)DMA 傳輸啟動(dòng)后,根據(jù)設(shè)置的地址范圍、按照順序依次對(duì)數(shù)據(jù)進(jìn)行搬運(yùn),所搬運(yùn)的數(shù)據(jù)一般為地 址范圍內(nèi)的連續(xù)數(shù)據(jù)塊。目前,針對(duì)圖像數(shù)據(jù)的搬運(yùn)出現(xiàn)了二維傳輸?shù)姆绞?,即,先?duì)一行 數(shù)據(jù)進(jìn)行搬運(yùn),當(dāng)該行數(shù)據(jù)搬運(yùn)結(jié)束后,按照設(shè)置好的參數(shù)直接跳躍到下一行的起始地址 進(jìn)行搬運(yùn),直到搬運(yùn)完全部圖像數(shù)據(jù)。但是,這種二維搬運(yùn)僅僅實(shí)現(xiàn)了二維圖像的搬運(yùn)工 作,卻不能實(shí)現(xiàn)圖像處理中的其它輔助功能,諸如對(duì)圖像數(shù)據(jù)進(jìn)行采樣、翻轉(zhuǎn)、YUV分量打包 /平面分解等圖像加速處理的工作。 由此可見,在相關(guān)技術(shù)中存在DMA數(shù)據(jù)傳輸速度慢、實(shí)現(xiàn)的數(shù)據(jù)輔助處理功能有 限的問題。

發(fā)明內(nèi)容
考慮到相關(guān)技術(shù)中存在DMA數(shù)據(jù)傳輸速度慢、實(shí)現(xiàn)的數(shù)據(jù)輔助處理功能有限的問 題而提出本發(fā)明,為此,本發(fā)明的主要目的在于提供一種改進(jìn)的直接存儲(chǔ)器存取控制器以 及數(shù)據(jù)傳輸方法,以解決相關(guān)技術(shù)中的上述問題至少之一。 為了達(dá)到上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種直接存儲(chǔ)器存取控制器 即DMAC。 根據(jù)本發(fā)明的DMAC包括讀取器,用于響應(yīng)于來自外部的傳輸請(qǐng)求,獲取與傳輸請(qǐng)求對(duì)應(yīng)的源地址,并從源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),其中,數(shù)據(jù)包括多個(gè)數(shù)據(jù)塊;緩存 器,包括第一緩存器和第二緩存器,其中,第一緩存器和第二緩存器用于交替存儲(chǔ)多個(gè)數(shù)據(jù) 塊;發(fā)射器,用于按照交替存儲(chǔ)的順序從緩存模塊中依次獲取并發(fā)送多個(gè)數(shù)據(jù)塊。
優(yōu)選地,該DMAC還包括配置器和存儲(chǔ)器,其中,配置器,用于響應(yīng)于傳輸請(qǐng)求,獲 取預(yù)存的與傳輸請(qǐng)求對(duì)應(yīng)的配置信息,將配置信息發(fā)送到存儲(chǔ)器;存儲(chǔ)器,用于存儲(chǔ)來自配 置器的配置信息;其中,配置信息包括源地址、目的地址,并且還包括以下至少之一源行 跳變參數(shù)、源列跳變參數(shù)、源行計(jì)數(shù)參數(shù)、源列計(jì)數(shù)參數(shù)、源控制參數(shù)、目的行跳變參數(shù)、目 的列跳變參數(shù)、目的行計(jì)數(shù)參數(shù)、目的列計(jì)數(shù)參數(shù)、目的控制參數(shù)。 優(yōu)選地,上述緩存器還包括寫入位置選擇模塊,用于根據(jù)數(shù)據(jù)的大小、寬度和源 行跳變參數(shù)確定第一存儲(chǔ)位置,并在第一存儲(chǔ)位置存儲(chǔ)數(shù)據(jù)塊,其中,第一存儲(chǔ)位置用于指 示在第一緩存器或第二緩存器中存儲(chǔ)數(shù)據(jù)塊的位置;讀出位置選擇模塊,用于根據(jù)數(shù)據(jù)的 大小、寬度和目的行跳變參數(shù)確定第二存儲(chǔ)位置,并從第二存儲(chǔ)位置讀出數(shù)據(jù)塊,其中,第 二存儲(chǔ)位置用于指示從第一緩存器或第二緩存器中讀出數(shù)據(jù)塊的位置。 根據(jù)本發(fā)明的另一個(gè)方面,提供了 一種數(shù)據(jù)傳輸方法,用于直接存儲(chǔ)器存取控制 器即DMAC進(jìn)行數(shù)據(jù)傳輸。 根據(jù)本發(fā)明的數(shù)據(jù)傳輸方法包括接收來自外部的傳輸請(qǐng)求;獲取傳輸請(qǐng)求對(duì)應(yīng) 的源地址,并從源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),其中,數(shù)據(jù)包括多個(gè)數(shù)據(jù)塊;在第一緩存器 和第二緩存器中交替存儲(chǔ)多個(gè)數(shù)據(jù)塊,并按照交替存儲(chǔ)的順序依次讀取并發(fā)送多個(gè)數(shù)據(jù) 塊。 優(yōu)選地,上述交替存儲(chǔ)多個(gè)數(shù)據(jù)塊,并按照交替存儲(chǔ)的順序依次讀取并發(fā)送多個(gè) 數(shù)據(jù)塊的操作具體包括在當(dāng)前時(shí)鐘沿,將當(dāng)前數(shù)據(jù)塊存入第一緩存器,并且如果第二緩存 器非空,則讀取第二緩存器中存儲(chǔ)的數(shù)據(jù)塊;在下一時(shí)鐘沿,將下一數(shù)據(jù)塊存入第二緩存 器,并且如果第一緩存器非空,則讀取第一緩存器中存儲(chǔ)的數(shù)據(jù)塊。 優(yōu)選地,在接收傳輸請(qǐng)求之后,該方法還包括根據(jù)傳輸請(qǐng)求,獲取預(yù)存的與傳輸 請(qǐng)求相對(duì)應(yīng)的配置信息,其中,配置信息中包括源行跳變參數(shù)、源列跳變參數(shù)、源行計(jì)數(shù)參 數(shù)、源列計(jì)數(shù)參數(shù)、源控制參數(shù)、目的行跳變參數(shù)、目的列跳變參數(shù)、目的行計(jì)數(shù)參數(shù)、目的 列計(jì)數(shù)參數(shù)、目的控制參數(shù)、源地址、目的地址。 優(yōu)選地,該方法還包括根據(jù)源行跳變參數(shù)、源列跳變參數(shù)、源行計(jì)數(shù)參數(shù)、源列計(jì) 數(shù)參數(shù)、源控制參數(shù)從源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù);根據(jù)目的行跳變參數(shù)、目的列跳變參 數(shù)、目的行計(jì)數(shù)參數(shù)、目的列計(jì)數(shù)參數(shù)、目的控制參數(shù)將數(shù)據(jù)發(fā)送到目的地址對(duì)應(yīng)的設(shè)備。
優(yōu)選地,在對(duì)數(shù)據(jù)塊進(jìn)行存儲(chǔ)前,該方法還包括對(duì)于多個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù) 塊,根據(jù)數(shù)據(jù)的大小、寬度和源行跳變參數(shù)確定第一存儲(chǔ)位置,其中,第一存儲(chǔ)位置用于指 示存儲(chǔ)數(shù)據(jù)塊的位置;在第一存儲(chǔ)位置上存儲(chǔ)數(shù)據(jù)塊。 優(yōu)選地,依次將數(shù)據(jù)的多個(gè)數(shù)據(jù)塊發(fā)送到DMAC存儲(chǔ)的目的地址對(duì)應(yīng)的設(shè)備的操 作還包括對(duì)于多個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊,根據(jù)數(shù)據(jù)的大小、寬度和目的行跳變參數(shù)確定 第二存儲(chǔ)位置,其中,第二存儲(chǔ)位置用于指示讀出數(shù)據(jù)塊的位置;獲取傳輸請(qǐng)求對(duì)應(yīng)的目的 地址,從第二存儲(chǔ)位置讀取數(shù)據(jù)塊,并將讀取的數(shù)據(jù)塊發(fā)送到目的地址對(duì)應(yīng)的設(shè)備。
優(yōu)選地,該方法還包括源行跳變參數(shù)為1時(shí),使用總線突發(fā)模式讀取數(shù)據(jù),在行 跳變參數(shù)不為1時(shí),使用總線單獨(dú)模式讀取數(shù)據(jù);目的行跳變參數(shù)為1時(shí),使用總線突發(fā)模式發(fā)送數(shù)據(jù),在目的行跳變參數(shù)不為1時(shí),使用總線單獨(dú)模式發(fā)送數(shù)據(jù)。 借助于本發(fā)明的上述技術(shù)方案,通過在直接存儲(chǔ)器存取控制器的讀取器和發(fā)射器 之間設(shè)置第一緩存器和第二緩存器,能夠在第一緩存器和第二緩存器中交替地存入數(shù)據(jù), 并且能夠?qū)崿F(xiàn)并行的讀取和發(fā)送數(shù)據(jù)的操作,能夠提高數(shù)據(jù)傳輸?shù)男?,從而能夠解決相 關(guān)技術(shù)中存在的DMA數(shù)據(jù)傳輸速度慢的問題。 本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變 得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明 書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。


此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)
明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中 圖1是據(jù)本發(fā)明裝置實(shí)施例的DMAC的結(jié)構(gòu)框圖; 圖2是根據(jù)本發(fā)明裝置實(shí)施例的DMAC的優(yōu)選結(jié)構(gòu)框圖; 圖3是根據(jù)本發(fā)明方法實(shí)施例的數(shù)據(jù)傳輸方法的流程圖; 圖4是根據(jù)本發(fā)明裝置實(shí)施例的DMAC具體實(shí)現(xiàn)的結(jié)構(gòu)框圖; 圖5是根據(jù)本發(fā)明實(shí)施例的配置信息實(shí)現(xiàn)數(shù)據(jù)翻轉(zhuǎn)的處理示意圖; 圖6是根據(jù)本發(fā)明裝置實(shí)施例的DMAC的FIFO的存儲(chǔ)結(jié)構(gòu)示意圖; 圖7是使用如圖5所示存儲(chǔ)結(jié)構(gòu)進(jìn)行圖像數(shù)據(jù)平面化處理的示意圖。
具體實(shí)施方式

功能概述 考慮到相關(guān)技術(shù)中存在的DMA數(shù)據(jù)傳輸速度慢、實(shí)現(xiàn)的數(shù)據(jù)輔助處理功能有限的 問題,本發(fā)明實(shí)施例提供了一種改進(jìn)的DMAC以及數(shù)據(jù)傳輸方法,在改進(jìn)的DMAC中,在DMAC 的讀取器和發(fā)射器之間設(shè)置第一緩存器和第二緩存器,并在第一緩存器和第二緩存器中交 替地存入數(shù)據(jù)(即,通過乒乓操作進(jìn)行存儲(chǔ)),能夠?qū)崿F(xiàn)并行的讀取和發(fā)送數(shù)據(jù)的操作;此 外,在本發(fā)明的實(shí)施例中,還設(shè)置了一組配置信息,根據(jù)這組配置信息DMAC能夠?qū)崿F(xiàn)對(duì)數(shù) 據(jù)傳輸規(guī)模的控制、實(shí)現(xiàn)對(duì)諸如圖像數(shù)據(jù)的數(shù)據(jù)輔助處理功能。 需要說明的是,如果不沖突,本發(fā)明實(shí)施例以及實(shí)施例中的各個(gè)特征可以相互結(jié) 合,均在本發(fā)明的保護(hù)范圍之內(nèi)。 下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例 僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。需要說明的是,在附圖的流程圖示出的步 驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了 邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
裝置實(shí)施例 根據(jù)本發(fā)明的實(shí)施例,首先提供了一種DMAC。圖l示出了根據(jù)本發(fā)明裝置實(shí)施例 的DMAC的結(jié)構(gòu),如圖1所示,根據(jù)本發(fā)明裝置實(shí)施例的DMAC包括讀取器1、緩存器3、發(fā)射 器5。下面詳細(xì)說明上述構(gòu)成部分的功能。 讀取器l,用于響應(yīng)于來自外部的傳輸請(qǐng)求,獲取與傳輸請(qǐng)求對(duì)應(yīng)的源地址,并從源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),這里的數(shù)據(jù)包括多個(gè)數(shù)據(jù)塊。 緩存器3,包括第一緩存器31和第二緩存器33,第一緩存器31和第二緩存器33 均連接至讀取器l,其中,第一緩存器31和第二緩存器33用于交替存儲(chǔ)多個(gè)數(shù)據(jù)塊。
發(fā)射器5,連接至第一緩存器31和第二緩存器33,用于按照交替存儲(chǔ)的順序從緩 存模塊中依次獲取并發(fā)送多個(gè)數(shù)據(jù)塊。 通過本實(shí)施例的技術(shù)方案,在DMAC的讀取器和發(fā)射器之間設(shè)置第一緩存器和第 二緩存器,并在第一緩存器和第二緩存器中交替地存入數(shù)據(jù),能夠?qū)崿F(xiàn)并行地讀取和發(fā)送 數(shù)據(jù)的操作。 圖2示出了根據(jù)本發(fā)明裝置實(shí)施例的DMAC的優(yōu)選結(jié)構(gòu),如圖2所示,根據(jù)本發(fā)明 裝置實(shí)施例的DMAC的優(yōu)選結(jié)構(gòu)包括讀取器1、緩存器3、發(fā)射器5、配置器2和存儲(chǔ)器4,其 中,緩存器3還包括寫入位置選擇模塊35和讀出位置選擇模塊37,需要說明的是,讀取器 1、緩存器3、發(fā)射器5與圖1中相應(yīng)模塊的功能類似,在下文中,相似的功能不再贅述。
配置器2,用于響應(yīng)于傳輸請(qǐng)求,獲取預(yù)存的與傳輸請(qǐng)求對(duì)應(yīng)的配置信息,將配置 信息發(fā)送到存儲(chǔ)器4 ;存儲(chǔ)器4連接至配置器2、讀取器1和發(fā)射器5,用于存儲(chǔ)來自配置器 2的配置信息。 其中,配置信息包括源端配置信息(源行跳變參數(shù)(Src_XM0DIFY)、源列跳變 參數(shù)(Src_YM0DIFY)、源行計(jì)數(shù)參數(shù)(Src_XC0UNT)、源列計(jì)數(shù)參數(shù)(Src_YC0UNT)、源控 制參數(shù)(SrcJX)NTROL)、源地址(Src_ADDR))、目的端配置信息(目的行跳變參數(shù)(Dest_ XM0DIFY)、目的列跳變參數(shù)(DestJM0DIFY)、目的行計(jì)數(shù)參數(shù)(Dest_XC0DNT)、目的列計(jì)數(shù) 參數(shù)(Dest_YC0UNT)、目的控制參數(shù)(Dest_C0NTR0L)、目的地址(Dest_ADDR))。
與相關(guān)技術(shù)相比,本發(fā)明實(shí)施例在配置信息中新增加了四個(gè)MODIFY參數(shù),即, Src_XM0DIFY、 Src_YM0DIFY、 Dest_XM0DIFY、 Dest—YM0DIFY。其中,Src_XM0DIFY和Dest_ XMODIFY主要記錄在行方向上搬運(yùn)數(shù)據(jù)時(shí)地址的跳變值、以及用于指示數(shù)據(jù)搬運(yùn)的模式, Src_YM0DIFY和Dest_YM0DIFY主要記錄在列方向上搬運(yùn)數(shù)據(jù)時(shí)地址的跳變值;優(yōu)選地,如 果Src_XM0DIFY和Dest_XM0DIFY為1 ,則表明以地址連續(xù)自增的方式讀取數(shù)據(jù),可以用總線 突發(fā)模式(burst)對(duì)數(shù)據(jù)進(jìn)行搬運(yùn),否則,表明以地址跳躍自增的方式讀取數(shù)據(jù),并且按照 Src_XM0DIFY或Dest_XM0DIFY指定的大小對(duì)地址進(jìn)行跳躍自增,用總線單獨(dú)模式(single) 進(jìn)行數(shù)據(jù)的搬運(yùn);與相關(guān)技術(shù)相比,本實(shí)施例采用XMODIFY參數(shù)(Src—XM0DIFY和/或Dest— XM0DIFY)來指示數(shù)據(jù)搬運(yùn)的方式,能夠更加靈活地控制數(shù)據(jù)搬運(yùn)。 此夕卜,Src_XC0UNT和Dest_XC0UNT主要記錄在行方向上搬運(yùn)數(shù)據(jù)的個(gè)數(shù),Src_ YC0UNT和Dest_YC0UNT主要記錄在列方向上搬運(yùn)數(shù)據(jù)的個(gè)數(shù),Src_C0NTR0L和Dest_ CONTROL中包含諸如傳輸位寬的傳輸控制信息,Src—ADDR用于記錄讀取數(shù)據(jù)的源端設(shè)備的 地址,Dest_ADDR用于記錄發(fā)送數(shù)據(jù)的目的端設(shè)備的地址。 讀取器1還用于從存儲(chǔ)器4中獲取源端配置信息中的Src_ADDR,從Src—ADDR對(duì)應(yīng) 的設(shè)備中讀取數(shù)據(jù),并且,在Src—XMODIFY為1時(shí),讀取器1使用總線突發(fā)模式讀取數(shù)據(jù),在 Src_XM0DIFY參數(shù)不為1時(shí),使用總線單獨(dú)模式讀取數(shù)據(jù)。 緩存器3還可以包括寫入位置選擇模塊35和讀出位置選擇模塊37 ;其中,寫入 位置選擇模塊35,連接至讀取器1、第一緩存器31和第二緩存器33、存儲(chǔ)器4,用于根據(jù)數(shù) 據(jù)的大小、寬度和Src—XMODIFY確定在第一緩存器或第二緩存器中存儲(chǔ)數(shù)據(jù)塊的位置,并在該位置對(duì)數(shù)據(jù)塊進(jìn)行緩存;讀出位置選擇模塊37,連接至第一緩存器31、第二緩存器33、 存儲(chǔ)器4和發(fā)射器5,用于根據(jù)數(shù)據(jù)的大小、寬度和Dest_XC0UNT確定從第一緩存器或第二 緩存器中讀出數(shù)據(jù)塊的位置,并從該位置讀出數(shù)據(jù)塊。 發(fā)射器5還用于從存儲(chǔ)器4中獲取與傳輸請(qǐng)求對(duì)應(yīng)的目的端配置信息中的Dest_ ADDR,并將數(shù)據(jù)發(fā)送到Dest_ADDR對(duì)應(yīng)的設(shè)備,并且,在Dest_XM0DIFY為1時(shí),發(fā)射器5使 用總線突發(fā)模式發(fā)送數(shù)據(jù),在Dest—XMODIFY不為1時(shí),發(fā)射器5使用總線單獨(dú)模式發(fā)送數(shù) 據(jù)。 在本實(shí)施例提供的DMAC優(yōu)選結(jié)構(gòu)中,在DMAC的讀取器和發(fā)射器之間設(shè)置第一緩 存器和第二緩存器,并在第一緩存器和第二緩存器中交替地存入數(shù)據(jù),能夠?qū)崿F(xiàn)并行地讀 取和發(fā)送數(shù)據(jù)的操作;并且,通過設(shè)置配置信息中的MODIFY參數(shù)(即,Src_XMODIFY、 Src_ YMODIFY、 Dest_XMODIFY、 Dest_YMODIFY),還能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)傳輸規(guī)模的控制、實(shí)現(xiàn)對(duì)數(shù)據(jù)
的輔助處理功能。
方法實(shí)施例 根據(jù)本發(fā)明的實(shí)施例,還提供了一種數(shù)據(jù)傳輸方法,該方法可以通過上述裝置實(shí) 施例提供的DMAC來實(shí)現(xiàn)。 圖3示出了根據(jù)本發(fā)明方法實(shí)施例的數(shù)據(jù)傳輸方法的流程,如圖3所示,根據(jù)本發(fā) 明方法實(shí)施例的數(shù)據(jù)傳輸方法包括如下處理過程(步驟S302至步驟S306):
步驟S302,接收來自外部的傳輸請(qǐng)求; 步驟S304,獲取傳輸請(qǐng)求對(duì)應(yīng)的源地址,并從Src_ADDR對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù), 其中,數(shù)據(jù)包括多個(gè)數(shù)據(jù)塊; 步驟S306,在第一緩存器和第二緩存器中交替存儲(chǔ)多個(gè)數(shù)據(jù)塊,并按照交替存儲(chǔ)
的順序依次讀取并發(fā)送多個(gè)數(shù)據(jù)塊。 下面詳細(xì)說明上述處理過程的細(xì)節(jié)。 ( — )步驟S302 在步驟S302中,DMAC接收到的傳輸請(qǐng)求可以是由外部設(shè)備通過硬連線以信號(hào)形
式輸入的傳輸請(qǐng)求,也可以是由外部的軟件配置通過指令形式發(fā)送的傳輸請(qǐng)求。
( 二 )步驟S304 在接收到傳輸請(qǐng)求之后,DMAC獲取預(yù)存的與傳輸請(qǐng)求相對(duì)應(yīng)的配置信息,其中,配 置信息中包括源端配置信息(Src_XMODIFY、 Src_YMODIFY、 Src_XCOUNT、 Src_YCOUNT、 Src_ CONTROL、 Src_ADDR)、目的端配置信息(Dest_XMODIFY、 Dest_YMODIFY、 Dest_XCOUNT、 Dest_ YCOUNT、 Dest_CONTROL、 Dest_ADDR)。 DMAC從源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),該數(shù)據(jù)可以是包括多個(gè)數(shù)據(jù)塊,也可以是
一維數(shù)據(jù)或二維數(shù)據(jù),同時(shí)還可以是諸如圖像數(shù)據(jù)的多種數(shù)據(jù)形式的數(shù)據(jù)。 優(yōu)選地,讀取器根據(jù)源端配置信息從Src_ADDR對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),如果Src_
XMODIFY為1,讀取器可以使用總線突發(fā)模式讀取數(shù)據(jù),如果Src_XMODIFY不為1,讀取器可
以使用總線單獨(dú)模式讀取數(shù)據(jù)。 (三)步驟S306 步驟S306優(yōu)選地可以包括以下的步驟(1)和步驟(2): 步驟(l)DMAC的讀取器在當(dāng)前時(shí)鐘沿,如果第一緩存器為空,則將當(dāng)讀取到的數(shù)據(jù)塊存入第一緩存器,并且如果第二緩存器非空,則發(fā)射器讀取并發(fā)送第二緩存器中存儲(chǔ) 的數(shù)據(jù)塊。 步驟(2)在下一時(shí)鐘沿,如果第二存儲(chǔ)器為空,讀取器將讀取的下一數(shù)據(jù)塊存入
第二緩存器,并且如果第一緩存器非空,則發(fā)生器讀取并發(fā)送第一緩存器中存儲(chǔ)的數(shù)據(jù)塊。 依次執(zhí)行步驟(1)和步驟(2),直至讀取和發(fā)送完需要傳輸?shù)娜繑?shù)據(jù)。 優(yōu)選地,在將讀取的數(shù)據(jù)存入第一緩存器或第二緩存器之前,可以進(jìn)行如下操
作 (1)對(duì)于多個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊,根據(jù)數(shù)據(jù)的大小、寬度和Src_XM0DIFY確定 用于指示在第一緩存器或第二緩存器中存儲(chǔ)數(shù)據(jù)塊的位置,并在該位置上存儲(chǔ)數(shù)據(jù)塊。
(2)對(duì)于多個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊,根據(jù)數(shù)據(jù)的大小、寬度和Dest_XM0DIFY確 定讀出數(shù)據(jù)塊的位置,并從該位置讀取數(shù)據(jù)塊,獲取傳輸請(qǐng)求對(duì)應(yīng)的目的地址,將讀取的數(shù) 據(jù)塊發(fā)送到目的地址對(duì)應(yīng)的設(shè)備。 此外,發(fā)射器可以根據(jù)目的端配置信息向目的地址對(duì)應(yīng)的設(shè)備發(fā)送數(shù)據(jù);如果 Dest—XM0DIFY為1,發(fā)射器可以使用總線突發(fā)模式發(fā)送數(shù)據(jù),如果Dest—XM0DIFY不為l,發(fā) 射器可以使用總線單獨(dú)模式發(fā)送數(shù)據(jù)。 通過本實(shí)施例提供的技術(shù)方案,通過第一緩存器和第二緩存器中交替地存入數(shù)據(jù) (即,通過乒乓操作進(jìn)行存儲(chǔ)),能夠?qū)崿F(xiàn)并行的讀取和發(fā)送數(shù)據(jù)的操作,能夠提高數(shù)據(jù)傳 輸?shù)男省?
實(shí)例 基于以上的描述,圖4示出了根據(jù)本發(fā)明裝置實(shí)施例的DMAC具體實(shí)現(xiàn)的結(jié)構(gòu),通 過該DMAC能夠?qū)崿F(xiàn)如圖3所示的數(shù)據(jù)傳輸方法。 如圖4所示,該DMAC包括一個(gè)邏輯選擇通道和一個(gè)物理通道。 其中,邏輯選擇通道(對(duì)應(yīng)于圖2中的配置器2)包括邏輯通道組301 (其中包括
16個(gè)邏輯通道,即,邏輯通道1、邏輯通道2........邏輯通道16)、通道仲裁模塊302、以
及邏輯通道優(yōu)先級(jí)模塊303,邏輯通道組301、通道仲裁模塊302、以及邏輯通道優(yōu)先級(jí)模塊 303之間相互連接;其中,每個(gè)邏輯通道都包括一個(gè)負(fù)責(zé)傳輸和控制的寄存器組(未在圖4 中示出),這些邏輯通道通過高級(jí)外設(shè)總線(Advanced Periphral Bus,簡(jiǎn)稱為APB)接口進(jìn) 行配置。 物理通道包括讀狀態(tài)機(jī)304 (Receive Finite State Machine,簡(jiǎn)稱為RCV FSM) (對(duì)應(yīng)于圖1中的讀取器1)、寫入位置選擇電路305(對(duì)應(yīng)于圖2中的寫入位置選擇模塊 35)、先進(jìn)先出(First InputFirst Output,簡(jiǎn)稱為FIFO)緩存器1、FIF0 2(分別對(duì)應(yīng)于圖 1或圖2中的第一緩存器31和第二緩存器33)、讀出位置選擇電路306 (對(duì)應(yīng)于圖2中的讀 出位置選擇模塊)、寫狀態(tài)機(jī)307 (Send FiniteState Machine,簡(jiǎn)稱為SND FSM)(對(duì)應(yīng)于圖 1或圖2中的發(fā)射器5)、以及用于存儲(chǔ)配置信息的寄存器組308(對(duì)應(yīng)于圖2中的存儲(chǔ)器 4)(其中包括用于存儲(chǔ)源端配置信息的源端寄存器組308-1和用于存儲(chǔ)目的端配置信息的 目的端寄存器組308-2),其中,RCV FSM 304與寫入位置選擇電路305之間串聯(lián),寫入位置 選擇電路305和讀出位置選擇電路306位于FIFO 1和FIFO 2的兩端、并且均與FIFO 1和 FIFO 2并聯(lián),讀出位置選擇電路306與SND FSM 307之間串聯(lián),寄存器組308連接到通道 仲裁模塊302、RCV FSM 304、寫入位置選擇電路305、讀出位置選擇電路306、以及SND FSM307。圖4中各部分的功能與圖1或圖2中相應(yīng)部分的功能類似,這里不再贅述。 具體地,圖4所示的DMAC的具體工作流程(即,進(jìn)行數(shù)據(jù)搬運(yùn)的過程)包括以下
處理過程(步驟1至步驟4)。( 一 )步驟1 當(dāng)外部設(shè)備或軟件配置發(fā)出傳輸請(qǐng)求后,該傳輸請(qǐng)求會(huì)進(jìn)入相應(yīng)的邏輯通道。步 驟1可以對(duì)應(yīng)于上述步驟S302。
(二)步驟2 通道仲裁模塊302以及邏輯通道優(yōu)先級(jí)模塊303對(duì)攜帶傳輸請(qǐng)求的邏輯通道進(jìn)行 仲裁,并將獲得仲裁的邏輯通道的寄存器中存儲(chǔ)的配置信息送入源端寄存器組308-1和目 的端寄存器組308-2,其中,配置信息包括源端配置信息和目的端配置信息,源端配置信息 包括但不限于Src_XM0DIFY、 Src_YM0DIFY、 Src_XC0UNT、 Src_YC0UNT、 Src_C0NTR0L、 Src_ ADDR,目的端配置信息包括但不限于Dest_XM0DIFY、 Dest_YM0DIFY、 Dest_XC0UNT、 Dest_ YCOUNT、 Dest_C0NTR0L、 Dest_ADDR。
(三)步驟3 RCV FSM 304得到觸發(fā)后(優(yōu)選地,外部設(shè)備通過發(fā)出高位信號(hào)觸發(fā)RCV FSM,軟 件配置通過配置信息中的使能位的狀態(tài)來觸發(fā)RCV FSM),從源端寄存器組308-1和目的端 寄存器組308-2中獲取配置信息,根據(jù)配置信息進(jìn)行數(shù)據(jù)搬運(yùn)工作;S卩,RCV FSM 304從源 端地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),并以交替存儲(chǔ)的方式在FIFO 1和FIFO 2中對(duì)讀取的數(shù)據(jù) 進(jìn)行緩存,SND FSM 307按照交替存儲(chǔ)的順序依次將FIFO 1和FIFO 2中的數(shù)據(jù)發(fā)送到目 的端地址對(duì)應(yīng)的設(shè)備);優(yōu)選地,這里提到的數(shù)據(jù)可以是多種形式的數(shù)據(jù),例如,圖像數(shù)據(jù)。
在讀取/發(fā)送數(shù)據(jù)的操作中,分離的RCV FSM304/SND FSM307通過FIFO 1和FIFO 2的空/滿狀態(tài)來觸發(fā)讀取/發(fā)送數(shù)據(jù)的操作。這樣,更具體的數(shù)據(jù)搬運(yùn)的處理可以包括如 下過程 步驟3-l,在DMA傳輸開始后,RCV FSM 304將第一次讀入的數(shù)據(jù)存儲(chǔ)到FIF0 l中, 該數(shù)據(jù)的存儲(chǔ)位置由寫入位置選擇電路305根據(jù)源端配置參數(shù)來確定(確定存儲(chǔ)數(shù)據(jù)位置 的處理過程將在下文中詳細(xì)描述); 步驟3-2,當(dāng)讀傳輸狀態(tài)結(jié)束后,生成信號(hào)觸發(fā)SND FSM 307進(jìn)行工作;
步驟3-3, SND FSM 307響應(yīng)于該觸發(fā)從FIFO 1中讀取數(shù)據(jù)后將數(shù)據(jù)發(fā)送出去,讀 取數(shù)據(jù)的位置由讀出位置選擇電路306根據(jù)目的端配置參數(shù)來確定(確定讀取數(shù)據(jù)位置的 處理過程將在下文中詳細(xì)描述); 步驟3-4,在SND FSM 307發(fā)送FIFO 1中的數(shù)據(jù)的同時(shí),F(xiàn)IF02的狀態(tài)為空,這將 觸發(fā)RCV FSM 304開始新的讀操作并向FIFO 2中寫入數(shù)據(jù),這樣,就形成了 RCV FSM 304 和SND FSM 307的讀、寫操作并行執(zhí)行的狀況; 步驟3-5,當(dāng)SND FSM 307將數(shù)據(jù)從相應(yīng)的FIFO發(fā)送出去后該FIFO又會(huì)空閑,從 而觸發(fā)RCV FSM 304開啟新的讀操作。 通過步驟3-1至步驟3-5的處理,可以能夠提高DMA傳輸數(shù)據(jù)的效率。優(yōu)選地,在 理想狀態(tài)下,讀寫狀態(tài)機(jī)持續(xù)工作,內(nèi)部的兩個(gè)FIFO以乒乓方式交替讀入和寫出數(shù)據(jù),這 樣能夠?qū)鬏敂?shù)據(jù)的效率提高2倍。 步驟2至步驟3可以對(duì)應(yīng)于上述步驟S304至步驟S306。
(四)步驟4,物理通道在完成一次數(shù)據(jù)搬運(yùn)傳輸后釋放該邏輯通道。剩余未傳輸 的數(shù)據(jù)繼續(xù)參與新的信道仲裁直到所有數(shù)據(jù)傳輸完畢。 借助于如圖4所示的DMAC,通過設(shè)置并聯(lián)的FIFO 1和FIF02,能夠?qū)?shù)據(jù)交替地 存儲(chǔ)到FIFO 1和FIFO 2中,并且能夠?qū)崿F(xiàn)并行的讀取/發(fā)送數(shù)據(jù)的操作,從而能夠提高 DMA數(shù)據(jù)傳輸?shù)男?。此外,根?jù)本實(shí)施例提供的配置信息(特別是MODIFY參數(shù),即,Src_XMODIFY、Src_
YMODIFY、 Dest_XMODIFY、 Dest_YMODIFY),可以實(shí)現(xiàn)對(duì)諸如圖像數(shù)據(jù)行列規(guī)模的控制、并進(jìn)
行行/列內(nèi)數(shù)據(jù)的跳躍傳輸,還可以在FIFO中對(duì)數(shù)據(jù)進(jìn)行特定數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ),或者對(duì)存
儲(chǔ)在FIFO中的數(shù)據(jù)進(jìn)行特定數(shù)據(jù)結(jié)構(gòu)的輸出,從而能夠完成對(duì)圖像數(shù)據(jù)的截取、轉(zhuǎn)置、抽
取、采樣、插值、交織等多種操作,以及可以實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)的平面化操作和打包操作;與相
關(guān)技術(shù)相比,通過本實(shí)施例提供的配置信息和數(shù)據(jù)傳輸方法,能夠?qū)崿F(xiàn)更靈活的數(shù)據(jù)傳輸、
以及實(shí)現(xiàn)對(duì)數(shù)據(jù)的輔助處理功能。 下面詳細(xì)描述本實(shí)例的具體應(yīng)用。( — )數(shù)據(jù)傳輸規(guī)??刂?根據(jù)XMODIFY參數(shù)來實(shí)現(xiàn)控制數(shù)據(jù)傳輸規(guī)模的具體過程包括 (1)在讀取數(shù)據(jù)的操作中,如果Src_XMODIFY為1,則RCVFSM 304用總線突發(fā)模式
(burst)進(jìn)行數(shù)據(jù)搬運(yùn),否則用總線單獨(dú)模式(single)進(jìn)行數(shù)據(jù)的搬運(yùn),并且按照XMODIFY
指定的大小跳躍自增地進(jìn)行數(shù)據(jù)搬運(yùn);在讀取數(shù)據(jù)的過程中,當(dāng)RCV FSM 304的內(nèi)部計(jì)數(shù)
器(未在圖4中示出)發(fā)現(xiàn)已經(jīng)按照Src—XCOUNT所指示的數(shù)量讀入了數(shù)據(jù)時(shí),則表明一行
數(shù)據(jù)的搬運(yùn)結(jié)束,這時(shí)按照Src_YMODIFY指定的大小跳躍到下一行地址進(jìn)行數(shù)據(jù)的讀取。 (2)在發(fā)送數(shù)據(jù)的操作中,在第一批讀操作結(jié)束后就啟動(dòng)SNDFSM 307進(jìn)行發(fā)送數(shù)
據(jù)的操作,SND FSM 307按照Dest—XM0DIFY指示的大小按行發(fā)送數(shù)據(jù);在發(fā)送數(shù)據(jù)的過程
中,當(dāng)SND FSM 307中的內(nèi)部計(jì)數(shù)器(未在圖中示出)發(fā)現(xiàn)已經(jīng)傳輸了 XCOUNT*YCOUNT個(gè)
數(shù)據(jù)后,整個(gè)DMA傳輸結(jié)束。WO1] ( 二 )對(duì)圖像數(shù)據(jù)的翻轉(zhuǎn)處理 圖5是根據(jù)本發(fā)明實(shí)施例的配置信息實(shí)現(xiàn)數(shù)據(jù)翻轉(zhuǎn)的處理示意圖,在圖5中,需要 讀取源端存儲(chǔ)的16個(gè)數(shù)據(jù)塊(數(shù)據(jù)塊1至數(shù)據(jù)塊16),配置信息為Src_XCOUNT = 4、Src_ XMODIFY = 1、 Src_YCOUNT = 4、 Src_YMODIFY = 3, Dest_XCOUNT = 4、 Dest_XMODIFY = 4、 Dest_YCOUNT = 4、 DestJMODIFY = -13,具體的處理過程如下 (1)由于Src_XMODIFY = 1, RCV FSM 304采用連續(xù)的傳輸方式(總線突發(fā)模式) 進(jìn)行讀取,根據(jù)源地址指示的存儲(chǔ)位置讀取數(shù)據(jù)塊1、數(shù)據(jù)塊2、數(shù)據(jù)塊3、數(shù)據(jù)塊4,當(dāng)讀取 了數(shù)據(jù)塊4時(shí),RCV FSM 304的內(nèi)部計(jì)數(shù)器根據(jù)Src_XCOUNT = 4的指示計(jì)數(shù)發(fā)現(xiàn)對(duì)一行數(shù) 據(jù)的搬運(yùn)已經(jīng)結(jié)束,這時(shí)RCV FSM 304根據(jù)Src_YMODIFY = 3的指示跨越行邊界、從距離數(shù) 據(jù)塊4的存儲(chǔ)空間為3個(gè)存儲(chǔ)空間的存儲(chǔ)位置(即,第二行的第一個(gè)存儲(chǔ)空間)開始搬運(yùn) 數(shù)據(jù),依次類推,直至將數(shù)據(jù)塊16搬運(yùn)完畢; (2)在RCV FSM 304從源端搬運(yùn)數(shù)據(jù)的同時(shí),SND FSM 307根據(jù)目的端配置信息將 數(shù)據(jù)發(fā)送到目的地址指定的位置,按照先進(jìn)先出的順序,首先將數(shù)據(jù)塊1發(fā)送到目的地址 指定的位置(如圖5中目的端的第一行的最后一個(gè)存儲(chǔ)空間),然后根據(jù)Dest_XMODIFY = 4的指示,在距離數(shù)據(jù)塊1的存儲(chǔ)空間為4個(gè)存儲(chǔ)空間的位置(即,第二行的第4個(gè)存儲(chǔ)空間)存入數(shù)據(jù)塊2,同理存入數(shù)據(jù)塊3和數(shù)據(jù)塊4,存儲(chǔ)完數(shù)據(jù)塊4后,SND FSM 307的內(nèi)部 計(jì)數(shù)器根據(jù)Dest_XC0UNT = 4的指示計(jì)數(shù)發(fā)現(xiàn)對(duì)一行數(shù)據(jù)的搬運(yùn)已經(jīng)結(jié)束,此時(shí)SND FSM 307根據(jù)Dest_YM0DIFY = -13的指示折回計(jì)數(shù)(因?yàn)閿?shù)據(jù)塊4的存儲(chǔ)空間位于行邊界和列 邊界,所以需要折回計(jì)數(shù))、在距離數(shù)據(jù)塊4的存儲(chǔ)空間為13個(gè)存儲(chǔ)空間的位置存入數(shù)據(jù)塊 5(即,第一行的第3個(gè)存儲(chǔ)空間),以此類推,直至將數(shù)據(jù)塊16發(fā)送給目的端。
(三)對(duì)圖像數(shù)據(jù)的平面化處理和打包處理 本發(fā)明實(shí)施例還提供了一種FIFO的存儲(chǔ)結(jié)構(gòu),利用這種存儲(chǔ)結(jié)構(gòu)可以實(shí)現(xiàn)對(duì)圖 像數(shù)據(jù)諸如平面化、打包等的處理。 圖6是根據(jù)本發(fā)明裝置實(shí)施例的DMAC的FIFO的存儲(chǔ)結(jié)構(gòu)示意圖,如圖6所示,每 個(gè)FIFO對(duì)外呈現(xiàn)出64*16的物理存儲(chǔ)結(jié)構(gòu),但是其內(nèi)部是由8個(gè)8*16的小物理存儲(chǔ)結(jié)構(gòu) 進(jìn)行拼接而成的,8個(gè)小物理存儲(chǔ)的兩端分別是寫入位置選擇電路305和讀出位置選擇電 路306,寫入位置選擇電路305可以首先根據(jù)數(shù)據(jù)大小和Src_XM0DIFY來確定在FIFO (FIFO 1或FIF0 2)中存儲(chǔ)數(shù)據(jù)的首地址,然后根據(jù)該首地址和數(shù)據(jù)寬度確定數(shù)據(jù)在FIFO中的存 儲(chǔ)位置,并將數(shù)據(jù)存入FIFO。 例如,讀取的數(shù)據(jù)塊為連續(xù)的4個(gè)位寬8比特位的數(shù)據(jù)塊,Src_XMODIFY = 1,則在 FIFO為空時(shí),將第一個(gè)數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_000的存儲(chǔ)空間中,將第二個(gè)數(shù)據(jù)塊存儲(chǔ) 在的編號(hào)為0000_001存儲(chǔ)空間中,將第三個(gè)數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_010的存儲(chǔ)空間中, 將第一個(gè)數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_011的存儲(chǔ)空間中。 如果讀取的數(shù)據(jù)塊為連續(xù)的4個(gè)位寬為16比特位的數(shù)據(jù)塊,Src_XMODIFY = 1, 則在FIFO為空時(shí),將第一個(gè)數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_000和編號(hào)為0000_001的存儲(chǔ)空間 中,將第二個(gè)數(shù)據(jù)塊存儲(chǔ)在在編號(hào)為0000_010和編號(hào)為0000_011的存儲(chǔ)空間中,將第三個(gè) 數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_100和編號(hào)為0000_101的存儲(chǔ)空間中,將第四個(gè)數(shù)據(jù)塊存儲(chǔ)在 編號(hào)為0000_110和編號(hào)為0000_111的存儲(chǔ)空間中。 如果讀取的數(shù)據(jù)塊為連續(xù)的4個(gè)位寬為8比特位的數(shù)據(jù)塊,Src_XMODIFY = 2,則 在FIFO為空時(shí),將第一個(gè)數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_000的存儲(chǔ)空間中,將第二個(gè)數(shù)據(jù)塊存 儲(chǔ)在的編號(hào)為0000_010存儲(chǔ)空間中,將第三個(gè)數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_100的存儲(chǔ)空間 中,將第四個(gè)數(shù)據(jù)塊存儲(chǔ)在編號(hào)為0000_110的存儲(chǔ)空間中。 相應(yīng)地,讀出位置選擇電路306可以首先根據(jù)數(shù)據(jù)大小和Dest—XMODIFY來確定從 FIFO中讀取數(shù)據(jù)的首地址,然后根據(jù)首地址和數(shù)據(jù)寬度確定在FIFO中的讀取數(shù)據(jù)位置,并 將數(shù)據(jù)從FIFO中讀出,利用該存儲(chǔ)結(jié)構(gòu)最小可以字節(jié)為單位選擇數(shù)據(jù)的存儲(chǔ)位置。
在圖像處理中,圖像數(shù)據(jù)像素的分量信息(RGB, YUV等)有時(shí)分開存放在存儲(chǔ)結(jié) 構(gòu)的不同區(qū)域,這種處理被稱為平面化(planar),而有時(shí)為了顯示和處理的需要,又會(huì)將不 同的分量信息交織到一起進(jìn)行傳輸,這種處理被稱之為圖像數(shù)據(jù)打包(packed)?;谌鐖D 6所示的存儲(chǔ)結(jié)構(gòu),以及本實(shí)施例提供的配置信息,可以將讀入的不同數(shù)據(jù)塊按照規(guī)律交織 地存入該存儲(chǔ)結(jié)構(gòu)中,也可從該存儲(chǔ)結(jié)構(gòu)中按規(guī)律抽取出數(shù)據(jù)方向不同的數(shù)據(jù)塊,從而可 以實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)的平面化操作和打包操作。 在進(jìn)行一般的連續(xù)傳輸時(shí)(SP, Src_XMODIFY = 1時(shí)),在FIFO中,由圖4中的寫 入位置選擇電路305確定的存儲(chǔ)地址以傳輸寬度為單位進(jìn)行自增,按照順序?qū)?shù)據(jù)塊存入 該存儲(chǔ)結(jié)構(gòu),讀出位置選擇電路306按照順序從存儲(chǔ)結(jié)構(gòu)中讀取數(shù)據(jù)塊。當(dāng)進(jìn)行平面化或打包操作時(shí),寫入位置選擇電路305則根據(jù)MODIFY (Src_XM0DIFY、Dest_XM0DIFY)的跳變指 示確定存儲(chǔ)地址,直接在圖6所示的存儲(chǔ)結(jié)構(gòu)內(nèi)完成對(duì)數(shù)據(jù)的插入或抽取操作。這樣,整個(gè) 存儲(chǔ)結(jié)構(gòu)實(shí)際上成為平面化或打包操作的數(shù)據(jù)交換結(jié)構(gòu),輸出時(shí)則按照交換后的順序進(jìn)行 數(shù)據(jù)傳輸。 圖7是使用如圖6所示存儲(chǔ)結(jié)構(gòu)進(jìn)行圖像數(shù)據(jù)平面化處理的示意圖,圖7示出了 圖像傳輸中YUV分量為4:2:2時(shí)的圖像數(shù)據(jù)在FIFO中存放位置的示意結(jié)構(gòu),此時(shí)傳輸寬度 為l字節(jié)。 當(dāng)進(jìn)行打包操作時(shí),按照YUV分量通道的MODIFY值(Y :SrcJM0DIFY = 2,U :Src_ 預(yù)0DIFY = 4, V :Src_YM0DIFY = 4),寫入位置選擇電路305將通過3個(gè)邏輯通道分別讀取的 Y、 U、 V分量信息按照?qǐng)D7所示的位置插入存儲(chǔ)結(jié)構(gòu)中,即,在編號(hào)為0000_000的存儲(chǔ)空間 存入第一個(gè)Y分量,在編號(hào)為0000J)01的存儲(chǔ)空間存入第一個(gè)U分量,根據(jù)Y :Src_YMODIFY =2,在編號(hào)為0000_010的存儲(chǔ)空間存入第二個(gè)Y分量,在編號(hào)為OOOOJ)ll的存儲(chǔ)空間存 入第一個(gè)V分量,根據(jù)Y :Src_YMODIFY = 2,在編號(hào)為0000_100的存儲(chǔ)空間存入第三個(gè)Y 分量,根據(jù)U :Src_YMODIFY = 4,在編號(hào)為0000_101的存儲(chǔ)空間存入第二個(gè)U分量,根據(jù)Y : Src_YMODIFY = 2,在編號(hào)為0000_110的存儲(chǔ)空間存入第四個(gè)Y分量,根據(jù)V :Src_YMODIFY =4,在編號(hào)為0000_111的存儲(chǔ)空間存入第二個(gè)V分量;依次類推,直至將需要存儲(chǔ)的分量 信息全部存儲(chǔ)到圖6所示的存儲(chǔ)結(jié)構(gòu)中。 在發(fā)送這三個(gè)分量時(shí),則按照連續(xù)輸出的方式將存儲(chǔ)結(jié)構(gòu)中的數(shù)據(jù)一起向目的地 發(fā)送。 當(dāng)進(jìn)行平面化操作時(shí),根據(jù)目的端配置信息,不同平面的邏輯通道將按上述位置 從每次讀入緩存的數(shù)據(jù)上抽取相應(yīng)的數(shù)據(jù)分量(例如,從包含YUV分量信息的數(shù)據(jù)中分別 抽取Y、 U、 V分量信息),并通過各自的邏輯通道發(fā)送向不同的平面。詳細(xì)的過程可以參照 打包操作的處理,這里不再贅述。 綜上所述,借助于本發(fā)明的技術(shù)方案,在DMAC的讀取器和發(fā)射器之間設(shè)置第一緩 存器和第二緩存器,能夠在第一緩存器和第二緩存器中交替地存入數(shù)據(jù),能夠?qū)崿F(xiàn)并行的 讀取和發(fā)送數(shù)據(jù)的操作;此外,根據(jù)本發(fā)明實(shí)施例提供的配置信息能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)傳輸規(guī) 模的控制、實(shí)現(xiàn)對(duì)諸如圖像數(shù)據(jù)的數(shù)據(jù)輔助處理功能。 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種直接存儲(chǔ)器存取控制器即DMAC,其特征在于,包括讀取器,用于響應(yīng)于來自外部的傳輸請(qǐng)求,獲取與所述傳輸請(qǐng)求對(duì)應(yīng)的源地址,并從所述源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),其中,所述數(shù)據(jù)包括多個(gè)數(shù)據(jù)塊;緩存器,包括第一緩存器和第二緩存器,其中,所述第一緩存器和第二緩存器用于交替存儲(chǔ)所述多個(gè)數(shù)據(jù)塊;發(fā)射器,用于按照所述交替存儲(chǔ)的順序從所述緩存模塊中依次獲取并發(fā)送所述多個(gè)數(shù)據(jù)塊。
2. 根據(jù)權(quán)利要求1所述的DMAC,其特征在于,所述DMAC還包括配置器和存儲(chǔ)器,其中, 所述配置器,用于響應(yīng)于所述傳輸請(qǐng)求,獲取預(yù)存的與所述傳輸請(qǐng)求對(duì)應(yīng)的配置信息,將所述配置信息發(fā)送到所述存儲(chǔ)器;所述存儲(chǔ)器,用于存儲(chǔ)來自所述配置器的所述配置信息;其中,所述配置信息包括所述源地址、所述目的地址,并且還包括以下至少之一 源行 跳變參數(shù)、源列跳變參數(shù)、源行計(jì)數(shù)參數(shù)、源列計(jì)數(shù)參數(shù)、源控制參數(shù)、目的行跳變參數(shù)、目 的列跳變參數(shù)、目的行計(jì)數(shù)參數(shù)、目的列計(jì)數(shù)參數(shù)、目的控制參數(shù)。
3. 根據(jù)權(quán)利要求2所述的DMAC,其特征在于,所述緩存器還包括 寫入位置選擇模塊,用于根據(jù)所述數(shù)據(jù)的大小、寬度和所述源行跳變參數(shù)確定第一存儲(chǔ)位置,并在所述第一存儲(chǔ)位置存儲(chǔ)所述數(shù)據(jù)塊,其中,所述第一存儲(chǔ)位置用于指示在所述第一緩存器或所述第二緩存 器中存儲(chǔ)所述數(shù)據(jù)塊的位置;讀出位置選擇模塊,用于根據(jù)所述數(shù)據(jù)的大小、寬度和所述目的行跳變參數(shù)確定第二 存儲(chǔ)位置,并從所述第二存儲(chǔ)位置讀出所述數(shù)據(jù)塊,其中,所述第二存儲(chǔ)位置用于指示從所 述第一緩存器或所述第二緩存器中讀出所述數(shù)據(jù)塊的位置。
4. 一種數(shù)據(jù)傳輸方法,用于直接存儲(chǔ)器存取控制器即DMAC進(jìn)行數(shù)據(jù)傳輸,其特征在 于,所述方法包括接收來自外部的傳輸請(qǐng)求;獲取所述傳輸請(qǐng)求對(duì)應(yīng)的源地址,并從所述源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),其中,所述 數(shù)據(jù)包括多個(gè)數(shù)據(jù)塊;在第一緩存器和第二緩存器中交替存儲(chǔ)所述多個(gè)數(shù)據(jù)塊,并按照所述交替存儲(chǔ)的順序 依次讀取并發(fā)送所述多個(gè)數(shù)據(jù)塊。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述交替存儲(chǔ)所述多個(gè)數(shù)據(jù)塊,并按照所 述交替存儲(chǔ)的順序依次讀取并發(fā)送所述多個(gè)數(shù)據(jù)塊包括在當(dāng)前時(shí)鐘沿,將當(dāng)前數(shù)據(jù)塊存入所述第一緩存器,并且如果所述第二緩存器非空,則 讀取所述第二緩存器中存儲(chǔ)的數(shù)據(jù)塊;在下一時(shí)鐘沿,將下一數(shù)據(jù)塊存入所述第二緩存器,并且如果所述第一緩存器非空,則 讀取所述第一緩存器中存儲(chǔ)的數(shù)據(jù)塊。
6. 根據(jù)權(quán)利要求4所述的方法,其特征在于,在接收所述傳輸請(qǐng)求之后,所述方法還包括根據(jù)所述傳輸請(qǐng)求,獲取預(yù)存的與所述傳輸請(qǐng)求相對(duì)應(yīng)的配置信息,其中,所述配置 信息中包括源行跳變參數(shù)、源列跳變參數(shù)、源行計(jì)數(shù)參數(shù)、源列計(jì)數(shù)參數(shù)、源控制參數(shù)、目的行跳變參數(shù)、目的列跳變參數(shù)、目的行計(jì)數(shù)參數(shù)、目的列計(jì)數(shù)參數(shù)、目的控制參數(shù)、所述源地 址、所述目的地址。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括根據(jù)所述源行跳變參數(shù)、所述源列跳變參數(shù)、所述源行計(jì)數(shù)參數(shù)、所述源列計(jì)數(shù)參數(shù)、 所述源控制參數(shù)從所述源地址對(duì)應(yīng)的所述設(shè)備中讀取所述數(shù)據(jù);根據(jù)所述目的行跳變參數(shù)、所述目的列跳變參數(shù)、所述目的行計(jì)數(shù)參數(shù)、所述目的列計(jì) 數(shù)參數(shù)、所述目的控制參數(shù)將所述數(shù)據(jù)發(fā)送到所述目的地址對(duì)應(yīng)的所述設(shè)備。
8. 根據(jù)權(quán)利要求6所述的方法,其特征在于,在對(duì)數(shù)據(jù)塊進(jìn)行存儲(chǔ)前,所述方法還包括對(duì)于所述多個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊,根據(jù)所述數(shù)據(jù)的大小、寬度和所述源行跳變參 數(shù)確定第一存儲(chǔ)位置,其中,所述第一存儲(chǔ)位置用于指示存儲(chǔ)所述數(shù)據(jù)塊的位置; 在所述第一存儲(chǔ)位置上存儲(chǔ)所述數(shù)據(jù)塊。
9. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述依次將所述數(shù)據(jù)的所述多個(gè)數(shù)據(jù)塊 發(fā)送到所述DMAC存儲(chǔ)的目的地址對(duì)應(yīng)的設(shè)備還包括對(duì)于所述多個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊,根據(jù)所述數(shù)據(jù)的大小、寬度和所述目的行跳變 參數(shù)確定第二存儲(chǔ)位置,其中,所述第二存儲(chǔ)位置用于指示讀出所述數(shù)據(jù)塊的位置;獲取所述傳輸請(qǐng)求對(duì)應(yīng)的目的地址,從所述第二存儲(chǔ)位置讀取所述數(shù)據(jù)塊,并將讀取 的所述數(shù)據(jù)塊發(fā)送到所述目的地址對(duì)應(yīng)的設(shè)備。
10. 根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括所述源行跳變參數(shù)為1時(shí),使用總線突發(fā)模式讀取所述數(shù)據(jù),在所述行跳變參數(shù)不為1 時(shí),使用總線單獨(dú)模式讀取所述數(shù)據(jù);所述目的行跳變參數(shù)為1時(shí),使用總線突發(fā)模式發(fā)送所述數(shù)據(jù),在所述目的行跳變參 數(shù)不為1時(shí),使用總線單獨(dú)模式發(fā)送所述數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種DAMC和數(shù)據(jù)傳輸方法,其中,該DMAC包括讀取器,用于響應(yīng)于來自外部的傳輸請(qǐng)求,獲取與傳輸請(qǐng)求對(duì)應(yīng)的源地址,并從源地址對(duì)應(yīng)的設(shè)備中讀取數(shù)據(jù),其中,數(shù)據(jù)包括多個(gè)數(shù)據(jù)塊;緩存器,包括第一緩存器和第二緩存器,其中,第一緩存器和第二緩存器用于交替存儲(chǔ)多個(gè)數(shù)據(jù)塊;發(fā)射器,用于按照交替存儲(chǔ)的順序從緩存模塊中依次獲取并發(fā)送多個(gè)數(shù)據(jù)塊。借助于本發(fā)明,通過在DMAC的讀取器和發(fā)射器之間設(shè)置第一緩存器和第二緩存器,能夠在第一緩存器和第二緩存器中交替地存入數(shù)據(jù),并且能夠?qū)崿F(xiàn)并行的讀取和發(fā)送數(shù)據(jù)的操作,能夠提高數(shù)據(jù)傳輸?shù)男?,從而能夠解決相關(guān)技術(shù)中存在的DMA數(shù)據(jù)傳輸速度慢的問題。
文檔編號(hào)G06F13/28GK101777031SQ20091000017
公開日2010年7月14日 申請(qǐng)日期2009年1月14日 優(yōu)先權(quán)日2009年1月14日
發(fā)明者劉凱 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武宣县| 山东| 石楼县| 郴州市| 望都县| 武平县| 江西省| 佛教| 祁门县| 台南市| 新安县| 新宾| 桐柏县| 建平县| 齐河县| 若尔盖县| 东安县| 靖安县| 中宁县| 高台县| 塔城市| 河间市| 秦安县| 南阳市| 宕昌县| 嘉祥县| 桐乡市| 巴南区| 鄂伦春自治旗| 阳江市| 张北县| 绥中县| 苍山县| 刚察县| 苗栗县| 哈密市| 商水县| 平湖市| 岑溪市| 遂平县| 富平县|