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

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

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

3天內不再提示

FPGA數字圖像顯示原理與實現(Verilog)

HJ18656750788 ? 來源:Cascatrix ? 2023-01-29 14:12 ? 次閱讀

01視頻圖像接口概述

視頻圖像經過數十年的發展,已形成了一系列的規范,以VGA和HDMI為主的視頻圖像接口協議也得到定義與推廣。盡管DP、DVIType-C等圖像接口技術近年來得到了推廣與應用,且VGA傳輸性能發展逐漸落后于時代,但作為顯示器和顯卡等設備的通用顯示接口,VGA和HDMI仍是當前主流的視頻圖像接口技術。

2d83fd1c-974f-11ed-bfe3-dac502259ad0.jpg ? ?

1.1 VGA視頻接口

視頻圖形陣列(VGA,Video Graphics Array),也可稱作D-Sub,是IBM于1987年提出的一個使用模擬信號電腦顯示標準,因此VGA傳輸信號為模擬信號,并且只能傳輸視頻信號,不能傳輸音頻信號。

2d8b4b26-974f-11ed-bfe3-dac502259ad0.png

VGA接口共有15針,分成3排,每排5個孔,是顯卡上應用最為廣泛的接口類型,絕大多數顯卡都帶有此種接口。它傳輸紅、綠、藍模擬信號以及同步信號(水平和垂直信號)。

VGA各針腳定義如下:

2d9478cc-974f-11ed-bfe3-dac502259ad0.jpg

VGA支持在640×480的較高分辨率下同時顯示16種色彩或256種灰度,同時在320×240分辨率下可以同時顯示256種顏色。使用VGA連接設備時,線纜長度通常不超過10米,而且要注意接頭是否安裝牢固,否則可能引起圖像中出現虛影。

1.2 HDMI視頻接口

高清晰度多媒體接口(High Definition Multimedia Interface,HDMI)是一種數字化視頻/音頻接口技術,是適合影像傳輸的專用型數字化接口,HDMI可同時傳送音頻和影音信號,且在信號傳送前無需進行數/模或者模/數轉換,是當前視音頻主選接口。

2d9ac682-974f-11ed-bfe3-dac502259ad0.png

HDMI自2002年提出以來,已發展到HDMI 2.1標準。該標準能夠支持4K 120Hz、8K 60Hz以及高動態范圍成像(HDR),能夠針對場景或幀數進行優化,并向后兼容HDMI 2.0和HDMI 1.4,其中HDMI 1.4最高數據傳輸速度為10.2Gbps,HDMI 2.0最高數據傳輸速度為18Gbps。

HDMI在物理接口上主要包括以下幾種類型:標準HDMI接口、mini HDMI接口和Micro HDMI接口。長距離傳輸通常線材較硬 ,采用標準HDMI接口以確保穩固連接;而小設備通常采用mini HDMI接口和Micro HDMI接口。

2db457dc-974f-11ed-bfe3-dac502259ad0.jpg

1.3 VGA與HDMI對比

VGA與HDMI的對比如下:

1. VGA傳輸模擬信號,傳輸過程需要轉換和緩存,存在一定損失;HDMI傳輸數字信號,數據需要無壓縮,短距離無轉換無損失;

2. VGA僅支持視頻傳輸;HDMI同時支持音頻傳輸;

3. VGA采用PC標準,色階從0至255;HDMI采用TV標準,色階默認從15至255;

4. VGA在高分辨率下會存在失真虛化的問題;HDMI支持4K高清分辨率;

5. VGA不存在兼容顧慮;HDMI在PC上兼容性一般,通常不支持三屏以上多屏顯示。

隨著數字圖像的發展,VGA接口被淘汰已成為趨勢,目前大部分新生產的PC和顯示器設備都不再支持VGA接口。然而,由于VGA標準早期的影響較大,大量投影儀等設備仍采用VGA,因此VGA接口目前仍被大量使用。

02圖像顯示時序分析

盡管HDMI接口為減少干擾、增強傳輸可靠性采用了TMDS編碼,但其圖像掃描的本質方法與VGA相同:通過行同步與場同步進行掃描控制。在設計過程中通常采用專用芯片(例如SIL9134 HDMI編碼芯片與SIL9013 HDMI解碼芯片)完成TMDS編碼操作,因此掌握行同步與場同步的控制時序,就可以完成視頻圖像的顯示。

