在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA的DVP接口實現

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2025-06-04 09:18 ? 次閱讀

一、DVP簡介

DVP接口(Digital Video Port)是一種用于數字視頻傳輸的并行接口,常見于嵌入式系統圖像傳感器中。DVP直接傳輸數字視頻信號,減少模數轉換需求,適合中低速視頻傳輸。數據線:通常為8、10、12或16根數據線,用于傳輸像素數據。控制信號包括像素時鐘(PCLK)、行同步(HSYNC 或 HREF)信號、場同步(VSYNC)等,用于同步數據傳輸。

DVP和VGA時序有相似之處,都使用行同步(HSYNC)和場同步(VSYNC)信號來同步圖像數據。區別在于DVP是數字接口,直接傳輸數字像素數據,包含像素時鐘(PCLK)和數據線;VGA是模擬接口,傳輸模擬RGB信號,需數模轉換 。

本例介紹的DVP行同步信號采用 HREF,用于 ov5640 DVP數據接收采集。

(1)行時序

1.高電平有效:HREF為高電平時,表示正在傳輸有效像素數據。

2.像素傳輸:在HREF高電平期間,每個PCLK周期傳輸一個像素數據。

3.行結束:HREF從高電平變為低電平,標志一行數據傳輸完成。

4.像素數據周期:ov5640 DVP每個有效數據為8位,數據采集時需要根據輸出格式進行調整,輸出RGB565格式需要兩個像素時鐘才能完成傳輸,先傳輸高8位,后第8位。

61026626-3c41-11f0-b715-92fbcf53809c.png

6121d844-3c41-11f0-b715-92fbcf53809c.png

(2)場時序

1.同步脈沖:VSYNC產生高電平脈沖(取決于極性,ov5640為高)表示新一幀開始。

2.有效數據期:新一幀開始一段時間后,每行數據通過HSYNC或HREF信號同步。

3.幀結束:一幀數據傳輸完成后,VSYNC再次產生脈沖,標志下一幀的開始。

613ddcba-3c41-11f0-b715-92fbcf53809c.png

二、Verilog 實現

(1)設計要求

1. 對 ov5640 輸出RGB565格式的圖像數據進行接收

2. 接收數據輸出給存儲器(如rom、fifo、ddr)進行存儲,包含必要輸出端口

(2)設計要點

1. 場同步:每當 vsync 產生一次上升沿即代表新一幀的開始(上升沿通過打拍判斷)

2. 行同步:href 的每段高電平代表一行有效數據

3. 數據格式:一個pclk像素時鐘傳8位,而RGB565一個像素16位,需要兩個pclk像素時鐘才傳輸完一個像素數據,因此需要進行先緩存高8位數據,并在接收第8位時拼接數據并輸出

4. 數據有效信號:高電平時代表當前RGB565數據有效,可供后續存儲器作寫使能使用

(3)模塊代碼

