1. 程式人生 > >Fpga的vga顯示設計

Fpga的vga顯示設計

1.VGA原理

        Vga埠一個有15根線,可以百度檢視一下VGA埠的定義,這裡就不多說了,現在能用到只有5根線,分別是行同步訊號輸入(h_sync),場同步訊號輸入(v_sync),紅色訊號輸入(R)、綠色訊號輸入(G)、藍色訊號輸入(B) 。本次實驗主要用640x480的解析度在友晶開發板de2-115上進行開發,所以需要了解VGA有關的時序。

        一般VGA掃描的順序是從左到右,從上到下的方式,理論上一幀要掃640*480的畫素點,但實際上還需要考慮同步脈衝(Sync a)、顯示後沿(Back porch b)、顯示時序段(Display interval c)和顯示前沿(Front porch d)四部分。另外VGA工業標準顯示模式要求:行同步,場同步都為負極性,即同步脈衝要求是負脈衝。

行掃描圖


場掃描圖

各個值的對照表。



這次實驗採用的是[email protected],計算其他畫素就是800x524,需要的頻率為800*524*60大約為25M,開發板提供的只有50M,所以可以利用分頻為25M。如果設定其他解析度可以用FPGA內部的PLL來獲得所需頻率。

由於採用DE2-115開發板作為vga輸出實驗,介面是需要進行DA轉換的,晶片為ADV7123,需要注意的是VGA_CLK,VGA_BLANK_N和VGA_SYNC_N;VGA_CLK為上面分頻時鐘輸送給DA轉換晶片,而VGA_BLANK_N為無效時間,(低電平有效),VGA_SYNC_N暫時用不到sopc所以設定為低電平也是(低電平有效)。

2.程式代如下(彩條顯示):

module vga(

         clk,rst_n,

                            vga_r,vga_g,vga_b,clk_vga,

                            hsync,vsync,VGA_BLANK_N,VGA_SYNC_N,

                            );

    input clk;          //時鐘訊號

    input rst_n;                         //復位訊號

    output [7:0] vga_r ;

    output [7:0] vga_g ;

    output [7:0] vga_b ;

    output clk_vga;                  //VGA工作時鐘

    output hsync;

    output vsync;

          output VGA_BLANK_N; 

    output VGA_SYNC_N;

         reg [7:0]vga_r,vga_g,vga_b;

//------------------------------------ 640*480,重新整理頻率60Hz,時鐘頻率25Mhz

                   parameterH_FRONT=16; 

                   parameterH_SYNC=96; 

                   parameterH_BACK=48; 

                   parameterH_ACT=640; 

                   parameterH_BLANK=H_FRONT+H_SYNC+H_BACK; 

                   parameterH_TOTAL=H_FRONT+H_SYNC+H_BACK+H_ACT; 

 //Vertical Parameter    11+2+32+480=525 

                   parameterV_FRONT=10; 

                   parameterV_SYNC=2; 

                   parameterV_BACK=33; 

                   parameterV_ACT=480; 

                   parameterV_BLANK=V_FRONT+V_SYNC+V_BACK; 

                   parameterV_TOTAL=V_FRONT+V_SYNC+V_BACK+V_ACT; 

                   assignVGA_SYNC_N=1'b0;                                                                     //Ifnot SOG, Sync input should be tied to 0; 

                   assignVGA_BLANK_N=~((x_cnt<H_BLANK)||(y_cnt<V_BLANK)); 

//------------------------------------

// 分頻

          reg clk_vga;

          always @(posedge clk or negedge rst_n)

            if (!rst_n)

                      clk_vga<=1'b0;

           else clk_vga<=~clk_vga;

//------------------------------------

//行列座標的計算

         reg [9:0] x_cnt;

         reg [9:0] y_cnt;

         always @(posedgeclk_vga or negedge rst_n)

           if (!rst_n) begin

               x_cnt<=10'd0;              //行計數開始

                            end

           else if (x_cnt==800)  x_cnt<=0;

           else x_cnt<=x_cnt+1;

          always @(posedge clk_vga or negedge rst_n)

           if (!rst_n) begin

               y_cnt<=10'd0;              //行計數開始

                            end 

           else if (y_cnt==525)  y_cnt<=0;

           else if (x_cnt==800) y_cnt<=y_cnt+1;

//----------------------------------        

//同步訊號的產生

     reg hsync_r,vsync_r;

     always @(posedge clk_vgaor negedge rst_n)                                 

                    if (!rst_n)    hsync_r<=1'b1;      //同步訊號拉高

                    else if(x_cnt==0)      

                                        hsync_r<=1'b0;           //行計數開始,行同步訊號拉低

                    else if(x_cnt==96)

                                               hsync_r<=1'b1;                  //行計數開始,行同步訊號拉高

          always @(posedge clk_vga or negedge rst_n)                                 

                    if (!rst_n)    vsync_r<=1'b1;      //同步訊號拉高

                    else if(y_cnt==0)      

                                        vsync_r<=1'b0;           //行計數開始,行同步訊號拉低

                    else if(y_cnt==2)      

                                        vsync_r<=1'b1;           //行計數開始,行同步訊號拉高                   

          assign hsync=hsync_r;

          assign vsync=vsync_r;

