名称:VGA测试试验设计Verilog代码VIVADO? ARTIX-7开发板
软件:VIVADO
语言:Verilog
代码功能:
VGA测试试验
VGA使屏幕产生彩色条纹
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在ARTIX-7开发板验证,ARTIX-7开发板如下,其他开发板可以修改管脚适配:
设计文档:
1 简介
本试验用来试验开发板VGA显示功能,开发板通过VGA数据线使屏幕产生彩色条纹。
2 实验原理
VGA(Video Graphics Array)即视频图形阵列,是IBM在1987年推出的使用模拟信号的一种视频传输标准,在当时具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。VGA接口实物图如下图所示:
左边带针的叫VGA公头,右边带槽的叫VGA母头。
VGA接口是一种D型接口,上面共有15针孔,分成三排,每排五个。 其中比较重要的是3根RGB彩色分量信号和2根扫描同步信号HSYNC和VSYNC针。其引脚编号图如下图所示:
VGA 显示器扫描方式从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT 对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。完成一行扫描的时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描的时间称为垂直扫描时间,其倒数称为场频率,即屏幕的刷新频率,常见的有 60Hz,75Hz 等等,但标准的 VGA 显示的场频 60Hz。其扫描示意图如下图所示
在对VGA扫描方式有一个直观的感受以后接下来在看一看VGA接口的详细时序与各个参数的定义。VGA的详细时序如下图所示:
总的来说,VGA的时序主要包括行时序与场时序两个部分。
其中行时序主要包括:行同步(Hor Sync) 、行消隐(Hor Back Porch) 、行视频有效(Hor Active Video)和行前肩(Hor Front Porch)这四个参数,行时序的时序图如下图所示
而场时序主要包括:场同步(Ver Sync) 、场消隐(Ver Back Porch) 、场视频有效(Ver Active Video)和场前肩(Ver Front Porch)这四个参数,场时序的时序图如下图所示
3 程序设计
VGA显示的程序代码注释十分详细,主要是根据VGA时序图通过行场信号的控制,进
而产生相应的RGB数据。
4 实验现象
将VGA数据线分别连接开发板VGA接口和显示屏的VGA接口,将目录“... at7_prj_16at7_prjat7_prj.runsimpl_1”文件夹下的 at7_prj.bit 文件下载到开发板上,观察到现象如下图,开发板成功驱动显示屏显示彩色条纹。
部分代码展示:
`timescale?1ns?/?1ps ////////////////////////////////////////////////////////////////////////////////// //?Company:? //?Engineer:? //? //?Create?Date:?2019/04/13?17:54:08 //?Design?Name:? //?Module?Name:?at7_prj //?Project?Name:? //?Target?Devices:? //?Tool?Versions:? //?Description:? //? //?Dependencies:? //? //?Revision: //?Revision?0.01?-?File?Created //?Additional?Comments: //? ////////////////////////////////////////////////////////////////////////////////// module?at7_prj( ????input???????????????????clk???,?//?系统100MHz时钟 ????input???????????????????rst_n?,?//?系统复位 ????output???reg???[4:0]????red_out???,?//?VGA红色分量 ????output???reg???[5:0]????green_out?,?//?VGA绿色分量 ????output???reg???[4:0]????blue_out??,?//?VGA蓝色分量 ????output??????????????????hs_out????,?//?VGA行同步信号 ????output??????????????????vs_out??????//?VGA场同步信号 ); //?分辨率为640*480时行时序各个参数定义 parameter???????C_H_SYNC_PULSE??????=???96??,? ????????????????C_H_BACK_PORCH??????=???48??, ????????????????C_H_ACTIVE_TIME?????=???640?, ????????????????C_H_FRONT_PORCH?????=???16??, ????????????????C_H_LINE_PERIOD?????=???800?; //?分辨率为640*480时场时序各个参数定义??????????????? parameter???????C_V_SYNC_PULSE??????=???2???,? ????????????????C_V_BACK_PORCH??????=???33??, ????????????????C_V_ACTIVE_TIME?????=???480?, ????????????????C_V_FRONT_PORCH?????=???10??, ????????????????C_V_FRAME_PERIOD????=???525?; ???????????????? parameter???????C_COLOR_BAR_WIDTH???=???C_H_ACTIVE_TIME?/?8??;?? reg?[11:0]??????R_h_cnt?????????;?//?行时序计数器 reg?[11:0]??????R_v_cnt?????????;?//?列时序计数器 wire?????????????clk_25M???????; wire????????????W_active_flag???;?//?激活标志,当这个信号为1时RGB的数据可以显示在屏幕上
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1341