www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]以TMS320C6701為例,說明在實時圖像處理系統(tǒng)中使用DMA的必要性,同時給出DMA在實時圖像處理中幾種典型的應(yīng)用例子。

 摘要:以TMS320C6701為例,說明在實時圖像處理系統(tǒng)中使用DMA的必要性,同時給出DMA在實時圖像處理中幾種典型的應(yīng)用例子。

    關(guān)鍵詞:DMA 實時圖像處理 DSP

引言

實時圖像處理系統(tǒng)要求系統(tǒng)必須在有限的時間內(nèi)完成大量數(shù)據(jù)的運算。DSP以其獨特的哈佛總線結(jié)構(gòu)和并行的存儲塊結(jié)構(gòu),將乘法操作與加法操作統(tǒng)一考慮,可以在一個指令周期完成般處理器的多次運算;并且指令系統(tǒng)采用多級流水線操作方式,保證了系統(tǒng)對實時性的要求,因此得以在實時圖像處理系統(tǒng)廣泛應(yīng)用。圖像處理系統(tǒng)的最大特點就是運算數(shù)據(jù)量大。大多數(shù)情況下,數(shù)據(jù)量遠(yuǎn)遠(yuǎn)大于片內(nèi)存儲器容量,計算過程中必須進行數(shù)據(jù)的交換。合理使用DMA可以提高數(shù)據(jù)傳輸效率,取得事半功倍的效果。本文以TMS320C6701(簡稱C6701)為例,介紹DMA在圖像處理中的幾種典型應(yīng)用。

1 圖像處理系統(tǒng)特點與使用DMA的必要性

前面已經(jīng)提到,圖像處理系統(tǒng)的最大特點是就是運算數(shù)據(jù)量大,數(shù)據(jù)量往往大于片內(nèi)存儲器容量。不僅如此,圖像處理系統(tǒng)之中,運算過程產(chǎn)生的中間數(shù)據(jù)往往與源數(shù)據(jù)大小相當(dāng),這也限制了片內(nèi)高速存儲區(qū)的使用。然而為了提高處理的速度,計算源數(shù)據(jù)、中間數(shù)據(jù)必須盡可能多地在片內(nèi)高速存儲區(qū)進行,因此,必須使用DMA在片內(nèi)高速存儲區(qū)與片外低速存儲區(qū)之間進行數(shù)據(jù)交換,以提高數(shù)據(jù)處理速度。

另外,數(shù)據(jù)的排列往往不符合程序的要求;必須對數(shù)據(jù)進行重排達(dá)到程序要求;使用DMA對數(shù)據(jù)重排,可以滿足程序要求。與數(shù)據(jù)重排如出一轍,圖像處理中許多操作的基礎(chǔ)都是對多重數(shù)組的操作,也就是矩陣運算。諸如求逆、取子圖等圖像處理中經(jīng)常用到的運算,也可以通過DMA完成。這些運算當(dāng)然可用C語言編程實現(xiàn),但是,如果程序?qū)崿F(xiàn)是一個多重循環(huán),不利于軟件流水,而且隨著數(shù)據(jù)量的增加,消耗的時鐘周期也會成比例增加;即使使用并行匯編在時鐘消耗上可以有所減少,這都是不符合系統(tǒng)實時性要求的。如果通過DMA數(shù)據(jù)重排,可以輕而易舉地實現(xiàn),而且這個過程CPU只占有一個時鐘周期,通過巧妙程序安排,安全可以使數(shù)據(jù)的傳輸過程在CPU的后臺進行,根本感覺不到DMA的存在。

2 C6x系列DMA簡介

TMS320C6701S是TMS320C6000系列的高速浮點數(shù)字信號處理信號,是TI公司20世紀(jì)90年代后期的最新一代DSP產(chǎn)品。C6701有4個通道自加載的DMA通道,用于數(shù)據(jù)的DMA傳輸;另外,1個輔助DMA通道,負(fù)責(zé)與主機通信。DMA通道可以在沒有CPU參與下完成映射空間的數(shù)據(jù)傳輸。數(shù)據(jù)的傳輸可以是片內(nèi)存存儲器、片內(nèi)外圍部件或外部器件之間的傳輸。

2.1 DMA控制寄存器

對于C6x系列的DMA,在使用任何一個DMA通道進行數(shù)據(jù)傳輸前,都必須設(shè)置以下幾組寄存器。各寄存器及其功能如下:

*主控寄存器(primary control register)——用于控制DMA狀態(tài)及傳輸類型;

*副控寄存器(secondary control register)——用于使能CPU中斷,監(jiān)視DMA通道狀態(tài);

