数电实验-vga图像显示控制.doc_第1页
数电实验-vga图像显示控制.doc_第2页
数电实验-vga图像显示控制.doc_第3页
数电实验-vga图像显示控制.doc_第4页
数电实验-vga图像显示控制.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2008211115班 30号 唐秋月 学号:08210460 VGA图像显示控制器数字电路综合实验报告学校: 北京邮电大学 学院:信息与通信工程学院专业: 通信工程 班级: 2008211115 学号: 08210460 班内序号: 30 姓名: 唐秋月 2011年1月5日VGA图像显示控制器1、 摘要和关键词摘要:VGA显示屏显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。通过控制扫描计数器不同值时对RGB三原色信号的控制,来完成显示设计。关键词:行列扫描 行列同步 RGB三原色控制2、 设计任务要求实验目的1. 熟练掌握 VHDL 语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用 EDA 工具进行自顶向下的电子系统设计方法;4. 熟悉 VGA 接口协议规范。实验要求:设计一个VGA 图像显示控制器,达到如下功能: 显示模式为64048060HZ 模式; 用拨码开关控制R、G、B(每个2 位),使显示器可以显示64种纯色; 在显示器上显示横向彩条信号(至少6 种颜色); 在显示器上显示纵向彩条信号(至少8 种颜色); 在显示器上显示自行设定的图形、图像等。 选做:自拟其它功能。三、实验原理1、 显示控制原理 常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(Green Red Blue)基色组成。显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。VGA显示控制器控制 CRT显示图象的过程如图1所示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信号,显示器又开始一个新的垂直刷新循环。四、系统设计(包括设计思路、总体框图、分块设计)总体设计思路:VGA显示器的控制器可划分为3个子模块:I.时钟分频子模块;II.时序控制子模块 ,提供同步信号(h_sync和v_sync)及像素位置信息;III.生成图形子模块,接收像素位置信息,并输出颜色信息;由于系统时钟为50MHZ,实验所需频率为25MHZ,故时钟分频模块只需在程序中通过分频语句完成;生成图形子模块由系统提供;所以重点设计的模块就是时序控制模块。生成图形模块时序控制模块VGA显示器总体系统框图如下: 分频模块 HS系统时 VS钟 R G B拨码输入时序控制模块设计显示显示前沿后沿同步同步前沿后沿 Hcnt=639 Hcnt=799 Hcnt=655 Hcnt=751 行同步状态机状态转移图 Vcnt=479 Vcnt=524 Vcnt=489 Vcnt=491 列同步状态机状态转移图时序控制模块流程图:五、源程序(含注释)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity vgacode isport(sw0 : in std_logic; -拨码开关输入sw1 : in std_logic; sw2 : in std_logic; sw3 : in std_logic; sw4 : in std_logic; sw5 : in std_logic; sw6 : in std_logic; sw7 : in std_logic; clk : in std_logic; -系统时钟输入hsync : out std_logic;-输出行同步、列同步以及R.G.B信号vsync : out std_logic;rdata : out std_logic;gdata : out std_logic;bdata : out std_logic; lrdata : out std_logic;lgdata : out std_logic;lbdata : out std_logic); end vgacode;architecture behave of vgacode is- horizontal timing signalsconstant h_data: integer:=640; -VGA时序中几个关键数据constant h_front: integer:=16;constant h_back: integer:=48;constant h_sync: integer:=96;constant h_period: integer:= h_sync + h_data + h_front + h_back; -800- vertical timing signalsconstant v_data: integer:=480;constant v_front: integer:=10;constant v_back: integer:=33;constant v_sync: integer:=2;constant v_period: integer:= v_sync + v_data + v_front + v_back; -525signal henable, venable : std_logic;signal clk25M : std_logic;signal hcnt: std_logic_vector(9 downto 0);- horizontal pixel countersignal vcnt: std_logic_vector(9 downto 0);- vertical line counterbeginprocess(clk)beginif clkevent and clk = 1 then -由系统时钟分频得到25MHZ的频率信号clk25M = not clk25M;end if;end process;process(clk25M) -行扫描beginif (clk25Mevent and clk25M = 1) thenif hcnt h_period thenhcnt = hcnt + 1;elsehcnt 0);end if;end if;end process;process(clk25M) -行同步beginif (clk25Mevent and clk25M = 1) thenif (hcnt = (h_data + h_front) and hcnt (h_data + h_sync + h_front) thenhsync = 0;else hsync = 1;end if;end if;end process;process(clk25M)-列扫描beginif (clk25Mevent and clk25M = 1) thenif hcnt = (h_data + h_sync + h_front) thenif vcnt v_period thenvcnt = vcnt + 1;elsevcnt 0);end if;end if;end if;end process;process(clk25M)-列同步beginif (clk25Mevent and clk25M = 1) thenif (vcnt = (v_data + v_front) and vcnt (v_data + v_sync + v_front) thenvsync = 0;else vsync = 1;end if;end if;end process;process(clk25M)-行显示beginif (clk25Mevent and clk25M = 1) thenif hcnt h_data thenhenable = 1;elsehenable = 0;end if;end if;end process;process(clk25M)-列显示beginif (clk25Mevent and clk25M = 1) thenif vcnt v_data thenvenable = 1;elsevenable = 0;end if;end if;end process;process(clk25M,henable,venable) -几种显示模式begin if (clk25Mevent and clk25M = 1) thenif(henable=1 and venable=1) thenif sw0 = 0 and sw1 = 0 then -64 color rdata = sw7 ; gdata = sw5 ; bdata = sw3 ; lrdata = sw6; lgdata = sw4 ; lbdata = sw2 ; else if sw1 = 0 and sw0 = 1 then -竖条纹 rdata = hcnt(9); gdata = hcnt(8); bdata = hcnt(7); lrdata = hcnt(6); lgdata = hcnt(5); lbdata = hcnt(4); else if sw1 = 1 and sw0 = 0 then -横条纹 rdata = vcnt(9); gdata = vcnt(8); bdata = vcnt(7); lrdata = vcnt(6); lgdata = vcnt(5); lbdata = vcnt(4); else if sw1 = 1 and sw0 = 1 then -棋盘显示 if ( henable = 1 and venable = 1 ) then if ( hcnt(4) = 0 and hcnt(3) = 0 and hcnt(2) =0and hcnt(1) = 0 and hcnt(0) = 0 ) or (vcnt(4) = 0 and vcnt(3) =0 and vcnt(2) =0 and vcnt(1) = 0 and vcnt(0) = 0 ) thenlrdata = 0;lgdata = 0;lbdata = 0;rdata = 0;gdata = 0;bdata = 0; else lrdata = 1;lgdata = 1 ;lbdata = 0 ;rdata = 1 ;gdata = 0 ;bdata = 0 ; end if; end if; end if; end if; end if; end if;end if;end process;end behave;六、实验器材1 计算机;2 VGA显示器;3 直流稳压电源;4 EDA 开发板及相应元器件七、功能说明本实验实现的功能时通过拨码开关控制显示器的图像显示。拨码开关一共有8个,D0D1控制模式,D2D3为B信号输入D4D5为G信号输入D6D7为R信号输入。其中 D1D0=00,为纯色模式,通过控制前面6个拨码开关来调整显示器的颜色; D1D0=01为横条纹显示; D1D0=10为竖条纹显示; D1D0=11为棋盘方式显示后三个方式下条纹的宽度以及颜色都可以通过程序来修改控制。以下为实验结果截图: 纯红色 纯绿色 纯蓝拨码调整的64种颜色之一 竖条纹横条纹棋盘模式占用系统资源情况:八、故障及问题分析1、在实验中,第一次写出来的程序可以编译通过并很好的实现设计功能,但程序显得过于冗长和复杂,重复性强。于是我在对实验的理解下做了一些简化,结果简化后实验结果与预想的不同。仔细分析程序的逻辑顺序后发现对程序的细小简化改变了程序的逻辑,所以造成了实验结果不对甚至出不来结果的现象。在程序的编写过程中,我们应该首先分析各个端口的优先级顺序,这一点就可以利用if语句首先进行判断。2、而在编写vhdl源文件的过程中,我加深了对信号和变量的延时区别的理解和对process“内部串行外部并行”的理解。3、在实验中,写完程序编译时报错不含顶层实体名,刚开始始终找不出问题在哪,翻阅了数字电路实验教程后,才明白在建立一个新的工程时在写顶层实体名时,实体名、文件名必须和建立工程时所设定的顶层实体名相同。4、实验中,需要对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论