2.1 圖像顯示時序

視頻圖像顯示通常采用逐行掃描的方法:從屏幕左上方開始,從左向右逐點掃描。每行掃描完成時,用行同步信號HSYNC進行同步,電子束回到下一行最左側起始位置,同時CRT對電子束進行行消隱;每幀所有行掃描完成時,用場同步信號VSYNC進行幀同步,電子束回到屏幕左上方,同時CRT對電子束進行進行場消隱,開始下一幀掃描。

HSYNC為行同步信號(Horizontal Synchronization),低電平時完成圖像行數據掃描,高電平時進行行同步;VSYNC為場同步信號(Vertical Synchronization),低電平時進行圖像數據掃描,高電平時進行幀同步。

2dbc4906-974f-11ed-bfe3-dac502259ad0.jpg

行同步信號HSYNC和場同步信號VSYNC均由四部分組成:Sync同步脈沖 + Back Porch消隱后肩時間 + Active Video數據有效時間 + Front Porch消隱前肩時間。

2dd39048-974f-11ed-bfe3-dac502259ad0.jpg

一幅圖片的顯示包括有效數據部分和消隱區部分,Blanking為圖像的消隱區,Border和Addressable Video部分為圖像的有效數據部分,在800×600及以上分辨率中Horizontal Left Border、Horizontal Right Border、Vertical Top Border、Vertical Bottom Border四個參數為0,即不存在Border區域。

2defb962-974f-11ed-bfe3-dac502259ad0.png

行同步時序以像素為單位,場同步時序以行為單位。例如1920×1080分辨率的圖像,行時序以每行1920個像素進行同步和有效傳輸,場時序以每幀1080行進行同步和有效傳輸。

2.2 不同分辨率顯示參數

通過行場同步時序分析可知,對于圖像分辨率為1920×1080@60Hz的圖像顯示,時鐘傳輸頻率并非僅考慮有效數據像素1920×1080×60=124.416MHz,而應當同時考慮有效數據和消隱區數據2200×1125×60=148.5MHz。

不同分辨率圖像有效數據和消隱區像素分布如下:

2e14cc52-974f-11ed-bfe3-dac502259ad0.png

03圖像顯示代碼實現

3.1 Verilog代碼

通過HDMI接口顯示圖像信息,主要包括兩部分:行場同步等信號生成模塊與IIC配置TMDS編碼芯片模塊。由于IIC協議配置芯片寄存器實現方法已在IIC協議中介紹,所以這里給出不同分辨率下HDMI行場同步信號的生成代碼:

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company: Cascatrix

// Engineer: Carson

//

// Create Date: 2023/01/15

// Design Name: Image_Base

// Module Name: cx_image

// Tool Versions: v1.0

// Description: Image read and generate display parameters

//

//////////////////////////////////////////////////////////////////////////////////

`define PIXEL_1920_1080

//`define PIXEL_1680_1050

//`define PIXEL_1280_1024

//`define PIXEL_1280_720

//`define PIXEL_1024_768

//`define PIXEL_800_600

//`define PIXEL_640_480

module cx_image(

inputwireclk,

outputreghs,

outputregvs,

outputwireen,

outputwire [23:0]data

);

//1920x1080 148.5Mhz

`ifdef PIXEL_1920_1080

parameter H_ACTIVE = 1920;// 行數據有效時間

parameter H_FRONT_PORCH = 88; // 行消隱前肩時間

parameter H_SYNC_TIME = 44; // 行同步信號時間

parameter H_BACK_PORCH = 148; // 行消隱后肩時間

parameter V_ACTIVE = 1080;// 列數據有效時間

parameter V_FRONT_PORCH = 4; // 列消隱前肩時間

parameter V_SYNC_TIME = 5; // 列同步信號時間

parameter V_BACK_PORCH = 36; // 列消隱后肩時間

`endif

//1680x1050 119Mhz

