基于SoPC的實(shí)時(shí)視頻處理與顯示設(shè)計(jì)
當(dāng)前基于軟核處理器的圖像系統(tǒng)已成為研究的熱點(diǎn),使用FPGA來(lái)構(gòu)建基于片上可編程系統(tǒng)(SoPC)的圖像處理系統(tǒng),已成為一種趨勢(shì)[1]。因此,本文采用SoPC技術(shù),在Altera公司單片Cyclone系列FPGA上使用IP資源復(fù)用技術(shù)集成了NiosII軟核處理器及各種輸入輸出接口,完成了對(duì)視頻圖像的采集、預(yù)處理、存儲(chǔ)和顯示幾大功能。本系統(tǒng)對(duì)圖像進(jìn)行了灰度均衡化處理,使系統(tǒng)應(yīng)用更廣。由于直方圖均衡能直接從已知的圖像中提取信息,不需要額外的參數(shù)說(shuō)明,所以在軍用、航空、商業(yè)等領(lǐng)域,特別是紅外圖像增強(qiáng)領(lǐng)域[2]有實(shí)際的意義。SoPC是Altera公司提出來(lái)的一種靈活、高效的柔性設(shè)計(jì),不需要修改硬件[3],就可方便地?cái)U(kuò)展和修改嵌入式視頻采集功能。同時(shí),由于融入眾多的IP核,保證了設(shè)計(jì)的高效、快速。
1 系統(tǒng)總體結(jié)構(gòu)及工作原理
系統(tǒng)框圖如圖1所示。系統(tǒng)上電后,Nios II軟核中的I2C控制總線對(duì)視頻采集模塊SAA7113H進(jìn)行配置,F(xiàn)PGA依靠像素時(shí)鐘和行、場(chǎng)信號(hào)同步采集SAA7113H芯片輸出的視頻信號(hào)中的灰度視頻數(shù)據(jù),把采集到的灰度數(shù)據(jù)進(jìn)行灰度直方圖統(tǒng)計(jì)和灰度分布均衡化處理。Nios II軟核外部加一個(gè)延遲模塊,與灰度轉(zhuǎn)換模塊輸出的信號(hào)同步之后,視頻輸入模塊開(kāi)始工作,通過(guò)存儲(chǔ)控制、DMA控制器傳輸視頻信號(hào),LCD顯示控制等模塊顯示所采集的信號(hào)。所有處理都采用流水線操作,大大節(jié)省了系統(tǒng)的處理時(shí)間。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 視頻解碼芯片SAA7113H初始化
本系統(tǒng)中視頻解碼器的初始化配置由Nios II軟核處理器通過(guò)I2C總線完成,主要包括對(duì)視頻解碼器的工作模式,輸出行、場(chǎng)同步參考信號(hào)的時(shí)序關(guān)系以及輸出數(shù)字信號(hào)的格式等進(jìn)行設(shè)置。I2C總線是由Philips公司開(kāi)發(fā)的一種兩線制總線,由一條串行數(shù)據(jù)線SDA和一條串行時(shí)鐘線SCL組成,可以實(shí)現(xiàn)數(shù)據(jù)通信,完成芯片配置。首先,I2C總線控制器發(fā)出一個(gè)數(shù)據(jù)傳輸?shù)钠鹗紬l件:SCL信號(hào)保持高電平、而SDA信號(hào)由高電平變?yōu)榈碗娖綍r(shí),開(kāi)始傳輸?shù)刂窋?shù)據(jù)流。起始條件滿足后,發(fā)出一個(gè)8 bit的設(shè)備從地址,所有的外圍設(shè)備開(kāi)始響應(yīng)起始條件并轉(zhuǎn)換下一個(gè)8 bit寄存器地址(7 bit地址+1 bit讀寫(xiě)位),由高位到低位依次傳輸。外圍設(shè)備識(shí)別出傳輸?shù)刂泛?,在?個(gè)時(shí)鐘脈沖(確認(rèn)位)把數(shù)據(jù)線變?yōu)榈碗娖剑缓箝_(kāi)始將8 bit數(shù)據(jù)寫(xiě)入或者讀出寄存器(讀寫(xiě)位決定了數(shù)據(jù)的傳輸方向)。當(dāng)時(shí)鐘線SCLK為高電平、而數(shù)據(jù)線SDA由低電平變?yōu)楦唠娖綍r(shí),表示一次數(shù)據(jù)傳輸完成,停止I2C總線,等待下一次的傳輸開(kāi)始。圖2為I2C總線的數(shù)據(jù)傳輸時(shí)序圖。
從SAA7113H的4個(gè)模擬輸入端AI11、AI12、AI21、AI22輸入的視頻圖像信號(hào),經(jīng)A/D轉(zhuǎn)換后產(chǎn)生數(shù)字色度信號(hào)和亮度信號(hào),分別進(jìn)行亮度信號(hào)處理和色度信號(hào)處理。亮度信號(hào)處理的結(jié)果送到色度信號(hào)處理器,進(jìn)行綜合處理,產(chǎn)生YUV信號(hào),經(jīng)格式轉(zhuǎn)化后從VPO(8位)輸出。所有這些功能均是在I2C總線控制下完成。SAA7113的寄存器配置通過(guò)I2C總線來(lái)進(jìn)行,遵從I2C總線協(xié)議。表1是SAA7113H寄存器的“寫(xiě)”操作格式。
其中,S為起始位,條件是SCL為高電平、SDA有下降沿、ACK-s為從動(dòng)設(shè)備應(yīng)答位,P為終止位。在初始化過(guò)程中要注意:SAA7113H的節(jié)點(diǎn)地址(Slave Address)上電、RTS0為高電平時(shí),其I2C寫(xiě)地址為48H,讀地址為49H;RTS0為低電平時(shí),其I2C寫(xiě)地址為4AH,讀地址為4BH。
評(píng)論