国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【FPGA入門】第七篇、FPGA實(shí)現(xiàn)VGA接口驅(qū)動

這篇具有很好參考價值的文章主要介紹了【FPGA入門】第七篇、FPGA實(shí)現(xiàn)VGA接口驅(qū)動。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

第一部分、實(shí)驗(yàn)結(jié)果

?1、橫的三色彩條效果

2、豎的三色彩條效果

第二部分、VGA驅(qū)動基本知識

1、VGA分辨率問題????????

2、VGA驅(qū)動波形

2.1、工業(yè)標(biāo)準(zhǔn)的時序波形圖

2.2、比上面那張圖更容易理解的圖

2.3、每個區(qū)域?qū)?yīng)的時間

2.4、不同分辨率的表格

3、VGA掃描范圍問題

第三部分、VGA的時序波形圖

第四部分、VGA的驅(qū)動代碼

1、top-down結(jié)構(gòu)圖:

2、vga_ctrl.v模塊代碼:

3、top層代碼

第五部分、總結(jié)


第一部分、實(shí)驗(yàn)結(jié)果

?1、橫的三色彩條效果

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

? 2、豎的三色彩條效果

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

第二部分、VGA驅(qū)動基本知識

? ? ? ? 首先,關(guān)于VGA的深層次工作原理可以百度自行了解。

????????我的理解比較簡單,我記得高中的物理課的時候物理老師有提過老式電視機(jī)的顯示原理,一般老式電視機(jī)的都特別大,而且都有個大屁股,這是因?yàn)楹竺嬗袀€電子槍,瘋狂的朝著電視的屏幕噴射電子,然后就出現(xiàn)的顯示,而且噴射的順序就是從屏幕的左上角到右下角。而VGA的原理和這個類似。

1、VGA分辨率問題????????

? ? ? ? 首先不同分辨率對應(yīng)的驅(qū)動程序是稍有區(qū)別的,正常情況下顯示器都支持很多種分辨率,例如我電腦屏幕現(xiàn)在用的顯示器分辨率為1920 * 1080@60Hz。(查看方式:選擇 “開始 > 設(shè)置 > 系統(tǒng) > 顯示 > 高級顯示器?)

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

? ? ? ? ?而本次實(shí)驗(yàn)選用的分辨率為640*480@60Hz,60Hz為刷新頻率,也就是1s鐘電腦顯示60張圖片,也就是從電子束從屏幕的左上角到右下角這個過程執(zhí)行了60次。

????????這里發(fā)射的過程可以理解為掃描的過程,這樣后面理解驅(qū)動程序時會簡單許多。

2、VGA驅(qū)動波形

? ? ? ? 2.1、工業(yè)標(biāo)準(zhǔn)的時序波形圖

? ? ? ? ? ? ? ? HSync稱作行同步信號,VSync稱作場同步信號或者垂直同步信號

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

? ? ? ? ?2.2、比上面那張圖更容易理解的圖

? ? ? ? 圖片來源于該篇博客http://t.csdn.cn/Hqvtc,有問題聯(lián)系我刪除?????。這張圖翻譯了上面每條英文的意思。

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

?????????2.3、每個區(qū)域?qū)?yīng)的時間

? ? ? ? 這張圖來源于哪一篇博客我忘記了(有問題聯(lián)系我刪除?????),反正是一篇很好的博客,解釋的更加透徹,每段時間點(diǎn)都標(biāo)出來的。

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

????????2.4、不同分辨率的表格

? ? ? ? 該圖片還是來源于該篇博客http://t.csdn.cn/Hqvtc,有問題聯(lián)系我刪除?????。這個表格解釋不同分辨率,同步,后沿等時間的區(qū)別。

? ? ? ? 當(dāng)然這里也有一個網(wǎng)址可以參考:VGA Signal Timing (tinyvga.com)

? ? ? ? 這里不同分辨率的驅(qū)動時鐘計(jì)算方法如下:

? ? ?? ??????????????????????????時鐘 = 行掃描周期 * 場掃描周期 * 刷新頻率

以640*480@60分辨率的計(jì)算方式:

? ? ? ? ????????????????????????800 * 525 * 60 =?25,200,000 約等于 25MHz

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

3、VGA掃描范圍問題

? ? ? ? ?看了上面的表格,不知道大家有沒有有個問題,為什么分辨率640*480@60的行掃描為800(像素)而不是640(像素),場掃描為525(行數(shù))而不是480(行數(shù))?

? ? ? ? 因?yàn)?40只是有效圖像的像素點(diǎn)長度,除了這些還有其他的也要考慮進(jìn)去,所有像素點(diǎn)的總和才為800。如下圖所示,真正顯示在屏幕上的只是灰色區(qū)域。

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

第三部分、VGA的時序波形圖

