VGA显示控制器电路逻辑设计
实验题目:VGA 显示控制器电路逻辑设计
1. 课程简要信息
课程名称:数字电路综合课程设计;课程学时:24;适用专业:电子与通信工程
2. 实验内容与任务(限 500 字)
项目需要完成的任务(如需要观察的现象,分析某种现象的成因、需要解决的问题等);是否设计有不同层次的任务。
1) 设计一个基于 FPGA 开发板和 3 通道电阻式 DAC 的 VGA 接口显示器控制器,用于在显示器上绘制信号采样波形以及图像点阵;
2) 循序渐进的进行设计和验证,1、设计 VGA 同步信号合成模块,显示彩条等测试图样;2、设计栅格模块,用于显示信号坐标系栅格;3、设计绘制信号样值波形显示模块,显示信号采样波形;4、设计图像点阵显示模块。
3) 信号采样和图像点阵信息存储于 FPGA 的内部RAM中,每个信号波形和图像点阵的尺寸和显示位置可以设定。
4) 为节约存储开销,信号波形颜色、图像点阵颜色应使用调色板方式支持从单色到 24比特真彩色的配色方案。
5) 可以改变VGA 输出信号的宽高比和刷新速率,以适应不同规格的显示器。
6) 为便于用户观察,信号采样波形绘制时需带有显示样值波形在垂直方向的像素拟合功能,图像点阵需要带有整数倍放大功能。
7) 本实验课提供 $8 0 0 \mathrm { x } 6 0 0 @ 7 2 \mathrm { H z }$ 模式下的的参考设计代码,学生需在其他分辨率(例如 $6 4 0 \mathrm { x } 4 8 0$ 或 $1 0 2 4 \mathrm { x } 7 6 8 )$ 将上述模块逐个重新进行代码移植。在代码修改和移植的过程中,解决相关问题,加深对数字逻辑设计的理解和认识。
3. 实验过程及要求(限 300 字)
如对学生在实验过程中在需求分析、资料查询、自学预习、思考讨论、方法设计、进程规划、软件仿真、平台构建、器件选择、表格设计、现象观察、数据测试、问题分析、总结报告、验收答辩、演讲交流等各方面的要求。
1)学习 VGA 信号格式,以二维平面图的方式理解垂直、水平同步、信号的格式以及数据信号的消隐/有效周期。
2) 设计同步信号模块的基本逻辑:根据水平、垂直同步信号的时序格式,设计级联的两级计数器。设计每个计数器的工作逻辑和使能信号,以及根据计数值设计输出信号逻辑。根据计数器的输出值设计当前时钟周期的显示像素坐标值更新逻辑和配套的输出有效控制信号。
3) 设计同步信号模块的测试图样:根据当前显示像素的坐标值和配套的输出有效控制信号,设计同步模块的 RGB 输出信号,该信号用于生成显示器测试信号图样。同步控制模块的信号图样包括四种:边界线条;水平彩条;垂直彩条;栅格图样。
4) 设计栅格信号生成模块,栅格的二维尺寸和显示位置以及单个栅格的尺寸在电路编译时用参数指定。每个栅格信号的核心电路是 2 个计数器,分别对水平和垂直的栅格个数进行计数。栅格的显示控制逻辑根据像素位置和栅格计数进行判决是否显示栅格像素。
5)设计信号波形样值的显示绘制模块,读取 FPGA内部RAM存储的波形样值,根据电路的设定参数,结合当前显示器刷新的像素位置,在指定区域绘制波形。
6)设计像素点阵的显示绘制模块,读取 FPGA内部RAM存储的点阵信息,根据电路编译时设定的调色板参数,在设定区域绘制二维图像点阵。设计图像的水平、垂直拉伸电路和填充图样合成电路,生成不同的显示效果。
7)编写实验总结报告,描述设计过程和测试结果
4. 相关知识及背景(限 150 字)
项目涉及的知识方法、实践技能、应用背景、工程案例。
多媒体影像在信息社会和传媒科技中具有广泛应用,显示器驱动逻辑设计是多媒体影像技术的重要基石之一,本实验案例用于引导学生使用数字电路逻辑设计技术和 EDA 工具流程,设计中等复杂度电路逻辑,需要熟悉 VGA接口协议、色彩空间及伪彩色原理、Matlab编程、数据曲线拟合、组合逻辑设计、时序逻辑设计、流水线时序、EDA 工具流程、FPGA 开发流程及工作原理等相关知识与技术方法。
5. 教学目标与目的(限 100 字)
如学习、运用知识、技术、方法;培养、提升能力、素质。
在大分辨率显示器上绘制图形图像具有非常直观的视觉效果,有利于提高学生的实验兴趣。本实验案例引导学生使用现代主流 FPGA 器件和 EDA流程,引导学生设计兼顾趣味性与实际用途的 VGA 显示逻辑电路;促进其进一步深入学习数字逻辑电路和 EDA 设计的相关内容,更为重要的是,通过本实验培养学生使用逻辑分析仪工具进行设计故障定位与分析,以及培养其复杂逻辑触发图样下的错误数据捕获及故障分析的能力。
6. 教学设计与引导
如预习要求及检查;课堂知识讲解、方法引导、背景解释;实验中的方法指导,问题设置、思路引导等。研讨主题、观察节点、验收重点、质询问题的设计等。
本实验是一个用于导引学生从 EDA入门阶段向深入阶段进阶的综合实验,对于先期曾经设计过数字电路基础实验并且已经初步掌握了数字电路设计能力的学生,本实验将会引导他们进行更为复杂的数字电路逻辑设计。本实验着重训练学生学习标准化接口及时序规范的能力,以及从设计需求出发将设计需求定义的时序、功能,逐步映射为数字电路内部的时序动作和组合逻辑。在本实验中,学生应当学会层次化的逻辑设计过程,即“需求分析-接口信号及时序定义-模块划分-功能设计与验证”这种自顶向下渐进迭代式的设计过程。本实验对学生的引导过程如下:
-
首先讲解 VGA接口的信号定义,着重让学生认识垂直和水平同步信号以及 RGB 像素信号与同步信号之间的时序和逻辑匹配关系,重点是以二维平面图的形式理解整个 VGA 显示帧的持续周期中有效显示周期的相对时间位置,由此理解 VGA信号中的各种时序细节。
-
第一个进行设计的模块是同步信号生成模块,该模块用于生成垂直和水平同步信号,像素有效信号,以及当前像素的横纵坐标值,该模块是后续模块的基础,本模块需要学生理解和实践的设计重点是2级嵌套的计数器,以及根据计数器的计数值来设计相应的组合逻辑从而生成模块的输出信号。另外本模块应当能够生成若干种特征测试信号图样,用于连接输出信号至显示器以确认本模块工作时序的正确性。
-
接下来设计栅格信号生成模块,该模块需要学生理解和实践的重点也是一个两级计数器模块,若当前时钟的显示像素位置落入栅格区域,则栅格的横纵坐标计数器启动计数,然后根据栅格的内部区域横纵计数值和栅格的水平、垂直尺寸输出栅格样点像素值。该模块可以例化多次,从而在不同区域绘制不同尺寸与数目的栅格。
-
然后设计信号采样的波形绘制模块,该模块把存储于采样 RAM中的信号样值波形绘制到指定的屏幕区域,相邻的波形样点像素之间采用垂直线段的方式进行拟合。该模块可以例化多次,从而可以在不同的显示区域绘制不同样点数和数值动态范围的波形采样序列。该模块的实践教学重点和栅格模块部分类似,区别在于显示像素的数据来自于RAM中存储的波形样值,以及波形曲线的拟合电路的联合输出结果。
-
最后设计图像点阵绘图模块,该模块把存储于 RAM中的二维图像点阵绘制到指定的屏幕区域,图像像素以伪彩色存储,伪彩色配色支持从 1 比特单色到 24比特真彩色方案,另外该模块支持图像像素的整数倍放大,即使用屏幕上的多个点阵表示一个存储的像素样值,放大后的填充方式有多种,参考设计提供了三种模式,实心填充,方形填充,X形填充,学生可以设计自己的填充方式,比如十字形填充。本模块的教学实践重点是伪彩色映射原理,需要使用电路逻辑把像素值根据调色板映射为RGB 值,另外图像的整数倍放大显示技术也是一个教学实践重点,其关键在于使用计数器把区域内坐标映射为像素 RAM 的读取地址。
学生设计实践时,出现最多的问题是,当显示器上的图形图像不正常时,学生不知所措,无从下手,这时需要引导他们学会使用调试工具捕捉出现问题时的错误数据,主要的调试工具是 FPGA 的内嵌逻辑分析仪,使用该工具时,由于整个VGA 时序信号帧数据过长,则必须使用逻辑分析仪的触发采样功能,以及分段触发采样功能,当设计中的现有控制信号不满足触发采集需求时,还可能需要自行设计一些辅助的触发采样控制信号。通过本实验的调试过程,需要让学生建立起一个最基本的认知就是,“故障调试的最有力支撑是故障现场时刻的数据”。
7. 实验原理及方案
实验的基本原理、完成实验任务的思路方法,可能采用的方法、技术、电路、器件。
本实验各个部分的关键要点陈述如下:
1) VGA 时序原理
显示器 VGA 接口的 RGB 数据信号是一个持续的数据流信号,另有垂直同步和水平同步信号用以对一维的数据流进行二维化标识,由于接口标准的历史原因及器件响应速度的限制,需要在有效数据流信号中插入消隐周期。VGA接口时序及二维化解释如下图所示:

