VGA显示实验通信1103张加满.docx
《VGA显示实验通信1103张加满.docx》由会员分享,可在线阅读,更多相关《VGA显示实验通信1103张加满.docx(17页珍藏版)》请在冰豆网上搜索。
VGA显示实验通信1103张加满
实验报告
题目:
VGA显示实验
VGA显示
学生姓名
张加满
学号
201120110325
专业班级
通信1103
2013年11月
目录
一实验目的和内容1
1.1实验目的1
1.2实验内容和要求1
1.3实验器材1
二实验原理和设计步骤(含程序及仿真图、测试图等)2
2.1原理:
VGA(VideoGraphicArray)是计算机显示器的众多标准之一,一般有专用显示控制器实现图像的显示。
这里我们尝试用FPGA来实现VGA的图像显示控制。
2
常见的显示器的色彩由三基色RGB(红绿蓝)组成,用逐行扫描的方式进行图像显示。
2
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描。
2
程序:
3
2.2原理:
8
三项目下载13
四实验总结和心得体会13
一实验目的和内容
1.1实验目的
熟悉VHDL语言、熟悉QuartusII软件的使用
掌握IF语句的用法
掌握VGA彩条显示方法
1.2实验内容和要求
采用VHDL编程实现VGA的横彩条、竖彩条和棋盘格显示。
将要显示的图像保存在ROM中,然后通过VGA显示出来。
1.3实验器材
微机1台、QuartusII软件、Modelsim软件、VGA显示器、FPGA实验平台
二实验原理和设计步骤(含程序及仿真图、测试图等)
2.1原理:
VGA(VideoGraphicArray)是计算机显示器的众多标准之一,一般有专用显示控制器实现图像的显示。
这里我们尝试用FPGA来实现VGA的图像显示控制。
常见的显示器的色彩由三基色RGB(红绿蓝)组成,用逐行扫描的方式进行图像显示。
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描。
程序:
1)LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOLORbarIS
PORT(CLK:
INSTD_LOGIC;
HS,VS,R,G,B:
OUTSTD_LOGIC);--行同步,场同步,红,绿,蓝
ENDCOLORbar;
ARCHITECTUREbehavOFCOLORbarIS
SIGNALHcount:
INTEGERRANGE0TO1056:
=0;
SIGNALVcount:
INTEGERRANGE0TO628:
=0;
SIGNALHS1,VS1:
STD_LOGIC:
='1';
SIGNALenable:
STD_LOGIC:
='0';
SIGNALRGB:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
--行扫描计数
p1:
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFHcount<1055THEN--e=1056
Hcount<=Hcount+1;
ELSEHcount<=0;
ENDIF;
ENDIF;
ENDPROCESS;
--产生行同步信号HS
p2:
PROCESS(CLK,Hcount)
BEGIN
IF(Hcount<128)THEN--a=128
HS1<='0';
ELSEHS1<='1';
ENDIF;
ENDPROCESS;
--场扫描计数
p3:
PROCESS(HS1)
BEGIN
IFHS1'EVENTANDHS1='0'THEN
IFVcount<627THEN--S=628
Vcount<=Vcount+1;
ELSEVcount<=0;
ENDIF;
ENDIF;
ENDPROCESS;
--产生场同步信号VS
p4:
PROCESS(Vcount)
BEGIN
IF(Vcount<4)THEN--O=4
VS1<='0';
ELSEVS1<='1';
ENDIF;
ENDPROCESS;
--产生图像显示使能信号enable.enable='1'时(高电平),显示图像。
PROCESS(CLK,Hcount)
BEGIN
IF(Hcount<216orHcount>=1016ORVcount<27ORVcount>=627)THEN
enable<='0';
ELSEenable<='1';
ENDIF;
ENDPROCESS;
--显示横彩条
PROCESS(enable,HS1,Vcount)
BEGIN
IFenable='0'THEN
RGB<="000";
ELSIFVcount<102ANDVcount>=27THENRGB<="100";
ELSIFVcount<177ANDVcount>=102THENRGB<="010";
ELSIFVcount<252ANDVcount>=177THENRGB<="001";
ELSIFVcount<327ANDVcount>=252THENRGB<="110";
ELSIFVcount<402ANDVcount>=327THENRGB<="101";
ELSIFVcount<477ANDVcount>=402THENRGB<="011";
ELSIFVcount<552ANDVcount>=477THENRGB<="111";
ELSERGB<="000";
ENDIF;
ENDPROCESS;
HS<=HS1;VS<=VS1;R<=RGB
(2);G<=RGB
(1);B<=RGB(0);
ENDbehav;
2)LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOLORbalIS
PORT(CLK:
INSTD_LOGIC;
HS,VS,R,G,B:
OUTSTD_LOGIC);--行同步,场同步,红,绿,蓝
ENDCOLORbal;
ARCHITECTUREbehavOFCOLORbalIS
SIGNALHcount:
INTEGERRANGE0TO1040:
=0;
SIGNALVcount:
INTEGERRANGE0TO666:
=0;
SIGNALHS1,VS1:
STD_LOGIC:
='1';
SIGNALenable:
STD_LOGIC:
='0';
SIGNALRGB:
STD_LOGIC_VECTOR(2DOWNTO0);
..............................................(同上)...................................
--显示竖彩条
PROCESS(enable,CLK,Hcount)
BEGIN
IFenable='0'THEN
RGB<="000";
ELSIFHcount<284ANDHcount>=184THENRGB<="100";
ELSIFHcount<384ANDHcount>=284THENRGB<="010";
ELSIFHcount<484ANDHcount>=384THENRGB<="001";
ELSIFHcount<584ANDHcount>=484THENRGB<="110";
ELSIFHcount<684ANDHcount>=584THENRGB<="101";
ELSIFHcount<784ANDHcount>=684THENRGB<="011";
ELSIFHcount<884ANDHcount>=784THENRGB<="111";
ELSERGB<="000";
ENDIF;
ENDPROCESS;
HS<=HS1;VS<=VS1;R<=RGB
(2);G<=RGB
(1);B<=RGB(0);
ENDbehav;
3)LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOLORbarlIS
PORT(CLK:
INSTD_LOGIC;
HS,VS,R,G,B:
OUTSTD_LOGIC);--行同步,场同步,红,绿,蓝
ENDCOLORbarl;
ARCHITECTUREbehavOFCOLORbarlIS
SIGNALHcount:
INTEGERRANGE0TO1039:
=0;
SIGNALVcount:
INTEGERRANGE0TO665:
=0;
SIGNALHS1,VS1:
STD_LOGIC:
='1';
SIGNALenable:
STD_LOGIC:
='0';
SIGNALRGB:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALRGB1:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALRGB2:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
...............同上.................................
--显示网格
PROCESS(enable,HS1,Vcount)
BEGIN
IFenable='0'THEN
RGB1<="000";
ELSIFVcount<102ANDVcount>=27THENRGB1<="100";
ELSIFVcount<177ANDVcount>=102THENRGB1<="010";
ELSIFVcount<252ANDVcount>=177THENRGB1<="001";
ELSIFVcount<327ANDVcount>=252THENRGB1<="110";
ELSIFVcount<402ANDVcount>=327THENRGB1<="101";
ELSIFVcount<477ANDVcount>=402THENRGB1<="011";
ELSIFVcount<552ANDVcount>=477THENRGB1<="111";
ELSERGB1<="000";
ENDIF;
IF