王國(guó)樹,聶友偉,胡友鵬,秦先全,林嘉宇
(1.西藏軍區(qū)77505部隊(duì),拉薩850000;2.沈陽(yáng)軍區(qū)65042部隊(duì),沈陽(yáng)110035;3.國(guó)防科學(xué)技術(shù)大學(xué)電子科學(xué)與工程學(xué)院,長(zhǎng)沙410073)
基于TMS320C6416的JPEG編碼器優(yōu)化實(shí)現(xiàn)
王國(guó)樹1,聶友偉2,胡友鵬1,秦先全1,林嘉宇3
(1.西藏軍區(qū)77505部隊(duì),拉薩850000;2.沈陽(yáng)軍區(qū)65042部隊(duì),沈陽(yáng)110035;3.國(guó)防科學(xué)技術(shù)大學(xué)電子科學(xué)與工程學(xué)院,長(zhǎng)沙410073)
結(jié)合TI公司TMS320C6416的結(jié)構(gòu)和特點(diǎn),在分析JPEG編碼器結(jié)構(gòu)特點(diǎn)的基礎(chǔ)上,闡述了在實(shí)現(xiàn)JPEG編碼中對(duì)算法的軟件并行優(yōu)化實(shí)現(xiàn)所做的工作,并在工程中用匯編語(yǔ)言實(shí)現(xiàn)了JPEG編碼器。在主頻為600MHz的TMS320C6416 DSP上處理4008×2672大小的圖像數(shù)據(jù),在滿足一定編碼圖像質(zhì)量的前提下,編碼器編碼速度達(dá)到2幀/秒。
TMS320C6416;JPEG標(biāo)準(zhǔn);并行;優(yōu)化;超長(zhǎng)指令字
TMS320C6416[1]芯片是TI公司推出的新一代并行處理的定點(diǎn)數(shù)字信號(hào)處理器。它的主頻最高可達(dá)1.1GHz,最高處理能力達(dá)8800MIPS,非常適用于大尺寸靜態(tài)圖像和視頻的編解碼器,其市場(chǎng)應(yīng)用前景十分廣泛。JPEG是由聯(lián)合圖像專家組(JPEG)制定的第一個(gè)圖像壓縮國(guó)際標(biāo)準(zhǔn),于1992年正式發(fā)布。雖然在高壓縮比的情況下JPEG2000的壓縮性能比JPEG出色,但是在低壓縮比時(shí)二者的性能差不多,而JPEG的算法要簡(jiǎn)單得多,有利于硬件實(shí)現(xiàn)。在詳細(xì)分析JPEG中的關(guān)鍵模塊并進(jìn)行優(yōu)化的基礎(chǔ)上,進(jìn)行匯編語(yǔ)言編程并實(shí)現(xiàn)了JPEG編碼器。
1.1 TMS320C6416 DSP介紹
實(shí)現(xiàn)的硬件選用TI公司的TMS320C6416[2],它的結(jié)構(gòu)如圖1所示。
圖1 TMS320C6416的CPU結(jié)構(gòu)圖
TMS320C6416 DSP主頻最高為1.1GHz,采用超長(zhǎng)指令字VLIW結(jié)構(gòu):擁有兩個(gè)各自獨(dú)立的數(shù)據(jù)通道DA1和DA2;64個(gè)32-bit長(zhǎng)的通用寄存器(分為A、B兩組,每組32個(gè));8個(gè)獨(dú)立功能單元(.L1、.S1、.M1、.D1、.L2、.S2、.M2、.D2);6個(gè)算術(shù)運(yùn)算單元ALU(32-/40-bit),支持每時(shí)鐘周期單32-bit、雙16-bit或者四個(gè)8-bit算術(shù)運(yùn)算;2個(gè)乘法器支持每時(shí)鐘周期4個(gè)16×16-bit乘法運(yùn)算(32-bit結(jié)果)或者8個(gè)8×8-bit乘法運(yùn)算(16-bit結(jié)果);采用L1/L2兩級(jí)高速緩存結(jié)構(gòu):128K-bit程序高速緩存L1P、128K-bit數(shù)據(jù)高速緩存L1D、8M-bit內(nèi)存L2(RAM/Cache可設(shè)置)。
1.2 JPEG標(biāo)準(zhǔn)[3]分析
JPEG標(biāo)準(zhǔn)是靜止圖像壓縮標(biāo)準(zhǔn)[4]的一種,其編碼器和解碼器框圖如圖2所示。上方為編碼器結(jié)構(gòu),下方為解碼器結(jié)構(gòu)。編碼器包括預(yù)處理、離散余弦變換[5]、量化和熵編碼[6]四個(gè)模塊。解碼為編碼的逆過(guò)程。
圖2 JPEG編解碼器結(jié)構(gòu)框圖
編碼器將經(jīng)過(guò)預(yù)處理(主要是水平位移,使數(shù)據(jù)關(guān)于0對(duì)稱分布)的圖像數(shù)據(jù)首先進(jìn)行DCT變換,將圖像數(shù)據(jù)從空間域變換到頻率域,經(jīng)過(guò)變換之后,空間域中的能量全部轉(zhuǎn)移到頻率域中,總能量不變,但能量將會(huì)重新分布,在空間域中,能量分布具有一定的隨機(jī)性。由于圖像有一定的空域相關(guān)性,頻率域中能量在大部分情況下,集中于零空間頻率或低空間頻率對(duì)應(yīng)的變換頻率系數(shù),從而使具有相關(guān)性圖像的相關(guān)性減少。同時(shí)由于能量集中于零空間頻率和低空間頻率所對(duì)應(yīng)的頻率域矩陣元素中,所以對(duì)這些元素分配較多的比特?cái)?shù),而對(duì)能量較少的元素分配較少的比特?cái)?shù)或不分配比特?cái)?shù),變換域中分配的總比特?cái)?shù)可以比原圖像的總比特?cái)?shù)少,這樣就可以使圖像所需傳送的比特?cái)?shù)減少,達(dá)到壓縮的目的。
DCT后的系數(shù)要進(jìn)行量化,量化之前要將DCT系數(shù)進(jìn)行Zig-Zag掃描,量化是圖像進(jìn)行有損壓縮的關(guān)鍵,量化步長(zhǎng)的大小決定圖像壓縮率的高低。
最后對(duì)量化后的數(shù)據(jù)進(jìn)行HUFFMAN編碼形成碼流輸出。每個(gè)8×8模塊量化后的第一個(gè)分量為DC分量,對(duì)其與前一模塊的DC差分值進(jìn)行HUFFMAN編碼,后面的63個(gè)分量皆是AC分量。對(duì)其游程進(jìn)行HUFFMAN編碼,HUFFMAN編碼實(shí)際就是一個(gè)查表編碼的過(guò)程,HUFFMAN表是JPEG標(biāo)準(zhǔn)事先作大量統(tǒng)計(jì)形成的,固定在發(fā)送端和接收端。
為在DSP上實(shí)現(xiàn)JPEG編碼器,必須充分發(fā)揮TMS320C6416的并行處理能力。從它的硬件結(jié)構(gòu)出發(fā),最大限度地利用其8個(gè)功能單元、64個(gè)寄存器、L1/L2兩級(jí)高速緩存,使用并行算法[7]使程序無(wú)沖突地并行執(zhí)行。一般來(lái)說(shuō),并行算法是指在各種并行計(jì)算機(jī)上求解問(wèn)題和處理數(shù)據(jù)的算法,其本質(zhì)是把多任務(wù)映射到多處理機(jī)中執(zhí)行,或是把多維問(wèn)題映射到具有特定拓?fù)浣Y(jié)構(gòu)的多處理機(jī)上求解。其目標(biāo)是盡可能減少時(shí)間復(fù)雜性,通常是通過(guò)增加空間復(fù)雜性來(lái)實(shí)現(xiàn)。并行算法根據(jù)實(shí)現(xiàn)算法所依賴的并行機(jī)類型的不同可以分為單指令流多數(shù)據(jù)流(SIMD)算法、多指令流多數(shù)據(jù)流(MIMD)算法、分布式算法、超大規(guī)模集成(VLSI)算法。根據(jù)實(shí)現(xiàn)算法所依賴的器件級(jí)別的不同可以分為機(jī)器級(jí)并行、芯片級(jí)并行(如多內(nèi)核)、線程級(jí)并行(如超線程Hyper-Threading)、指令級(jí)并行(如超長(zhǎng)指令字VLIW)。
2.1 超長(zhǎng)指令字VLIW[1]
由于TMS320C6416的CPU芯片采用超長(zhǎng)指令字VLIW結(jié)構(gòu),一個(gè)指令周期可以執(zhí)行多條指令,故可以使用超長(zhǎng)指令字 VLIW 并行。由于TMS320C6416擁有A、B兩個(gè)寄存器組(各32個(gè)寄存器),故可采用寄存器組并行,如DCT模塊,量化模塊。由于TMS320C6416擁有四個(gè)運(yùn)算器功能單元(L、S、D、M),故還可以采用運(yùn)算器功能單元并行,每個(gè)指令周期對(duì)L、S、D、M運(yùn)算器功能單元進(jìn)行操作,如量化模塊,游程計(jì)算等等。幾乎所有的模塊都會(huì)用到功能單元并行,雖然某些情況下不可能是完全的四個(gè)功能單元同時(shí)并行。這樣采用超長(zhǎng)指令字VLIW,一個(gè)指令周期CPU最多可以同時(shí)并行執(zhí)行8條指令。
2.2 數(shù)據(jù)并行
數(shù)據(jù)并行需要數(shù)據(jù)間是互相獨(dú)立的,在DCT、量化模塊時(shí)每個(gè)8×8子塊之間數(shù)據(jù)是相互獨(dú)立的,可以考慮數(shù)據(jù)并行優(yōu)化,游程計(jì)算以及HUFFMAN編碼模塊每個(gè)8×8子塊之間的數(shù)據(jù)是相互關(guān)聯(lián)的,不適合用數(shù)據(jù)并行進(jìn)行處理。
2.3 轉(zhuǎn)移指令的優(yōu)化
由于轉(zhuǎn)移指令有5個(gè)延遲間隙,過(guò)多的轉(zhuǎn)移將導(dǎo)致資源浪費(fèi),尤其對(duì)于核心模塊來(lái)說(shuō),將嚴(yán)重影響編碼速度。轉(zhuǎn)移指令主要集中于子函數(shù)調(diào)用與返回和循環(huán)體中,其優(yōu)化方法主要有:子函數(shù)合并、循環(huán)體直接展開和轉(zhuǎn)移指令直接利用三種方法。
子函數(shù)合并就是將盡可能多的子函數(shù)合并為一個(gè)函數(shù),尤其是將JPEG中多重循環(huán)體中的核心子函數(shù)合并,如JPEG的量化、游程計(jì)算、HUFFMAN編碼、碼字輸出。一個(gè)子函數(shù)調(diào)用與返回耗費(fèi)17個(gè)指令周期,子函數(shù)合并將會(huì)極大提高編碼速度,盡量避免調(diào)用子函數(shù)。
循環(huán)體直接展開,對(duì)于多重循環(huán)體的控制特別適用。若外層循環(huán)少,可將內(nèi)層循環(huán)體直接展開,結(jié)合轉(zhuǎn)移條件,減少層與層之間的相互聯(lián)系。循環(huán)展開的限制在于展開之后所需變量個(gè)數(shù)與寄存器數(shù)目之間的矛盾,即生命太長(zhǎng)問(wèn)題。(所謂生命太長(zhǎng)問(wèn)題,即變量值需要保持較長(zhǎng)時(shí)間,也就是說(shuō)較長(zhǎng)時(shí)間的占用該寄存器,使該寄存器無(wú)法用于其它變量,從而使在一定時(shí)間段內(nèi)可使用寄存器的數(shù)目減少)。對(duì)于8×8子塊而言,一般不會(huì)存在沖突。因此對(duì)于JPEG量化,游程計(jì)算等尤為適用。
轉(zhuǎn)移指令直接利用是指直接利用轉(zhuǎn)移指令的5個(gè)延遲間隙。對(duì)于子函數(shù)的調(diào)用與返回,調(diào)用時(shí)可直接利用轉(zhuǎn)移指令的延遲間隙對(duì)子函數(shù)返回地址進(jìn)行保護(hù)、傳遞子函數(shù)的自變量、保護(hù)需要保留的變量,返回時(shí)可直接利用轉(zhuǎn)移指令的延遲間隙傳遞子函數(shù)的返回值、恢復(fù)保留的變量。在不改變控制轉(zhuǎn)移條件寄存器值的條件下,可直接利用轉(zhuǎn)移指令的5個(gè)延遲間隙進(jìn)行數(shù)據(jù)處理,如變量初始化等。
2.4 軟件流水線技術(shù)
軟件流水[8]是編排循環(huán)指令,使循環(huán)的多次迭代能夠并行執(zhí)行的技術(shù)。TMS320C6416的并行資源使得在前次迭代尚未完成之前可以開始一個(gè)新的循環(huán)迭代。軟件流水的目的就是盡可能早的開始一個(gè)新循環(huán)迭代,可以通過(guò)畫圖表的方式來(lái)確定每一個(gè)指令周期每個(gè)迭代所進(jìn)行的節(jié)拍,從而確定什么時(shí)候可以開始一個(gè)新的迭代。對(duì)于多周期循環(huán)來(lái)說(shuō),主要步驟為:①確定最小迭代間隔(即前一迭代的第一節(jié)拍和緊隨其后的迭代的第一節(jié)拍之間的指令周期間隔);②畫相關(guān)圖表;③匯編資源安排;④最后匯編。在根據(jù)所畫圖表安排匯編指令時(shí),需注意資源沖突和生命太長(zhǎng)的問(wèn)題。在JPEG中,水平位移、量化之間有很強(qiáng)的依賴性,必須使用軟件流水線技術(shù)來(lái)減少過(guò)多的延遲時(shí)間。
2.5 浮點(diǎn)數(shù)定點(diǎn)化實(shí)現(xiàn)
TMS320C6416是TI公司推出的新一代并行處理的定點(diǎn)數(shù)字信號(hào)處理器,其定點(diǎn)運(yùn)算指令里的操作數(shù)都是整數(shù),但JPEG編碼數(shù)值運(yùn)算涉及浮點(diǎn)小數(shù)運(yùn)算。浮點(diǎn)數(shù)需要乘一個(gè)比例因子并取整變成整型數(shù)后,才能使用定點(diǎn)運(yùn)算指令。在轉(zhuǎn)換中必須保持系統(tǒng)比例因子的一致性。通常用Q格式數(shù)表示浮點(diǎn)數(shù)。以32位定點(diǎn)數(shù)為例:最高位為符號(hào)位,如規(guī)定符號(hào)位后即是小數(shù)點(diǎn)位置,則稱為Q31格式數(shù),其表示的實(shí)際小數(shù)范圍是 -1≤x≤0.999999999534339。設(shè)以q代表所定義的Q格式值,則定點(diǎn)數(shù)Xq與實(shí)際小數(shù)x之間的轉(zhuǎn)換關(guān)系為:
選定Q格式值之后,應(yīng)將系統(tǒng)的全部數(shù)值轉(zhuǎn)換成同一格式的定點(diǎn)數(shù),稱為定標(biāo),即確定同一標(biāo)尺。當(dāng)發(fā)生溢出時(shí),一般將所有參與操作的數(shù)右移1位,即除以2,然后再做加減運(yùn)算。
2.6 內(nèi)存調(diào)度的考慮
DSP存儲(chǔ)空間的配置十分重要。TMS320C6416的片內(nèi)存儲(chǔ)器采用L1/L2兩級(jí)高速緩存結(jié)構(gòu):程序高速緩存L1P、數(shù)據(jù)高速緩存L1D均為16Kbyte;L2內(nèi)存為1024Kbyte(SRAM/Cache可設(shè)置),可根據(jù)需要設(shè)置為32、64、128、256Kbyte的高速緩存,余下部分為SRAM。外部存儲(chǔ)器為SDRAM。CPU對(duì)不同存儲(chǔ)器的訪問(wèn)速度是不同的:對(duì)片內(nèi)存儲(chǔ)器的L1 Cache的訪問(wèn)速度最快,為CPU的主頻速度;對(duì)片內(nèi)存儲(chǔ)器的L2 Cache的訪問(wèn)速度次之,為CPU的主頻速度的1/2;對(duì)片內(nèi)存儲(chǔ)器的L2余下的SRAM和片外SDRAM的訪問(wèn)速度最慢,為100~133MHz。因此合理配置和使用存儲(chǔ)空間,對(duì)編碼系統(tǒng)的整體運(yùn)行效率影響很大,尤其是對(duì)編碼內(nèi)部核心循環(huán)存儲(chǔ)空間的配置其影響更大(如8×8子塊DCT、量化、游程計(jì)算、HUFFMAN編碼等)。應(yīng)該盡可能地把訪問(wèn)最頻繁的常數(shù)表和代碼段裝入L1 Cache,相對(duì)較頻繁的變量和數(shù)據(jù)裝入L2 Cache,如果過(guò)大,則再考慮裝入SRAM和片外SDRAM。
程序高速緩存L1P采用直接映射結(jié)構(gòu),行大小為32字節(jié),可以緩存512組,1次存取一行。當(dāng)CPU的取指訪問(wèn)L1P缺失但命中L2時(shí),CPU會(huì)阻塞8個(gè)周期;若L2也缺失,則CPU一直阻塞,直到L2從外部存儲(chǔ)器取回相應(yīng)取指包并傳回到L1P、再返回給CPU為止。
數(shù)據(jù)高速緩存L1D采用雙路組聯(lián)想結(jié)構(gòu),行大小為64字節(jié),可以緩存128組。L1D和L2內(nèi)存之間有一個(gè)4入口的寫緩存。L1D存儲(chǔ)器分為8組32位寬度的存儲(chǔ)體(bank),這些存儲(chǔ)體都是單通信口的,每周期只允許被訪問(wèn)一次。L1D允許CPU每周期訪問(wèn)兩次。對(duì)L1D的訪問(wèn)導(dǎo)致CPU阻塞的情形有四種[6-7]:L1D存儲(chǔ)體(bank)沖突,L1D讀缺失阻塞,L1D寫缺失阻塞,監(jiān)聽(snoops)阻塞。
L2高速緩存Cache采用4路組聯(lián)想結(jié)構(gòu),行大小為128字節(jié),存儲(chǔ)器分為8組64位寬度的存儲(chǔ)體(bank),對(duì)L2的訪問(wèn)要2個(gè)周期才完成。對(duì)L2的訪問(wèn)導(dǎo)致CPU阻塞的情形有四種[9-10]:L2存儲(chǔ)體(bank)沖突,L2訪問(wèn)沖突,L2 Cache讀缺失阻塞,L2 Cache寫缺失阻塞。
除開CPU第一次對(duì)L1P的取指訪問(wèn)和對(duì)L1D的取數(shù)據(jù)訪問(wèn)會(huì)發(fā)生強(qiáng)制缺失而不可避免外,其余的阻塞都可以通過(guò)內(nèi)存調(diào)度來(lái)避免或減少阻塞周期。內(nèi)存調(diào)度的基本原則為時(shí)空分布原則:時(shí)間上依次調(diào)用的在空間上的分布也依次放置,即在內(nèi)存調(diào)度上按照在程序運(yùn)行中的時(shí)間順序進(jìn)行配置程序代碼和數(shù)據(jù)。
2.7 其它優(yōu)化方法
除以上并行優(yōu)化方法之外,還有另外一些基本方法,如:
常數(shù)表的使用。為了提高編碼算法的實(shí)現(xiàn)效率,減少運(yùn)算的實(shí)際開銷,盡可能把需運(yùn)行時(shí)計(jì)算的參數(shù)做成常數(shù)數(shù)值或常數(shù)表,尤其是對(duì)于核心循環(huán)中的變量參數(shù)計(jì)算,從而將運(yùn)行時(shí)的計(jì)算轉(zhuǎn)化為編譯時(shí)的計(jì)算。對(duì)于熵編碼尤為適用。
移位指令代替乘除運(yùn)算。對(duì)于基于2的指數(shù)次冪的乘除運(yùn)算,可以采用移位指令代替乘除運(yùn)算。移位指令是單周期指令,比乘除運(yùn)算可以節(jié)約許多指令周期。
除法優(yōu)化。對(duì)于非基于2的指數(shù)次冪的除法運(yùn)算,TMS320C6000系列DSP沒(méi)提供直接進(jìn)行除法運(yùn)算的指令,需自行編寫除法算法。編寫除法匯編程序時(shí),可利用條件減SUBC指令對(duì)除法進(jìn)行優(yōu)化。SUBC匯編指令格式為:SUBC(.L)src1,src2,dst,執(zhí)行的操作為條件減:src1減去src2,若結(jié)果非負(fù)則將結(jié)果左移1位加1后送入dst;否則將src1左移1位后送入dst。
實(shí)驗(yàn)測(cè)試采用尺寸大小為4008×2672的大圖像,圖像壓縮質(zhì)量控制參數(shù)設(shè)為85(圖像質(zhì)量較好),運(yùn)行于PC機(jī)(CPU:Celeron(R)2.20GHz,內(nèi)存256M)操作系統(tǒng)為Windows XP。測(cè)得對(duì)應(yīng)圖像壓縮比為7.995:1,對(duì)4008×2672的大圖像來(lái)說(shuō)共有501×334個(gè)8×8子塊,每8×8子塊平均輸出字節(jié)為64/8=8,每個(gè)子塊因?yàn)檩敵鲎止?jié)數(shù)的不同所耗資源也不相同,所以只能選取一些樣本進(jìn)行統(tǒng)計(jì)。選取樣本的時(shí)候主要從壓縮比,輸出字節(jié)最多的塊,最少的塊,輸出字節(jié)數(shù)主要分布范圍等方面來(lái)選取具有代表性的子塊進(jìn)行統(tǒng)計(jì),選取的樣本子塊輸出字節(jié)平均值為8。實(shí)驗(yàn)中DCT模塊調(diào)用C64××的匯編化模塊,量化模塊調(diào)用C62××的匯編化模塊,并結(jié)合TMS320C6416的硬件結(jié)構(gòu)特點(diǎn),對(duì)HUFFMAN編碼模塊進(jìn)行匯編語(yǔ)言編程,最終在TMS32C6416上實(shí)現(xiàn)JPEG編碼器。
JPEG編碼器匯編并行優(yōu)化后,在CCS上實(shí)現(xiàn)的總體性能與匯編并行優(yōu)化前的對(duì)比如表1所示。
表1 匯編并行優(yōu)化前后性能對(duì)比表
從表1可以看出,匯編并行優(yōu)化后編碼核心模塊的資源消耗大大降低。與匯編優(yōu)化前相比,效率提高了84.06%,處理速度是匯編優(yōu)化前的6.3倍;與無(wú)優(yōu)化時(shí)相比,效率提高達(dá)93.67%,處理速度是無(wú)優(yōu)化處理速度的15.8倍。這對(duì)壓縮速度有較高要求的工程硬件實(shí)現(xiàn)有很大幫助。實(shí)驗(yàn)中采用的壓縮比為7.995:1,如果對(duì)某些工程應(yīng)用中圖像質(zhì)量要求不是很高的情況下,可以將壓縮比調(diào)得更高,HUFFMAN編碼模塊資源消耗將進(jìn)一步降低,壓縮性能會(huì)得到更大的提高,當(dāng)然壓縮速度的提高是以犧牲圖像質(zhì)量為代價(jià)的,具體的工程應(yīng)用中要考慮哪方面因素更重要,來(lái)協(xié)調(diào)速度和質(zhì)量這一對(duì)矛盾。
通過(guò)優(yōu)化實(shí)現(xiàn)的JPEG編碼器性能為:在主頻為600MHz的TMS320C6416芯片上對(duì)4008×2672大小的圖片進(jìn)行處理,在一定的保真度條件下,可以做到編碼速度達(dá)2幀/秒(因?yàn)?008×2672的大圖像共有501×334個(gè)8×8子塊,所以大圖像總耗1388×501×334=232,259,592 cycles,600M/233M=2.57≥2,壓縮比為7.995:1)。適用于某些對(duì)大圖像實(shí)時(shí)壓縮傳輸?shù)墓こ添?xiàng)目。而且還可以通過(guò)調(diào)整壓縮圖像質(zhì)量來(lái)調(diào)整壓縮處理速度,以適應(yīng)對(duì)編碼速度、實(shí)時(shí)性要求高的應(yīng)用場(chǎng)合或者對(duì)圖像質(zhì)量要求高的應(yīng)用場(chǎng)合。
[1]Texas Instruments Incorporated,TMS320C64x Technical Overview[Z].January 2001.
[2]Texas Instruments Incorporated,TMS320C6416T DSK Technical Reference[Z].Nov.2004.
[3]G KWallace.the JPEG Still Picture Compression Standard[J].Consumer Electronics,IEEE Transactions,1992,38(2):xviii-xxxiv.
[4]胡棟.靜止圖象編碼的基本方法與國(guó)際標(biāo)準(zhǔn)[M].北京:北京郵電大學(xué)出版社,2003.
[5]婁莉.基于離散余弦變換的圖像壓縮技術(shù)[J].現(xiàn)代電子技術(shù),2004(19):103-105.
[6]孫學(xué)巖.熵編碼的壓縮編碼原理與方法[J].濰坊學(xué)院學(xué)報(bào),2004(6):86-87.
[7]George R Desrochers.Principles of Parallel and Multiprocessing[M].University of Michigan:Intertext Publications,McGraw-Hill,1987.
[8]Texas Instruments Incorporated,T MS320C6000 Optimizing Compiler User’s Guide[Z].May 2004.
[9]Texas Instruments Incorporated,TMS320C6000 DSP Cache User’s Guide[Z].May 2003.
[10]Texas Instruments Incorporated,TMS320C6000 Peripherals Reference Guide[Z].February 2001.
Im plementation of JPEG Encoder Based on TMS320C6416
WANG Guo-shu1,NIE You-wei2,HU You-peng1,QIN Xian-quan1,LIN Jia-yu3
(1.Army 77505,TibetMilitary Region,Lhasa 850000,China;2.Army 65042,Shenyang Military Region,Shenyang 110035,China;3.School of Electronics Science and Engineering,National University of Defense Technology,Changsha 410073,China)
Integrating the TMS320C6416 structure and characteristics of TI company,based on analyzing the structural characteristics of JPEG coding devices,this paper describes realizing parallelism and optimization of algorithm software in the process of realizing JPEG coding,and implements JPEG coding deviceswith assembler language in project.The image data in size of4008×2672 is processed by TMS320C6416 DSP with the main frequency of 600MHz,and the coding rate reaches two frames per second after conforming to the quality of the coding image.
TMS320C6416;JPEG Standard;Parallel;Optimize;VLIW
10.3969/j.issn.1002-2279.2014.04.025
TN919.81
:A
:1002-2279(2014)04-0078-05
王國(guó)樹(1975-),男,重慶市北碚區(qū)人,碩士研究生,主研方向:信號(hào)處理。
2013-10-12