2) 系统顶层结构
整个 VGA 显示控制器的结构如下图所示:同步信号生成模块负责产生垂直、水平同步信号,以及用于测试显示器正常工作的 RGB 信号,另外该模块还生成当前时钟周期刷新像素的二维坐标及刷新有效信号。其余各个模块负责产生各自的显示图样数据,所有的显示数据最终融合在一起送至外部进行显示绘图。

3)同步信号生成模块同步信号生成模块的接口如下:

VGA 同步信号生成模块
同步信号生成模块的核心是 2 个计数器,分别用于对当前输出像素的列位置和行位置进行计数,电路的 RTL结构简图如下所示:

VGA 时间基准信号生成模块 RTL结构图
本模块还可以生成的不同测试图样,用于测试显示器正常工作,显示效果如下:

4) 栅格生成模块
每个例化的栅格模块的用途是,在例化参数指定的区域,显示若干栅格,栅格的横纵尺寸和数量也由例化参数确定。
| CLK RST CURX OUTR4G4B4 CURXOE | 出显 器 VGA |
VGA 栅格信号生成模块接口
| 例化参数名称 | 含义 |
| X0 | 栅格所在区域的左上顶点X坐标 |
| Y0 | 栅格所在区域的左上顶点Y坐标 |
| XGSIZE | 栅格的每个格子的水平尺寸,单位是像素 |
| YGSIZE | 栅格的每个格子的垂直尺寸,单位是像素 |
| XGNUM | 水平方向的格子数目 |
| YGNUM | 垂直方向格子数目 |
| COLORGRIDR4G4B4 | 格子的颜色,12 比特,RGB各4比特 |
下图是三个栅格模块的显示效果,显示了不同的位置、尺寸、数量、以及颜色

