基于VHDL语言的VGA显示与控制.docx
- 文档编号:24575943
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:14
- 大小:1.05MB
基于VHDL语言的VGA显示与控制.docx
《基于VHDL语言的VGA显示与控制.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的VGA显示与控制.docx(14页珍藏版)》请在冰豆网上搜索。
基于VHDL语言的VGA显示与控制
EDA大作业实验报告
基于VHDL语言的VGA显示与控制
1111000079田宇
1111000081王坤
1.VGA显示原理
1.1VGA逐行扫描显示
逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。
1.2VGA时序分析
(图-1)
2.时序部分的代码实现
2.1时序部分主要代码
ifck'eventandck='1'thenH<=H+1;
ifH>15andH<110thenHs<='1';
elsifH>=110thenHs<='0';
ifH>=160andH<800thenHen<='1';
elsifH=800thenHen<='0';
H<=0;
endif;
endif;
endif;
ifHs'eventandHs='1'thenV<=V+1;
ifV>11andV<14thenVs<='1';
elsifV>=14thenVs<='0';
ifV>=45andV<525thenVen<='1';
elsifV=525thenVen<='0';
V<=0;
endif;
endif;
endif;
此部分代码为时序部分主要代码。
2.2时序部分的实现
2.2.1行时序
H:
行
HS:
行消隐信号
Hen:
允许显示
由时序图(图-1)可以看出,行时序中需要有行消隐、行同步、显示前后沿等。
其中有效显示信号为640个周期。
2.2.2场时序
与行时序相类似。
3.控制部分的代码实现
3.1控制部分主要代码
process(clk_d,sw)
begin
ifclk_d'eventandclk_d='1'then
ifsw="11"then
sw_t<=sw_t+1;
endif;
ifsw="01"then
sw_t<=sw_t-1;
endif;
endif;
endprocess;
process(sw_t)
begin
ifsw_t="0000"thenR<=Rd(s);G<=Gd(s);B<=Bd(s);
elsifsw_t="0001"thenR<=Rd(s+1);G<=Gd(s+1);B<=Bd(s+1);
elsifsw_t="0010"thenR<=Rd(s+2);G<=Gd(s+2);B<=Bd(s+2);
elsifsw_t="0011"thenR<=Rd(s+3);G<=Gd(s+3);B<=Bd(s+3);
ifs=5andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
elsifsw_t="0100"thenR<=Rd(s+4);G<=Gd(s+4);B<=Bd(s+4);
ifs=3andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(0);G<=Gd
(1);B<=Bd(3);
endif;
elsifsw_t="0101"thenR<=Rd(s+5);G<=Gd(s+5);B<=Bd(s+5);
ifs=2andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd
(2);B<=Bd(0);
endif;
elsifsw_t="0110"thenR<=Rd(s+6);G<=Gd(s+6);B<=Bd(s+6);
ifs=1andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(0);G<=Gd(0);B<=Bd(3);
endif;
elsifsw_t="0111"thenR<=Rd(s+7);G<=Gd(s+7);B<=Bd(s+7);
ifs=3andt=5and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(0);G<=Gd(0);B<=Bd(0);
endif;
elsifsw_t="1000"thenR<=Rd((s+t)rem8);G<=Gd((s+t)rem8);B<=Bd((s+t)rem8);
elsifsw_t="1001"thenR<=Rd((s+t)rem7);G<=Gd((s+t)rem7);B<=Bd((s+t)rem7);
elsifsw_t="1010"thenR<=Rd((s+t)rem6);G<=Gd((s+t)rem6);B<=Bd((s+t)rem6);
elsifsw_t="1011"thenR<=Rd((s+t)rem5);G<=Gd((s+t)rem5);B<=Bd((s+t)rem5);
elsifsw_t="1100"thenR<=Rd((s+t)rem4);G<=Gd((s+t)rem4);B<=Bd((s+t)rem4);
elsifsw_t="1101"thenR<=Rd((s+t)rem3);G<=Gd((s+t)rem3);B<=Bd((s+t)rem3);
elsifsw_t="1110"thenR<=Rd((s+t)rem2);G<=Gd((s+t)rem2);B<=Bd((s+t)rem2);
elsifsw_t="1111"thenR<=Rd((s+t)rem1);G<=Gd((s+t)rem1);B<=Bd((s+t)rem1);
--ifs=5andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
--endif;
--ifs=4andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
--endif;
--ifs=3andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
--endif;
--ifs=2andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
--endif;
--ifs=1andt=4and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
--endif;
--ifs=3andt=5and(n=0orm=0orn=79orm=59orn=1orm=1orn=78orm=58)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
--endif;
ifs=1andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=2andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=4andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=5andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=5thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=4thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=2thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=2andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=4andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=5andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=2andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=3andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=4andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=5andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=2thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=4thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=5thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=1andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=1thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=2thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=3thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=4thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=5thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifs=6andt=6thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
ifm=7andn=5and(m=15orn=10)thenR<=Rd(3);G<=Gd(3);B<=Bd(3);
endif;
endif;
endprocess;
3.2控制部分的实现
3.2.1彩条与彩格
通过对行信号、场信号计数,打印出彩条。
通过拨码开关,控制彩条向左走或向右走。
通过REM对信号求余,打印出彩格。
3.2.2字体显示
与彩格控制类似。
4.硬件平台实验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 VGA 显示 控制