always @(posedge clk_vga or negedge rst_n)

    if (!rst_n)

          begin

             vga_r=8'b00000000;

             vga_g=8'b00000000;

                    vga_b=8'b00000000;

                    end

          else if(144<=x_cnt&&x_cnt<=223)

               begin

             vga_r=8'b11111111;

             vga_g=8'b00000000;

                    vga_b=8'b00000000;

                    end

          else if(224<=x_cnt&&x_cnt<=303)

               begin

             vga_r=8'b11111111;

             vga_g=8'b11111111;

                    vga_b=8'b00000000;

                    end

          else if(304<=x_cnt&&x_cnt<=383)

             begin

             vga_r=8'b00000000;

             vga_g=8'b11111111;

                    vga_b=8'b00000000;

                    end

          else if(384<=x_cnt&&x_cnt<=463)

             begin

             vga_r=8'b00000000;

             vga_g=8'b11111111;

                    vga_b=8'b11111111;

                   end

          else if(464<=x_cnt&&x_cnt<=543)

             begin

             vga_r=8'b11111111;

             vga_g=8'b00000000;

                    vga_b=8'b11111111;

                    end

          else if(544<=x_cnt&&x_cnt<=623)

          begin

             vga_r=8'b00000000;

             vga_g=8'b00000000;

                    vga_b=8'b11111111;

                    end

          else if(624<=x_cnt&&x_cnt<=703)

          begin

             vga_r=8'b00000000;

             vga_g=8'b00000000;

                    vga_b=8'b00000000;

                    end

          else if(704<=x_cnt&&x_cnt<=783)

          begin

             vga_r=8'b11111111;

             vga_g=8'b11111111;

                    vga_b=8'b11111111;

                    end

          else

              begin

             vga_r=8'b11111111;

             vga_g=8'b11111111;

                    vga_b=8'b11111111;

                    end

         endmodule

相關推薦

文件中的類都不能進行設計,因此未能為該文件顯示設計器。設計器檢查出文件中有以下類: FormMain --- 未能加載基類

color 理解 重新編譯 如果 窗口 images ges -i 引用 出現該問題的原因:FormMain從FormMainBase繼承之後,一旦修改FormMainBase就會出現這個問題 解決方案:(1-4是搜索網友的) 1: 關閉VS所有窗口,後重啟.即可返

c# 異常檔案中的類都不能進行設計,因此未能為該檔案顯示設計器。設計器檢查出檔案中有以下類: FormMain --- 未能載入基類

出現該問題的原因:FormMain從FormMainBase繼承之後,一旦修改FormMainBase就會出現這個問題解決方案:(1-4是搜尋網友的)   1: 關閉VS所有視窗,後重啟.即可返回正常. 2: 第一種方案不成功,關閉VS所有視窗,點選解決方案->清理解決

vs2017 出現“文件中的類都不能進行設計,因此未能為該文件顯示設計器”問題處理

lan 文件顯示 init str ant tro 解決方案 top form 今天拷貝了以前的一個項目。打算出一個新版本。 但是拷貝了sln文件後,去除掉以前的項目,新增了一個 winfrom項目中 出現了:文件中的類都不能進行設計,因此未能為該文件顯示設計器。錯誤

Fpga的vga顯示設計

1.VGA原理         Vga埠一個有15根線,可以百度檢視一下VGA埠的定義,這裡就不多說了,現在能用到只有5根線,分別是行同步訊號輸入(h_sync),場同步訊號輸入(v_sync),紅色訊號輸入(R)、綠色訊號輸入(G)、藍色訊號輸入(B) 。本次實驗主要

WINDOWS程序設計對話框加載顯示bmp圖像及刷新

包含 delet select wid 應用程序 format cas cme null 參考文章:http://blog.csdn.net/wangjian8006/article/details/7464431 圖片的加載與顯示也是屬於窗口繪制這一部分的。所以其代碼

asp.net GridView 表格之取消設計最初顯示的綁定列

col 會有 .com .net ges als 結果 oge false 新建 GridView後若手動添加設置列,會有最初的綁定列,如下所示,顯示無用的最後面的幾列,雖運行時不影響但在設計時感覺還是怪怪的,如何不顯示呢 這時只需要將屬性列中AutoGenerateCo

使用Ajax+jQuery來實現前端收到的數據在console上顯示+簡單的主頁設計與bootstrap插件實現圖片輪播

value size 靠譜 實現圖 active length oot function 想要 1.實現前端輸入的數據在console上顯示 上一篇是解決了在前端的輸入信息在cygwin上顯示,這次要給前臺們能看見的數據,因為數據庫裏插入的數據少,所以寫的語句翻來覆去就那幾

ArcGIS Engine 系統開發設計(三):屬性表的訪問與顯示

