FPGA學習筆記——VGA彩條顯示

目錄

一、任務

二、分析

三、代碼

四、實驗現象

五、更新


一、任務

使用VGA實現彩條顯示,模式是640x480@60


二、分析

????????首先,模式是640x480@60,那么對照以下圖標,知道其它信息,不清楚時序和VGA掃描方式的可以看看這個FPGA學習筆記——VGA簡介-CSDN博客,那么對行同步信號,在有效圖像里面對640進行分塊(我這里是分成10塊)。

????????那么,在寫代碼的時候應該先配置好PLL IP核,模式的時鐘頻率是25.175MHz,我這里使用的時鐘是50MHz,所以我對它二分頻得到25MHz的時鐘,然后,對常量進行定義,再對應的有效圖像里面對顏色進行賦值。

PLL IP核配置


三、代碼

top.v

module top (
input       wire            clk         ,
input       wire            rst_n       ,
output      wire    [15:0]  data_rgb    ,
output      wire            Hsync       ,
output      wire            Vsync       
);//vga
wire        	De;
wire	[9:0]   X;vga vga_u(
.        pclk  (pclk  )  ,
.        rst_n (locked)  ,
.        De    (De    )  , //數據有效信號
.        X     (X     )  ,
.        Hsync (Hsync )  , //行同步信號
.        Vsync (Vsync )    //場同步信號
);data data_u(
.      clk      (pclk     ) ,
.      rst_n    (locked   ) ,
.	   X        (X        ) ,
.      De       (De       ) ,
.      data_rgb (data_rgb ) 
);wire	  pclk;
wire	  locked;pll	pll_inst (.areset ( !rst_n ),.inclk0 ( clk ),.c0     ( pclk     ),.locked ( locked ));endmodule

vga.v

module vga (
input       wire        pclk    ,
input       wire        rst_n   ,
output      wire  [9:0] X       ,
output      wire        De      , //數據有效信號
output      wire        Hsync   , //行同步信號
output      wire        Vsync     //場同步信號
);localparam  H_Total = 800 ,//行總像素點H_Addr  = 640 ,//有效像素點H_Right = 8   ,//右邊框H_Front = 8   ,//前沿H_Sync  = 96  , //同步H_Back  = 40  , //后沿H_Left  = 8   ;//左邊框localparam  V_Total  = 525   ,//場總像素點V_Addr   = 480   ,//有效像素點V_Bottom = 8     ,//底邊框V_Front  = 2     ,//前沿V_Sync   = 2     , //同步V_Back   = 25    , //后沿V_Top    = 8     ; //上邊框reg     [9:0]   cnt_h,cnt_v;//行周期計數
always @(posedge pclk) beginif(!rst_n)cnt_h <= 0;else if( cnt_h == H_Total - 1 )cnt_h <= 0;elsecnt_h <= cnt_h + 1;
end//場周期計數
always @(posedge pclk) beginif(!rst_n)cnt_v <= 0;else if( cnt_h == H_Total - 1 ) beginif( cnt_v == V_Total - 1 )cnt_v <= 0;elsecnt_v <= cnt_v + 1; endelsecnt_v <= cnt_v;
end//行場同步信號
assign Hsync = (cnt_h < H_Sync ) ? 1 : 0;
assign Vsync = (cnt_v < V_Sync ) ? 1 : 0;
assign De    = ((cnt_h > H_Sync + H_Back + H_Left - 1) &&(cnt_h < H_Sync + H_Back + H_Left + H_Addr) &&(cnt_v >= V_Sync + V_Back + V_Top )  &&(cnt_v <  V_Sync + V_Back + V_Top + V_Addr) ) ? 1 : 0;assign  X = (De == 1) ? (cnt_h - H_Sync - H_Back - H_Left) : 0 ;endmodule

data.v

module data (
input       wire                clk     ,
input       wire                rst_n   ,
input       wire                De      ,
input       wire    [9:0]       X       ,
output      wire    [15:0]      data_rgb
);reg [15:0] data_reg ;always @(posedge clk) beginif(!rst_n)data_reg <= 0;else if (X < 64 && De == 1)data_reg <= 16'hF800;else if (X < 128 && De == 1)data_reg <= 16'h07E0;else if (X < 192 && De == 1)data_reg <= 16'h001F;else if (X < 256 && De == 1)data_reg <= 16'hD700;else if (X < 320 && De == 1)data_reg <= 16'h07AF;else if (X < 384 && De == 1)data_reg <= 16'hF00F;else if (X < 448 && De == 1)data_reg <= 16'hA0F8;else if (X < 512 && De == 1)data_reg <= 16'hBCDA;else if (X < 576 && De == 1)data_reg <= 16'hCD69;else if (X < 640 && De == 1)data_reg <= 16'hFFFF;elsedata_reg <= 0;
endassign data_rgb = data_reg;endmodule

四、實驗現象


五、更新

針對vga.v代碼,想要顯示更多的顏色可以使用case語句更好