5)信号采样波形模块
每个例化的信号采样波形模块的用途是,在指定的显示区域,绘制指定颜色的波形曲线,其中显示区域的位置和尺寸,以及曲线颜色,由接口信号数据进行配置,波形的样值数据位于模块外部的波形采样 RAM中,该RAM 使用 FPGA的内嵌存储器。
| CLK RST OUTR4G4B4 CURX |
| CURXOE RA |
| CURY |
| CURYOE |
| COLORR4B4G4 |
| x0 |
| XLEN |
| Y0 |
| YLEN |
| SHOWBORDER RD |
| 信号波形模块 |
| 接口名称 | 方向 | 含义 |
| x0 | 输入 | 信号绘制区域的左下角端点X坐标 |
| Y0 | 输入 | 信号绘制区域的左下角端点Y坐标 |
| XLEN | 输入 | 信号绘制的水平尺寸,单位是像素 |
| YLEN | 输入 | 信号绘制的垂直尺寸,单位是像素 |
| COLORR4B4G4 | 输入 | 信号的颜色 |
| SHOWBORDER | 输入 | 显示信号绘制区域的边框(调试用) |
| RD | 输入 | 从样值 RAM 中读出的信号采样数据 |
| OUTR4G4B4 | 输出 | 绘制出的信号曲线 |
| RA | 输出 | 格子的颜色,12 比特,RGB 各4比特 |
为了增强显示效果,需要对相邻的样值显示像素进行垂直方向上的曲线拟合,其基本原理如下图所示:

曲线拟和进行像素填充的两种情况
例化四个不同颜色、位置以及水平、垂直尺寸的信号波形模块,并且同时例化三个栅格模块的显示效果如下图所示:

6)图像点阵显示模块
本模块用于在指定的显示区域绘制图像点阵 RAM存储的像素信息,模块的接口、例化参数及信号定义如下:
| CLK RST | OUTR4G4B4 |
| CURX | RA |
| CURXOE | |
| CURY | |
| CURYOE | |
| FILLMODE | |
| RD | 图像点阵模块 |
| 例化参数 | 含义 |
| X0 | 图像点阵显示区域的左上顶点X坐标 |
| Y0 | 图像点阵显示区域的左上顶点Y坐标 |
| XPIXNUM | 外挂的图像 RAM中,存储图像的水平尺寸,单位是像素 |
| YPIXNUM | 外挂的图像RAM中,存储图像的垂直尺寸,单位是像素 |
| XZ0OM | 像素显示的水平放大倍数 |
| YZOOM | 像素显示的垂直放大倍数 |
| 接口信号名称 | 方向 | 含义 |
| FILLMODE | 输入 | 像素放大时的填充模式,00/11表示全部填充,01表示X填充,10表示空心填充 |
| RD | 输入 | 从 RAM 中读出的像素信息 |
| OUTR4G4B4 | 输出 | 外部图像点阵 RAM 的读取地址。 |
| RA | 输入 | 输出的像素信息(复制自 RD 信号的数据) |
像素的存储和显示放大
在某些应用场景下,为了更加容易的进行数据观测及分析。本模块提供了可以独立配置水平和垂直两个方向上,像素的显示放大倍数的功能。图像的像素信息按照 1 维的顺序存放于本模块外部的像素 RAM 中(该 RAM 使用 FPGA 的内嵌存储器),图像点阵模块根据配置的水平和垂直的放大倍数,将相应地址的像素数据读出绘制到显示器上。

像素放大的填充模式
对于绘制信号处理系统的零极点、数字通信系统的星座图这类需求,像素点阵的放大填充模式会有一定的用处。有三种模式:全部填充,空心填充,X 形填充。

下图是每个像素存储 1 比特的单色图像及 24 比特真彩色图像的原图、水平、垂直放大的显示效果,这些图像的点阵信息保存于 FPGA 的 ROM 中,使用 Matlab 将图片文件转换为 ROM 数据。

下图是对图像进行整数倍放大时,使用不同的填充图样的显示效果。