*傳輸計數(shù)寄存器(transfer control register)——用于記錄傳輸?shù)膯挝粩?shù)目;

*源地址寄存器(source control register)——傳輸?shù)钠鹗嫉刂?/P>

*目標(biāo)地址寄存器(destination control register)——傳輸?shù)哪康牡刂罚?/P>

此外,DMA通道可以使用以下全局DMA寄存器,以完成比較復(fù)雜的傳輸過程:

*全局地址寄存器組(global address register A、B、C和D);

*全局索引寄存器組(global index register A和register A和B)。

全局地址寄存器組共有4個32位寄存器,其作為分裂地址或地址重載值。全局索引寄存器2個32位寄存器。每個寄存器含2個控制域,其中高16位為幀索引域(FRAME INDEX),其值為幀間的地址偏移量,也就是傳輸完1幀后,地址的調(diào)整量;低16位為數(shù)據(jù)單元索引域(ELEMENT INDEX),其值為幀內(nèi)地址偏移量,也就是每傳輸完1個數(shù)據(jù)單元的地址調(diào)整量。全局計數(shù)重載計數(shù)器與全局索引寄存器結(jié)構(gòu)一樣,用于重載DMA通道的傳輸計數(shù)寄存器。全局DMA寄存器可以為任意DMA通道使用,而且同一寄存器可以同時被一個以上的DMA通道使用。

2.2 DMA工作過程簡介

DMA是十分復(fù)雜的系統(tǒng),限于篇幅,這里只簡要介紹DMA的工作過程。

在C6000系列DMA中,把所傳輸?shù)囊欢〝?shù)量的數(shù)據(jù)單元(ELEMENT)稱為幀(FRAME),幀的大小由傳輸計數(shù)寄存器的低16位數(shù)據(jù)即單元計數(shù)域(ELEMENT COUNT)指定,該寄存器的值通過傳輸計數(shù)寄存器的高16位即幀計數(shù)域(FRAME COUNT)指定。當(dāng)完成1次DMA讀操作,ELEMENT COUNT值自動域1;當(dāng)最后1個數(shù)據(jù)單元讀操作完成時,F(xiàn)RAME COUNT自動減1,此時ELEMENT COUNT的值將被全局計數(shù)重載寄存器的ELEMENT COUNT更新;當(dāng)最后1幀的讀操作完成后,傳輸計數(shù)寄存器將被全局計數(shù)重載寄存器的值更新。

DMA控制器負(fù)責(zé)對每個通道的讀寫傳輸進行地址計算。在計算機傳輸?shù)刂窌r,有基本調(diào)整和使用全局索引寄存器進行調(diào)整2種方式:基本調(diào)整是指通過控制域SRC DIR和DST DIR來設(shè)置傳輸?shù)刂罚磾?shù)據(jù)字長大?。ㄓ蒃SIZE控制)遞增、遞減或保持不變;而使用全局索引寄存器調(diào)整與基本調(diào)整不同,這種模式下,根據(jù)傳輸?shù)臄?shù)據(jù)元素是否當(dāng)前幀的最后一個來進行地址調(diào)整。

在全局索引寄存器調(diào)整模式下,地址調(diào)整值由全局索引寄存器控制。全局索引寄存器含2個控制域,其中高16位為幀索引域(FRAME INDEX),其值為幀間的地址偏移量,也就是傳輸完1幀后的地址調(diào)整量;低16位為數(shù)據(jù)單元索引域(ELEMENT INDEX),其值的幀內(nèi)地址偏移量,也就是每傳輸完1個數(shù)據(jù)單元的地址調(diào)整量。

3 幾種典型的DMA操作及其應(yīng)用

3.1 塊移動

塊移動能夠?qū)?塊連續(xù)數(shù)據(jù)塊從一個地址傳輸?shù)搅硪粋€地址,通常用于將數(shù)據(jù)或程序從外部存儲器移到內(nèi)部存儲器。這種塊移動是最簡單、最常見的DMA工作方式。例如,將1塊1K連續(xù)的32位數(shù)據(jù)塊從外存(0x02000000)移動至內(nèi)存(0x80000000),如圖1所示。

    相關(guān)寄存器的值設(shè)置:

Primary control register =0x00000050

Transfer control register =0x00000400

Source control register =0x02000000

Destination control register =0x80000000

其中主控寄存器各控制域設(shè)置與意義如下:

DST RELOAD =00 無目標(biāo)地址重載

SRC RELOAD =00 無源地址重載

EMOD =0

FS =0 無幀同步

TCINT =1 允許中斷

PRI =1 DMA優(yōu)先

WSYNC =00000 無讀同步

RSYNC =000 無寫同步