module data (
input       wire                clk     ,
input       wire                rst_n   ,
input       wire                De      ,
input       wire    [9:0]       X       ,
output      wire    [15:0]      data_rgb
);reg [15:0] data_reg ;localparam  H_Addr  = 640 ;//有效像素點//always @(posedge clk) begin
//    if(!rst_n)
//        data_reg <= 0;
//    else if (X < 64 && De == 1)
//        data_reg <= 16'hF800;
//    else if (X < 128 && De == 1)
//        data_reg <= 16'h07E0;
//    else if (X < 192 && De == 1)
//        data_reg <= 16'h001F;
//    else if (X < 256 && De == 1)
//        data_reg <= 16'hD700;
//    else if (X < 320 && De == 1)
//        data_reg <= 16'h07AF;
//    else if (X < 384 && De == 1)
//        data_reg <= 16'hF00F;
//    else if (X < 448 && De == 1)
//        data_reg <= 16'hA0F8;
//    else if (X < 512 && De == 1)
//        data_reg <= 16'hBCDA;
//    else if (X < 576 && De == 1)
//        data_reg <= 16'hCD69;
//    else if (X < 640 && De == 1)
//        data_reg <= 16'hFFFF;
//    else
//        data_reg <= 0;
//end//n           份數
//H_Addr/n    顏色寬度always @(posedge clk) beginif(!rst_n)data_reg <= 0;else if(De) begincase( X/(H_Addr/5) )0:data_reg <= 16'hF800;1:data_reg <= 16'h07E0;2:data_reg <= 16'hFFFF;3:data_reg <= 16'hCD69;4:data_reg <= 16'h07AF;default:data_reg <= 0;endcaseendelsedata_reg <= 0;
endassign data_rgb = data_reg;endmodule

以上就是VGA彩條顯示。(個人想法)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92126.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92126.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ES-301A :讓 Modbus 設備無縫接入工業以太網的高效橋梁

在工業自動化領域&#xff0c;串口設備與以太網的互聯互通是提升系統效率的關鍵。ES-301A 工業以太網串口網關作為上海泗博自動化精心打造的專業解決方案&#xff0c;以強大的協議轉換能力、工業級可靠性和靈活配置特性&#xff0c;成為連接 Modbus RTU/ASCII 設備與 Modbus TC…

【學習筆記】FTP庫函數學習

【學習筆記】FTP庫函數學習 FTP基本指令步驟 1、初始化會話句柄&#xff1a;CURL *curl curl_easy_init(); 2、設置會話選項&#xff1a; 設置服務器地址&#xff0c;設置登錄用戶和密碼 curl_easy_setopt(curl, CURLOPT_URL, ftp_server); curl_easy_setopt(curl, CURLOPT_US…

ARM Cortex-M異常處理高級特性詳解

1. 異常處理概述 ARM Cortex-M處理器提供了高效的異常處理機制&#xff0c;包含多種硬件優化特性&#xff0c;顯著提升了中斷響應性能和系統效率。這些特性對于實時嵌入式系統和網絡協議棧&#xff08;如LwIP&#xff09;的性能至關重要。 1.1 Cortex-M異常處理架構 Cortex-M異…

【圖像算法 - 08】基于 YOLO11 的抽煙檢測系統(包含環境搭建 + 數據集處理 + 模型訓練 + 效果對比 + 調參技巧)

一、項目背景與需求 【打怪升級 - 08】基于 YOLO11 的抽煙檢測系統&#xff08;包含環境搭建 數據集處理 模型訓練 效果對比 調參技巧&#xff09;今天我們使用YOLO11來訓練一個抽煙檢測系統&#xff0c;基于YOLO11的抽煙檢測系統。我們使用了大概兩萬張圖片的數據集訓練了…

vue2升級vue3中v-model的寫法改造

vue2選項式 <template><div><el-rowclass"group-title":title"$t(restore_default_parameters)">{{ $t(restore_default_parameters) }}</el-row><el-form-item :label"$t(restore_default_parameters)" class"…

5G-LEO 簡介

1. 什么是 5G-LEO 5G-LEO 指的是將 5G 新空口&#xff08;5G NR&#xff09;服務擴展到低軌衛星&#xff08;LEO&#xff09;上的非地面網絡&#xff08;NTN, Non-Terrestrial Network&#xff09;方案。通過在距地面約500–2 000 km 的低軌道衛星上部署通信載荷&#xff0c;5G…

【MCAL】AUTOSAR架構下SPI數據同步收發具體實現

目錄 前言 正文 1.依賴的SPI硬件特性 1.1. SPI時隙參數配置 1.2. SPI數據發送和接收模式 2.MCAL中的SPI配置 3.軟件的具體實現 3.1. Spi_SyncTransmit 3.2. Spi_lSyncTransmit 3.3. Spi_lSyncStartJob 3.4. Spi_lSyncTransmitData8Bit 3.5. Spi_lSynTransErrCheck …

SQL157 更新記錄(一)

描述現有一張試卷信息表examination_info&#xff0c;表結構如下圖所示&#xff1a;FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增IDexam_idint(11)NOUNI(NULL)試卷IDtagchar(32)YES(NULL)類別標簽difficultychar(8)YES(NULL)難度durationint(11…

懸賞任務系統小程序/APP源碼,推薦任務/發布任務/會員服務

