VGA学号显示程序实验报告文档格式.docx

上传人:b****6 文档编号:16232624 上传时间:2022-11-21 格式:DOCX 页数:14 大小:262.39KB
下载 相关 举报
VGA学号显示程序实验报告文档格式.docx_第1页
第1页 / 共14页
VGA学号显示程序实验报告文档格式.docx_第2页
第2页 / 共14页
VGA学号显示程序实验报告文档格式.docx_第3页
第3页 / 共14页
VGA学号显示程序实验报告文档格式.docx_第4页
第4页 / 共14页
VGA学号显示程序实验报告文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

VGA学号显示程序实验报告文档格式.docx

《VGA学号显示程序实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《VGA学号显示程序实验报告文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

VGA学号显示程序实验报告文档格式.docx

在通用的标准中,VGA的像素输出频率为25.175MHz,行频率是31.496KHz,场频率是59.94Hz。

分辨率为640*480,即每行显示640个像素,每场显示480行。

这640*480是显示器的有效显示区(Visiblearea),除此之外,还有行、场消隐区(BackPorch),以及行、场同步区(SyncPulse)以实现行列的同步操作。

如果利用实验室的液晶屏,可以增加分辨率至800*600,在这个标准下屏幕的刷新频率设为72Hz,行频率是48.08KHz。

FPGA需实现的扫描时序如下图:

显示控制器是一个较大的数字系统,采用模块化设计原则、借鉴自顶向下的程序设计思想,进行功能分离并按层次设计。

利用VHDL硬件描述语言对每个功能模块进行描述,并逐一对每个功能模块进行编译仿真,使顶层VGA显示控制器的模块实体仿真综合得以顺利通过。

VGA显示控制器主要由以下模块组成:

分频模块、VGA时序控制器模块、彩条图形生成模块、VGA显示模块、存储模块等,如图1所示。

图1基于FPGA的VGA显示控制系统框图

3.1.1VGA时序控制器模块

图片想要在显示器上显示出来,它主要需要5个信号,行同步信号(HS)、场同步信号(VS)和RGB三基色信号。

VGA时序控制模块是须严格按照VGA时序标准产生相应的脉冲信号。

对这5个信号的时序驱动,VGA显示器要严格遵守“VGA工业标准”,即640*480*60Hz模式,否则会损坏VGA显示器。

VGA工业标准要求的频率是:

时钟频率为25.175MHz,行频为31469Hz,场频为59.94Hz。

VGA的时序不是直接由模拟信号产生的,而是由数字信号控制的,为了将数字信号变成模拟信号,中间要经过D/A转换器(THS8134)处理。

VGA接口的显示是通过行、场扫描的方式实现对显示器进行扫描控制实现的。

图2为VGA行扫描、场扫描的时序图。

图2VGA行扫描、场扫描时序图

3.1.2彩条图形生成模块

作为测试模式,该模式可以测试所连接的显示器以及整个VGA显示系统是否正常工作。

在彩条生成模块中产生横彩条和竖彩条,横彩条通过场计数器vcnt计数进行控制,以显示相应的颜色。

设计产生16个彩条,将480行的像素16等份,用vcnt来控制计数区域,不同的区域赋予不同的颜色值。

竖彩条的显示原理与横彩条相似,只是使用行计数器hcnt来进行计数,把每行的640个像素16等份。

一帧屏幕的显示是由600行从上至下扫描,800列从左至右填充(这也是为什么每当电脑几乎要当机的时候,视屏显示从上之下的延迟扫描)然而微观上,一行的行扫描是由超过800个列填充完成,一帧图像超过600行扫描。

实际上是VGA的时序在作怪。

上图是有关HSYNC和VSYCNC的时序图,以800x600x60Hz为例,信息如下:

800X600X50HZ

a段

b段

c段

d段

e段总共n个列像素

HSYNCSignal

列像素

128

88

800

40

1056

o段

p段

q段

r段

s段总共n个行像素

VSYNCSignal

行像素

4

23

600

1

628

HSYNCSignal是用来控制“列填充”,而一个HSYNCSignal可以分为4个段,也就是a(同步段),b(后肩段),c(激活段),d(前肩段)。

HSYNCSignal的a是拉低的128个列像素,b是拉高的88个列像素,至于c是拉高的800个列像素,而最后的d是拉高的40个列像素。