`ifdef PIXEL_1680_1050

parameter H_ACTIVE = 1680;// 行數據有效時間

parameter H_FRONT_PORCH = 48; // 行消隱前肩時間

parameter H_SYNC_TIME = 32; // 行同步信號時間

parameter H_BACK_PORCH = 80; // 行消隱后肩時間

parameter V_ACTIVE = 1050;// 列數據有效時間

parameter V_FRONT_PORCH = 3; // 列消隱前肩時間

parameter V_SYNC_TIME = 6; // 列同步信號時間

parameter V_BACK_PORCH = 21; // 列消隱后肩時間

`endif

//1280x1024 108Mhz

`ifdef PIXEL_1280_1024

parameter H_ACTIVE = 1280;// 行數據有效時間

parameter H_FRONT_PORCH = 48; // 行消隱前肩時間

parameter H_SYNC_TIME = 112; // 行同步信號時間

parameter H_BACK_PORCH = 248; // 行消隱后肩時間

parameter V_ACTIVE = 1024;// 列數據有效時間

parameter V_FRONT_PORCH = 1; // 列消隱前肩時間

parameter V_SYNC_TIME = 3; // 列同步信號時間

parameter V_BACK_PORCH = 38; // 列消隱后肩時間

`endif

//1280X720 74.25MHZ

`ifdef PIXEL_1280_720

parameter H_ACTIVE = 1280;// 行數據有效時間

parameter H_FRONT_PORCH = 110; // 行消隱前肩時間

parameter H_SYNC_TIME = 40; // 行同步信號時間

parameter H_BACK_PORCH = 220; // 行消隱后肩時間

parameter V_ACTIVE = 720; // 列數據有效時間

parameter V_FRONT_PORCH = 5; // 列消隱前肩時間

parameter V_SYNC_TIME = 5; // 列同步信號時間

parameter V_BACK_PORCH = 20; // 列消隱后肩時間

`endif

//1024x768 65Mhz

`ifdef PIXEL_1024_768

parameter H_ACTIVE = 1024;// 行數據有效時間

parameter H_FRONT_PORCH = 24; // 行消隱前肩時間

parameter H_SYNC_TIME = 136; // 行同步信號時間

parameter H_BACK_PORCH = 160; // 行消隱后肩時間

parameter V_ACTIVE = 768; // 列數據有效時間

parameter V_FRONT_PORCH = 3; // 列消隱前肩時間

parameter V_SYNC_TIME = 6; // 列同步信號時間

parameter V_BACK_PORCH = 29; // 列消隱后肩時間

`endif

//800x600 40Mhz

`ifdef PIXEL_800_600

parameter H_ACTIVE = 800;// 行數據有效時間

parameter H_FRONT_PORCH = 40 ;// 行消隱前肩時間

parameter H_SYNC_TIME = 128;// 行同步信號時間

parameter H_BACK_PORCH = 88 ;// 行消隱后肩時間

parameter V_ACTIVE = 600;// 列數據有效時間

parameter V_FRONT_PORCH = 1 ;// 列消隱前肩時間

parameter V_SYNC_TIME = 4 ;// 列同步信號時間

parameter V_BACK_PORCH = 23 ;// 列消隱后肩時間

`endif

//640x480 25.175Mhz

`ifdef PIXEL_640_480

parameter H_ACTIVE = 640; // 行數據有效時間

parameter H_FRONT_PORCH = 16 ; // 行消隱前肩時間

parameter H_SYNC_TIME = 96 ; // 行同步信號時間

parameter H_BACK_PORCH = 48 ; // 行消隱后肩時間

parameter V_ACTIVE = 480; // 列數據有效時間

parameter V_FRONT_PORCH = 10 ; // 列消隱前肩時間

parameter V_SYNC_TIME = 2 ; // 列同步信號時間

parameter V_BACK_PORCH = 33 ; // 列消隱后肩時間

`endif

parameter H_TOTAL_TIME = H_ACTIVE + H_FRONT_PORCH + H_SYNC_TIME + H_BACK_PORCH;

parameter V_TOTAL_TIME = V_ACTIVE + V_FRONT_PORCH + V_SYNC_TIME + V_BACK_PORCH;

reg h_act;

reg v_act;

reg [12:0] h_syn_cnt;

reg [12:0] v_syn_cnt;

