摘 要:隨著編碼理論和多媒體網絡應用的發展,圖像和視頻壓縮編碼JPEG2000系統應用得到逐步推廣。在此從視頻采集中I2C總線的特點、協議入手,著重對I2C總線設計及實現方法進行介紹。基于視頻采集芯片SAA7111,提出采用VHDL語言來模擬實現I2C總線接口的方法,并將其嵌入到FPGA中。實驗仿真結果證明數據是正確、穩定、可靠的,具有一定的可借鑒性。
關鍵詞:FPGA; 視頻采集; VHDL; I2C總線; SAA7111
中圖分類號:TP336文獻標識碼:A
文章編號:1004-373X(2010)08-0080-03
Design and Implementation of I2C Bus in Video Acquisition Based on FPGA
PAN Li-ming1,WANG Hui-ping2,LIU Chun-feng1
(1.College of Electronic Science and Engineering, National University of Defence Technology, Changsha 410073, China;
2.Qinghai University, Xining 810016, China)
Abstract:With development of the coding theory and multimedia network application, the application of the image and video compression coding JPEG2000 system have been extended gradually. Proceeding with the characteristics and protocol of the I2C bus in the video acquisition, the design and realization method of I2C bus are introduced emphatically.Based on the video acquisition chip SAA7111, the method to simulate and realize the I2C bus interface by the did of VHDL language, and embed it into FPGA is proposed. The simulation results show that the data is correct stable and reliable.
Keywords: FPGA; video acquisition; VHDL; I2C bus; SAA7111
隨著科學技術的發展和現代戰爭條件的變化,傳統圖像信號提供的單一服務已遠遠不能滿足現代戰爭的需要。圖像信號由于包含有極其豐富的信息,具有通信效率高、便于記錄、形象逼真、臨場感強等特點,所傳送的信息量遠遠超過其他通信手段,所以得到越來越多的重視。在JPEG2000系統下,視頻采集系統是視頻采集功能的FPGA(現場可編程門陣列)前端系統,是視頻圖像處理、應用的前項通道。作為視頻采集系統的重要組成部分I2C(Inter Integrated Circuit)總線,早在20世紀80年代由荷蘭Philips公司研制開發成功。它是一種簡單、雙向二線制同步串行總線硬件接口[1-2]。
1 I2C總線的特點和協議
I2C總線協議作為一個串行總線標準,盡管沒有并行總線的數據吞吐能力,但是它的特點和協議使其有著廣泛的應用。其特點和協議主要有:
只需兩條總線即串行時鐘線(SCL)和串行數據線(SDA),使得IC引腳數目降低;且連接到總線的器件都是惟一地址、從節點關系軟件設定地址,主節點可以發送或者接收數據。是真正的多主總線,當兩個或更多主節點同時初始化數據傳輸時,可以通過沖突檢測和仲裁防止數據被破壞。串行的8位雙向數據傳輸速率在標準模式下可達100 Kb/s,快速模式下達400 Kb/s,高速模式下達3.4 Mb/s,連接到相同總線的IC數量只受到總線的最大電容(400 pF)限制。片上的濾波器可以濾去總線數據線上的毛刺波,保證數據完整。
一般在總線不忙的情況下,數據傳送才能開始,在數據傳送期間,無論何時時鐘線為高,數據線必須保持穩定,而且數據線和時鐘都必須保持為高電平。當時鐘線為高時,數據線的變化將認為是傳送的開始或停止,在這里,數據線由高到低的變化決定開始條件,而且數據線由低到高的變化決定停止條件。在滿足開始條件后,串行時鐘線(SCL)為低電平期間,串行數據線(SDA)允許發生變化,但每位數據需一個時鐘脈沖,當串行時鐘線(SCL)為高電平時,串行數據線(SDA)必須穩定,不能發生任何變化。主控器在應答時鐘脈沖高電平期間釋放串行數據線(SDA)線高,轉由接收器控制。受控器在應答時鐘脈沖高電平期間必須拉低串行數據線(SDA)線,使穩定的低電平作為有效應答[3-4]。
2 系統結構設計
現有一些可編程視頻輸入處理芯片,如:SAA7111,它的配置是通過I2C總線實現的,這種總線接口協議解決了設計數字控制電路時所遇到的許多接口問題,大大降低了視頻輸入處理部分的設計難度。因此,它被廣泛應用于視頻桌面系統、圖像多媒體、數字電視、圖像處理、視頻電話和音頻等領域。SAA7111芯片作為視頻的輸入處理部分,用來實現模擬輸入視頻信號的數字化。系統上電時, FPGA首先從外部配置芯片中讀取配置數據,進入工作模式狀態。隨后I2C配置模塊完成對SAA7111的初始化,初始化結束后,FPGA等待采集圖像的命令,FPGA收到采集命令后,視頻信號將進入視頻解碼器SAA7111進行A/D轉換,以將模擬信息變成標準的YUV數字圖像信息[5-6]。系統功能框圖如圖1所示。
圖1 系統功能框圖
3 I2C總線的實現方法
在對I2C總線設計中,通過SAA7111上的I2C接口對其工作方式寄存器進行設置實現其功能。SAA7111是一款功能強大的模擬前端和數字視頻譯碼器,常應用在嵌入式視頻應用的高度集成的電路中。內部包含兩路模擬處理通道,能實現視頻源的選擇、抗混疊濾波、A/D轉換、自動嵌位、自動增益控制、時鐘產生、多制式解碼以及亮度、對比度和飽和度的控制,從而將PAL,NTSC等不同制式的模擬復合視頻數據解碼成亮度、色度和相關同步的數字信號。SAA7111內有32 個寄存器(Subaddress00~1FH),其中22 個是可編程的。其中,00H,1A~1CH,1FH是只讀寄存器。00H描述的是芯片版本信息;1A~1CH是文本信息檢測和解碼寄存器,一般很少用到; 1FH用來描述芯片的狀態。02H~12H是可讀/寫寄存器,其中:02H~05H是模擬輸入控制寄存器,02H 用于設置模擬視頻信號輸入方式(共8種);03H~05H用于設置增益控制方式;06H~12H主要用于設置解碼方式,通過配置這些寄存器可以設置行同步信號的開始和結束位置,并可確定亮度、色度、飽和度的大小以及輸出圖像數據信號的格式。01H,13H~19H,1DH~1EH寄存器保留使用[7]。
由于SAA7111加電復位之后,各寄存器處于不確定狀態,因此需要采用I2C總線協議由FPGA作為主方對SAA7111的相關寄存器進行設置。從SAA7111的四個模擬輸入端AI11,AI12,AI21,AI22的某一引腳輸入的視頻圖像信號經模擬處理后,一路可通過緩沖器輸出到AOUT端用于監視,另一路經A/D轉換器后則產生數字色度信號和亮度信號。在分別進行亮度信號處理和色度信號處理后,其亮度信號處理結果的一路將送到色度信號處理器進行綜合處理,產生的Y和UV信號經格式化后從VPO(16位)輸出;另一路則進入同步分離器,并經數字PLL產生相應的行和場同步信號HS和VS。同時,PLL將驅動時鐘發生器,以產生HS 鎖定的時鐘信號LLC和LLC2,SAA7111的所有功能均是在I2C總線控制下完成的。SAA7111相應的寄存器初始化值見表1。
表1 SAA7111寄存器初始化值
SUBADDRESSDATASUBADDRESSDATA
00H00H0AH80H
01H00H0BH47H
02HC1H0CH40H
03H33H0DH00H
04H00H0EH01H
05H00H0FH00H
06HEBH10H40H
07HE0H11H1CH
08H88H12H03H
09H01H
I2C總線控制讀/寫操作過程如表2、表3所示(S:開始,Sr:重開始,P:停止,-S:從設備,-M:主設備,W:寫位,R:讀位):
寫過程:
SLAVEADDRESS(W)ACK-SSUBADDRESSACK-S DATA(N BYTES)ACK-SP
讀過程:
SSLAVEADDRESS (W)ACK-SSUBADDRESSACK-S
(Sr)SLAVEADDRESS (R)ACK-SDATA(N BYTES)ACK-MP
在設計中主要實現以下四種功能:開始條件功能、字節發送功能、應答條件功能和停止條件功能。四種功能信號的時序和數據總線傳遞如圖2、圖3所示。
為了完成上述要求和功能,本文采用VHDL語言編寫邏輯的方法來模擬I2C總線接口時序邏輯,配置數據可以由主機發送,也可以預先存放,同時用VHDL編寫時序邏輯對SAA7111 進行初始化配置。根據設計要求,在不同的進程下對串行時鐘線(SCL)和串行數據線(SDA)進行設計。時鐘信號源采用10 MHz的晶振,分頻后作為進程激勵信號,基本能夠滿足SAA7111芯片的數據率要求。但如果在一些更高速的情況下,需要快速通過I2C總線對被控器件進行設置,這里只需將行時鐘線(SCL)和串行數據線(SDA)的頻率進行修改即可[8,9],其接口控制如圖4所示。
圖2 信號時序圖
圖3 I2C總線數據傳遞時序
圖4 I2C控制接口流程圖
4 設計仿真結果
設計中利用Quartus Ⅱ集成環境采用VHDL語言實現了I2C總線對SAA7111中集成的symbol進行實驗仿真。reset信號為外接復位信號,時鐘信號根據需要外接所需頻率時鐘信號(clk),并根據要求對信號進行16分頻作為進程激勵信號(clkin)。對于上述初始化數據,仿真波形如圖5所示仿真結果輸出正確后,配置與電路設計相符的輸入/輸出引腳。根據測試結果,該設計可以穩定可靠地對SAA7111進行參量控制,如果需要修改只需更換程序中參量,再次編譯下載即可[10]。
圖5 仿真波形圖
5 結 語
該設計在視頻采集處理系統中已得到應用,I2C總線接口數據采集正確、穩定,并且在實現過程中,占用資源少,僅為總資源的40%。核心器件與圖像數據采集芯片配合使用,節省核心處理芯片的通用I/O接口,使系統整體電路十分簡潔、可靠性高、集成度高、接口方便等優點。
參考文獻
[1]路永坤. 用Verilog HDL實現I2C總線功能[J]. 電子技術應用, 2004, 30(4):67-69.
[2]何立民. I2C總線應用系統設計[M]. 北京: 北京航空航天大學出版社, 1995.
[3]Xilinx. I2C Bus interface design specification[M]. \\:Xilinx, 2001.
[4]Philips Semiconductors. The I2C-bus specification version[M]. \\: Philips Semiconductors, 2000.
[5]傘景輝, 孫廣富. SAA7111A中I2C總線控制器的FPGA實現[J]. 微處理機, 2004,25(4):3-6.
[6]尹德安, 李欣. 基于FPGA的視頻采集控制設計[J]. 微計算機信息, 2006, 22(18): 21-23.
[7]Philips. SAA7111 product specification/data sheet[M]. \\: Philips, 1999.
[8]吳繼華, 王誠. Altera FPGA/CPLD設計(高級篇)[M]. 北京: 人民郵電出版社, 2005.
[9]王誠, 吳繼華, 范麗珍, 等. Altera FPGA/CPLD設計(基礎篇)[M]. 北京: 人民郵電出版社, 2005.
[10]Altera Corporation. QuartusⅡ handbook[M]. \\:Altera Corporation, 2004.