惠為君
摘要:介紹了OV7725原理、配置寄存器及SCCB時(shí)序。在此基礎(chǔ)上,基于FPGA實(shí)現(xiàn)了OV7725控制器設(shè)計(jì),給出了設(shè)計(jì)的代碼結(jié)構(gòu)。在QUARTUSII13.0平臺(tái)上完成了代碼設(shè)計(jì)和下載。結(jié)果表明,該設(shè)計(jì)是成功的。
關(guān)鍵詞:OV7725; VERILOG;FPGA;控制器
中圖分類號(hào):TN911 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào):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攝像頭,具有成本低、靈敏度高等特點(diǎn),在視頻圖像采集系統(tǒng)中,得到廣泛應(yīng)用。目前,各種CMOS攝像頭雖然感光效果等有所差異,但是其開發(fā)流程差不多,就是通過對(duì)攝像頭寄存器的配置,使攝像頭按照配置參數(shù)要求采集視頻圖像。
OV7725一共有172個(gè)寄存器,用于工作模式的配置。由于寄存器眾多,配置參數(shù)需要通過SCCB總線傳輸。因此,有必要設(shè)計(jì)控制器實(shí)現(xiàn)OV7725的參數(shù)配置。
1 OV7725功能
通過SCCB協(xié)議,對(duì)OV7725配置。然后,在時(shí)鐘驅(qū)動(dòng)下,感光元件對(duì)圖像進(jìn)行采樣,采樣信號(hào)在12bit的A/D轉(zhuǎn)換后,通過DSP進(jìn)行相關(guān)圖像處理,輸出符合配置要求的10bit視頻數(shù)據(jù)。
2 OV7725配置寄存器
OV7725的配置寄存器有172個(gè)。在傳感器正常工作之前,這些寄存器必須進(jìn)行配置,否則,不能得到預(yù)期畫質(zhì)的圖像。當(dāng)然,這些寄存器中的大部分可以采用默認(rèn)值,不需要重新配置參數(shù)。
部分寄存器地址及描述如表 1所示。
這些寄存器的參數(shù)決定了視頻流的格式和畫質(zhì)。寄存器的配置順序是任意的,各個(gè)寄存器配置的先后順序?qū)Y(jié)果沒有影響。
3 SCCB協(xié)議
SCCB協(xié)議稱為串行相機(jī)控制總線,是I2C協(xié)議的簡(jiǎn)化版本。SCCB接口提供了兩條總線:一條串行數(shù)據(jù)總線SDA,一條時(shí)鐘總線SCL。SCCB不支持多字節(jié)讀寫。在SCCB讀周期,主機(jī)發(fā)送完寄存器地址后,必須發(fā)送總線停止條件。因此在Verilog實(shí)現(xiàn)SCCB時(shí)序時(shí)候,SCL引腳始終設(shè)為輸出方式,SCCB寫周期直接使用I2C的寫周期時(shí)序,讀周期要加一個(gè)總線停止條件。
圖1所示SCCB讀寫時(shí)序。其工作過程如下:
A.總線處于空閑狀態(tài),SCL和SDA都為高電平時(shí)。
B.空閑狀態(tài)下,SDA上電平被拉低,啟動(dòng)SCCB總線。
C.主機(jī)傳輸從機(jī)的7位地址和讀/寫控制信號(hào)
D.SDA上傳輸數(shù)據(jù)信號(hào)。SCL為高電平期間,SDA上電平保持穩(wěn)定,SCL為低電平期間,允許SDA狀態(tài)改變。
數(shù)據(jù)按位傳輸,和時(shí)鐘同步。數(shù)據(jù)為一個(gè)字節(jié),MSB在前,LSB在后。在LSB后面,主機(jī)釋放SDA,由從機(jī)發(fā)出應(yīng)答信號(hào)。
E.SCL高電平期間,SDA出現(xiàn)上升沿,一次數(shù)據(jù)傳輸停止。
4 OV7725配置查找表
設(shè)計(jì)模塊對(duì)寄存器配置。定義16BIT寄存器型向量config_data,根據(jù)地址取得各個(gè)寄存器的配置值,傳到SCCB協(xié)議總線控制器,實(shí)施對(duì)OV7725的配置。配置數(shù)據(jù)設(shè)計(jì)成用CASE語(yǔ)句實(shí)現(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)機(jī)實(shí)現(xiàn)SCCB讀寫功能。根據(jù)寫時(shí)序,設(shè)計(jì)寫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)機(jī)由三ALWAYS過程實(shí)現(xiàn),其中,狀態(tài)選擇過程周期實(shí)現(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)實(shí)現(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位向量,存儲(chǔ)待傳輸數(shù)據(jù)。空閑狀態(tài)下,數(shù)據(jù)線是高電平。W_START狀態(tài)下,數(shù)據(jù)線被拉低,開始傳輸數(shù)據(jù),器件地址裝載向量wdata。在W_ID_ADDRER狀態(tài),器件地址由sdat_out串行輸出。在從機(jī)響應(yīng)階段,wdata向量裝載寄存器地址,待傳輸。依此類推,傳輸寄存器地址、寄存器配置數(shù)據(jù)等。
6 SCCB控制器
設(shè)計(jì)頂層模塊OV7725_TOP,實(shí)例化上述模塊。得到如圖2所示的RTL圖。
引腳cmos_clk和cmos_sdt分別作為SCCB總線的時(shí)鐘和數(shù)據(jù)線使用,實(shí)現(xiàn)對(duì)OV7725的讀寫功能。
7 結(jié)束語(yǔ)
在掌握OV7725配置寄存器的地址、作用的基礎(chǔ)上,根據(jù)SCCB時(shí)序,設(shè)計(jì)控制器實(shí)現(xiàn)對(duì)OV7725寄存器的配置,使得OV7725能按照要求輸出視頻流格式和畫質(zhì)?;赒UARTUS13.0平臺(tái),實(shí)現(xiàn)控制器設(shè)計(jì)。
參考文獻(xiàn):
[1] 龍?jiān)谠疲?武斌. DVI數(shù)字視頻圖像數(shù)據(jù)的實(shí)時(shí)截取方法[J]. 電視技術(shù),2010,34(2):32-33.
[2] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M]. 北京航空航天大學(xué)出版社,2008.
[3] 李江輝,王景存. 基于FPGA 的視頻采集與顯示系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2011,13(35):20-21