基于DSP和FPGA的實(shí)時(shí)圖像壓縮系統(tǒng)設(shè)計(jì)
實(shí)現(xiàn)這個(gè)功能的方法是采用EDMA ping_pong方式。在DSP中使用hEdmaPing和hEdmaPong雙通道EDMA并建立PingBuffer和PongBuffer兩個(gè)數(shù)據(jù)存儲(chǔ)區(qū)。 當(dāng)寫完1幀圖像后,FPGA發(fā)送EXTINT4中斷信號(hào)啟動(dòng)hEdmaPing將數(shù)據(jù)搬移到PingBuffer,同時(shí)將通道鏈接至hEdmaPong。在下一個(gè)中斷事件發(fā)生時(shí)將數(shù)據(jù)搬移到PongBuffer中,CPU在hEdmaPong通道完成中斷服務(wù)程序中鏈接hEdmaPing通道。如此往復(fù),使系統(tǒng)數(shù)據(jù)搬移和處理連續(xù)進(jìn)行。
3.2 DSP/BIOS調(diào)度程序設(shè)計(jì)
僅僅采用EDMA乒乓方式進(jìn)行EDMA數(shù)據(jù)傳輸還是不夠的,不能實(shí)現(xiàn)數(shù)據(jù)的采集和壓縮同時(shí)進(jìn)行,還需要DSP/BIOS調(diào)度程序。在任務(wù)、硬件中斷、軟件中斷中進(jìn)行調(diào)度,在軟中斷服務(wù)函數(shù)中進(jìn)行圖像壓縮任務(wù)。
DSP/BIOS是TI公司所設(shè)計(jì)開發(fā)的、尺寸可裁剪的實(shí)時(shí)多任務(wù)操作系統(tǒng)內(nèi)核,通過使用DSP/BIOS提供的豐富的內(nèi)核服務(wù),開發(fā)者能快速地創(chuàng)建滿足實(shí)時(shí)性能要求的精細(xì)復(fù)雜的多任務(wù)應(yīng)用程序。
DSP/BIOS程序編寫過程如下:
(1)在DSP/BIOS配置面板中添加1個(gè)軟中斷jpeg_swi,并將該軟中斷的服務(wù)函數(shù)設(shè)置為jpeg。
(2)添加軟中斷服務(wù)函數(shù)jpeg();代碼如下:
void jpeg(void)
{
Uint32 i;
if(pingpong)
bitstream_length=my_jpegenc->fxns->encode(my_jpegenc,(XDAS_Int8**)buf0,output_bitstream_buffer);
else
bitstream_length=my_jpegenc->fxns->encode(my_jpegenc,(XDAS_Int8 **)buf1,output_bitstream_buffer);
submit_qdma();
while(!(EDMA_getPriQStatus()EDMA_OPT_PRI_HIGH));
}
(3)在EDMA中斷服務(wù)函數(shù)中添加如下代碼:
SWI_post(jpeg_swi);
該函數(shù)的作用是觸發(fā)jpeg_swi軟中斷。
4 系統(tǒng)關(guān)鍵技術(shù)
4.1 時(shí)鐘
在使用內(nèi)部生成的時(shí)鐘過程中,可能引起設(shè)計(jì)上的功能和時(shí)限問題。組合邏輯產(chǎn)生的時(shí)鐘會(huì)引入毛刺,造成功能問題,而引入的延遲則可能會(huì)導(dǎo)致時(shí)限問題。
本設(shè)計(jì)中用到很多全局時(shí)鐘的整數(shù)倍分頻,且由于分頻的整數(shù)倍較大,如果利用FPGA中自帶的DCM模塊很難實(shí)現(xiàn)這樣的功能。因此,采用同步計(jì)數(shù)器的分頻方法,并且在各個(gè)時(shí)鐘信號(hào)輸出之前,再加一級(jí)寄存器輸出,這樣的操作就避免了組合邏輯生成的毛刺被阻擋在寄存器的數(shù)據(jù)輸入端口上。
4.2 DSP與FPGA數(shù)據(jù)交換
由于壓縮算法采用MECOSO公司的JPEG壓縮算法,經(jīng)過優(yōu)化和處理后,壓縮1幅圖像僅需要4 ms。所以影響整個(gè)系統(tǒng)能否實(shí)現(xiàn)高頻幀的關(guān)鍵技術(shù)是EDMA向SDRAM中搬移數(shù)據(jù)的速度,在本設(shè)計(jì)中設(shè)幀圖像的大小為600×480=288 KB,傳輸1幅圖像所需的時(shí)間需要10 ms。影響其速度主要有2個(gè)因素:EMIF所使用的ECLOCK和EMIF相關(guān)設(shè)置的寄存器。
在本系統(tǒng)中,ECLOCK采用了DSP的CPU4分頻,使EMIF的CLOCK工作在150 MHz,大大提高了搬移速度。由于SRAM映射在DSP的CE2空間,考慮到讀取數(shù)據(jù)需要建立(setup)、選通(Strobe)和保持(Hold)3個(gè)步驟,故將CE2相關(guān)寄存器的建立時(shí)間和選通時(shí)間選擇為1個(gè)clk,經(jīng)Hold時(shí)間設(shè)置為0。這樣設(shè)置后EMIF總線的數(shù)據(jù)吞吐量為:
本文設(shè)計(jì)的圖像壓縮系統(tǒng)實(shí)現(xiàn)了分辨率為600×480、幀頻率為100幀/s的視頻信號(hào)輸入的圖像采集,并能夠進(jìn)行實(shí)時(shí)的JPEG壓縮。系統(tǒng)采用DSP+FPGA的方案,雖然是一種較常用的組織方式,但在該系統(tǒng)中解決了一些關(guān)鍵的問題,大大提高了圖像壓縮速度及系統(tǒng)的靈活性。本系統(tǒng)已經(jīng)應(yīng)用于航天領(lǐng)域某監(jiān)測(cè)系統(tǒng),效果良好,運(yùn)行穩(wěn)定。
參考文獻(xiàn)
[1] 李武森,遲澤英,陳文建.高速DSP圖像處理系統(tǒng)中的乒乓緩存結(jié)構(gòu)研究[J].光電子技術(shù)與信息,2005(3):76-79.
[2] 周如輝.實(shí)時(shí)視頻處理系統(tǒng)中乒乓緩存控制器的設(shè)計(jì)[J].電子元器件應(yīng)用,2006,33(4):66-68.
[3] 江思敏,劉暢.TMS320C6000 DSP應(yīng)用開發(fā)教程[M].北京:機(jī)械工業(yè)出版社,2005.本文引用地址:http://www.ex-cimer.com/article/191641.htm
評(píng)論