名称:VGA显示彩条LCD显示屏显示设计Verilog代码Quartus AX301开发板
软件:Quartus
语言:Verilog
代码功能:
VGA(Video Graphics Array)做为视频输出输入接口已经广泛使用很长时间,主要通过红、绿、蓝三原色的模拟量传输。本实验通过在 VGA 屏幕上显示彩条,来练习视频的时序和视频颜色的表示,为后面视频处理实验做个基础。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在AX301开发板验证,AX301开发板如下,其他开发板可以修改管脚适配:
设计文档:
VGA 测试实验
1 实验简介
VGA(Video Graphics Array)做为视频输出输入接口已经广泛使用很长时间,主要通过红、绿、蓝三原色的模拟量传输。本实验通过在 VGA 屏幕上显示彩条,来练习视频的时序和视频颜色的表示,为后面视频处理实验做个基础。
2 实验原理
2.1 硬件介绍
AX301/AX4010 开发板使用常用的 RGB565 数据输出,也就是 16 位的高彩色 VGA 显示, 其中红色信号占 5 位, 绿色信号占 6 位, 蓝色信号占 5 位。电路设计上通过电阻匹配网络实现 RGB 数字信号到模拟信号的转换。
这里颜色信息一共 16BIT,可表达颜色 65536 种。
2.2 VGA 时序标准
VGA 显示器扫描方式从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到 屏幕的左边下一行的起始位置,在这期间,CRT 对电子束进行消隐,每行结束时,用行同步信号 进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方, 同时进行场消隐,开始下一帧。
完成一行扫描的时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描的时间 称为垂直扫描时间,其倒数称为场频率,即刷新一屏的频率,常见的有 60Hz,75Hz 等等。标准 的 VGA 显示的场频 60Hz。
时钟频率:以 1024x768@59.94Hz(60Hz)为例,每场对应 806 个行周期,其中 768 为显示行。每 显示行包括 1344 点时钟,其中 1024 点为有效显示区。由此可知:需要点时钟频率:806*1344*60 约 65MHz。
VGA 视频时序
VGA 扫描,基本元素是行扫描,多行组成一帧,下图显示一行的时序,其中“Active”Video 是一行视频的有效像素,大部分分辨率时钟中 Top/Left Border 和 Bottom / Right Border 都是 0。
“Blanking”是一行的同步时间,“Blanking”时间加上 Active”Video 时间就是一行的时间。
“Blanking”又分为“Front Porch”、“Sync”、“Back Porch”三段。
行同步时序
2.3 常见分辨率 VGA 时序
640x480@60Hz 时序参数
部分代码展示:
////////////////////////////////////////////////////////////////////////////////// // ov5640 lcd display // // // // Author: meisq // // msq@qq.com // // ALINX(shanghai) Technology Co.,Ltd // // heijin // // WEB: http://www.alinx.cn/ // // BBS: http://www.heijin.org/ // // // ////////////////////////////////////////////////////////////////////////////////// // // // Copyright (c) 2017,ALINX(shanghai) Technology Co.,Ltd // // All rights reserved // // // // This source file may be used and distributed without restriction provided // // that this copyright statement is not removed from the file and that any // // derivative work contains the original copyright notice and the associated // // disclaimer. // // // ////////////////////////////////////////////////////////////////////////////////// //================================================================================ // Description: pwm model // pwm out period = frequency(pwm_out) * (2 ** N) / frequency(clk); // //================================================================================ // Revision History: // Date By Revision Change Description //-------------------------------------------------------------------------------- // 2017/5/3 meisq 1.0 Original
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1349
800