`timescale 1ns / 1ps

module DVP_ctrl#(

parameter PIC_CNT_MAX = 4'd10 //舍棄前10幀不穩定圖像數據

)(

input wire rst_n,

input wire ov5640_pclk, //攝像頭像素時鐘

input wire ov5640_href, //攝像頭行同步信號

input wire ov5640_vsync, //攝像頭場同步信號

input wire [7:0] ov5640_data, //攝像頭場數據輸入

output reg [15:0] RGB565_data, //圖像數據輸出(RGB565格式)

output wire data_valid //數據有效信號(給存儲器的寫使能信號)

);

reg pix_flag; //一像素數據結束標志位

wire pic_flag; //一幀圖像結束標志位

reg pic_valid; //幀有效標志位

reg [3:0] pic_cnt; //幀計數器

reg [7:0] r_ov5640_data; //輸入數據緩存

reg ov5640_vsync_delay; //場同步信號打拍

reg pix_flag_delay; //一像素數據結束標志位打拍

//***************************** 場同步 ****************************//

//場同步信號打拍(用于檢測vsync上升沿)

always@(posedge ov5640_pclk or negedge rst_n)

if(rst_n == 1'b0)

ov5640_vsync_delay <= 1'b0;

else

ov5640_vsync_delay <= ov5640_vsync;

//一幀圖像結束標志位(vsync上升沿產生一次)

assign pic_flag = ((ov5640_vsync_delay == 1'b0) &&

(ov5640_vsync == 1'b1)) ? 1'b1 : 1'b0;

//前幾幀計數,計滿產生幀有效信號

always @(posedge ov5640_pclk or negedge rst_n) begin

if (!rst_n) begin

pic_cnt <= 4'd0;

pic_valid <= 1'b0;

end else if (pic_flag) begin

if (pic_cnt == PIC_CNT_MAX) begin

pic_cnt <= 4'd0;

pic_valid <= 1'b1;

end else

pic_cnt <= pic_cnt + 4'd1;

end

end

//***************************** 行同步 ****************************//

//行同步

always @(posedge ov5640_pclk or negedge rst_n) begin

if (!rst_n) begin

pix_flag <= 1'b0;

r_ov5640_data <= 8'b0;

RGB565_data <= 8'b0;

end else if (ov5640_href) begin

if (!pix_flag) begin

r_ov5640_data <= ov5640_data; //先緩存高8位

pix_flag <= 1'b1;

end else begin

RGB565_data <= {r_ov5640_data , ov5640_data};//后拼接低8位輸出

pix_flag <= 1'b0;

end

end

end

//一像素數據結束標志位打拍(用于產生像素數據有效信號)

always@(posedge ov5640_pclk or negedge rst_n)

if(rst_n == 1'b0)

pix_flag_delay <= 1'b0;

else

pix_flag_delay <= pix_flag;

//像素數據有效信號

assign data_valid = pic_valid & pix_flag_delay;

endmodule

(4)仿真代碼

仿真就是給DVP模塊模擬ov5640產生的圖像數據,我用的deepseek寫了一版,但經過測試發現不能直接使用,于是根據它的框架自己進行了一些修改,可以通過參數設置模擬圖像數據的參數(仿真多少幀、一幀多少行、一行多少像素)。以下模擬輸出了10幀、一幀8行數據、一行16個像素點,同時DVP舍去前3幀圖像數據。

`timescale 1ns / 1ps

module DVP_data_gen_tb();

reg pclk; //像素時鐘 (10ns周期)

reg rst_n; //復位信號 (低電平有效)

reg vsync; //場同步信號

reg href; //行同步信號

reg [7:0] data; //像素數據 (8bit)

wire data_valid; //數據有效信號

wire [15:0] RGB565_data; //輸出RGB565格式數據 (16bit)

//模擬OV5640視頻數據生成

parameter WIDTH = 16, //寬(一行多少個像素)

HIGTH = 8, //高(一幀多少行數據)

FRAME = 10; //幀(模擬發送多少幀數據)

integer pixel_cnt = 0, //像素計數器

row_cnt = 0, //行計數器

frame_cnt = 0; //幀計數器

//時鐘(10ns周期)

always #5 pclk = ~pclk;

initial begin //初始化復位

pclk = 0;

rst_n = 0; #20;

rst_n = 1;

end

always @(posedge pclk or negedge rst_n) begin

if (!rst_n) begin

vsync <= 0;

href <= 0;

data <= 0;

pixel_cnt <= 0;

row_cnt <= 0;

frame_cnt <= 0;

end else begin

//******************************************模擬場同步信號 (VSYNC)

if (pixel_cnt == 0 && row_cnt == 0) begin

vsync <= 1; // 一幀開始,VSYNC拉高一個時鐘周期

end else begin

vsync <= 0; // VSYNC拉低

end

//******************************************模擬行同步信號 (HREF)

