FPGA实现VGA显示图片

您所在的位置:网站首页 基于fpga的vga显示 FPGA实现VGA显示图片

FPGA实现VGA显示图片

2024-07-01 01:42| 来源: 网络整理| 查看: 265

利用FPGA在带有VGA接口的液晶显示器上显示图片。

电路原理图:

端口说明: VGA_R2-VGAB0的8个端口位VGA的RGB数据位, VGA_HS为行同步信号,VGA_VS为场同步信号。

        以分辨率为640x480为例,刷新速率为60Hz,每幅图像每行有800个clk,有525个行,完成一幅图像的时间是1s/60=16.6ms,完成一行的时间为16.6/525=31.75us,完成一个像素的时间约为31.75us/800=40ns(16.6/(525*800))。因此为了方便设计,接口时钟设置为25MHz,每个时钟送一个数据。

        VGA时序图:

 行信号的时序图如上图hys。行同步信号的低电平时间为96个clk,高电平期间延时45个clk后才能显示有效的数据,周期为800个clk。

场同步信号如上图vys。场同步信号低电平时间为2个行周期,两个低电平之间的时间为一帧画面。场同步信号确定数据显示点在哪一行,期间的484个行周期数据有效。每个有效的行周期时间内对应646个有效的数据点,所以分辨率为640x480。

        VGA显示的时钟信号为25MHz是由PLL模块分频的到的。图片的数据存在FPGA的ROM中,VGA显示程序如下:

//VGA显示 module vga( clk_25M , rst_n , hys , vys , rgb_data ); input clk_25M; //25MHz时钟信号 input rst_n; //复位信号 output hys; //行同步信号 output vys; //场同步信号 output [7:0] rgb_data; //RGB数据 reg hys; reg vys; reg [7:0] rgb_data; //高3位R 中3位G 低2位B //---------------------------------------------- //计数器 reg [9:0] cnt_hs; //行信号clk计数 reg [9:0] cnt_vs; //场信号clk计数 wire add_cnt_hs; //行信号clk计数器加1条件 wire end_cnt_hs; //行信号clk计数器结束条件 wire add_cnt_vs; //场信号clk计数器加1条件 wire end_cnt_vs; //场信号clk计数器结束条件 always @( posedge clk_25M or negedge rst_n ) begin if( !rst_n ) cnt_hs


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3