reg [31:0] image_cnt;

// 有效數據控制

assign en = h_act & v_act;

// 行掃描計數器

always@(posedge clk)

begin

if(h_syn_cnt == H_TOTAL_TIME - 1)

h_syn_cnt <= 13'b0;

else

h_syn_cnt <= h_syn_cnt + 1'b1;

end

// 列掃描計數器

always@(posedge clk)

begin

if(h_syn_cnt == H_TOTAL_TIME - 1)

begin

if(v_syn_cnt == V_TOTAL_TIME-1)

v_syn_cnt <= 13'b0;

else

v_syn_cnt <= v_syn_cnt + 1'b1;

end

end

// 行同步控制

always@(posedge clk)

begin

if(h_syn_cnt < H_SYNC_TIME)

hs <= 1'b0;

else

hs <= 1'b1;

end

// 場同步控制

always@(posedge clk)

begin

if(v_syn_cnt < V_SYNC_TIME)

vs <= 1'b0;

else

vs <= 1'b1;

end

// 行有效控制

always@(posedge clk)

begin

if(h_syn_cnt == H_SYNC_TIME + H_BACK_PORCH - 1)

h_act = 1'b1;

else if(h_syn_cnt == H_SYNC_TIME + H_BACK_PORCH + H_ACTIVE - 1)

h_act = 1'b0;

end

// 列有效控制

always@(posedge clk)

begin

if(v_syn_cnt == V_SYNC_TIME + V_BACK_PORCH - 1 && h_syn_cnt == 0)

v_act = 1'b1;

else if(v_syn_cnt == V_SYNC_TIME + V_BACK_PORCH + V_ACTIVE - 1 && h_syn_cnt == 0)

v_act = 1'b0;

end

// 像素數計數器

always@(posedge clk)

begin

if(image_cnt == H_ACTIVE*V_ACTIVE - 1)

image_cnt <= 'd0;

else if(h_act & v_act)

image_cnt <= image_cnt + 1;

end

// 圖像像素值存儲rom

rom_image inst_rom_image

(

.clk (clk),

.en (h_act & v_act),

.addr (image_cnt),

.dout (data)

);

endmodule

rom_image為圖像像素數據存儲模塊,根據不同地址依次存入對應像素的像素值。該模塊可通過Matlab生成,具體方法將在后續FPGA數字圖像仿真中介紹。部分代碼如下:

module rom_image

(

input clk,

input[31:0] addr,

inputen,

output[23:0]dout

);

reg [23:0] DATA;

assigndout = DATA;

always@(*)

begin

if(en)

case(addr)

0 : DATA<=24'hB18D81;

1 : DATA<=24'h967266;

2 : DATA<=24'h987468;

...

2073597 : DATA<=24'hAE8070;

2073598 : DATA<=24'hAE8070;

2073599 : DATA<=24'hC79989;

default: DATA<= 0;

endcase

else

DATA <= 0;

end

endmodule

3.2 實現效果分析

選擇分辨率為1920×1080的圖像:

2e383156-974f-11ed-bfe3-dac502259ad0.png

FPGA通過HDMI輸入到顯示器,顯示效果如下:

2e46ecaa-974f-11ed-bfe3-dac502259ad0.jpg

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

    關注

    1629

    文章

    21746

    瀏覽量

    603757
  • HDMI
    +關注

    關注

    32

    文章

    1711

    瀏覽量

    151986
  • 接口
    +關注

    關注

    33

    文章

    8612

    瀏覽量

    151276
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110129
  • 數字圖像
    +關注

    關注

    2

    文章

    119

    瀏覽量

    18791

原文標題:FPGA數字圖像顯示原理與實現(Verilog)

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

