溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)

發(fā)布時(shí)間:2020-07-07 09:02:12 來(lái)源:網(wǎng)絡(luò) 閱讀:10099 作者:shugenyin 欄目:開發(fā)技術(shù)

1. 概述

本設(shè)計(jì)采用FPGA技術(shù),將CMOS攝像頭(DVP接口)的視頻數(shù)據(jù)采集,并通過(guò)以太網(wǎng)傳輸(UDP方式)給PC機(jī),上位機(jī)DEMO通過(guò)套接字編程,將視頻實(shí)時(shí)顯示在屏幕上。


2. 硬件系統(tǒng)框圖

CMOS采用OV7670(30萬(wàn)像素),F(xiàn)PGA采用ALTERA公司的CYCLONE IV,以太網(wǎng)卡采用IC plus公司的100M網(wǎng)卡芯片。

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)

硬件平臺(tái)采用ETree的FPGA開發(fā)板(某寶提供),如下圖所示:

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)

3. UDP/IP協(xié)議

UDP(User Datagram Protocol)是OSI參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。每一個(gè)數(shù)據(jù)包的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。UDP協(xié)議經(jīng)常用于圖像傳輸、網(wǎng)絡(luò)監(jiān)控?cái)?shù)據(jù)交換等數(shù)據(jù)傳輸速度要求比較高的場(chǎng)合。

UDP報(bào)文格式

0???????????????????? 15

16 ? ? ? ? ? ? 31

源端口號(hào)

目的端口號(hào)

報(bào)文長(zhǎng)度

校驗(yàn)和

數(shù)據(jù)

IP(Internet Protoco)包位于網(wǎng)絡(luò)層,功能是把分組發(fā)往目標(biāo)網(wǎng)絡(luò)或主機(jī)。所有的TCP,UDP,IMCP,IGCP的數(shù)據(jù)都以IP數(shù)據(jù)格式傳輸。

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)

以太網(wǎng)的數(shù)據(jù)幀的傳輸過(guò)程中,包長(zhǎng)一般在46~1500字節(jié),這里將UDP包長(zhǎng)設(shè)計(jì)為:(8+20+640*2)=1308字節(jié),以提高傳輸效率。


4. FPGA邏輯設(shè)計(jì)

FPGA各部分邏輯模塊如下圖所示:

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)

  • CMOS Capture,采集CMOS的DVP視頻流;

  • I2C Config,配置CMOS芯片;

  • FIFO,實(shí)現(xiàn)CMOS時(shí)鐘域到以太網(wǎng)時(shí)鐘域之間的轉(zhuǎn)換;

  • UDP Pack,實(shí)現(xiàn)UDP/IP協(xié)議的實(shí)現(xiàn)。

下面為OV7670的初始化配置代碼:

//file?name:			i2c_cfg_par.v
//creator:			shugen.yin
//date:				2017-4-21
//function:			i2c?registers
//log:				VGA?RAW/25FPS,?XCLK=24M

module?i2c_cfg_par(
	input??[07:0]?lut_index,
	output?reg?[15:0]?lut_data
);

