EDA实验报告-VGA彩条显示(共10页).doc
-
资源ID:14471664
资源大小:2.22MB
全文页数:10页
- 资源格式: DOC
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
EDA实验报告-VGA彩条显示(共10页).doc
精选优质文档-倾情为你奉上班级:光094-2姓名:学号:4229指导教师:郭英彪 EDA技术实验报告VGA彩条实验VGA彩条信号显示控制一、实验目的:1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 熟悉 VGA 接口协议规范。4.通过对VGA接口的显示控制设计,理解VGA接口的时序工作原理,掌握通过计数器产生时序控制信号的方法以及用MEGEFUNCTION制作锁相环的方法。二、 实验原理1、 显示控制原理常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB( Red )基色组成。显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。2、VGA时序信号计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B 三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。对于模拟显示设备,如模拟CRT 显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。设计 VGA 控制器的关键是产生符合VGA 接口协议规定的行同步和场同步信号,它们的时序关系如下图所示:h_sync:水平同步信号(负脉冲),每个水平扫描周期显示器刷新一行;v_sync:垂直同步信号(负脉冲),每个垂直扫描周期显示器刷新一帧;行同步信号(HS)场同步信号(VS)时序名称时钟数(像素数)时序名称行数前沿16前沿10行同步96场同步2数据640数据480后沿48后沿33总像素数800总行数525按照每秒60帧的刷新速度来计算,所需要的时钟频率为: 频率60Hz(帧数)×525(行)×800(每一行像素数)25.2MHz 所以我们通过开发系统的50MHz时钟资源,通过时钟分频产生25MHz的频率即可。虽然没有达到精确的25.2MHz的时钟频率(刷新率可能会是59Hz),但是并不会造成影响。3、VGA显示器的工作过程 以屏幕左上角的那个像素作为原点(1,1)。当显示器接收到控制器输出的v_sync信号,则开始一个新的垂直刷新循环,同时控制器输出h_sync信号。当经过P+Q=1.084ms的时间后,准备开始水平刷新循环,当h_sync信号的下降沿到来时,即开始刷新第一行(行数加1)。再经过B+C = 5.66ms的时间后,开始刷新第一行的第一个像素(列数加1),并按照所需的时钟频率,刷新此行中其余像素。直到显示器接收到下一个h_sync信号,又开始刷新第二行。 重复此过程,直到刷新到屏幕的底部。当刷新了最下面一行的最后一个像素后,显示器即完成了一帧的刷新,控制器又输出v_sync信号,显示器又开始一个新的垂直刷新循环。三、 实验内容:1. 输入源程序;2.全程编译;3.时序仿真;4. 引脚锁定;5.编译文件下载;四、最终硬件测试结果:五、 实验体会:通过对EDA课程的学习,我对电路的软件和硬件方面的知识有了进一步的了解,至少对于QuartusII经历了由陌生到熟悉应用的过程,这次VGA实验是我本科到现在做过的最有意思的实验之一。刚开始实验时,简单地认为实验是简单而愉快的。但在一次上课时老师的一句幽默“我很欣慰,果然没有一个人理解了状态机的设计”让我认识到自己的浅薄与无知。状态机和系统的设计当时在我的脑海里就是一团乱麻,“剪不断,理还乱”。这都什么跟什么啊,我突然意识到我是不是跟我的学科脱节啦,所以,我决定在本科的有限时间里多动手实验、学习,努力去发现自己的不足,于是我申请进了学院的实验室学习,感觉这门课对我的影响还是恨大的,张老师质朴的教学方式和把我们当成自己孩子的教诲,让我很是欣慰。在这次课程以前从来没有了解过VGA的显示原理和工作模式,刚开始学习的时候觉得非常茫然,不知道从何处下手。在老师的引导下,我按照实验的整体过程,先看了课本,了解了VGA显示和时序控制的相关原理。于是明白这次实验设计的重点就是VGA时序控制模块的设计。再仔细分析时序关系,画出状态转移图,同步区、显示区、消隐区时计数器的数值,便可很方便的编出程序。虽然在实验中也遇到了各种各样的问题,但最终都一一解决,也更让我体会到实验中的乐趣。同时,通过VGA显示实验,我加深了对EDA技术的理解,初步掌握了QuartusII软件图形编辑的使用。我接触了使用VHDL编程的一些基本技术和方法,初步掌握QuartusII软件的使用方法、进一步熟悉了数字系统VHDL设计和仿真的流程以及硬件编程下载的基本技能,对以后EDA的继续学习奠定了基础。六、 实验程序:use ieee.std_std_1164.all;entity color is port(clk,md:IN std_logic;/md为模式选择输入 rs,vs,r,g,b:OUT std_logic);end color;architecture behev of color is signal hs1,vs1,pclk,cclk:std_logic; signal mmd:std_logic_vector(1 downto 0); signal fs:std_logic_vector(3 downto 0); signal cc:std_logic_vector(4 downto 0);/行同步、横彩条产生 signal ll:std_logic_vector(8 downto 0);/场同步、竖彩条产生 signal grbx:std_logic_vector(3 downto 1); signal grby:std_logic_vector(3 downto 1); siganl grbp:std_logic_vector(3 downto 1); signal grb;std_logic_vector(3 downto 0);begin grb(2)<=(grbp(2) xor md) and hs1 and vs1; grb(3)<=(grbp(3) xor md) and hs1 and vs1; grb(1)<=(brbp(1) xor md) and hs1 and vs1; process(md) begin if md'event and md='0' then if mmd="10" then mmd<="00" else mmd<=mmd+1; end if; end if; end process; process(mmd) begin if mmd="00"then grbp<=grbx;/横彩条 elsif mmd="01" then grby<=grby;/选择竖彩条 elsif mmd="10" then grby<=grbx xor gbry; else grbp<="000" end if; end process; process(clk) begin if clk'event and clk='1' then /外部晶振20M,20分频 if fs=20 then fs<="0000" else fs<=(fs+1); end if; end if; end process; fclk<=fs(3); cclk<=cc(4); process(fclk) begin if fclk'event and fclk='1' then if cc=29 then cc<="00000”; else cc<=cc+1; end if; end if; end process; process(cclk) begin if cclk'event and cclk='0' then if ll=481 then ll<="" else ll<=ll+1; end if; end if; end process; process(cc,ll) beign if cc>23 then hs<='0' else hs1<='1' end if; if ll>479 then vs1<='0' else vs1<='1' end if; end process; process(cc,ll) begin if cc<3 then grbx<="111" elsif cc<6 then grbx<="110" elsif cc<9 then grbx<="101" elsif cc<13 then grbx<="100" elsif cc<15 then grbx<="011" elsif cc<18 then grbx<="010" elsif cc<21 then grbx<="001" else grbx<="000" end if; if ll<60 then grby<="111" elsif ll<120 then grby<="110" elsif ll<180 then grby<="101" elsif ll<240 then grby<="100" elsif ll<300 then grby<="011" elsif ll<360 then grby<="010" elsif ll<420 then grby<="001" else grby<="000" end if; end process; hs<=hs1; vs<=vs1; r<=grb(2); g<=grb(1); b<=grb(0);end behav;专心-专注-专业