目录

银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2019-12-25 gingko 初次建立

实验二十九:VGA驱动器设计

一、实验目的与意义

  1. 了解液晶显示器扫描原理和VGA接口时序。
  2. 学习按照时序定义用FPGA实现VGA驱动器的设计。
  3. 掌握VGA接口驱动设计的方法和思路。

二、实验设备及平台

  1. iCore3 双核心板( FPGA型号为EP4CE10F17)。点击购买
  2. 转接板和40P的FPC连接线。
  3. iCore3(VGA)显示模块。点击购买
  4. Blaster(或相同功能的)仿真器和USB线缆。点击购买
  5. Micro USB线缆。
  6. QuartusII开发软件(本实验中使用的是13.1版本)。
  7. 带有VGA接口的主机和VGA接口分辨率1024 * 768@60Hz的液晶显示器。

图29-1 硬件连接实物图

注意事项1: 注意FPC转接板和核心板之间引脚要对齐(如图29-1中处所示,转接板和核心板边缘要对齐)。
注意事项2: FPC软排线与FPC接口连接时,请确认软排线接口处蓝色绝缘皮朝上(如图29-1中②③所示)。
注意事项3: 下载程序前请确认FPC转接板和软排新与核心板的引脚连接无误,且iCore3核心板引脚与PIN.tcl文件中绑定引脚相互对应。

三、实验原理

1. VGA时序

VESA_VGA时序标准中关于1024 * 768@60Hz分辨率显示器接口时序定义如下所示:

图29-2 vga接口时序图

sync+Back Porch+Top/left Border = (136+160+0)Pixes 既扫描296个像素的时间。

2. VGA接口的时钟频率计算

1344 * 806 * 60≈65M

个像素点。每个时钟周期扫描一个像素点,要实现60Hz分辨率1024 * 768的屏幕刷新,则需要约65MHz的时钟信号,即VGA接口中定义的系统时钟频率。

3. RGB条纹显示控制原理

四、代码讲解

  1. RST_Ctrl模块为系统提供初始复位信号,代码较为简单。
  2. PLL模块是ATLPLL IP核的例化,为系统提供65MHz时钟信号。
  3. VGA_Display_Top模块是顶层模块,例化和连接各分模块。
  4. RGB_display模块实现的功能是控制三色条纹的宽度和色彩。以行同步信号对一的行数进行计数,在行数区间内对IMG_RGB变量填充对应的颜色值,从而实现RGB三色彩条的显示。
  5. VGA_Ctrl模块是我们根据VGA时序写的驱动,提供符合VGA接口规范的行同步信号和场同步信号,以及从PLL模块输入的VGA_CLK时钟信号。

工程编译完成后,可以在Tools→netlist viewers→RTL Viewer 中查看RTL视图如下:

图29-3 系统的rtl级视图,及各模块之间的信号关联

//--------------------Sync_V---------------------------------//
	reg [10:0] cnt_v = 11'd0; //场同步信号计数器
	always @(posedge CLK_65M or negedge RST_n)
		if (!RST_n)
			cnt_v <= 11'd0;
		else if (cnt_h == 1343) //当一行填充完1344个列像素后
			begin
				if (cnt_v == 805) //判断是否填充完805行
					cnt_v <= 11'd0; //若是则为零,重新开始下一场的列填充
				else
					cnt_v <= cnt_v + 1'd1; //否则,转到下一行继续列填充
			end

五、实验结果

图29-4_效果展示

六、拓展实验

  1. 改变显示条纹的方向,颜色和数量。
  2. 在屏幕的某个区域显示单色。
  3. 在屏幕上动态移动单色块。