1. 我們承諾及優勢本店源碼承諾&#xff1a;1&#xff09;. 店長親測 - 100%完整可運行2&#xff09;. 含詳細安裝文檔3&#xff09;. 支持二次開發定制4&#xff09;. 專業客服隨時解答5&#xff09;. 技術團隊保障質量2. 功能詳細說明主要功能 模塊 角色 解釋說明 用戶登錄和…

Ubuntu20.04系統上使用YOLOv5訓練自己的模型-1

在Ubuntu系統上使用YOLOv5訓練自己的模型&#xff0c;你需要遵循以下步驟。這里我將詳細說明如何從準備數據集到訓練模型的整個過程。 步驟 1: 安裝依賴項 首先&#xff0c;確保你的Ubuntu系統上安裝了Python、PyTorch和必要的庫。你可以使用以下命令安裝這些依賴項&#xff1a…

解決微信小程序中camera組件被view事件穿透觸發對焦以及camera的bindtap事件

view跟camera組件同級 不要用bind:tap和catch:tap 替換用catch:touchstart即可解決&#xff01; 如果你不放心&#xff0c;可以再加個透明蒙版&#xff0c;這樣就不會觸發了&#xff01;&#xff08;不加這個也行&#xff0c;但是必須要用catch:touchstart&#xff09;<!-- …

【Redis】移動設備離線通知推送全流程實現:系統推送服務與Redis的協同應用

在移動應用開發中&#xff0c;應用未啟動時的通知推送是提升用戶體驗的核心需求之一。當用戶未主動啟動 App 時&#xff0c;如何通過手機通知欄觸達用戶&#xff0c;確保關鍵信息&#xff08;如訂單提醒、系統警報&#xff09;不丟失&#xff1f;本文將嘗試解析從 系統推送服務…

WebView 中控制光標

在 WebView 中控制光標&#xff08;如移動焦點、獲取/設置光標位置、顯示/隱藏光標等&#xff09;需要根據具體場景和平臺&#xff08;Android/iOS/Web&#xff09;采用不同的方法。以下是常見場景的解決方案&#xff1a;一、Web 頁面中的光標控制&#xff08;JavaScript&#…

2025國賽數學建模C題詳細思路模型代碼獲取,備戰國賽算法解析——決策樹

2025國賽數學建模C題詳細思路模型代碼獲取見文末名片 決策樹算法&#xff1a;從原理到實戰&#xff08;數模小白友好版&#xff09; 1. 決策樹是什么&#xff1f;——用生活例子理解核心概念 想象你周末想決定是否去野餐&#xff0c;可能會這樣思考&#xff1a; 根節點&#xf…

從底層架構到多元場景:計算機構成與應用的深度剖析

一、引言1.1 研究背景與意義在當今數字化時代&#xff0c;計算機已成為推動社會進步和經濟發展的核心力量&#xff0c;其身影遍布生活、工作、學習的各個角落。從個人日常使用的筆記本電腦、智能手機&#xff0c;到企業運營中不可或缺的服務器、大型機&#xff0c;再到科研領域…

控制建模matlab練習08:根軌跡

此練習主要是&#xff1a;在matlab中繪制根軌跡的方法。 一、在matlab中建立對應系統 1、例如&#xff0c;對于如圖的反饋系統。 2、其中開環傳遞函數G(s)、閉環傳遞函數Gcl(s)。3、因此&#xff0c;其閉環傳遞函數的根軌跡&#xff0c;就可以直接在matlab中繪制出來。 4、直接…

【Spring Boot 快速入門】七、阿里云 OSS 文件上傳

這里寫自定義目錄標題準備阿里云 OSS參照官方 SDK 編寫入門程序案例數據準備案例集成阿里云 OSS前端測試代碼app.jsstyle.cssindex.html效果圖準備阿里云 OSS 注冊登錄阿里云&#xff0c;然后點擊控制臺&#xff0c;在左上角菜單欄搜索對象存儲 OSS&#xff0c;點擊并開通點擊…

分布式微服務--Nacos作為配置中心(二)

前言&#xff1a;Nacos 是什么&#xff1f; Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴開源的一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。我們可以使用它&#xff1a; ?作為注冊中心&#xff08;服務發現&#xff09; …

家庭/公司內部網絡內網穿透:無公網IP怎么設置外網遠程訪問?

家庭寬帶內網穿透如何實現&#xff1f;需公網IP嗎&#xff1f;公司內部的網址服務怎么提供互聯網訪問&#xff1f;相信很多人都有遇到家庭網和公司內部網下&#xff0c;搭建了服務器&#xff0c;或網絡硬件設備&#xff0c;需要在異地遠程訪問使用的情況。家庭和公司內部寬帶內…

水庫防洪安全雨水情監測預警系統

水庫防洪安全雨水情監測預警系統是一種高度集成現代信息技術與水利工程管理的綜合性智能化管理平臺&#xff0c;該系統主要應用于水庫及其周邊流域的實時水情監測與預警工作。通過部署先進的傳感設備和監測網絡&#xff0c;該系統能夠全天候不間斷地采集水庫庫區及周邊區域的降…