全部填充
空心填充
X 形填充
8. 教学实施进程
简要介绍实验实施进程的各个环节(如任务安排、预习自学、现场教学、分组研讨、现场操作、结果验收、总结演讲、报告批改等)中,教学设计的思路、目的,教师、学生各自需要完成的工作任务,需要关注的重点与细节。
本案例教学进行实施时,首先给学生展示教师提供的参考设计,通过实物与操作互动,提升学生设计的兴趣。然后教师集中授课讲解 VGA 时序、接口标准,以及工作原理。
然后进入学生动手实验环节,因为 VGA 显示器支持多种分辨率级刷新速率,首先学生选择自己的 VGA显示配置参数,然后根据所选参数计算同步模块中需要修改的各种计数器参数,首先让学生尝试合成出最简单的显示边框图样,如果 VGA 显示器经过自动搜索信号后,能够识别出彩条边框,则说明时序正确。如果 VGA 显示不正常,则需要引导学生使用嵌入式逻辑分析仪,辅以逻辑分析仪的触发捕获功能,观察同步信号置位时刻各个计数器的状态和数值。学生成功调试出边框信号后,可以进行彩条信号和全屏栅格信号的设计。
接下来引导学生设计区域性栅格信号,本环节需要引导学生理解“栅格区域有效”使能信号的作用,让学生对比本阶段栅格模块和上阶段的全屏栅格模块的异同,要点在于,全屏栅格模块等价于“栅格区域始终有效”。同样,本环节的调试工具为嵌入式逻辑分析仪。
然后是区域化的信号波形显示模块,该模块和区域化栅格显示模块类似,区别在于显示像素的来源是来自信号样值 RAM 的读出数据。另外本环节需要额外设计显示曲线的像素垂直拟合电路逻辑。详见实验原理部分内容。
最后是图像点阵模块,该模块和信号波形显示模块类似,需要从 RAM 中读取显示数据,并且也使用伪彩色调色板合成 RGB 数值,区别在于本环节模块需要对全部显示区域进行着色,并且本模块还需要支持图像的水平、垂直放大功能,由此需要区分显示区域的位置计数逻辑和像素 RAM 的读取地址计数逻辑,以上的计数时序过程以及相应的逻辑关系需要学生在设计之前先初步预估好,并且需要绘出电路的 RTL设计草图。另外,本模块的点阵缩放填充图样需要根据缩放计数器的计数值进行合成,可以要求学生设计自己的个性图样,以提高其兴趣,比如十字填充图样。
9. 实验报告要求
需要学生在实验报告中反映的工作(如:实验需求分析、实现方案论证、理论推导计算、设计仿真分析、电路参数选择、实验过程设计、数据测量记录、数据处理分析、实验结果总结等等)
本实验案例课程设计要求学生编写实验文档内容包括设计报告和测试结果,实验报告需要反映以下工作内容:
- 设计目标:阐述设计的目标功能和使用模式。
- 原理概述:简单介绍设计中相关的各种基本理论、规范。
- 电路设计接口描述:对于目标电路的细化描述,包括接口和时序等特征参数。
- 顶层模块结构划分:使用自顶向下的设计理念,规划出第一层子模块的划分与接口、互联结构。
- 子模块的 RTL(寄存器传输层)结构图:对于最底层的子模块,需要绘制出 RTL 结构简图,并且要将自己手工绘制 RTL 图和 Quartus 生成的 RTL 图进行对比。
- 统计每个模块的电路资源开销,包括 LE(逻辑单元),RAM(存储器),DSP Block(乘法器)
- 对于每个可以显示的模块,需要拍照并在文档中添加照片,另外需要添加模块中关键信号节点的 Signaltap(嵌入式逻辑分析仪)截取的波形截图。
- 有能力者可以添加硬件断言(assertion)电路逻辑,然后用断言逻辑信号作为 Signaltap 触发信号,观察是否会有错误状态出现(assertion failed)。
10.考核要求与方法(限 300 字)
考核的节点、时间、标准及考核方法。
- 学生开始编写代码后、关注学生的代码编写情况,提醒学生注意参照示范代码,注意代码格式
- 学生开始进行电路调试后、关注学生的调试工具使用情况,提醒学生注意使用逻辑分析仪的触
发功能。 - 基本功能验收:完成要求的基本显示图样。
- 个性化设计:对于添加了参考设计未提供的个性化功能的同学,予以口头鼓励和考评加分。
- 代码规范性:缩进、注释、变量命名、文件及目录的划分。
- 文档规范性:文档的排版、条理性、测试数据清晰明了、功能框图清晰简洁优美。
- 功能创新性:对于把参考设计中提供的模块能够进行组合设计,完成复杂功能的同学加分。
11.项目特色或创新(可空缺,限 150 字)
本实验案例课程设计的创新之处在于,仅使用了低成本的单片小容量FPGA芯片和电阻网络结构的DAC,实现了 VGA 图像信号合成器,该合成器可以广泛用于诸如显示器测试,投影机测试,信号处理和图像处理设备的内建自测试(BIST: Build In Self Test)等领域。
实验案例信息表
| 案例提供单位 | 中国传媒大学 | 相关专业 | 信号与信息处理 | |||
| 设计者姓名 | 杜伟韬 | 电子邮箱 | duweitao@cuc.edu.cn | |||
| 移动电话 | 13911254367 | 通讯地址(含邮编) | 北京市朝阳区中国传媒大学综合楼604A数字化中心100024 | |||
| 设计者姓名 | 陈超 | 电子邮箱 | chenchao@cuc.edu.cn | |||
| 移动电话 | 13466336686 | 通讯地址(含邮编) | 北京市朝阳区中国传媒大学综合楼604A数字化中心100024 | |||
| 设计者姓名 | 电子邮箱 | |||||
| 移动电话 | 通讯地址(含邮编) | |||||
| 相关课程名称 | 数字电路综合课程设计 | 学生年级 | 大三 | 学时(课内+课外) | 24 | |
| 支撑条件 | 仪器设备 | 带VGA接口的FPGA开发板,VGA显示器,PC机 | ||||
| 软件工具 | Matlab、Quartus | |||||
| 主要器件 | Altera FPGA EP3C16,(Terasic DEO board) | |||||