数电实验-vga图像显示控制

上传人:biao****biao 文档编号:144006984 上传时间:2022-08-26 格式:DOC 页数:13 大小:6.92MB
收藏 版权申诉 举报 下载
数电实验-vga图像显示控制_第1页
第1页 / 共13页
数电实验-vga图像显示控制_第2页
第2页 / 共13页
数电实验-vga图像显示控制_第3页
第3页 / 共13页
资源描述:

《数电实验-vga图像显示控制》由会员分享,可在线阅读,更多相关《数电实验-vga图像显示控制(13页珍藏版)》请在装配图网上搜索。

1、2008211115班 30号 唐秋月 学号:08210460 VGA图像显示控制器数字电路综合实验报告学校: 北京邮电大学 学院:信息与通信工程学院专业: 通信工程 班级: 2008211115 学号: 08210460 班内序号: 30 姓名: 唐秋月 2011年1月5日VGA图像显示控制器一、 摘要和关键词摘要:VGA显示屏显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信

2、号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。通过控制扫描计数器不同值时对RGB三原色信号的控制,来完成显示设计。关键词:行列扫描 行列同步 RGB三原色控制二、 设计任务要求实验目的1. 熟练掌握 VHDL 语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用 EDA 工具进行自顶向下的电子系统设计方法;4. 熟悉 VGA 接口协议规范。实验要求:设计一个VGA 图像显示控制器,达到如下功能: 显示模式为64048060HZ 模式; 用拨码开关控制R、G、B(每个2 位),使显示器可

3、以显示64种纯色; 在显示器上显示横向彩条信号(至少6 种颜色); 在显示器上显示纵向彩条信号(至少8 种颜色); 在显示器上显示自行设定的图形、图像等。 选做:自拟其它功能。三、实验原理1、 显示控制原理 常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(Green Red Blue)基色组成。显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完

4、所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。VGA显示控制器控制 CRT显示图象的过程如图1所示2、VGA时序信号计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B 三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。对于模拟显示设备,如模拟CRT 显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。设计 VGA 控制器的关键是产生符合VGA 接口协议规定的行同步和场同步信号,它们的时序关系如下图所示:h_sync:水平同步信号(负脉冲),每个水平扫描周期显示器刷新一行;v_sync:垂直同步

5、信号(负脉冲),每个垂直扫描周期显示器刷新一帧;行同步信号(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)。当显示器接收到控制器

6、输出的v_sync信号,则开始一个新的垂直刷新循环,同时控制器输出h_sync信号。当经过P+Q=1.084ms的时间后,准备开始水平刷新循环,当h_sync信号的下降沿到来时,即开始刷新第一行(行数加1)。再经过B+C = 5.66ms的时间后,开始刷新第一行的第一个像素(列数加1),并按照所需的时钟频率,刷新此行中其余像素。直到显示器接收到下一个h_sync信号,又开始刷新第二行。 重复此过程,直到刷新到屏幕的底部。当刷新了最下面一行的最后一个像素后,显示器即完成了一帧的刷新,控制器又输出v_sync信号,显示器又开始一个新的垂直刷新循环。四、系统设计(包括设计思路、总体框图、分块设计)总

7、体设计思路: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 行同

8、步状态机状态转移图 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; s

9、w6 : 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 o

10、f 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;const

11、ant 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_lo

12、gic_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(

13、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 thenvc

14、nt = 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) the

15、nif 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

16、 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 =

17、 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

18、) = 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 计算机

19、;2 VGA显示器;3 直流稳压电源;4 EDA 开发板及相应元器件七、功能说明本实验实现的功能时通过拨码开关控制显示器的图像显示。拨码开关一共有8个,D0D1控制模式,D2D3为B信号输入D4D5为G信号输入D6D7为R信号输入。其中 D1D0=00,为纯色模式,通过控制前面6个拨码开关来调整显示器的颜色; D1D0=01为横条纹显示; D1D0=10为竖条纹显示; D1D0=11为棋盘方式显示后三个方式下条纹的宽度以及颜色都可以通过程序来修改控制。以下为实验结果截图: 纯红色 纯绿色 纯蓝拨码调整的64种颜色之一 竖条纹横条纹棋盘模式占用系统资源情况:八、故障及问题分析1、在实验中,第一次

20、写出来的程序可以编译通过并很好的实现设计功能,但程序显得过于冗长和复杂,重复性强。于是我在对实验的理解下做了一些简化,结果简化后实验结果与预想的不同。仔细分析程序的逻辑顺序后发现对程序的细小简化改变了程序的逻辑,所以造成了实验结果不对甚至出不来结果的现象。在程序的编写过程中,我们应该首先分析各个端口的优先级顺序,这一点就可以利用if语句首先进行判断。2、而在编写vhdl源文件的过程中,我加深了对信号和变量的延时区别的理解和对process“内部串行外部并行”的理解。3、在实验中,写完程序编译时报错不含顶层实体名,刚开始始终找不出问题在哪,翻阅了数字电路实验教程后,才明白在建立一个新的工程时在写

21、顶层实体名时,实体名、文件名必须和建立工程时所设定的顶层实体名相同。4、实验中,需要对每一个端口指定器件的引脚,在引脚指定过程中需要参照开发系统所给的I/O端口映射表,通过开发平台上每个I/O器件附近的I/O编号,在映射表中找到相应的引脚名,填入相应的对话框。5、在实验中所遇到的还有一个问题就是频率的选择,我们采用IO板上的时钟资源,进行分频得到了25M这一频率,保证了实验的正常完成。这些都是实验中的小问题,在实验中只有养成严谨科学的态度和作风,认真注意各个实验细节,才能保证实验的最后成功。九、实验心得通过这次实验,我对数字电路的软件和硬件方面的知识有了进一步的了解。实验开始选题时,觉得vga

22、图像显示非常有意思,于是选了这个题目。但是因为以前从来没有了解过VGA的显示原理和工作模式,刚开始入手的时候觉得非常茫然,不知道从何处下手。在老师的引导下,我按照实验的整体过程,先查阅了相关资料,了解了VGA显示和时序控制的相关原理,以及相关模块的连接。于是明白这次实验设计的重点就在于VGA时序控制模块的设计。再仔细分析时序关系,画出状态转移图,同步区、显示区、消隐区时计数器的数值,便可很方便的编出程序。虽然在实验中也遇到了各种各样的问题,但最终都一一解决,也更让我体会到实验中的乐趣。同时,通过VGA显示实验,我加深了对EDA技术的理解,初步掌握了QuartusII软件图形编辑的使用。我接触了使用VHDL编程的一些基本技术和方法,初步掌握QuartusII软件的使用方法、进一步熟悉了数字系统VHDL设计和仿真的流程以及硬件编程下载的基本技能,对以后EDA的继续学习奠定了基础。十、参考文献数字电路与逻辑设计实验教程13

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!