FPGA上VGA显示彩色条

1.VGA接口

先不废话,上图:
FPGA上VGA显示彩色条
常用的就是1、2、3、13、14,本次小实验也是只用了这五条信号线。在VGA的传输标准中,信号被分为RGB三个原色信号,然后经过数模转换之后,在同步信号的同步下在三个通道中单独传输,同步信号如下:
FPGA上VGA显示彩色条
其中,行同步信号是对VGA驱动时钟进行计数(扫描像素点),而场同步信号是对行同步信号进行计数,即扫描完一行后场同步信号计数才+1.
FPGA上VGA显示彩色条
看上图可以得出,c*q即为分辨率。

2.RGB信号相关

与RGB相关接口有三个,即RGB三个通道,如果不进行扩展只能显示8种颜色,所以一般开发板会对其进行扩展,下面是通过电阻匹配网络进行扩展:
FPGA上VGA显示彩色条
上图为RGB565数据格式相应的可以表示的颜色为2^16种,还有RGB888数据格式等等,原理与之类似。此过程还可以通过专用的视频转换芯片(如ADV7123)来实现 。不过匹配网络简单成本低。
本实验所采用的开发板未进行扩展,因此只能表示8种颜色。如下图
FPGA上VGA显示彩色条
另外HS和VS信号接口也是按照上图分配,时钟跟复位信号按照先前实验描述分配。

3.程序框图

FPGA上VGA显示彩色条
时钟分频倍频采用PLL ip核来实现,用以产生VGA的驱动时钟。
顶层模块图如下:
FPGA上VGA显示彩色条

4.代码部分

驱动模块:
FPGA上VGA显示彩色条
FPGA上VGA显示彩色条
代码主要涉及何时对输出信号进行赋值,以及怎样赋值,还有两个是计数模块。
显示模块:
FPGA上VGA显示彩色条
FPGA上VGA显示彩色条
实现了八个色条的显示。
5.modelsim仿真
testbench:
FPGA上VGA显示彩色条仿真结果图:
FPGA上VGA显示彩色条
6.下载验证结果
FPGA上VGA显示彩色条
写好代码调试也很费时间,就是因为自己写程序的时候,打错了还有就是数据位数搞错了。望大家引以为鉴。