? ? ? ? 由上面,關(guān)于VGA的時序了解了差不多,這里需要注意的是:行掃描時序要求(單位:像素,即輸出一個像素的時間間隔),場掃描時序要求(單位:行,即輸出一行的時間間隔)。

????????將上面的波形圖轉(zhuǎn)換為更容易理解的波形圖:

????????這里分別引入行掃描計(jì)數(shù)器和場掃描計(jì)數(shù)器用來計(jì)時
?

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

第四部分、VGA的驅(qū)動代碼

1、top-down結(jié)構(gòu)圖:

? ? ? ? ? ? ? ? gen_clk模塊為由PLL鎖相環(huán)產(chǎn)生的25MHz時鐘,vga_ctrl為vga的驅(qū)動模塊。

fpga驅(qū)動,FPGA的學(xué)習(xí)之旅,fpga開發(fā)

2、vga_ctrl.v模塊代碼:

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2023 All rights reserved
// -----------------------------------------------------------------------------
// Author : BigFartPeach
// CSDN   : 大屁桃
// E-mail : 2624507313@qq.com
// File   : vga_ctrl.v
// Create : 2023-06-06 14:23:19
// -----------------------------------------------------------------------------
module vga_ctrl(
	input wire clk_25M,
	input wire rst_n,
	output reg hsync,
	output reg vsync,
	output reg [7:0]rgb
	);
reg [9:0] hsync_cnt;
reg [9:0] vsync_cnt;

