MiS603开发板 第十六章 图像之VGA接口测试

作者:MiS603开发团队

日期:20150911

公司:南京米联电子科技有限公司

论坛:www.osrc.cn

网址:www.milinker.com

网店:http://osrc.taobao.com

EAT博客:http://blog.chinaaet.com/whilebreak

博客园:http://www.cnblogs.com/milinker/

MiS603开发板 第十六章 图像之VGA接口测试

第十六章图像之VGA接口测试

在本章开始介绍视频图像处理开发平台的硬件结构,主要包括VGA显示模块(ADV7123)、HDMI显示模块(SIL9134)、DDR3存储模块、数字摄像头模块、模拟视频输入模块(TW2867)以及STM32配置模块,主要介绍各个模块的功能以及各个模块的基本原理,在此基础之上给出各个模块的测试代码。最后,给出一个基本的视频采集、缓存、显示的例程。

在这里给出MIS603视频图像处理平台,如下图所示。

MIS603视频图像处理部分框图

16.1VGA概述

VGA是Video Graphics Array的简称,也叫D-Sub接口。目前显示器都配备VGA接口,有的显示器还配备DVI(Digital Visual Interface)和HDMI(High Definition Multimedia Interface)接口。VGA 是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。根据不同分辨率,VGA 分为VGA(640x480)、SVGA(800x600)、XGA(1024x768)、SXGA(1280x1024)等。目前VGA已经成为一种标准,广泛应用于显示器、TFT液晶屏中。

VGA接口分为公头和母头,一般显示器都自带一根公头线,MIS603开发平台上是母头,VGA接口一共15根线,分为3排,标号如图6.1-1所示。

图6.1-1 VGA接口

VGA接口每个引脚的定义如表6.1-1所示。

表6.1-1 VGA引脚定义

标号


名称


描述


标号


名称


描述


1


RED


红色分量视频


9


KEY


保留,每个厂家都不同


2


GREEN


绿色分量视频


10


SGND


同步信号地


3


BLUE


蓝色分量视频


11


ID0


显示器ID第0位


4


ID2


显示器ID第2位


12


ID1


显示器ID第1位


5


GND



13


HSYNC


行同步信号


6


RGND


红色分量地


14


VSYNC


场同步信号


7


GGND


绿色分量地


15


ID3


显示器ID第3位


8


BGND


蓝色分量地

     

在这里强调一下,VGA接口的RED、GREEN和BLUE传输的是模拟信号,峰峰值为0V~0.714V,0V代表无色,0.714V代表满色;HSYNC和VSYNC传输的是数字信号,为TTL电平。VGA模拟信号传输如图6.1-2所示,源端和终端匹配电阻均为75欧姆。

图6.1-2 VGA模拟信号传输示意图

16.2 VGA硬件电路解析

在本次设计中使用了专业的VGA驱动芯片ADV7123,兼容型号CS7123,它是一款最高时钟频率可达330MHz的3通道10位高速视频DAC芯片,输入兼容TTL逻辑电平,内部参考电压1.235V,输出电流范围2mA~26.5mA,单电源3.3V供电,最高支持[email protected]视频输入,SYNC控制同步信号,BLANK 控制消隐。

VGA模块电路如上图所示,该模块支持RGB888数字输入,支持1080P视频输入,RGB模拟信号输出,终端和源端匹配电阻75欧姆。ADV7123和FPGA连接方式和具体含义如下表所示。

ADV7123(CS7123)和FPGA连接方式

标号


对应的FPGA引脚


描述


Video_clk


N8


驱动时钟,由FPGA输出


Video_blank


R9


数据有效,由FPGA输出


Video_hs


P9


VGA行同步信号,由FPGA输出


Video_vs


N9


VGA场同步信号,由FPGA输出


Video_d[23:16]


H13,J14,K15,L14,M15,N14,P15,R15


VGA数据红色分量,从到位到低位


Video_d[15:8]


J13,L12,M13,R14,J11,K12,T14,

R12


VGA数据绿色分量,从到位到低位


Video_d[7:0]


M12,P12,N12,P11,N11,M10,L10,T9


VGA数据蓝色分量,从到位到低位

注:VGA和HDMI共用FPGA引脚

对于1080P视频时钟为148.5MHz,对硬件要求很高,PCB必须等长布线。

16.3 VGA时序分析