if (row_cnt < HIGTH*10 + 10) begin//一幀模擬HIGTH行,多余行模擬行與行之間的輸出間隔

if (row_cnt <10 || (row_cnt % 10)!=0)

row_cnt <= row_cnt + 1;

else begin

if (pixel_cnt < WIDTH) begin

href <= 1; //HREF高電平表示行數據傳輸

data <= data + 1; //像素數據每次自增1

pixel_cnt <= pixel_cnt + 1;

end else begin

//一行結束

href <= 0; //HREF低電平表示行結束

pixel_cnt <= 0;

row_cnt <= row_cnt + 1; //行計數器加1

end

end

end else begin//一幀結束

href <= 0;

data <= 0;

row_cnt <= 0; //重置行計數器

frame_cnt <= frame_cnt + 1; //幀計數器加1

end

//******************************************模擬FRAME幀后結束測試

if (frame_cnt == FRAME) begin

$finish; // 結束仿真

end

end

end

DVP_ctrl #(

.PIC_CNT_MAX (4'd3) //舍去前三幀圖像

) DVP_ctrl (

.ov5640_pclk (pclk),

.rst_n (rst_n),

.ov5640_vsync (vsync),

.ov5640_href (href),

.ov5640_data (data),

.data_valid (data_valid),

.RGB565_data (RGB565_data)

);

endmodule

三、仿真波形

完整波形:可以看到一共發送了10幀數據,同時data_valid在前三幀保持為0,后面才開始變化,說明前三幀數據被成功舍去。

61585f68-3c41-11f0-b715-92fbcf53809c.png

一幀波形:1幀包含8行,1行有16個8位數據。

616a7572-3c41-11f0-b715-92fbcf53809c.png

一行波形:一個RGB565像素數據對應兩個8位數據,可以看到每接收2個數據就相應拼接輸出1個RGB565數據,同時data_valid數據有效信號與數據同步產生。

617e7716-3c41-11f0-b715-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1644

    文章

    21993

    瀏覽量

    615359
  • 接口
    +關注

    關注

    33

    文章

    8968

    瀏覽量

    153355
  • 圖像傳感器
    +關注

    關注

    68

    文章

    1971

    瀏覽量

    130520
  • Verilog
    +關注

    關注

    29

    文章

    1366

    瀏覽量

    111990
  • VGA
    VGA
    +關注

    關注

    5

    文章

    572

    瀏覽量

    64325

