1、-I-摘 要本实验报告为 VGA 显示控制器设计报告。实验设计了基于 VHDL 描述的 VGA 显示控制器,通过 FPGA 控制 CRT 显示器显示色彩和图形。完成的功能包括 64 种纯色的显示、横向和纵向彩色条幅的显示以及正方形色块的运动与控制。实验的重心放在了显示控制器的系统层面的设计,采用了自顶向下的思路进行设计,系统的核心为有限状态机。报告中给出了完整的设计思路和过程,并将系统分模块进行了详细的设计,给出了 VHDL 语言描述。完成了状态机和核心模块以及系统整体的仿真验证。最终下载到实验板上测试通过。关键词: FPGA;VHDL; VGA 显示控制;状态机-II-第一部分 任务要求 .
2、21.1 课题要求 .21.2 设计目标 .2第二部分 系统设计 .22.1 设计思路 .22.2 系统结构设计 .22.2.1 系统结构框图 .22.2.2 系统逻辑功能划分 .22.2.3 层次模块划分 .22.2.4 模块设计图 .22.2.5 控制器设计 .22.2.6 状态机设计 .22.2.7 基本模式设计 .22.2.8 用户模式设计 .22.3 系统硬件语言描述 .22.3.1VHDL 描述思路 .22.3.2 总体电路的描述 .2-III-2.3.3 分块电路的描述 .22.4 系统仿真验证 .2第三部分 结果与分析 .23.1 实现功能说明 .23.2 器件资源分析 .23
3、.3VHDL 设计优化 .23.4 故障和问题分析 .2第四部分 总结与结论 .24.1 实验结论 .24.2 总结体会 .2第五部分 附录部分 .25.1 元器件和仪表清单 .25.2VHDL 源代码 .25.3 电路图 .25.4 参考文献 .2数字电路综合实验报告第 1 页第一部分 任务要求1.1 课题要求设计一个 VGA 图像显示控制器。1. 显示模式为 64048060Hz 模式;2. 用拨码开关控制 R、G、B(每个 2 位),使显示器可以显示 64 种纯色;3. 在显示器上显示横向彩条信号(至少 6 种颜色);4. 在显示器上显示纵向彩条信号(至少 8 种颜色);5. 在显示器上
4、显示自行设定的图形、图像等。1.2 设计目标根据课题要求,实验中将目标进行了细化,叙述如下:1. 设定 4 种显示模式:横彩模式、纵彩模式、纯色模式、用户模式;2. 拨码开关最低两位 SW1SW0 控制 4 种模式的切换;3. 拨码开关高 6 位 SW7SW2 每两位分别控制 RGB 显示 64 种纯色;4. 横向和纵向彩条均设置为 8 种内置的颜色;5. 用户模式中分 3 种子模式:1) 子模式 1 是沿固定轨迹运动模式,固定图形沿水平方向运动,行运动到边界后折回到下一行继续水平运动;2) 子模式 2 是反弹球模式,固定图形在矩形屏幕做内直线运动,到边界后沿反射角方向反弹,周而复始;3) 子
5、模式 3 是受控运动模式,使用上下左右 4 个按键控制固定图形在屏幕内的运动方向;4) 子模式间的切换由一个单独的按键进行控制,按键按下后顺序切换子模式。数字电路综合实验报告第 2 页第二部分 系统设计2.1 设计思路设计采用自顶向下(Top-down)的方法。第一步:系统功能分析和描述VGA 显示控制器实现的主要功能是向 CRT 显示器发出图形控制信号,产生相应的图形显示。由此,容易得到系统结构框图,有关系统功能分析和输入输出约束,详述于 2.2.1 小节中。第二步:系统层次模块划分由系统功能可以将系统从逻辑上划分为输入子系统、模式检测子系统和 VGA 控制子系统,详述于 2.2.2 小节中
6、。从系统逻辑结构出发,将系统设计为 3 层。顶层用于描述整个系统的功能和运行;第二层承接顶层,负责实现系统中各个独立而完整的功能部分;第三层为第二层的子模块,用于扩展第二层的功能,具体负责用户模式的实现。每个层次可用一个或多个具体模块加以实现,层次模块划分详述于 2.2.3 和 2.2.4 小节中。控制器部分是系统的核心部分,负责协调和控制各子模块的工作。控制器设计采用有限状态机的方法,详述于 2.2.5 小节中。第三步:硬件语言描述在前述工作的基础上,采用 VHDL 语言对 VGA 显示控制器的三个层次依次进行描述,具体描述出每个模块,生成具体电路视图。详述与 2.3 小节中。第四步:仿真验
7、证经过前三步之后,系统设计基本完成,需要对系统主要功能进行仿真验证,更进一步分析状态机、电路逻辑和时序配合等是否正确。详述于 2.4 小节中。数字电路综合实验报告第 3 页数字电路综合实验报告第 4 页2.2 系统结构设计2.2.1 系统结构框图CRT 显示器VGA 显示控制器用户输入接口图 2.1 VGA 显示控制器系统结构框图VGA 显示控制器的输入是用户控制信息,如显示模式的切换命令、图形移动的控制命令等。控制器根据用户的输入信息,决定工作模式,这里定义为横彩模式、纵彩模式、纯色模式、用户模式。用户模式中,还应根据用户的输入控制图形的运动方向。颜色信息的产生、显示器扫描同步信号等由 VG
8、A 控制器产生,其输出为 CRT 显示器。2.2.2 系统逻辑功能划分时钟信号模式检测器输入寄存器按键输入VGA 控制器CRT 显示器模式码颜色信号同步信号数字电路综合实验报告第 5 页图 2.2 VGA 显示控制器系统逻辑框图如图 2.2 所示,系统可逻辑地划分为三个子系统:一是输入子系统,包括输入检测和输入寄存两个功能;二是模式检测子系统,根据用户输入决定工作模式,将模式信息传递给 VGA 控制器;三是 VGA 控制子系统,该子系统中可进一步划分出为多个模块,负责依据模式码产生对应模式的同步信号、颜色和图形信号等,从 VGA 接口输出到 CRT 显示器进行显示。2.2.3 层次模块划分系统
9、划分为三层,自顶向下分别是顶层模块、控制器子模块、用户模式底层模块。顶层描述了整个系统的功能和运行;控制器子模块实现系统中各个独立而完整的功能部分;第三层为第二层的子模块,用于扩展第二层的功能,具体负责用户模式的实现。每个层次可用一个或多个具体模块加以实现。图 2.3 VGA 显示控制器层次模块划分框图然后从逻辑上划分出各层次的具体模块,分述如下。模块设计图见 2.2.4 小节。A. 顶层模块:VGAControllerVGAModeClockPixelCNTVGAColorUserMode数字电路综合实验报告第 6 页作用为集成子模块功能,控制子模块的连接和耦合信号。定义实体为VGACont
10、roller,在其中例化子模块。B. 中层模块:具体实现顶层模块的描述,包括的功能主要是产生时钟信号,状态机的定义和状态的转移,产生像素位置信号,并根据不同的状态和像素位置产生 RGB 颜色信号。由此,可定义如下模块:a) VGAMode定义顶层状态机,四种状态分别为横彩模式、纵彩模式、纯色模式、用户模式,分别定义为 S0、S1 、S2、S3。根据拨码开关 SW1 和 SW0 的四种组合选择各模式,完成状态的转移。根据当前状态选择 VGAColor 模块送入的多个颜色图像信号,发送给VGA 接口 RGB 端口。输入:拨码开关 SW1、SW0 的值。输出:送往 VGA 接口的 RGB 颜色信号。
11、b) Clock作分频,由 50MHz 的板级输入得到系统所需的 25MHz、100Hz 和 1Hz 时钟信号。输入:50MHz 晶振信号。输出:25MHz、100Hz 、 1Hz 时钟信号。c) PixelCNT产生像素位置信号。为 VGAColor 模块产生颜色和图像作定位参考。输入:25MHz 时钟信号。输出:行和列像素位置信号。d) VGASig根据行列像素位置输出 VGA 接口标准中定义的行列同步负脉冲信号和行列消隐信号,两种信号输入到 VGA 接口中可控制 CRT 显示器的扫描。数字电路综合实验报告第 7 页输入:行和列像素位置信号。输出:VGA 扫描同步信号和消隐信号。e) VG
12、AColor产生所有状态的颜色和图像信号,输出到 VGAMode 模块进行选择后送 VGA 接口。为实现 S3 用户模式下复杂的用户图像输出,定义了子模块 UserMode,专门负责用户自定义颜色和图像的产生。输入:行和列像素位置信号,用户颜色控制信号 SW2SW7。输出:S0S3 状态的颜色图像信号。以上模块分别由各个 Component 具体实现,由一个 Package 进行封装。C. 底层模块:考虑到用户模式 S3 功能较多,仍需采用状态机设计,故将其独立出来,作为第三层的模块加以封装和实现,实体定义为 UserMode。完成设计目标中用户模式下的 3 种子模式。子模式的状态分别定义 US0、US1、US2。输入:行和列像素位置信号,用户控制信号。输出:用户模式下的颜色图像信号。