這裡主要是訪問並顯示shapefile的屬性表~ 大致思路如下:新建一個Form用來獲取選中要素的屬性表,而在初始介面右鍵點選對應的向量要素後,便開啟新form將要素屬性表展示出來。 下面就開始咯~ 首先要新增ESRI.ArcGIS.Controls、Geodatabase的引

為什麼皕傑報表設計顯示的資料少呢?

一張報表採用了動態資料集,當輸入引數時設計器預覽沒有問題,當引數為空取全部資料時,設計器預覽的資料明顯不對,該有的資料都少了。請求皕傑服務工程師遠端支援,看了報表的設計後認為沒有問題,可是資料就是不對。 後來皕傑服務工程師讓我部署一下看看,說也許是因為設計器限制資料的原因,於是把報表部署到專案

為什麽皕傑報表設計顯示的數據少呢?

問題 參數 數據集 大數 就會 明顯 沒有 也有 實現 一張報表采用了動態數據集,當輸入參數時設計器預覽沒有問題,當參數為空取全部數據時,設計器預覽的數據明顯不對,該有的數據都少了。請求皕傑服務工程師遠程支援,看了報表的設計後認為沒有問題,可是數據就是不對。

python設計透明電子時鐘,包含顯示當前時間、計算時間差的方法!

效果:     摘要 在使用Python寫程式時,經常需要輸出系統的當前時間以及計算兩個時間之間的差值,或者將當前時間加減一定時間(天數、小時、分鐘、秒)來得到新的時間,這篇文章就對一些常見的時間相關的問題系統的進行總結。 包 這裡主要使用Pytho

時間觸發嵌入式系統設計模式 第22章 筆記 控制LCD顯示面板

時間觸發嵌入式系統設計模式 第22章 筆記 控制LCD顯示面板 E:\Nu_LB_Nuc140\Nu_LB_NUC140_BSP\SampleCode\Nu-LB-NUC140\Sched_22_LCD_Time E:\Nu_LB_Nuc140\Nu_LB_NUC140_B

時間觸發嵌入式系統設計模式 第21章 筆記 多路複用LED顯示

時間觸發嵌入式系統設計模式 第21章 筆記 多路複用LED顯示 1111 4個 8位的 數碼管 前兩個顯示小時,後兩個顯示分鐘,不顯示秒 程式碼: unsigned char LED_Table_G[20] = // 0 1 2 3

ArcEngine10.2設計與開發課程學習(作業二)——基本應用程式生成,右擊選單實現:顯示、移除和開啟屬性表功能

前言:這裡是我的筆記本 目錄: 準備工作——工具方法等 程式碼   首先說明一下第一個作業,這是第二個的連結:https://pan.baidu.com/s/1NziPHoMEJx0vc8DCNrX-dA提取碼:qpee 看的時候希望能夠靜下心來看,不要著急

紅孩兒編輯器的模組設計(1)主顯示區域的滾動條的邏輯處理

紅孩兒編輯器的模組設計(1)主顯示區域的滾動條的邏輯處理 第一個問題是判斷滾動條是否需要顯示的問題, 第二個問題是如何渲染滾動條的問題 第三個問題是通知渲染滾動條,或者是取消滾動條的顯示的時機問題 第四個問題是滾動條如何響應滑鼠的操作的問題 第一個問題 邏輯規則如下 如果當檔案的行數超過了一

IC數字前端設計開發9(vim——開啟多個檔案、同時顯示多個檔案、在檔案之間切換)

開啟多個檔案: 1.vim還沒有啟動的時候: 在終端裡輸入  vim file1 file2 ... filen便可以開啟所有想要開啟的檔案 2.vim已經啟動 輸入 :open file 

VS程式設計,編輯WPF過程中,點選設計器中介面某一控制元件,在XAML中高亮突出顯示相應的控制元件程式碼的設定方法。

在編輯製件WPF過程中,當介面中控制元件較多時,可通過點選設計器中具體的控制元件,從而中在xaml程式碼視窗中快速跳轉到對應的部分。為了突出顯示該部分控制元件程式碼的名稱,方便視覺上直觀的觀察到被選中的控制元件對應的XAML程式碼,可以在VS中設定:選中控制元件後,高亮顯示對應的XAML

給出n個學生的考試成績表,每條記錄由學號、姓名和分數和名次組成,設計演算法完成下列操作: (1)設計一個顯示對學生資訊操作的選單函式如下所示: *************************

給出n個學生的考試成績表,每條記錄由學號、姓名和分數和名次組成,設計演算法完成下列操作: (1)設計一個顯示對學生資訊操作的選單函式如下所示: *************************        1、錄

如何將設計CAD圖紙檔案列印成紙質的圖紙,並居中顯示?

我們在CAD在繪圖時候,可能也經常會出現一些小問題,比如我們將圖紙設定列印的時候,圖紙要不太靠上,在不就是顯示不完整或者是列印預覽是空白,那是什麼原因?列印預覽是空白很有可能是因為選擇的列印範圍中並沒有內容,而解決列印範圍中沒有內容的方法就是在列印時讓圖紙居中列印並佈滿A4紙,CAD圖紙顯示