VGA时序如上图所示,编写程序的依据就在这张图中。首先看到有3个矩形,第1个矩形是VGA驱动的最大部分,里面包括所有的信息,在此基础之上有2个同步信号,即HSYNC和VSYNC(行同步和场同步),HSYNC可以确定一行的开始和结束,VSYNC可以确定一场的开始和结束,但是同步信号也有时间,因此就引出Hor Sync和Ver Sync(行同步时间和场同步时间)。接下来就是H Back Proch和V Back Porch(行消隐和场消隐),消隐存在主要是为了兼容电子管屏幕设计的。然后是第2个矩形,这是Hor”Active”Video和Ver“Active”Video(行视频有效和场视频有效),在这个区域中是显示视频的地方。最后就是H Front Porch和V Front Porch(行前肩和场前肩)。到此,一场完整视频就显示完毕了。在这里说以一下第3个矩形,有4个参数H Left Border、H Right Border、V Top Border和V Bottom Border,在不同分辨率中这4个参数不同,在800x600及其以上的分辨率中这4个参数为0。

说了半天,大家可能晕了?在此给出一个简化的时序图,如下图所示。一行数据包括:Hor Sync(行同步)、Hor Back Porch(行消隐)、Hor Active Video(行视频有效)和Hor Front Porch(行前肩);一场数据包括:Ver Sync(场同步)、Ver Back Porch(场消隐)、Ver Active Video(场视频有效)和Ver Front Porch(场前肩)。

VGA时序主要分为行时序和场时序,行时序是以像素为单位的,场时序是以行为单位的。VGA行时序对行同步时间、消隐时间、行视频有效时间和行前肩时间有特定要求,列时序也是如此,如果其中一部分时序出现问题就会造成显示出现问题。常用VGA分辨率时序参数如下表所示。

VGA常用分辨率时序参数

显示模式


时钟

/MHz


行时序参数(单位:像素)


列时序参数(单位:行)


a


b


c


d


e


f


g


h


i


k


[email protected]


25.175


96


48


640


16


800


2


33


480


10


525


[email protected]


40


128


88


800


40


1056


4


23


600


1


623


[email protected]


65


136


160


1024


24


1344


6


29


768


3


806


[email protected]


74.25


40


220


1280


110


1650


5


20


720


5


750


[email protected]


108


112


248


1280


48


1688


3


38


1024


1


1066


[email protected]


148.5


44


148


1920


88


2200


5


36


1080


4


1125

在这里说一下时钟频率计算,就是上文提到的第1个矩形和场频率有关,思考一下,很简单的。时钟频率=行最大值x列最大值x扫描频率。

16.4 VGA时序仿真

以800x600分辨率的进行VGA时序仿真,代码详见工程

水平计数器从0到1055,共1056个像素点。

垂直计数器从0到627,总共628行。

行同步信号,从1开始,128结束,共128个像素点。

场同步信号,4行。

有效像素从1开始,800结束,共800个像素。

有效行计数从1开始,600结束,共600行。

由此可见时序参数符合规范。

16.5 ChipScope数据分析

采样时钟vga_clk_o:

行同步信号,数据有效信号。

数据分析:1:绿色;2:蓝色;3:黑色;4:青色;5:红色;6:紫色;7:黄色;8:白色。

实际图片效果。

16.6程序分析

1:VGA时序参数定义文件,支持不同分辨率,只需要更改宏定义即可实现。

2:VGA测试顶层文件,例化DCM时钟模块和vga_driver模块。

3:由50MHz生成40MHz时钟模块。

4:vga_driver模块,生成相关VGA时序参数。

5:ChipScope模块,在线分析数据。

6:ucf文件,包括引脚分配和时钟约束。

整个VGA模块测试框图,vga_driver.v是整个设计的核心,考虑到程序的可移植性专门写了vga_paramter.v文件存放VGA时序参数,通过条件编译选择不同的分辨率,由于不同分辨率需要的时钟也不一样,,VGA_Test.v产生测试所需的数据,本实验产生彩条。

代码解析:

1)、水平计数器和行同步信号产生

//horizontal counter&&hs sysc generate.

/*水平计数器和行同步信号产生*/

[email protected](posedge clk_i or negedge rst_n_i)

begin

if(!rst_n_i)

begin

x_cnt <= 12‘d0;

end

else if(x_cnt < H_TOTAL-12‘d1)

begin

x_cnt <= x_cnt + 12‘d1;

end

else

begin

x_cnt <= 12‘d0;

end

end

assign w_hs = (x_cnt < H_SYNC)?1‘b1:1‘b0;

2)、垂直计数器和场同步信号产生

//vertical counter&&vs sysc generate.

/*垂直计数器和场同步信号产生*/

[email protected](posedge clk_i or negedge rst_n_i)

begin

if(!rst_n_i)

begin

y_cnt <= 12‘d0;

end

else

begin

if(x_cnt == H_TOTAL-12‘d1)

begin

if(y_cnt < V_TOTAL-12‘d1)

begin

y_cnt <= y_cnt + 12‘d1;

end

else

begin

y_cnt <= 12‘d0;

end

end

end

end

assign w_vs = (y_cnt < V_SYNC)?1‘b1:1‘b0;

