使用工具:Xilinx ISE 14.7
VGA驱动的设计与实现主要就在于数据时序的解析,VGA的数据分为行数据与帧数据,两者的解析原理是一致的,在这里对行数据进行解析:
行数据时序是指显示一行的数据的时序。从上图我们可以看出行同步信号就是一个脉冲信号,它一个时间周期长度e = a + b + c + d;a为低电平时间。a、b、c、d均为时间信号,这4个数据会根据VGA显示的分辨率和频率的需要进行相应的改变。在上图中不难看出行数据时序是按顺序叠加的,其中显示有效数据区域为c所在的区域。
下面是VGA帧数据时序与常见刷新率时序表:
以800*600分辨率 75Hz为例。其中显示有效数据区域的行区间为[240,1040],帧区间为[34,624]。其中当行时序大于1056时代表一行扫描结束,此时换行,帧数加一,当帧时序大于625时代表一次完整扫描结束,帧时序置零,进入下一次扫描。
在这里值得注意的是是设计时要时钟使用二分频,具体为什么我也不清楚,但是不使用二分频时无法正常显示
以下给出800*600分辨率 75Hz的VGA驱动的设计工程项目的链接:点击打开链接