基于ADSP—BF561的圖像平移系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
摘要:基于ADSP-BF561的結(jié)構(gòu)特點(diǎn),提出了圖像平移系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方案。該設(shè)計(jì)分為硬件和軟件兩部分。硬件設(shè)計(jì)上,以ADSP—BF561為核心,控制視頻信號(hào)的采集、預(yù)處理和平移。其中,視頻鳊解碼分別采用ADV7171,ADV7181B芯片實(shí)現(xiàn)。軟件設(shè)計(jì)上,分別使用基于描述子的數(shù)據(jù)傳輸方式、DMA和MDMA數(shù)據(jù)搬移方式,著重解決了圖像平移時(shí)的實(shí)時(shí)性問(wèn)題。試驗(yàn)結(jié)果證明了該設(shè)計(jì)的有效性。
關(guān)鍵詞:ADSP-BF561;圖像平移;視頻編碼;視頻解碼;電子穩(wěn)像
該設(shè)計(jì)以ADI公司的Blackfin系列中的BF561作為處理器,分別采用ADV7181B和ADV7171作為視頻編解碼芯片,設(shè)計(jì)了圖像平移系統(tǒng)。通過(guò)采用基于描述子的DMA及MDMA圖像傳輸方式等方法,解決了圖像平移時(shí)的實(shí)時(shí)性難題。該圖像平移系統(tǒng)設(shè)計(jì)結(jié)構(gòu)緊湊,成本低廉,可靠性高,可以廣泛應(yīng)用于電子穩(wěn)像技術(shù)中。
1 系統(tǒng)設(shè)計(jì)
ADSP—BF561處理器是ADI公司推出的Blaekfin系列中的高性能產(chǎn)品,它采用獨(dú)立的雙核結(jié)構(gòu),主頻600 MHz,具有2套乘法器和算術(shù)邏輯單元,豐富的DMA通道,內(nèi)嵌328 KB超高速L1 SRAM和高速的L2 SRAM。同時(shí),ADSP-BF561具有2個(gè)PPI接口,可以方便地與視頻解碼器和視頻編碼其相連,無(wú)需外圍邏輯支持。ADSP-BF561把存儲(chǔ)器視為一個(gè)統(tǒng)一的4 GB的地址空間,使用32位地址。所有資源,包括內(nèi)部存儲(chǔ)器、外部存儲(chǔ)器和I/O控制寄存器,都占用公共地址空間的相應(yīng)部分,并且各自對(duì)立。該地址空間的各部分存儲(chǔ)器按分級(jí)結(jié)構(gòu)排列,提供高性價(jià)比。其中極快速、低延遲的存儲(chǔ)器接近處理器放置、而更大的、低成本、低性能的存儲(chǔ)器則原理處理器放置。片外存儲(chǔ)系統(tǒng)通過(guò)外部總線接口單元EBIU(External Bus Interface Unit)進(jìn)行訪問(wèn)。存儲(chǔ)器的DMA控制器提供高帶寬的數(shù)據(jù)傳輸能力,能在內(nèi)部L1/L2存儲(chǔ)器和外部存儲(chǔ)器空間之間傳輸代碼和數(shù)據(jù)塊。該設(shè)計(jì)以ADI公司的ADSP—BF561為核心,Visual DSP++5.0為軟件開(kāi)發(fā)環(huán)境,對(duì)圖像平移系統(tǒng)進(jìn)行開(kāi)發(fā)。
2 硬件設(shè)計(jì)方案及實(shí)現(xiàn)
2.1 硬件設(shè)計(jì)方案
圖像平移就是將圖像中的所有像素點(diǎn)都按照指定的平移量沿水平或者垂直方向移動(dòng)。假設(shè)圖像f(x,y)以平移量(α,β)分別在x軸方向和y軸方向上進(jìn)行平移,則平移之后的圖像就變成了f(x-α,y-β)。平移算法是幾何變換中最簡(jiǎn)單的變換之一,但是這種簡(jiǎn)單的變換卻在電子穩(wěn)像中發(fā)揮著很大的作用。
平移算法的難點(diǎn)主要體現(xiàn)在算法的實(shí)時(shí)性上。假設(shè)一個(gè)視頻采集系統(tǒng)圖像的采集速率為25幀/s,要想實(shí)時(shí)地看到平移后的圖像,那么平移算法必須要在40 ms內(nèi)完成,而對(duì)于大小為720×576×2 B=829.4 KB的圖像要完成數(shù)據(jù)的搬移工作,如果設(shè)計(jì)不好,很可能會(huì)產(chǎn)生遲滯現(xiàn)象。為此本文將平移算法的平臺(tái)設(shè)計(jì)在ADI公司的高性能芯片BF561上,并使用DMA及MDMA等方式實(shí)現(xiàn)算法的平移,該系統(tǒng)框圖如圖1所示。
該系統(tǒng)設(shè)計(jì)方案中主要包含以下主要硬件:
(1)CPU:600 MHz的Blaekfin 561雙核處理器。
(2)FLASH:1片SAMSUNG K4S5616320 8 MB。
(3)視頻接口:BF561.提供了2個(gè)16位的ParallelPeripheral Interface(PPI0和PPI1),它們可分別與視頻解碼芯片ADV7181B、視頻編碼芯片ADV7171連接。
(4)外部總線接口(EBIU):為ADSP—BF561與外部存儲(chǔ)器和通過(guò)總線尋址的外部設(shè)備提供了連接通道。通過(guò)EBIU連接2片SDRAM。
(5)SDRAM:2片SAMSIING K4S561632064 MB;該系統(tǒng)對(duì)PAL制式的視頻數(shù)據(jù)進(jìn)行采集,經(jīng)ADV718lB解碼后轉(zhuǎn)換為ITU-656格式的視頻信號(hào)YCrCb采用4:2:2的輸入格式,視頻數(shù)據(jù)所需的存儲(chǔ)空間較大,故需要擴(kuò)展外部存儲(chǔ)器SDRAM。
(6)JTAG調(diào)試接口,通過(guò)仿真器與PC機(jī)相連,實(shí)現(xiàn)JTAG硬件調(diào)試功能。
CCD攝像頭每40 ms采集一幀模擬視頻信號(hào),ADV7181B解碼后轉(zhuǎn)換為ITU-656格式的視頻信號(hào),通過(guò)PPI0利用DMA方式自動(dòng)將其放入外部SD-RAM中。為在電視上實(shí)時(shí)看到平移后的圖像,DSP內(nèi)核必須要在40 ms內(nèi)讀取SDRAM中的視頻數(shù)據(jù),按照平移算法的要求實(shí)現(xiàn)對(duì)圖像的上、下、左、右平移后,寫回SDRAM,并由DSP內(nèi)核讀取該SDRAM中的數(shù)據(jù),啟動(dòng)PPI1通過(guò)DMA送給ADV7171編碼成模擬的PAL制(圖像的輸出格式為ITU-656格式),最后由電視屏幕顯示輸出。
2.2 關(guān)鍵技術(shù)問(wèn)題的解決途徑
在平移算法中由于每40 ms采集1幀數(shù)據(jù),為了保證能夠使人眼實(shí)時(shí)的看到平移后的視頻流,必須要保證能夠?qū)崟r(shí)的完成數(shù)據(jù)搬移工作。為此本設(shè)計(jì)中采用如下關(guān)鍵技術(shù)來(lái)解決。
(1)由于圖像輸入后,要經(jīng)過(guò)平移算法對(duì)圖像進(jìn)行上、下、左、右平移后,圖像才能輸出到電視上。因此該系統(tǒng)將圖像的輸入存儲(chǔ)區(qū)域和圖像的輸出存儲(chǔ)區(qū)域分別設(shè)為2塊獨(dú)立的區(qū)域,使得在數(shù)據(jù)輸入的同時(shí)還可進(jìn)行數(shù)據(jù)的搬移及輸出顯示工作。每個(gè)輸入/輸出區(qū)域又可以分為4個(gè)區(qū)域,用來(lái)存儲(chǔ)順次進(jìn)入的輸入/輸出圖像。其中sFrame0~sFrame3用來(lái)存儲(chǔ)輸入的視頻圖像,sFrame4~sFrame7用來(lái)存儲(chǔ)搬移后的視頻圖像。當(dāng)啟動(dòng)ADV7181B采集完1幀圖像存入后sFrame0,BF561啟動(dòng)數(shù)據(jù)搬移工作,將視頻圖像搬移到sFrame4中,并通過(guò)PPI1送給視頻編碼器ADV7171,最后由電視屏幕顯示輸出,同時(shí)PPI0將數(shù)據(jù)繼續(xù)采集到sFramel。圖像存儲(chǔ)在SDRAM中,sFrame0~sFrame7各存儲(chǔ)區(qū)域的首地址分別為0x0000C400,0x1000000,0x1500000,0x01A00000,0x01F00000,0x02400000,0x02900000,0x03000000。
(2)為了提高系統(tǒng)的實(shí)時(shí)處理能力,將數(shù)據(jù)在不同存儲(chǔ)空間的轉(zhuǎn)移任務(wù)交給DMA來(lái)完成,從而使CPU只專注于數(shù)據(jù)的計(jì)算。為保證連續(xù)采集不斷幀,DMA采用描述子方式,并將最后一個(gè)描述子指向首塊的頭地址。CCD采集到的視頻圖像首先送到PPI0,經(jīng)過(guò)2維DMA方式依次送到由描述子描述的圖像輸入存儲(chǔ)區(qū)域。
(3)由于圖像的平移,輸出后的圖像會(huì)有一些邊框,為提高系統(tǒng)的實(shí)時(shí)性,將邊框數(shù)據(jù)預(yù)先存放在SDRAM中,然后再采用MDMA方式將邊框數(shù)據(jù)傳送到相應(yīng)的視頻輸出區(qū)域中。存放邊框數(shù)據(jù)的SDRAM定義為sFrame8,其首地址為0x03600000。其中sFrame8的大小為1440*288,即為ITU-656格式中一場(chǎng)數(shù)據(jù)的大小。本算法中上、下、左、右平移后的邊界填充為黑色,按UYVY格式即應(yīng)該填充為0x80,0x10,0x80,0x10。邊框數(shù)據(jù)的MDMA方式傳輸在有效數(shù)據(jù)傳輸之前進(jìn)行,每次MDMA傳輸也是只傳遞1場(chǎng)數(shù)據(jù),1幀數(shù)據(jù)同樣需要2次MDMA傳輸完成。邊框數(shù)據(jù)的填充見(jiàn)圖2。圖2(b)為圖像右移后左邊填充為黑色邊框數(shù)據(jù)的示意圖。
(4)從輸入?yún)^(qū)域到輸出區(qū)域只搬移有效的數(shù)據(jù)(Active Field),ITU-656格式的文件頭在輸出區(qū)域初始化時(shí)已設(shè)置完成。且有效的數(shù)據(jù)傳輸方式采用MDMA方式,每次傳輸1幀圖像數(shù)據(jù)中的1場(chǎng)圖像,搬完奇場(chǎng)數(shù)據(jù)后再搬偶場(chǎng)數(shù)據(jù)。
(5)平移后的圖像存儲(chǔ)在圖像輸出存儲(chǔ)區(qū)域(sFrame4~sFrame7)中,平移后的圖像由PPI1通過(guò)按描述子的指示輸出到電視上顯示出來(lái)。整個(gè)系統(tǒng)的工作框圖如圖3所示。
軟件設(shè)計(jì)流程圖如圖4所示。
3 平移方案的實(shí)現(xiàn)
該系統(tǒng)通過(guò)JIAG仿真,使用Visual DSP++5.0作為開(kāi)發(fā)環(huán)境,進(jìn)行了圖像平移實(shí)驗(yàn)及性能分析。
在該算法中,完成1場(chǎng)數(shù)據(jù)的MDMA數(shù)據(jù)大約需要4 ms,而完成整個(gè)1幀圖像的傳輸平均需要21 ms,因此在40 ms的周期內(nèi)可以實(shí)對(duì)圖像的實(shí)時(shí)平移。
4 結(jié)語(yǔ)
在結(jié)合圖像平移算法以及BF561結(jié)構(gòu)和特點(diǎn)的基礎(chǔ)上,作者創(chuàng)新性的實(shí)現(xiàn)了一種基于ADSP—BF561雙核處理器的圖像平移系統(tǒng)的設(shè)計(jì)。由于充分利用了BF561的描述子存儲(chǔ)方式,以及其DMA和MDMA數(shù)據(jù)傳輸方式,結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)單,實(shí)時(shí)性好。仿真結(jié)果證明了算法的有效性。
評(píng)論