3)、数据请求产生和有效区域坐标输出

//------------------有效区域产生视频请求信号---------------------//

assign w_data_requst = ((x_cnt >= H_SYNC+H_BACK-X_AHEAD)&&

(x_cnt < H_SYNC+H_BACK+H_ACTIVE-X_AHEAD))&&

((y_cnt >= V_SYNC+V_BACK)&&

(y_cnt < V_SYNC+V_BACK+V_ACTIVE));

//----------------在有效区域输出行坐标和列坐标--------------------//

assign w_x_pos = w_data_requst?(x_cnt-H_SYNC-H_BACK+12‘d1):12‘d0;

assign w_y_pos = w_data_requst?(y_cnt-V_SYNC-V_BACK+12‘d1):12‘d0;

4)、为了测试时序是否正常,设计了彩条显示实验

原理:在关键位置改变输出数据的值,之后保持不变,再到关键位置改变输出值,之后保持不变。

/[email protected](posedge used_clk)

begin

if(data_requst)//-数据请求-//

begin

case(x_pos)

12‘d1: //-输出绿色RGB值-//

begin

{red_data,green_data,blue_data} <= GREEN_RGB;

end

(H_DISP/8)*1://-输出蓝色RGB值-//

begin

{red_data,green_data,blue_data} <= BLUE_RGB;

end

(H_DISP/8)*2://-输出黑色RGB值-//

begin

{red_data,green_data,blue_data} <= BLACK_RGB;

end

(H_DISP/8)*3://-输出青色RGB值-//

begin

{red_data,green_data,blue_data} <= CYAN_RGB;

end

(H_DISP/8)*4://-输出红色RGB值-//

begin

{red_data,green_data,blue_data} <= RED_RGB;

end

(H_DISP/8)*5://-输出紫色RGB值-//

begin

{red_data,green_data,blue_data} <= PURPLE_RGB;

end

(H_DISP/8)*6://-输出黄色RGB值-//

begin

{red_data,green_data,blue_data} <= YELLOW_RGB;

end

(H_DISP/8)*7://-输出白色RGB值-//

begin

{red_data,green_data,blue_data} <= WHITE_RGB;

end

default://-数据保持不变-//

begin

{red_data,green_data,blue_data} <= {red_data,green_data,blue_data};

end

endcase

end

else

begin

{red_data,green_data,blue_data} <= {8‘d0,8‘d0,8‘d0};

end

end

下载程序,屏幕上会出现8个彩条。通过调整宏定义和时钟实现不同分辨率的VGA驱动。

16.7程序源码

详细参考:6_02_VGA_TEST

16.8 小结

在本节学习了VGA驱动,主要是VGA时序和代码编写,代码编写的基础是时序,时序理解后代码编写很容易。此外还学习了几个Verilog关键字。

时间: 2024-08-19 11:48:59

MiS603开发板 第十六章 图像之VGA接口测试的相关文章

MiS603开发板 第十五章 MCB DDR3内存测试

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十五章 MCB DDR3内存测试 15.1 DDR3存储器模块及其测试 图像算法硬件最关键的一部分就是内存,内存保

MiS603开发板 第十四章 UDP协议网络传输

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十四章 UDP协议网络传输 本实验将实现FPGA 芯片和PC 之间进行千兆以太网数据通信, 通信协议采用Ether

MiS603开发板 第十二章 SLAVE FIFO流传输

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十二章 SLAVE FIFO流传输 15.1 USB 固件源码分析 SLAVE FIFOUSB 固件源码仍然采用上

MiS603开发板 第十八章 模拟视频输入及测试

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十八章 模拟视频输入及测试 18.1模拟视频概述 大自然的信号都是模拟的,视频信号也不例外.视频信号是指电视信号.

MiS603开发板 第十七章 图像之HDMI接口测试输入日志标题

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十七章 图像之HDMI接口测试 17.1 HDMI概述 HDMI是High Definition Multimed

MiS603开发板 第十三章 千兆网RGMII PHY测试

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十三章 千兆网RGMII PHY测试 13.1 RGMII 简介 RGMII(Reduced Gigabit Me

MiS603开发板 第三章 多路分频器设计

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第三章 多路分频器设计 设计思想:利用FPGA内部的逻辑单元对FPGA输入的50MHZ高频时钟信号进行计数分频,得到

MiS603开发板 第四章 流水灯实验

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第四章 流水灯实验 关于流水灯,网上有太多的例子了.其实只要掌握上面分频计数的技巧,设计流水灯是件极其简单的事情.从

MiS603开发板 第五章 按钮去抖实验

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第五章 按钮去抖实验 按键的消抖,是指按键在闭合或松开的瞬间伴随着一连串的抖动,这样的抖动将直接影响设计系统的稳定性