原文標題:基于FPGA的DVP接口實現

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于Proteus的Arm處理器的SPI接口實現

    基于Proteus的Arm處理器的SPI接口實現
    發表于 02-10 10:41

    FPGA設計實例】FPGA接口實現文本液晶顯示模塊

    `本節知識介紹:FPGA接口實現文本液晶顯示模塊文本液晶顯示模塊是基于廉價和易于使用微控制器或FPGA接口實現的。下面是一個1行×16字符模塊:要控制液晶顯示模塊,你需要11個IO引腳
    發表于 03-14 11:11

    基于JTAG接口實現ARM的FPGA在線配置設計

    基于JTAG接口實現ARM的FPGA在線配置設計
    發表于 08-19 23:17

    fpga的內部結構和各接口實驗怎么學

    fpga的內部結構和各接口實驗怎么學,看什么資料
    發表于 05-10 18:38

    基于FPGA的腦機接口實時系統設計

    地把瞬態誘發電位信號轉換為控制命令,實現了實時的腦機接口系統。基于FPGA的腦機接口系統,是一種新的方法,也是對腦機接口實現方法的有益探索。
    發表于 06-04 05:00

    如何使用編碼器接口實現定位?

    如何使用編碼器接口實現定位?
    發表于 02-11 07:32

    如果不使用FPGA自帶的SERDES,可否適用LVDS接口實現其功能?

    如果不使用FPGA自帶的SERDES,可否適用LVDS接口實現其功能?
    發表于 05-08 17:37

    通過USB接口實現FPGA 的SelectMap配置

    本文提出了一種基于USB 接口FPGA SelectMap 配置方式的實現方案。方案以大容量Spartan3 FPGA 作為配置目標,選用Cypress EZ-USB FX2LP 作
    發表于 05-26 10:25 ?28次下載

    應用串行外圍接口實現多微控制器間通信

    應用串行外圍接口實現多微控制器間通信:
    發表于 06-23 10:54 ?24次下載
    應用串行外圍<b class='flag-5'>接口實現</b>多微控制器間通信

    基于JTAG接口實現ARM的FPGA在線配置設計

    基于JTAG接口實現ARM的FPGA在線配置設計 引 言???? 為了解決不同標準間無線接口技術的互通和兼容,人們提出了軟件無線電(Software Defined Radio,SDR)技術
    發表于 02-09 10:56 ?3504次閱讀
    基于JTAG<b class='flag-5'>接口實現</b>ARM的<b class='flag-5'>FPGA</b>在線配置設計

    基于FPGA的VGA接口實現和字符顯示

    基于FPGA的VGA接口實現和字符顯示論文
    發表于 10-29 17:18 ?8次下載

    ARM與FPGA接口實現的解析

    ARM與FPGA接口實現的解析(應廣單片機)-該文檔為ARM與FPGA接口實現的解析詳述資料,講解的還不錯,感興趣的可以下載看看…………………………
    發表于 07-22 09:47 ?14次下載
    ARM與<b class='flag-5'>FPGA</b>的<b class='flag-5'>接口實現</b>的解析

    基于FPGA的SDRAM串口實

    基于FPGA的SDRAM串口實驗(嵌入式開發板實驗報告)-基于FPGA的SDRAM串口實驗,verilog語言編寫
    發表于 08-04 09:43 ?37次下載
    基于<b class='flag-5'>FPGA</b>的SDRAM串<b class='flag-5'>口實</b>驗

    C#-Interface接口實現

    C#-Interface接口實現(安徽理士電源技術有限公司招聘信息)-該文檔為C#-Interface接口實現講解文檔,是一份還算不錯的參考文檔,感興趣的可以下載看看,,,,,,,,,,,,,,,,,,
    發表于 09-28 09:42 ?3次下載
    C#-Interface<b class='flag-5'>接口實現</b>

    基于XML語言描述的接口實現方法

    電子發燒友網站提供《基于XML語言描述的接口實現方法.pdf》資料免費下載
    發表于 11-06 10:39 ?0次下載
    基于XML語言描述的<b class='flag-5'>接口實現</b>方法
    主站蜘蛛池模板: 免费一看一级毛片全播放 | 成年男人午夜片免费观看 | 色中色官网 | 国产在线免 | 色资源在线观看 | 天堂在线观看中文字幕 | 欧美三级一区二区三区 | 在线亚洲精品 | 欧美性猛交xxxx乱大交 | 国产一区二区三区乱码 | 黄的三级在线播放 | 色偷偷.com | 亚洲一区二区电影 | 美女扒开腿让男生桶爽网站 | 男人午夜禁片在线观看 | 国产成人a | 欧美一级一一特黄 | 午夜噜噜噜私人影院在线播放 | 久久97精品久久久久久久看片 | 午夜一区二区三区 | 美女被草视频在线观看 | 国产色网址| 国产hs免费高清在线观看 | 免费看片你懂的 | 中国又粗又大又爽的毛片 | 免费在线黄网 | 18年大片免费在线 | 国产激情在线观看 | 欧美人成一本免费观看视频 | 日韩草逼 | 日韩免费视频一区二区 | 天天摸天天做 | 91av免费| 久久天堂网 | 涩涩爱影院 | 91亚色视频 | 一色桃子juy774在线播放 | 日本精品视频 | 国产高清色视频免费看的网址 | 亚洲精品日韩专区silk | 丁香婷婷色综合 |