惠為君
摘要:介紹了OV7725原理、配置寄存器及SCCB時序。在此基礎(chǔ)上,基于FPGA實現(xiàn)了OV7725控制器設(shè)計,給出了設(shè)計的代碼結(jié)構(gòu)。在QUARTUSII13.0平臺上完成了代碼設(shè)計和下載。結(jié)果表明,該設(shè)計是成功的。
關(guān)鍵詞:OV7725; VERILOG;FPGA;控制器
中圖分類號:TN911 文獻標識碼: A 文章編號:1009-3044(2015)24-0130-02
The Sdram Controller Based of FPGA
HUI Wei-jun
(Yan Cheng institute of technology, Yancheng 224051,China)
Abstract: The principle 、configuration registers and SCCB time sequence are introduced in this paper. Based on this,the design of OV7725 controller based on FPGA is realized, the code structure of the design is given as well as. Design code is completed and downloaded on QUARTUSII13.0 platform. The results shows that the design is successful.
Key words: ov7725; verilog; FPGA ; controller
OV7725是豪威的一款CMOS攝像頭,具有成本低、靈敏度高等特點,在視頻圖像采集系統(tǒng)中,得到廣泛應(yīng)用。目前,各種CMOS攝像頭雖然感光效果等有所差異,但是其開發(fā)流程差不多,就是通過對攝像頭寄存器的配置,使攝像頭按照配置參數(shù)要求采集視頻圖像。
OV7725一共有172個寄存器,用于工作模式的配置。由于寄存器眾多,配置參數(shù)需要通過SCCB總線傳輸。因此,有必要設(shè)計控制器實現(xiàn)OV7725的參數(shù)配置。
1 OV7725功能
通過SCCB協(xié)議,對OV7725配置。然后,在時鐘驅(qū)動下,感光元件對圖像進行采樣,采樣信號在12bit的A/D轉(zhuǎn)換后,通過DSP進行相關(guān)圖像處理,輸出符合配置要求的10bit視頻數(shù)據(jù)。
2 OV7725配置寄存器
OV7725的配置寄存器有172個。在傳感器正常工作之前,這些寄存器必須進行配置,否則,不能得到預(yù)期畫質(zhì)的圖像。當(dāng)然,這些寄存器中的大部分可以采用默認值,不需要重新配置參數(shù)。
部分寄存器地址及描述如表 1所示。
這些寄存器的參數(shù)決定了視頻流的格式和畫質(zhì)。寄存器的配置順序是任意的,各個寄存器配置的先后順序?qū)Y(jié)果沒有影響。
3 SCCB協(xié)議
SCCB協(xié)議稱為串行相機控制總線,是I2C協(xié)議的簡化版本。SCCB接口提供了兩條總線:一條串行數(shù)據(jù)總線SDA,一條時鐘總線SCL。SCCB不支持多字節(jié)讀寫。在SCCB讀周期,主機發(fā)送完寄存器地址后,必須發(fā)送總線停止條件。因此在Verilog實現(xiàn)SCCB時序時候,SCL引腳始終設(shè)為輸出方式,SCCB寫周期直接使用I2C的寫周期時序,讀周期要加一個總線停止條件。
圖1所示SCCB讀寫時序。其工作過程如下:
A.總線處于空閑狀態(tài),SCL和SDA都為高電平時。
B.空閑狀態(tài)下,SDA上電平被拉低,啟動SCCB總線。
C.主機傳輸從機的7位地址和讀/寫控制信號
D.SDA上傳輸數(shù)據(jù)信號。SCL為高電平期間,SDA上電平保持穩(wěn)定,SCL為低電平期間,允許SDA狀態(tài)改變。
數(shù)據(jù)按位傳輸,和時鐘同步。數(shù)據(jù)為一個字節(jié),MSB在前,LSB在后。在LSB后面,主機釋放SDA,由從機發(fā)出應(yīng)答信號。
E.SCL高電平期間,SDA出現(xiàn)上升沿,一次數(shù)據(jù)傳輸停止。
4 OV7725配置查找表
設(shè)計模塊對寄存器配置。定義16BIT寄存器型向量config_data,根據(jù)地址取得各個寄存器的配置值,傳到SCCB協(xié)議總線控制器,實施對OV7725的配置。配置數(shù)據(jù)設(shè)計成用CASE語句實現(xiàn)的查找表。
case(config_adder)
0: config_data = {8'h1C, 8'h7F};
1: config_data = {8'h1D, 8'hA2};
2: config_data = {8'h12, 8'h80 };
3: config_data = { 8'h3d, 8'h03}
4: config_data = { 8'h15, 8'h02}
.....
67: config_data = {8'h8c, 8'he8};
68 : config_data = {8'h8d, 8'h20};
69: config_data = {8'h0e, 8'h65};
default : {8'h1C, 8'h7F};
endcase
5 SCCB總線讀寫模塊
用狀態(tài)機實現(xiàn)SCCB讀寫功能。根據(jù)寫時序,設(shè)計寫SCCB狀態(tài)如下:W_IDLE、W_START、W_ID_ADDER、W_ACK1、W_REG_ADD、W_ACK2、W_REG_DATA、W_ACK3、W_STOP。
狀態(tài)機由三ALWAYS過程實現(xiàn),其中,狀態(tài)選擇過程周期實現(xiàn)上述狀態(tài)的選擇和轉(zhuǎn)換。其主要代碼結(jié)構(gòu)如下:
case(current_state)
W_IDLE: if(_config_adder < 8'd2)
next_state = W_START1;
if(_config_adder< _config_size)
next_state = W_START;
W_START:
next_state = W_ID_ADDER;
…….
R_REGDATA: //5'd6
next_state = W_ACK3;
W_ACK3: //5'd7
next_state = W_STOP;
W_STOP: //5'd8
next_state = W_IDLE;
如下代碼結(jié)構(gòu)實現(xiàn)狀態(tài)輸出,即從配置模塊中讀取器件ID地址、數(shù)據(jù)等,寫入配置寄存器。
W_START: begin
sdat_out <= 1'b0; //數(shù)據(jù)被拉低
stream_cnt <= 0;
wdata<=_config_data[23:16]; end
W_ID_ADDRER:begin
stream_cnt <= stream_cnt + 1'b1;
sdat_out<=wdata[3'd7 - stream_cnt];end
W_ACK1:begin
stream_cnt <= 0;
wdata <= SCCB_config_data[15:8];
……
wdata是8位向量,存儲待傳輸數(shù)據(jù)??臻e狀態(tài)下,數(shù)據(jù)線是高電平。W_START狀態(tài)下,數(shù)據(jù)線被拉低,開始傳輸數(shù)據(jù),器件地址裝載向量wdata。在W_ID_ADDRER狀態(tài),器件地址由sdat_out串行輸出。在從機響應(yīng)階段,wdata向量裝載寄存器地址,待傳輸。依此類推,傳輸寄存器地址、寄存器配置數(shù)據(jù)等。
6 SCCB控制器
設(shè)計頂層模塊OV7725_TOP,實例化上述模塊。得到如圖2所示的RTL圖。
引腳cmos_clk和cmos_sdt分別作為SCCB總線的時鐘和數(shù)據(jù)線使用,實現(xiàn)對OV7725的讀寫功能。
7 結(jié)束語
在掌握OV7725配置寄存器的地址、作用的基礎(chǔ)上,根據(jù)SCCB時序,設(shè)計控制器實現(xiàn)對OV7725寄存器的配置,使得OV7725能按照要求輸出視頻流格式和畫質(zhì)?;赒UARTUS13.0平臺,實現(xiàn)控制器設(shè)計。
參考文獻:
[1] 龍在云, 武斌. DVI數(shù)字視頻圖像數(shù)據(jù)的實時截取方法[J]. 電視技術(shù),2010,34(2):32-33.
[2] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計教程[M]. 北京航空航天大學(xué)出版社,2008.
[3] 李江輝,王景存. 基于FPGA 的視頻采集與顯示系統(tǒng)設(shè)計[J].電視技術(shù),2011,13(35):20-21