一列总共有1056个列像素。

VSYNCSignal是用来控制“行扫描”。

而一个VSYNCSignal同样可以分为4个段,也是o(同步段),p(后肩段),q(激活段),r(前肩段)。

VSYNCSignal的o是拉低的4个行像素,p是拉高的23个行像素,至于q是拉高的600个行像素,而最后的r是拉高的1个行像素。

一行总共有628个行像素。

“一个行像素”是以“列像素为单位”来定义(以800x600x60Hz为例)如下所示:

1个行像素=1056个列像素。

而“一个列像素”是以“时间位单位”来定义(以800x600x60Hz为例),如下所示:

1个列像素=25ns。

1个行像素=1056个列像素=1056x25ns=2.64us。

(以800x600x60Hz为例)上述内容读者可以发现一个事实,要完成一行的扫描,需要1056个列像素,也就是说需要1056x25ns的时间。

如果要完成所有行的扫描的话,需要628x1056x25ns的时间。

很遗憾的是,不是所有时间都用来显示图片,有一部分的时间是用来同步操作。

而HSYNCSignal只有在的C段和VSYNCSignal的q段的激活段,数据的输入才有效。

3.1.3显示模块

显示模块是整个显示控制器的重要组成部分,各个模块的输出数据都要经过模块处理后送到显示器。

显示模块在VGA显示控制器中起至关重要的作用。

显示模块的输出信号通过D/A转换器的转换连到VGA接口,它是控制器和显示器进行通信的桥梁。

该模块以可以VHDL语言实现。

VGA显示器上的每个像素点可有多种颜色,由三基色信号R,G,B组合构成,VGA在指定色版颜色时,一个颜色频道有6个bit,红、绿、蓝各有64种不同的变化,因此总共有262,144种颜色。

在这其中的任何256种颜色可以被选为色版颜色(而这256种的任何16种可以用来显示CGA模式的色彩)。

如R,G,B信号分别用多位表示的话,则屏幕上现实的颜色会大大丰富,但会好用更多的存储空间,另外还需要配置相应D/A转换器。

本例采用三位R,G,B信号。

颜色

绿

R

1

G

B

行扫描时序要求(单位:

像素,即输出一个像素Pixel的时间间隔)

行同步头

行图像

行周期

对应位置

H_tf

H_ta

H_tb

H_tc

H_td

H_te

H_tg

时间Pixels

8

96

40

640

800

场扫描时序要求(单位:

行,即输出一行Line的时间间隔)

V_tf

V_ta

V_tb

V_tc

V_td

V_te

V_tg

时间Lines

2

25

480

525

根据以上的行,场扫描时许的要求,我们可设置两个计数器,一个行扫描计数器hcnt,进行模800计数;

另一个是场扫描计数器vcnt,进行模525计数。

行扫描计数器的驱动时钟频率(像素的输出频率)按照VGA的工业标准的25.175MHZ。

场扫描计数器以行同步信号hs为驱动时钟,当hs下降沿到来时进行计数。

设置完计数器后,就可对行图像H_td和场图像V_td所对应的640*480个点赋值。

具体实现的程序如下:

/*clock50MHZ:

输入时钟,采用50MHZ;

key:

彩条选择信号;

rgb:

输出三基色;

hs:

行同步信号;

vs:

场同步信号

3.1.4存储模块

当VGA显示器要显示一帧图像时,就会需要比较大的数据量,FPGA芯片内置的ROM存储器难以满足这么大的数据存储要求,必须把图像数据放入外部的存储器中。

FPGA的外部存储器可以有多种选择,如ROM、EEPROM、SDRAM等。

采用何种存储器将最终决定读取控制器的数据读取方式。

如ROM可以用直接产生地址信号的方式对芯片进行访问,而SDRAM常常利用DMA控制方式配合CPU进行读写操作。

本设计采用型号为28C040的4MEEPROM外部存储器,可以在单片内存储整个屏幕的图像。

3.2程序设计:

moduleVGA(clk,reset,vs,hs,red,grn,blu);

inputclk;

//输入时钟,20MHz

inputreset;

//复位

outputvs;

outpuths;

outputred;

outputgrn;

outputblu;

regvs=1;

//场同步

reghs=0;

//行同步

regred=0;

//红

reggrn=0;

//绿

regblu=0;

//蓝

reg[15:

0]clkcnt=16'

h0000;

//时钟计数

0]clkcnt2=16'

reg[9:

0]hcnt=10'

b0000000000;

//行计数

always@(posedgeclk)

begin

if(clkcnt==560-1)//560x50ns=28us

begin

clkcnt<

=clkcnt+1;

hs<

=1;

if(hcnt==525-1)//524行,31.76usx524=16.6ms

begin

hcnt<

=0;

vs<

end

else

=hcnt+1;

end

end

elseif(clkcnt==635-1)//635.2x50ns=31.76us

elseclkcnt<

if(!

vs)//31.76usx524=16.6ms

if(clkcnt2==1200-1)//1200x50ns=60us

clkcnt2<

=clkcnt2+1;

if(vs&

&

!

hs&

(hcnt>

220)&

(hcnt<

300)&

(clkcnt!

=100)&

=110)&

=170)&

=180)&

=240)&

=250)&

=310)&

=320)

&

=380)&

=390)&

=450)&

=460)&

=520))

if((((hcnt>

220)&

(hcnt<

300)&

(clkcnt<

40))||(hcnt>

230)&

290)&

(clkcnt>

50)&

90))||((hcnt>

100)&

110))

||((hcnt>

120)&

160))||((hcnt>

170)&

180))||((hcnt>

255)&

190)&

230))

265)&

180)&

230))||((hcnt>

240)&

250))||((hcnt>

250)&

300))

300))||((hcnt>

310)&

320))||((hcnt>

320)&

370))

380)&

390))||((hcnt>

400)&

450))||((hcnt>

390)&

440))

460)&

510))||((hcnt>

450)&

460))||((hcnt>

510))

520)))

red<

grn<

blu<

else

end

endmodule

4、指导老师对实验设计方案的意见:

指导老师签名:

年月日

二、实验结果与分析

1、实验目的、场地及仪器、设备和材料、实验思路等见实验设计方案

2、实验现象、数据及结果

运行图片如下:

编译成功

进行功能仿真,仿真波形如下:

功能仿真详细波形如下:

进行时序仿真,仿真波形如下:

时序仿真详细波形如下:

设计电路图如下:

管脚设置如下:

显示结果如下:

3、对实验现象、数据及观察结果的分析与讨论:

本实验的目的是做出学号显示程序,一开始并没有显示出学号,出现了很多小问题。

但是经过一一排查之后,最终还是显示出了学号。

4、结论:

本实验初步完成任务,显示器显示出出学号。

5、实验总结

⑴本次实验成败之处及其原因分析:

最失败的地方就是一开始在编写程序的时候没有对实验的中数字的各部分有很好的规划,结果在显示屏上的显示比较混乱。

还有比较遗憾的地方是没有显示出姓名。

但是本次试验也有不少值得表扬的地方,比如,实验中,综合了很多网络上的有用资源,比如,看过了很多有关VGA显示原理的文档,最后才总结出显示原理并且运用出来,一步一步接近所要的结果。

⑵本实验的关键环节及改进措施:

做好本实验需要把握的关键环节:

本实验最应该把我的关键环节应该是在实验之前搞清楚VGA显示器的工作原理以及注意事项,还有就是在实验过程中一定不能心烦气躁,要认真有耐性,因为这个实验的程序比较大,所以要完成这项任务还是需要比较大的工程量和耐心的。

若重做本实验,为实现预期效果,仪器操作和实验步骤应如何改善:

如果重做,应在实验之前把数字显示的各部分规划详细的列在草稿纸上,这样在实验的时候才会准确有效。

⑶对实验的自我评价:

本次试验和之前做过的实验3(用VGA显示彩色条纹)看起来差不多,至少原理是一样的,但是真正实施起来相差就比较大了。

虽然在实验的过程中出现了很多大小困难,但是在认真查阅有关资料并且和以前学过知识融汇之后,最终还是基本完成了任务。

正是这些困难和大小错误,使得我们在实验的过程中不断学习,不断提高。

还有就是这个实验很好的考验和提高了我们的耐性,只有在认真耐心的情况下,才能圆满完成实验内容。

指导老师评语及得分:

签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1