收藏 人收藏

    評論

    相關推薦

    RGB數字圖像顯示中錯誤圖像分析

    RGB數字圖像顯示中錯誤圖像分析Incorrect colours in the RGB display of the "digital" colour bars Products:CCVS +[hide][/hide]
    發表于 06-13 00:05

    數字圖像空域濾波算法的FPGA設計

    方法卻都是類似的,都是通過模板卷積的方法來實現的。  VLSI技術的迅猛發展為數字圖像實時處理技術提供了硬件基礎,其中FPGA(現場可編程門陣列)的特點使其非常適用于數字圖像處理。本文
    發表于 02-24 14:20

    DCT實現Verilog HDL的數字圖像處理源代碼

    DCT實現Verilog HDL的數字圖像處理源代碼
    發表于 08-11 09:30

    基于FPGA的B超數字圖像實時采集系統

    基于FPGA的B超數字圖像實時采集系統
    發表于 08-17 11:55

    FreeDev FPGA數字圖像處理板

    FreeDev FPGA數字圖像處理板
    發表于 08-17 22:34

    基于FPGA數字圖像處理中的邊緣檢測系統

    `基于FPGA數字圖像處理領域的邊緣檢測系統。該系統實現了從24位真彩色圖片的存儲到VGA顯示邊緣信息。`
    發表于 06-26 13:36

    有誰用FPGA做過數字圖像直方圖統計

    剛開始用FPGA數字圖像處理,看了一些有關直方圖方面的資料但是感覺還是不太清晰,請問有誰做過求帶順便求推薦FPGA數字圖像處理方面入門級的書
    發表于 08-21 09:48

    有誰用FPGA做過數字圖像直方圖統計

    剛開始用FPGA數字圖像處理,看了一些有關直方圖方面的資料但是感覺還是不太清晰,請問有誰做過求帶順便求推薦FPGA數字圖像處理方面入門級的書
    發表于 08-23 11:01

    基于FPGA數字圖像處理

    分享一本用fpga數字圖像處理的書。
    發表于 03-05 21:40

    【電子書】基于FPGA數字圖像處理

    `一個FPGA工程師的數字圖像處理筆記。`
    發表于 03-29 15:01

    怎么利用FPGA實現數字圖像的空域濾波算法?

    本文研究的就是在FPGA設計平臺上設計硬件電路,實現數字圖像的空域濾波算法。
    發表于 04-30 06:29

    基于FPGA數字圖像顯示系統

    主要討論如何利用FPGA 實現數字圖像在VGA 顯示器和電視上進行顯示, 并介紹所使用的Atmel AT40K 系列
    發表于 04-16 14:16 ?25次下載

    基于FPGA數字圖像顯示系統

    主要討論如何利用FPGA 實現數字圖像在VGA 顯示器和電視上進行顯示, 并介紹所使用的Atmel AT40K 系列
    發表于 05-14 14:44 ?17次下載

    數字圖像邊緣檢測的FPGA實現

    數字圖像邊緣檢測的FPGA實現......
    發表于 01-04 15:31 ?18次下載

    FPGA設計中 Verilog HDL實現基本的圖像濾波處理仿真

    參考。 《岡薩雷斯數字圖像處理MATLAB版》中文版(第二版) 電子版 薦讀:FPGA設計經驗之圖像處理 基于FPGA的實時圖像邊緣檢測系統
    的頭像 發表于 07-13 09:30 ?2832次閱讀
    主站蜘蛛池模板: 免费黄色福利视频| 特毛片| 色中文字幕| 在线观看日本免费视频大片一区| 天天视频入口| 国产做a爰片久久毛片| 日韩一区二区在线观看| 精品国产免费观看一区高清| 在线视频永久在线视频| 天天操天天干天天爱| 成人欧美一区二区三区的电影 | 天天爽夜夜爽精品视频一| 天天色啪| 夜夜艹日日干| 黄色三级国产| 欧美1314www伊人久久香网| 特级全毛片| 日本色黄| 色噜噜狠狠成人网| 香蕉视频啪啪| 伊人伊成久久人综合网777| 欧美一区高清| 亚洲国产视频网| 又色又污又爽又黄的网站| 男生女生靠逼视频| 日本一区二区三区免费看| 傲视影院午夜毛片| 35pao免费视频| 日本不卡在线观看免费v| 亚洲影视大全| 亚洲九色| 网站在线你懂的| 四虎在线成人免费网站| 欧美成人精品久久精品| 欧美一级别| 欧美日韩国产成人精品| 国产美女激情视频| 不卡精品国产_亚洲人成在线 | 亚洲婷婷国产精品电影人久久| 国产免费久久| 中文字幕第15页|