1DMA2D模塊基礎知識
DMA2D是專用于圖像處理的專業(yè)DMA。特別是刷單色屏,刷圖片,刷Alpha(透明)混合效果全靠它,而且可以大大降低CPU利用率。
DMA2D主要實現(xiàn)了兩個功能,一個是DMA數(shù)據(jù)傳輸功能,另一個是2D圖形加速功能。
DMA數(shù)據(jù)傳輸
主要是兩種方式,一個是寄存器到存儲器,另一個是存儲器到存儲器。通過DMA可以大大降低CPU的利用率。
2D圖形加速功能
支持硬件的顏色格式轉換和Alpha混合效果。DMA2D可在以下四種模式下工作:
·寄存器到存儲器
·存儲器到存儲器
·存儲器到存儲器并執(zhí)行像素格式轉換
·存儲器到存儲器并執(zhí)行像素格式轉換和混合
△DMA2D模塊結構框示意圖
2DMA2D前景層FIFO和背景層FIFO
DMA2D前景層FIFO和背景層FIFO獲取要復制和/或處理的輸入數(shù)據(jù)。這些FIFO根據(jù)相應像素格式轉換器PFC中定義的顏色格式獲取像素。
通過如下一組寄存器對它們進行編程:
·DMA2D前景層存儲器地址寄存器(FGMAR)
·DMA2D前景層偏移寄存器(FGOR)
·DMA2D背景層存儲器地址寄存器 (BGMAR)
·DMA2D背景層偏移寄存器 (BGOR)
·DMA2D行數(shù)寄存器(行數(shù)和每行像素數(shù))(NLR)
DMA2D在寄存器到存儲器模式下工作時,不激活任何FIFO。
DMA2D在存儲器到存儲器模式下工作時(無像素格式轉換和混合操作),僅激活FG FIFO,并將其用作緩沖區(qū)。
DMA2D在存儲器到存儲器模式下工作時并支持像素格式轉換時(無混合操作),不會激活BG FIFO。
3DMA2D 前景層和背景層像素格式轉換器
DMA2D前景層和背景層像素格式轉換器 (PFC)執(zhí)行像素格式轉換,以生成每像素32位的值。PFC還能夠修改alpha通道。
轉換器在第一階段轉換顏色格式。前景層像素和背景層像素的原始顏色格式分別通過 FGPFCCR和BGPFCCR的CFMT [3:0] 位來配置。
顏色格式的編碼方式如下:
·Alpha 值字段:透明【0xFF 值對應不透明像素,0x00 對應透明像素】
·R 字段代表紅色
·G 字段代表綠色
·B 字段代表藍色
如果原始格式不包括alpha通道,則會自動將alpha值設為0xFF(不透明)。通過ARGB8888模式支持按32位對齊24位RGB888。
生成32位值后,即可根據(jù)FGPFCCR/ BGPFCCR寄存器的AMODE [1:0]字段修改alpha 通道。
Alpha通道可以:
·保持不變(不做修改)
·替換為FGPFCCR/BGPFCCR的ALPHA[7:0]值
·換為原始alpha值與FGPFCCR/BGPFCCR的ALPHA [7:0]值的乘積除以255所得商。
4DMA2D混合器
DMA2D混合器成對混合源像素以計算結果像素。
混合將按以下公式執(zhí)行:
混合器不需要任何配置寄存器。是否使用混合器取決于CR寄存器的MODE[1:0]字段中定義的DMA2D工作模式。
5DMA2D輸出PFC
輸出PFC將像素格式從32位轉換為指定的輸出格式,輸出格式在DMA2D輸出像素格式轉換器配置寄存器 (OPFCCR)的CFMT [2:0]字段中定義。
6DMA2D輸出FIFO
輸出FIFO根據(jù)輸出PFC中定義的顏色格式對像素進行編程。
通過如下一組寄存器定義目標區(qū)域:
·DMA2D輸出存儲器地址寄存器 (OMAR)
·DMA2D輸出偏移寄存器 (OOR)
·DMA2D行數(shù)寄存器(行數(shù)和每行像素數(shù))(NLR)
如果DMA2D在寄存器到存儲器模式下工作,則配置的輸出矩形將以DMA2D輸出顏色寄存器 (OCOLOR)中指定的顏色填充。
7DMA2D配置
DMA2D可在以下四種模式下工作,通過CR寄存器的MODE[1:0]位選擇工作模式:
·寄存器到存儲器
·存儲器到存儲器
·存儲器到存儲器并執(zhí)行PFC
·存儲器到存儲器并執(zhí)行PFC和混合
寄存器到存儲器
寄存器到存儲器模式用于以預定義顏色填充用戶自定義區(qū)域。顏色格式在OPFCCR中設置。
DMA2D不從任何源獲取數(shù)據(jù)。它只將OCOLOR寄存器中定義的顏色寫入通過OMAR 尋址以及NLR和OOR定義的區(qū)域。
存儲器到存儲器
在存儲器到存儲器模式下,DMA2D不執(zhí)行任何圖形數(shù)據(jù)轉換。前景層輸入FIFO充當緩沖區(qū),數(shù)據(jù)從FGMAR中定義的源存儲單元傳輸?shù)絆MAR尋址的目標存儲單元。
FGPFCCR寄存器的CFMT [3:0]位中編程的顏色模式決定輸入和輸出的每像素位數(shù)。
對于要傳輸?shù)膮^(qū)域大小,源區(qū)域大小由NLR和FGOR寄存器定義,目標區(qū)域大小則由 NLR和OOR寄存器定義。
存儲器到存儲器并執(zhí)行PFC
此模式下,DMA2D對源數(shù)據(jù)執(zhí)行像素格式轉換并將結果存儲在目標存儲單元。
對于要傳輸?shù)膮^(qū)域大小,源區(qū)域大小由NLR和FGOR寄存器定義,目標區(qū)域大小則由 NLR和OOR寄存器定義。
從FGMAR寄存器定義的位置獲取數(shù)據(jù),并由前景層PFC進行處理。原始像素格式通過 FGPFCCR寄存器配置。
在顏色轉換執(zhí)行期間,可根據(jù)FGPFCCR寄存器中編程的值添加或更改alpha值。如果原始圖像沒有alpha通道,則會自動添加一個默認的alpha值0xFF以獲得完全不透明的像素。
可根據(jù)FGPFCCR寄存器的AMODE [1:0]位修改alpha值:
·保持不變
·替換為FGPFCCR寄存器的ALPHA[7:0]值中定義的值
·替換為原始值與FGPFCCR寄存器的ALPHA[7:0]值的乘積除以255所得商
結果得到的32位數(shù)據(jù)由OUT PFC編碼成OPFCCR寄存器的CFMT [2:0]字段所指定的格式。數(shù)據(jù)經處理后,將寫入OMAR尋址的目標存儲單元。
DMA數(shù)據(jù)傳輸
此模式下,將在前景層FIFO和背景層FIFO(分別在FGMAR和BGMAR中定義)獲取兩個源圖像。
必須按存儲器到存儲器模式中所述配置兩個像素格式轉換器。由于這兩個像素格式轉換器各自獨立,因此其配置可以不同。在每個像素都通過相應的PFC轉換為32位后,將根據(jù)上述公式進行混合:輸出PFC將根據(jù)指定的輸出格式對得到的32位像素值進行編碼,并且編碼數(shù)據(jù)將寫入OMAR尋址的目標存儲單元。
審核編輯:湯梓紅
-
模塊
+關注
關注
7文章
2655瀏覽量
47292 -
寄存器
+關注
關注
31文章
5294瀏覽量
119814 -
存儲器
+關注
關注
38文章
7430瀏覽量
163514 -
cpu
+關注
關注
68文章
10804瀏覽量
210828 -
DMA2D
+關注
關注
0文章
5瀏覽量
2100
原文標題:SWM341 DMA2D模塊介紹
文章出處:【微信號:gh_ed4f95bde4df,微信公眾號:華芯微特32位MCU】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論