RSYNC =00 無寫同步

FRAME COUNT =0X000

ELEMENT COUNT =0X0400

INDEX =0 全局計數(shù)重載寄存器A

CNT RELOAD =0 全局計數(shù)重載寄存器A

SPLIT =00 無分裂地址

ESIZE =00 數(shù)據(jù)單元4BYTES

DSTDIR =11 索引寄存器方式

SRCDIR =01 地址遞增

STATUS =00此位只讀

START =00 DMA停止

在主控寄存器的START讀中寫入01b就可以開始DMA的傳輸。

3.2 數(shù)據(jù)重排

往往數(shù)據(jù)的格式并不符合運算的要求。在這種情況下,可以通過DMA進行數(shù)據(jù)重新排列,以滿足運算的要求。數(shù)據(jù)重排主要是利用DMA的幀傳輸方式。數(shù)據(jù)重排所必需的、最關(guān)鍵的一步是設(shè)置全局寄存器,所以,以下討論的重點就是全局寄存器的設(shè)置。

3.2.1 求矩陣轉(zhuǎn)置

圖2顯示了將一個位于外存16bit的連續(xù)數(shù)據(jù)區(qū),開始地址(0x02000000),數(shù)據(jù)重排并移至片內(nèi)存儲區(qū),首地址為(0x80000000)前后的排列情況。

    在數(shù)據(jù)重排中,主要是正確設(shè)置全局索引寄存器。在這里,可以將1幀看作1個數(shù)組,那么數(shù)據(jù)單元就是數(shù)組的元素。因此,如果假設(shè)共有F×E的矩陣,即有F幀數(shù)據(jù),每幀E個數(shù)據(jù)單元,每個元素為S(Byte),重排為E×F的矩陣。在這種情況下,源地址遞增,目標(biāo)地址根據(jù)全局索引寄存器的值進行調(diào)整。在幀內(nèi)相鄰的數(shù)據(jù)單元傳輸時,目標(biāo)地址偏移應(yīng)為F×S,所以傳輸完1幀后的地址總偏稱為(E-1)×F,因此,下一幀的第1個數(shù)據(jù)單元地址為在當(dāng)前的地址減去((E-1)×F-1)×S。也就是說,

*FRAME INDEX應(yīng)設(shè)為-((E-1)×F-1)×S

*ELEMENT INDEX應(yīng)設(shè)為F×S

在上例中寄存器的設(shè)置為:

*FRAME INDEX =-((2-1) ×4-1) ×2=0xFFEE

*ELEMENT INDEX=4×2=8

因此,寄存器設(shè)置如下:

Primary control register =0x030001D0

Transfer control register =0x00040002

Source control register =0x02000000

Destination control register =0x80000000

Global index register A =0xFFFA0008

Global count reload A =0x00000002

3.2.2 取圖像子圖

圖像處理中,往往要從圖像中摳取一定大小的子圖,然后對子圖進行處理。對于大型圖像,尺寸往往超過了DSP系統(tǒng)的片內(nèi)存儲器的大小,這種摳取的操作成了必不可少的步驟。這可以通過使用全局索引寄存器來完成。例如,從一個8×4的圖像中摳取一個2×4的子圖,如圖3所示,其中每個數(shù)據(jù)單元為1Byte。

    可以這樣描述:有F1幀數(shù)據(jù),每幀數(shù)據(jù)有E1個數(shù)據(jù)單元,每個數(shù)據(jù)單元為S(Byte);從中摳取部分為F2幀數(shù)據(jù),每幀數(shù)據(jù)E2個數(shù)據(jù)單元,數(shù)據(jù)單元為S(Byte)。這種情況下,因為完成數(shù)據(jù)傳輸后,目標(biāo)存儲區(qū)為連續(xù)數(shù)據(jù),因此目標(biāo)地址遞增;源地址根據(jù)全局索引寄存器的值進行調(diào)整。幀內(nèi)相鄰的數(shù)據(jù)單元傳輸時,源地址偏移應(yīng)為S;當(dāng)讀完幀的最后一個數(shù)據(jù)單元,源地址指針跳過(E1-E2)個數(shù)據(jù)單元,即幀間的地址調(diào)整量為((E1-E1)+1)×S。這樣全局寄存器的設(shè)置:

**FRAME INDEX =((8-4)+1×1=4

*ELEMENT INDEX=1

*FRAME COUNT =2

*ELEMENT INDEX=4

因此,寄存器設(shè)置如下:

Primary control register =0x03000270

Transfer control register =0x00020004

Source control register =0x02000000

Destination control register =0x80000000

Global index register A =0x00050001

Global reload register A =0x00000001

結(jié)束語

作為實時系統(tǒng),選取合理有效的核心算法是至關(guān)重要的,同時,選擇有效的數(shù)據(jù)傳輸方法也是不容忽視的。我們在實際工作中發(fā)現(xiàn),在大多數(shù)情形下,數(shù)據(jù)傳輸所花費時間往往超過數(shù)據(jù)處理的時間,成為實時圖像處理系統(tǒng)中的瓶頸。因此,合理使用DMA提高數(shù)據(jù)傳輸效率,是很有實際價值和意義的。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

《帶得走的智能制造》暑期課程圓滿落幕 北京2025年7月25日 /美通社/ -- 近日,由國際獨立第三方檢測、檢驗和認(rèn)證機構(gòu)德國萊茵TÜV大中華區(qū)(以下簡稱"TÜV萊茵")與北京...

關(guān)鍵字: 智能制造 BSP DMA 信息安全

在實時控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對時間敏感的應(yīng)用場景中,中斷響應(yīng)延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內(nèi)存訪問(DMA)...

關(guān)鍵字: STM32 DMA

控制寄存器(Control Register)是中央處理器(CPU)中用于管理系統(tǒng)級操作的特殊寄存器,它為操作系統(tǒng)和硬件提供對處理器行為的精細(xì)控制。本文從計算機體系結(jié)構(gòu)角度系統(tǒng)闡述控制寄存器的設(shè)計原理、功能分類、操作機制...

關(guān)鍵字: 寄存器 處理器

在嵌入式系統(tǒng)、網(wǎng)絡(luò)通信等對數(shù)據(jù)傳輸效率要求極高的場景中,零拷貝技術(shù)能夠顯著減少數(shù)據(jù)在內(nèi)存中的拷貝次數(shù),降低CPU負(fù)載,提高系統(tǒng)性能。DMA(直接內(nèi)存訪問)環(huán)形緩沖區(qū)與內(nèi)存池相結(jié)合的雙重優(yōu)化策略,為實現(xiàn)高效的零拷貝數(shù)據(jù)傳輸...

關(guān)鍵字: 零拷貝 DMA 嵌入式系統(tǒng)

在嵌入式系統(tǒng)開發(fā)中,硬件抽象層(Hardware Abstraction Layer,HAL)起著至關(guān)重要的作用。它為上層軟件提供了統(tǒng)一的硬件訪問接口,隱藏了底層硬件的細(xì)節(jié),使得軟件具有更好的可移植性和可維護性。C++作...

關(guān)鍵字: 嵌入式C++ HAL 寄存器 封裝

采用51單片機最小開發(fā)板,由8位自制獨立按鍵控制。單片機芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點陣屏模塊由MAX7219驅(qū)動,MAX7219包含一個自動掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機 MAX7219 寄存器

電源管理集成電路(PMIC)有益于簡化最終應(yīng)用并縮小其尺寸,也因此備受青睞。然而,當(dāng)默認(rèn)啟動時序和輸出電壓與應(yīng)用要求不符時,就需要定制上電設(shè)置。大多數(shù)情況下,電路沒有可以存儲這些設(shè)置的非易失性存儲器(NVM)。對此,低功...

關(guān)鍵字: 電源管理 集成電路 寄存器

我從Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中創(chuàng)建了一個項目來讓它工作,你可以在我的上一個項目帖子中閱讀,我在QDSP-6061的5位數(shù)上顯示滾動文本,上面寫著“Hell...

關(guān)鍵字: 寄存器 AXI4 QDSP-6061 RTL模塊

STM32單片機憑借其高性能、低功耗、豐富的外設(shè)資源等優(yōu)勢,在工業(yè)控制、消費電子、汽車電子等領(lǐng)域得到了廣泛應(yīng)用。在嵌入式系統(tǒng)開發(fā)中,高效的數(shù)據(jù)處理和傳輸至關(guān)重要。中斷技術(shù)和DMA技術(shù)作為STM32單片機中重要的數(shù)據(jù)處理和...

關(guān)鍵字: STM32 DMA

在嵌入式系統(tǒng)中,隨著數(shù)據(jù)量的不斷增加和實時性要求的提高,傳統(tǒng)的CPU直接控制數(shù)據(jù)傳輸?shù)姆绞街饾u暴露出效率低下的問題。為了應(yīng)對這一挑戰(zhàn),直接內(nèi)存訪問(Direct Memory Access,DMA)技術(shù)應(yīng)運而生,成為實現(xiàn)...

關(guān)鍵字: DMA 嵌入式系統(tǒng) 高速數(shù)據(jù)傳輸
關(guān)閉
關(guān)閉