当前位置: 首页 > news >正文

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彩条显示。(个人想法)

http://www.dtcms.com/a/317664.html

相关文章:

  • python:非常流行和重要的Python机器学习库scikit-learn 介绍
  • STM32学习笔记3-GPIO输入部分
  • WMS及UI渲染底层原理学习
  • 【STM32 LWIP配置】STM32H723ZG + Ethernet +LWIP 配置 cubemx
  • 无人机图传的得力助手:5G 便携式多卡高清视频融合终端的协同应用
  • 中宇联5G云宽带+4G路由器:解锁企业办公高效协同与门店体验升级
  • 图解 Claude Code 子智能体 Sub-agent
  • [ java GUI ] 图形用户界面
  • 【软考系统架构设计师备考笔记4】 - 英语语法一篇通
  • ctfshow_vip题目限免-----SVN漏洞,git泄露
  • Git Cherry-Pick 指南
  • Leetcode——菜鸟笔记1
  • Git 分支管理:从新开发分支迁移为主分支的完整指南
  • 鸿蒙app 开发中 全局弹窗类的封装 基于PromptAction
  • C#之基础语法
  • 机器学习之朴素贝叶斯
  • Suno API V5模型 php源码 —— 使用灵感模式进行出创作
  • 基于PHP的论坛社交网站系统开发与设计
  • 排序算法详解
  • 媒体资产管理系统和OCR文字识别的结合
  • Ethereum: L1 与 L2 的安全纽带, Rollups 技术下的协作与区别全解析
  • 解决启动docker报错Cannot connect to the Docker daemon问题
  • 阿里 Qwen-Image:开源 20B 模型引领图像生成新纪元,中文渲染超越 GPT-4o!
  • 数据结构与算法的认识
  • 手动开发一个TCP服务器调试工具(二):无界面 TCP 通信服最小实现
  • ETF期权分仓的风险如何管理?
  • 基于Hadoop的股票大数据分析可视化及多模型的股票预测研究与实现
  • 四十、【高级特性篇】接口用例数据驱动:引入随机变量与动态数据生成
  • 生成式模型 ?判别式模型?用【猫狗分类器】帮助理解!
  • 【网络安全】入侵检测系统 Suricata 概述 | IDS