//行掃描計(jì)數(shù)器
always @(posedge clk_25M or negedge rst_n) begin
	if (rst_n == 0) begin
		hsync_cnt <= 'd0;
	end
	else if (hsync_cnt == 'd799) begin
		hsync_cnt <= 'd0;
	end
	else begin
		hsync_cnt <= hsync_cnt + 1'b1;
	end
end

//行同步信號
always @(posedge clk_25M or negedge rst_n) begin
	if (rst_n == 0) begin
		hsync <= 1'b1;
	end
	else if (hsync_cnt == 'd95) begin
		hsync <= 1'b0;
	end
	else if(hsync_cnt == 'd799)begin
		hsync <= 1'b1;
	end
end


//場掃描計(jì)數(shù)器
always @(posedge clk_25M or negedge rst_n) begin
	if (rst_n == 0) begin
		vsync_cnt <= 'd0;
	end
	else if (vsync_cnt == 'd524 && hsync_cnt == 'd799) begin
		vsync_cnt <= 'd0;
	end
	else if (hsync_cnt == 'd799) begin
		vsync_cnt <= vsync_cnt + 1'b1;
	end
end

//場掃描信號
always @(posedge clk_25M or negedge rst_n) begin
	if (rst_n == 0) begin
		vsync <= 1'b1;	
	end
	else if (hsync_cnt == 'd799 && vsync_cnt == 'd1) begin
		vsync <= 1'b0;
	end
	else if(hsync_cnt == 'd799 && vsync_cnt == 'd524) begin
		vsync <= 1'b1;
	end
end

//RGB信號輸出 
always @(posedge clk_25M or negedge rst_n) begin
	if (rst_n == 0) begin
		rgb <= 'b000_000_00;	
	end
	//橫彩條
	// else if (hsync_cnt>= 144 && hsync_cnt <= 783 && vsync_cnt>= 35 && vsync_cnt <= 194) begin
	// 	rgb <= 'b111_000_00;//紅色
	// end
	// else if (hsync_cnt>= 144 && hsync_cnt <= 783 && vsync_cnt>= 195 && vsync_cnt <= 354)begin
	// 	rgb <= 'b000_111_00;//綠色
	// end
	// else if (hsync_cnt>= 144 && hsync_cnt <= 783 && vsync_cnt>= 355 && vsync_cnt <= 514)begin
	// 	rgb <= 'b000_000_11;//藍(lán)色
	// end
	//豎彩條
	else if (hsync_cnt>= 144 && hsync_cnt <= 356 && vsync_cnt>= 35 && vsync_cnt <= 514) begin
		rgb <= 'b111_000_00;//紅色
	end
	else if (hsync_cnt>= 357 && hsync_cnt <= 569 && vsync_cnt>= 35 && vsync_cnt <= 514) begin
		rgb <= 'b000_111_00;//綠色
	end
	else if (hsync_cnt>= 570 && hsync_cnt <= 783 && vsync_cnt>= 35 && vsync_cnt <= 514) begin
		rgb <= 'b000_000_11;//藍(lán)色
	end
	else begin//其它區(qū)域
		rgb <= 'b000_000_00;//不顯示
	end
end

endmodule

3、top層代碼

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2023 All rights reserved
// -----------------------------------------------------------------------------
// Author : BigFartPeach
// CSDN   : 大屁桃
// E-mail : 2624507313@qq.com
// File   : top_vga.v
// Create : 2023-06-06 15:35:13
// -----------------------------------------------------------------------------
module top_vga(
	input wire clk,
	input wire rst_n,
	output wire hsync,
	output wire vsync,
	output wire [7:0] rgb
	);

wire clk_25M;

//PLL產(chǎn)生25M的時鐘
gen_clk25 inst_clk25(
	// Clock in ports
	.CLK_IN1(clk),      // IN
	// Clock out ports
	.CLK_OUT1(clk_25M));    // OUT

//例化640*480@60Hz驅(qū)動模塊
vga_ctrl inst_vga_ctrl (
	.clk_25M(clk_25M),
	.rst_n(rst_n),
	.hsync(hsync),
	.vsync(vsync),
	.rgb(rgb));


endmodule

第五部分、總結(jié)

? ? ? ? 這里只是實(shí)現(xiàn)簡單的驅(qū)動,后面的這篇文中我將VGA的驅(qū)動程序重新修改了一下,使整個程序更容易移植,有需要的哥們可以接著往后看。

? ? ? ? 關(guān)于這篇文章的工程的代碼如下,工程基于ISE軟件,沒積分的哥們評論留下郵箱即可

????????FPGA入門第七篇、FPGA實(shí)現(xiàn)VGA接口驅(qū)動資源-CSDN文庫

????????最后,希望我的博客對你有幫助????????,有需要的小伙伴可以查看本專欄更多的往期文章專欄鏈接如下:FPGA的學(xué)習(xí)之旅_大屁桃的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-727357.html

到了這里,關(guān)于【FPGA入門】第七篇、FPGA實(shí)現(xiàn)VGA接口驅(qū)動的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • FPGA入門系列14--VGA

    FPGA入門系列14--VGA

    文章簡介 本系列文章主要針對FPGA初學(xué)者編寫,包括FPGA的模塊書寫、基礎(chǔ)語法、狀態(tài)機(jī)、RAM、UART、SPI、VGA、以及功能驗(yàn)證等。將每一個知識點(diǎn)作為一個章節(jié)進(jìn)行講解,旨在更快速的提升初學(xué)者在FPGA開發(fā)方面的能力,每一個章節(jié)中都有針對性的代碼書寫以及代碼的講解,可作

    2024年02月03日
    瀏覽(18)
  • FPGA學(xué)習(xí)——VGA顯示

    FPGA學(xué)習(xí)——VGA顯示

    VGA(Video Graphics Array)是IBM在1987年隨PS/2機(jī)?起推出的?種視頻,具有分辨率?、顯?速率快、顏?豐富等優(yōu)點(diǎn),在彩 ?顯?器領(lǐng)域得到了?泛的應(yīng)?。不?持熱插拔,不?持?頻傳輸。對于?些嵌?式VGA顯?系統(tǒng),可以在不使?VGA顯?卡和計(jì)算機(jī)的 情況下,實(shí)現(xiàn)VGA圖像的顯?

    2024年02月04日
    瀏覽(26)
  • FPGA--OV7725攝像頭采集與VGA顯示實(shí)驗(yàn)--1--OV7725使用與驅(qū)動協(xié)議

    FPGA--OV7725攝像頭采集與VGA顯示實(shí)驗(yàn)--1--OV7725使用與驅(qū)動協(xié)議

    目錄 ? ? ? ?前言 OV7725引腳及功能框圖 參數(shù)指標(biāo) 引腳 功能框圖 SCCB時序及讀寫操作 ?SCCB時序特點(diǎn) 讀寫實(shí)現(xiàn) OV7725寄存器常用配置參數(shù)? ? ? ????????攝像頭采集是圖像處理的第一步,本章節(jié)分為多部分,旨在讓大家學(xué)會如何使用OV7725采集圖像,并且使用VGA協(xié)議顯示出來。

    2023年04月08日
    瀏覽(45)
  • FPGA學(xué)習(xí)筆記:verilog基礎(chǔ)代碼與modelsim仿真(六)——vga顯示模塊

    FPGA學(xué)習(xí)筆記:verilog基礎(chǔ)代碼與modelsim仿真(六)——vga顯示模塊

    VGA顯示 目標(biāo):實(shí)現(xiàn)屏幕紅、橙、黃、綠、青、藍(lán)、紫、黑、白、灰條形顯示 1. 模塊框圖與波形圖 vga_colorbar是實(shí)現(xiàn)目標(biāo)功能的總體模塊框圖,為了實(shí)現(xiàn)對應(yīng)的輸出,我們使用三個具體功能模塊實(shí)現(xiàn)功能。 (1) clk_gen——使用pll鎖相環(huán)實(shí)現(xiàn)時鐘分頻 (2)vga_ctrl——圖像控制與輸出模

    2024年02月04日
    瀏覽(20)
  • fpga中Spartan6系列開發(fā)板和VGA顯示實(shí)現(xiàn)貪吃蛇游戲設(shè)計(jì)

    fpga中Spartan6系列開發(fā)板和VGA顯示實(shí)現(xiàn)貪吃蛇游戲設(shè)計(jì)

    魚弦:CSDN內(nèi)容合伙人、CSDN新星導(dǎo)師、全棧領(lǐng)域創(chuàng)作新星創(chuàng)作者 、51CTO(Top紅人+專家博主) 、github開源愛好者(go-zero源碼二次開發(fā)、游戲后端架構(gòu) https://github.com/Peakchen) 需要用ise 14.7,板卡為spantan6系列,VGA顯示實(shí)現(xiàn)貪吃蛇游戲的設(shè)計(jì) ,需要一整套工程文件。 1.實(shí)現(xiàn)貪吃蛇游

    2024年02月03日
    瀏覽(48)
  • FPGA純verilog實(shí)現(xiàn)UDP協(xié)議棧,GMII接口驅(qū)動88E1111,提供工程源碼和技術(shù)支持

    FPGA純verilog實(shí)現(xiàn)UDP協(xié)議棧,GMII接口驅(qū)動88E1111,提供工程源碼和技術(shù)支持

    目前網(wǎng)上的fpga實(shí)現(xiàn)udp基本生態(tài)如下: 1:verilog編寫的udp收發(fā)器,但中間的FIFO或者RAM等調(diào)用了IP,或者不帶ping功能,這樣的代碼功能正常也能用,但不帶ping功能基本就是廢物,在實(shí)際項(xiàng)目中不會用這樣的代碼,試想,多機(jī)互聯(lián),出現(xiàn)了問題,你的網(wǎng)卡都不帶ping功能,連基本的

    2024年02月13日
    瀏覽(27)
  • FPGA純verilog實(shí)現(xiàn)10G UDP協(xié)議棧,XGMII接口UltraScale GTY驅(qū)動,提供工程源碼和技術(shù)支持

    FPGA純verilog實(shí)現(xiàn)10G UDP協(xié)議棧,XGMII接口UltraScale GTY驅(qū)動,提供工程源碼和技術(shù)支持

    目前網(wǎng)上的fpga實(shí)現(xiàn)udp基本生態(tài)如下: 1:verilog編寫的udp收發(fā)器,但中間的FIFO或者RAM等調(diào)用了IP,或者不帶ping功能,這樣的代碼功能正常也能用,但不帶ping功能基本就是廢物,在實(shí)際項(xiàng)目中不會用這樣的代碼,試想,多機(jī)互聯(lián),出現(xiàn)了問題,你的網(wǎng)卡都不帶ping功能,連基本的

    2024年02月14日
    瀏覽(22)
  • FPGA實(shí)現(xiàn)Aurora 8B/10B接口(5)--官方例程學(xué)習(xí)(Framing接口)

    文章目錄 1、IP核定制與官方例程的生成 1.1、第一頁配置:物理層以及鏈路層信息選擇

    2024年02月09日
    瀏覽(16)
  • 【FPGA開發(fā)】VGA彩條顯示及VGA白塊位移

    【FPGA開發(fā)】VGA彩條顯示及VGA白塊位移

    為了理解VGA的工作模式,并且進(jìn)行vga一部分的模板開發(fā),方便后續(xù)圖像處理顯示的需求。這里通過對vga時序進(jìn)行分析,進(jìn)行簡單的vga圖像控制。實(shí)驗(yàn)階段進(jìn)行的是640*480@60hz的分辨率和刷新率,后續(xù)因?yàn)樾枰m應(yīng)顯示器的規(guī)格。會在模塊化的階段進(jìn)行參數(shù)的重新分配,變成可編

    2024年01月21日
    瀏覽(22)
  • FPGA入門學(xué)習(xí)筆記(十三)Vivado實(shí)現(xiàn)按鍵消抖

    FPGA入門學(xué)習(xí)筆記(十三)Vivado實(shí)現(xiàn)按鍵消抖

    四種狀態(tài) 按鍵未按下:靜止?fàn)顟B(tài)呈高電平; 按下過程中:抖動狀態(tài)呈高低電平; 按鍵已按下:靜止?fàn)顟B(tài)呈低電平; 釋放過程中:抖動狀態(tài)呈高低電平。 按鍵消抖思路 :區(qū)別于單片機(jī)使用20ms延時判斷電平正負(fù),F(xiàn)PGA中采用電平保持計(jì)時,若時間長度超過20ms則認(rèn)為發(fā)生了一次

    2024年02月04日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包