实验五 vga图像显示控制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五 VGA图像显示控制

一实验目的

1.进一步掌握VGA显示控制的设计原理。

2.了解图像的存储和读取方法。

3.进一步掌握4×4键盘或PS/2键盘接口电路设计方法。

4.掌握状态机设计复杂控制电路的基本方法。

二硬件需求

1.EDA/SOPC实验箱一台。

三实验原理

VGA图像显示控制利用实验三中学习的《VGA显示控制模块》显示存储于ROM中的图像数据。

要显示的图像是四块64*64像素大小的彩色图片,通过键盘控制可以选择不同的图片显示。图像可以在屏幕上移动(水平和垂直方向每帧分别移动“H_Step”点和“V_Step”点),通过键盘改变“H_Step”和“V_Step”的值即可改变其移动速度和方向。图像碰到屏幕边沿会反弹回去。如图5.1所示

H_Step

V_Step

图5.1 VGA图像显示控制示意图

实验中要用到4×4键盘、VGA显示控制、ROM等模块,在《实验三常用模块电路的设计》中已经讲述,可以直接使用已做好的模块(可能需要修改部分代码)。键盘也可以使用PS/2接口键盘,这样可以输入更多的字符。

四实验内容

1、图5.2是整个设计的顶层电路。

图5.2 VGA 图像显示控制顶层电路图

2、实验三中学习的几个模块

①“Read_Keyboard ” 模块与实验三中的4×4键盘模块一致;

②四个ROM 模块使用宏功能模块实现,并设置其内存初始化文件分别为“FBB.mif ”、“dog.mif ” 、“cat.mif ” 、“flower.mif ”,如图5.3所示。当然也可以用其他图片(大小为64*64)使用“BmpToMif ”软件生成对应的“mif ”文件,如图5.4所示。

图5.3 内存初始化文件设置

图5.4 获取内存初始化文件(mif文件)

③“VGA”模块与实验三中基本一致,只需要在端口中屏蔽“key”端口,并加入“imag_rgb

: in std_logic_vector(2 downto 0);”用于从外部输入图像数据。代码中倒数第三个进程改为图5.5所示,此时最后两个进程也可以删除了。

图5.5 修改代码从外部输入图像数据

④“div_24000”模块用于将24M时钟分频输出1KHz用于键盘扫描。

3、新增加模块说明:

①“imagController”模块,代码如图5.6所示(部分代码用文字描述,请用VHDL语言补充完整)。端口VS、hcnt、vcnt是“VGA”模块的输出,用于确定扫描点位置;H_Step、V_Step、Pause端口由“Keyboard_Manage”模块输出,用于设置图像块移动的速度和方向;ROM_DATA是来自于ROM模块中的图像数据。

图5.6 “imagController ”模块主要代码

②“Keyboard_Manage ” 模块,用于接收键盘输入,根据键盘输入设置图像显示及移动参数。其主要代码如图5.7所示。

图5.7 “Keyboard_Manage”模块主要代码

③“SEL_ROM”模块,用于选通四个图像ROM,即根据SEL[1..0]的值,从Q1~Q4中选择一个输出到ROM_DA TA端口。

五实验步骤

1.首先打开Quartus II软件,新建一个工程,并新建一个VHDL File。

2.按照自己的想法,编写VHDL程序。

3.对自己编写的VHDL程序进行编译并仿真。

4.仿真无误后,根据附录一的引脚对照表,对实验中用到时钟、4×4键盘、按键以及VGA模块对应的FPGA引脚进行管脚绑定,然后再重新编译一次。

5.用下载电缆通过JTAG接口将对应的sof文件下载到FPGA中。

6.测试电路的工作是否满足实验要求。

六、实验报告要求

1.详细论述源码中实现各功能模块的设计要点。

2.由于ROM模块采用时许逻辑电路设计,其数据输出与地址值在实践上有什么关系?会导致图像显示位置有何影响?如何在设计中消除这一影响,使图像显示位置更加精确?

3. 6×6键盘有几种按键状态(不包括组合键),应该定义多少编码来表示?如果包含所有组合键,则用于表示按键状态的编码至少应定义为几位?

4. 如果用“#”键作为功能键(类似PC键盘上的[Ctrl]键),如何输入“#+C”(类似于“Ctrl+C”)这种组合功能键?(只说思路,不用给出具体实现)

5. 实验的心得体会。

相关文档
最新文档