您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 基于VHDL语言的VGA显示与控制
EDA大作业实验报告基于VHDL语言的VGA显示与控制1111000079田宇1111000081王坤目录1.VGA显示原理.......................................................................................................................31.1VGA逐行扫描显示.....................................................................................................31.2VGA时序分析.............................................................................................................32.时序部分的代码实现...........................................................................................................32.1时序部分主要代码.....................................................................................................32.2时序部分的实现.........................................................................................................42.2.1行时序.................................................................................................................42.2.2场时序...................................................................................................................53.控制部分的代码实现...........................................................................................................53.1控制部分主要代码.....................................................................................................53.2控制部分的实现.......................................................................................................123.2.1彩条与彩格..........................................................................................................123.2.2字体显示.............................................................................................................124.硬件平台实验...............................................................................................................121.VGA显示原理1.1VGA逐行扫描显示逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。1.2VGA时序分析(图-1)2.时序部分的代码实现2.1时序部分主要代码ifck'eventandck='1'thenH=H+1;ifH15andH110thenHs='1';elsifH=110thenHs='0';ifH=160andH800thenHen='1';elsifH=800thenHen='0';H=0;endif;endif;endif;ifHs'eventandHs='1'thenV=V+1;ifV11andV14thenVs='1';elsifV=14thenVs='0';ifV=45andV525thenVen='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)beginifclk_d'eventandclk_d='1'thenifsw=11thensw_t=sw_t+1;endif;ifsw=01thensw_t=sw_t-1;endif;endif;endprocess;process(sw_t)beginifsw_t=0000thenR=Rd(s);G=Gd(s);B=Bd(s);elsifsw_t=0001thenR=Rd(s+1);G=Gd(s+1);B=Bd(s+1);elsifsw_t=0010thenR=Rd(s+2);G=Gd(s+2);B=Bd(s+2);elsifsw_t=0011thenR=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=0100thenR=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=0101thenR=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=0110thenR=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=0111thenR=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=1000thenR=Rd((s+t)rem8);G=Gd((s+t)rem8);B=Bd((s+t)rem8);elsifsw_t=1001thenR=Rd((s+t)rem7);G=Gd((s+t)rem7);B=Bd((s+t)rem7);elsifsw_t=1010thenR=Rd((s+t)rem6);G=Gd((s+t)rem6);B=Bd((s+t)rem6);elsifsw_t=1011thenR=Rd((s+t)rem5);G=Gd((s+t)rem5);B=Bd((s+t)rem5);elsifsw_t=1100thenR=Rd((s+t)rem4);G=Gd((s+t)rem4);B=Bd((s+t)rem4);elsifsw_t=1101thenR=Rd((s+t)rem3);G=Gd((s+t)rem3);B=Bd((s+t)rem3);elsifsw_t=1110thenR=Rd((s+t)rem2);G=Gd((s+t)rem2);B=Bd((s+t)rem2);elsifsw_t=1111thenR=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);
本文标题:基于VHDL语言的VGA显示与控制
链接地址:https://www.777doc.com/doc-3372657 .html