《vga实现显示器条纹显示》由会员分享,可在线阅读,更多相关《vga实现显示器条纹显示(9页珍藏版)》请在金锄头文库上搜索。
1、深 圳 大 学 实 验 报 告 课程名称: 基于VHDL编程的FPGA设计 实验名称: VGA控制器设计实现显示器条纹显示 学院: 信息工程学院 专业: 电子信息工程 班级: 组号: 指导教师: 报告人: 学号: 实验时间: 2012 年 10 月 31 日 星期 三 实验地点 南区N413 实验报告提交时间: 2012.11.11 实验要求:题目、VGA控制器设计实现显示器条纹显示要求:通过FPGA板的VGA接口在显示器上显示一幅640*480由八条不同颜色的横向条纹组成的图像。(从上到下颜色分别为:红,蓝,绿,蓝,红,绿,红,蓝)实验原理:VGA彩色显示器,彩色是由R、G、B(红、绿、蓝)
2、三基色组成,CRT用逐行扫描方式实现图像显示,由VGA控制模块产生的水平同步信号(HS)和垂直同步信号(VS)控制阴极射线枪产生的电子束,打在涂有荧光粉的荧光屏上,产生R、G、B三基色,合成一个彩色像素。扫描从屏幕的左上方开始,由左至右,由上到下,逐行进行扫描,每扫完一行,电子束回到屏幕下一行的起始位置,在回扫期间,CRT对电子束进行消隐,每行结束是用行同步信号HS进行行同步;扫描完所有行,再由场同步信号VS进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。显示需要R,G,B,Hsync(行同步),Vsync(帧同步)五个信号输出到显示器,本设计按照VGA工业标准输出64
3、0*48060Hz。对应的时序如下:图1 VGA接口信号基本时序图表1 25MHz 640*48060Hz模式下VGA的时序实验内容:A.VHDL程序代码library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity Color isport(clk : in std_logic; v,h : buffer std_logic; rgb : buffer std_logic_vector(7 downto 0);end Color;architecture Behavioral of Color i
4、ssignal rgbs : std_logic_vector(7 downto 0):=00000000;signal hs,vs : std_logic;signal fclk: std_logic:=0;begin process(clk,fclk)variable h_count:integer range 0 to 800 :=0;variable v_count:integer range 0 to 521 :=0;begin -if(clkevent and clk=1) then if(fclk=0) then fclk =1;end if;if(fclk=1) then fc
5、lk 16 and h_count112 thenhs =0;else hs 10 and v_count=12 thenvs =0;else vs 160) and (h_count rgbs rgbs rgbs rgbs rgbs rgbs rgbs rgbs rgbs =00000000;end case;else rgbs=00000000;end if;-rgb =rgbs;v =vs;h clk, v = v, h = h, rgb = rgb ); - Clock process definitions clk_process :process beginclk = 0;wait
6、 for clk_period/2;clk = 1;wait for clk_period/2; end process; - Stimulus process stim_proc: process begin - hold reset state for 100 ns. wait for 100 ns; wait for clk_period*10; - insert stimulus here wait; end process;END;仿真波形布局布线后的仿真波形:仿真波形实验结果:ASM图实验过程分析:一、代码分析I. 时钟配置分析。像素时钟配置要求为25Mhz。在程序代码中可以通过两
7、种方式实现25Mhz配置的时钟,第一种是通过上学期EDA中所学的二分频思想;第二种则是调用IP Core的内部时钟。II. 水平扫描周期与垂直扫描周期的分析。通过时序分析图,以及参数表,分别读出了水平与垂直周期下的高低电平所占时钟的个数,并且成功在代码段上实现出来。III.8位颜色数据的读取规则。在FPGA板子的VAG接口上,若端口R9,T8,R8,N8,P8,P6,U5,U4分别对应8位数据的低位到高位,那么红色对应的代码是00000111,绿色对应的代码是00111000,蓝色对应的代码是11000000。2、 仿真分析一个水平扫描周期占800个时钟,一个垂直扫描周期占521线,即521*
8、800个时钟。在水平同步信号HS以及垂直同步信号VS均为高电平状态时,将有颜色数据输出。代码实现60线将出现一种颜色,即共有8条水平颜色带均匀出现在屏幕上,风别为红,蓝,绿,蓝,红,绿,红,蓝。 实验心得总结:通过这一次的实验,可以说对于FPGA是首次从理论过度到实践中去。从一开始的完全一头雾水到最后做到较为透彻的理解,这一过程十分不容易。首先是分频器的书写,这是上一学期EDA的内容,但是要用时,总是忘记得一干二净,当然通过这次的实验,可以说再也不会忘记如何书写分频器了。其次,就是关于扫描周期的时钟参数不懂得如何去读出来,如何在代码上对应上去,当然最终也是在问同学,问老师,解决了问题。最后,就是仿真代码不会看。水平与垂直扫描周期的关系,与颜色数据的关系,一直都看不懂,最后在结合VGA时序图才弄懂。当然还有学会了如何使用FPG