always?@(*)
begin
	case(lut_index)
	//ov7670?RAW?25Fps?24M?input
	'd0	:	lut_data?<=??'h2280;
	'd1	:	lut_data?<=??'h0000;	
	'd2	:	lut_data?<=??'h0000;		
	'd3	:	lut_data?<=??'h0000;		
	'd4	:	lut_data?<=??'h0000;????????
	'd5	:	lut_data?<=??'h0000;		
	'd6	:	lut_data?<=??'h0000;		
	'd7	:	lut_data?<=??'h0000;		
	'd8	:	lut_data?<=??'h2101;		
	'd9	:	lut_data?<=??'h4a04;	
	'd10	:	lut_data?<=??'h2201;
	//windows?setting
	'd11	:	lut_data?<=??'h2712;	//Hstart?high?8bit
	'd12	:	lut_data?<=??'h2800;	//Hstop?high?8bit	
	'd13	:	lut_data?<=??'h2902;	//Vstart?high?8bit
	'd14	:	lut_data?<=??'h2a7a;	//Vstop?high?8bit
	'd15	:	lut_data?<=??'h42b6;	//HREF
	'd16	:	lut_data?<=??'h0300;	//VREF			
	'd17	:	lut_data?<=??'h0c00;	
	'd18	:	lut_data?<=??'h4e00;	
	'd19	:	lut_data?<=??'h703a;	
	'd20	:	lut_data?<=??'h7135;
	'd21	:	lut_data?<=??'h7211;
	'd22	:	lut_data?<=??'h73f0;
	'd23	:	lut_data?<=??'ha202;	
	'd24	:	lut_data?<=??'h23e0;
	'd25	:	lut_data?<=??'h0000;
	'd26	:	lut_data?<=??'h0d40;
	'd27	:	lut_data?<=??'h2438;	
	'd28	:	lut_data?<=??'ha507;
	'd29	:	lut_data?<=??'hab08;
	'd30	:	lut_data?<=??'h3495;
	'd31	:	lut_data?<=??'h3533;	
	'd32	:	lut_data?<=??'h36e3;
	'd33	:	lut_data?<=??'h9f78;
	'd34	:	lut_data?<=??'ha068;
	'd35	:	lut_data?<=??'ha10b;
	'd36	:	lut_data?<=??'ha6d8;
	'd37	:	lut_data?<=??'ha7d8;
	'd38	:	lut_data?<=??'ha8f0;
	'd39	:	lut_data?<=??'ha990;	
	'd40	:	lut_data?<=??'haa94;
	'd41	:	lut_data?<=??'h23e5;	
	'd42	:	lut_data?<=??'h0e61;
	'd43	:	lut_data?<=??'h0f4b;	
	'd44	:	lut_data?<=??'h2602;
	'd45	:	lut_data?<=??'h3102;
	'd46	:	lut_data?<=??'h3291;
	'd47	:	lut_data?<=??'h3907;
	'd48	:	lut_data?<=??'h4303;
	'd49	:	lut_data?<=??'h450b;
	'd50	:	lut_data?<=??'h471c;
	'd51	:	lut_data?<=??'h4871;	
	'd52	:	lut_data?<=??'h4c78;
	'd53	:	lut_data?<=??'h4d08;
	'd54	:	lut_data?<=??'h513a;
	'd55	:	lut_data?<=??'h5d40;	
	'd56	:	lut_data?<=??'h5e20;
	'd57	:	lut_data?<=??'h7955;
	'd58	:	lut_data?<=??'h7b4a;
	'd59	:	lut_data?<=??'h7419;
	'd60	:	lut_data?<=??'h7661;
	'd61	:	lut_data?<=??'h8d4f;
	'd62	:	lut_data?<=??'h8e00;
	'd63	:	lut_data?<=??'h8f00;	
	'd64	:	lut_data?<=??'h9000;
	'd65	:	lut_data?<=??'h9100;
	'd66	:	lut_data?<=??'h9600;
	'd67	:	lut_data?<=??'h9a80;	
	'd68	:	lut_data?<=??'hb08c;
	'd69	:	lut_data?<=??'hb10c;
	'd70	:	lut_data?<=??'hb20e;
	'd71	:	lut_data?<=??'hb382;
	'd72	:	lut_data?<=??'hb80a;	
	'd73	:	lut_data?<=??'h5314;
	'd74	:	lut_data?<=??'h54f0;
	'd75	:	lut_data?<=??'h5534;	
	'd76	:	lut_data?<=??'h5658;
	'd77	:	lut_data?<=??'h5728;
	'd78	:	lut_data?<=??'h583a;
	'd79	:	lut_data?<=??'h6988;	
	'd80	:	lut_data?<=??'h6a88;
	'd81	:	lut_data?<=??'h6b44;
	'd82	:	lut_data?<=??'h6c67;
	'd83	:	lut_data?<=??'h6d49;
	'd84	:	lut_data?<=??'h6e0e;
	'd85	:	lut_data?<=??'h7c0a;
	'd86	:	lut_data?<=??'h7d55;
	'd87	:	lut_data?<=??'h7e11;	
	'd88	:	lut_data?<=??'h7f9f;
	'd89	:	lut_data?<=??'h7a40;
	'd90	:	lut_data?<=??'h0140;
	'd91	:	lut_data?<=??'h0240;	
	'd92	:	lut_data?<=??'h23e7;
	'd93	:	lut_data?<=??'h4411;
	'd94	:	lut_data?<=??'h9266;
	'd95	:	lut_data?<=??'h4b0a;
	'd96	:	lut_data?<=??'ha488;
	'd97	:	lut_data?<=??'h9600;
	'd98	:	lut_data?<=??'h9730;
	'd99	:	lut_data?<=??'h9820;	
	'd100	:	lut_data?<=??'h9920;
	'd101	:	lut_data?<=??'h9a84;
	'd102	:	lut_data?<=??'h9b29;
	'd103	:	lut_data?<=??'h9c03;	
	'd104	:	lut_data?<=??'h9d4c;
	'd105	:	lut_data?<=??'h9e3f;
	'd106	:	lut_data?<=??'h7804;
	'd107	:	lut_data?<=??'h7901;??
	'd108	:	lut_data?<=??'hc8f0;
	'd109	:	lut_data?<=??'h790f;
	'd110	:	lut_data?<=??'hc820;
	'd111	:	lut_data?<=??'h7910;
	'd112	:	lut_data?<=??'hc87e;
	'd113	:	lut_data?<=??'h790b;
	'd114	:	lut_data?<=??'hc801;	
	'd115	:	lut_data?<=??'h790c;
	'd116	:	lut_data?<=??'hc807;
	'd117	:	lut_data?<=??'h790d;
	'd118	:	lut_data?<=??'hc820;	
	'd119	:	lut_data?<=??'h7902;
	'd120	:	lut_data?<=??'hc8c0;
	'd121	:	lut_data?<=??'h7903;
	'd122???:	lut_data?<=??'hc840;
	'd123	:	lut_data?<=??'h7905;
	'd124	:	lut_data?<=??'hc830;
	'd125???:	lut_data?<=??'h7926;
	default	:	lut_data?<=??'h0000;
	endcase
end	
endmodule


5. 上位機(jī)Demo實(shí)現(xiàn)

本設(shè)計(jì)采用VC++ 2010設(shè)計(jì)了一款簡(jiǎn)易的UDP網(wǎng)絡(luò)視頻流播放器,視頻源為RAW8格式,分辨率640*480,幀率25Hz。Windows為我們提供了便捷的套接字(socket)編程方式,軟件工程師方便實(shí)現(xiàn)網(wǎng)絡(luò)編程。

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)


6. 視頻顯示結(jié)果

給FPGA板卡上電,打開UDP demo軟件,視頻正常顯示。

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)


7. 任務(wù)管理器

在任務(wù)管理器中,可以查看網(wǎng)卡的狀態(tài),包括使用率和丟包的大概曲線圖。UDP demo軟件運(yùn)行幾分鐘后,圖像穩(wěn)定顯示,從任務(wù)管理器中可以看到本地網(wǎng)卡2的使用率為65.99%,曲線平整,沒(méi)有異常丟包情況。

FPGA設(shè)計(jì)——CMOS圖像采集與以太網(wǎng)傳輸顯示(OV7670)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI