课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)

上传人:小** 文档编号:55663107 上传时间:2018-10-03 格式:DOC 页数:14 大小:160.36KB
返回 下载 相关 举报
课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)_第1页
第1页 / 共14页
课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)_第2页
第2页 / 共14页
课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)_第3页
第3页 / 共14页
课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)_第4页
第4页 / 共14页
课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)》由会员分享,可在线阅读,更多相关《课程设计-基于fpga的vga图像显示设计(图像旋转、放大、单步步进移动和屏保移动)(14页珍藏版)》请在金锄头文库上搜索。

1、 电子信息工程专业综合设计(报告)(课 程 设 计)题目题目 基于基于 FPGAFPGA 的的 VGAVGA 图像显示设计图像显示设计 (图像旋转、放大、单步步进移动和屏保移动) 二级学院 电子信息与自动化学院 专 业 电子信息工程 班 级 学生姓名 学 号 指导教师 时 间 2011.12.26-2012.01.13 基于 FPGA 的 VGA 图像显示设计及应用摘摘 要要:VGA(视频图形阵列)作为一种标准的显示接口得到广泛的应用。本文依据 VGA 显示原理,介绍了利用 FPGA 实现对 VGA 图形控制器 VHDL 设计方法。详细描述了各硬件模块的工作原理及实现途径,并给出了软件设计思路

2、及部分代码。关键词关键词:VGA;FPGA;VHDL0.0. 引言引言随着可编程逻辑器件的不断发展及其价格的不断下降,EDA 开发软件的不断完善,可编程逻辑设计的应用优势逐渐显示出来, 特别是大规模可编程器件。而 FPGA 具有功能强大,开发过程投资小、周期短等特点,成为当今硬件设计的首选方式之一。VGA(视频图形阵列)作为一种标准的显示接口得到广泛地应用。利用 FPGA 芯片和 EDA 设计方法,可以灵活地根据用户需求,设计出针对性强的 VGA 显示控制器,不仅降低了生产成本也可以快速地对产品进行升级换代。 本文设计采用 Quartus II 9.0 软件工具,并以 Altera 公司的 C

3、yclone 系列 FPGA 的器件EP1C12F324C8为主实现硬件平台的设计。1 1方案设计及工作原理方案设计及工作原理1.1 方案设计采用模块化设计方法,我们对 VGA 图形控制器按功能进行层次划分。本设计的 VGA 控制器主要由以下模块组成:VGA 时序控制模块、ROM 内存地址控制模块、RO 内存模块、按键扫描控制模块。如图 1 所示。VGA 时序控 制模块ROM 内存地址 控制模块ROM按键扫描 控制模块50MHz5Hzaddrdata首坐标 xx、yyVGA 接口RGBHS、VSD/ACRT图 1.方案模块框图1.2 工作原理根据 VGA 的显示协议,可以选择不同的显示分辨率。

4、本设计选择的是800*600 的分辨率。根据相应协议,在“VGA 时序控制模块”对行扫描信号 HS和场扫描信号 VS 进行相应的时序控制(具体控制详细信息见“VGA 驱动原理”资料文档) 。“ROM 内存地址控制模块”根据“按键扫描控制模块”获得的图片显示首坐标 xx、yy 信息和“VGA 时序控制模块”传送过来的 hcnt(列计数器值)、vcnt(行计数器值)及相关控制信号计算出正确的内存地址,从 rom 中取出所需要的像素点的三基色数据。本设计的功能实现包括:图像旋转、放大、单步步进移动和屏保移动功能。其中图像的旋转运用了矩阵的转置原理,通过对图像的内存存储地址矩阵进行转置运算获得图像 9

5、0旋转的效果。图像的放大是通过将包括原像素点在内,相邻的 4 个点填写相同的颜色来实现的。2 2模块设计及仿真模块设计及仿真2.1 VGA 时序控制模块VGA 时序控制模块是整个显示控制器的关键部分,其实质就是完成 VGA 显示卡的功能。主要作用就是在一定的工作频率下,产生准确的时序关系(VS垂直同步信号,HS水平同步信号,消隐信号之间的关系) 。及其在准确的时序下对 ROM 存储器数据进行读取。 其中产生准确的时序关系为此模块重点,在 VGA 显示过程中,完成一行扫描所需要的时间称为水平扫描时间,完成一帧(一屏)扫描所需要的时间称为垂直扫描时间。每扫描完一行用行同步信号进行同步;扫描完所有行

6、后用场同步信号进行同步。本文设计采用的是 80060075Hz 模式。依据时序标准,每显示行包含 1056 点,其中 800 点为有效显示区,256 点为消隐区,每行的行同步脉冲低电平宽度为 80 个像素点;同理每场有 625 行,有效行为 600 行,其中场同步脉冲低电平宽度为 3 行。其行、场时序如表 1 ,时序图见图2。表 1 行扫描、场扫描时序Horizontal(in Pixels)Vertical(in lines)FormatPixel Clock MHzActiveVideoFront PorchSync PulseBack PorchActive VideoFront Por

7、chSync PulseBack Porch800,600,75Hz49.5080016801606001321依照这个标准,正好与开发板 EP1C12 外部晶振频率 50MHz 相近,可以直接引用外部晶振时钟作为其驱动时钟(只要所用时钟和协议要求的时钟相差不大,不会影响显示效果,最多就是显示的刷新频率不是真正等于 75Hz 而已) 。图 2 行 HS、场 VS 时序图2.2 ROM 内存地址控制模块整个显示思路是在 800*600 分辨率的显示器上开辟一 256*64 的显示区域来显示图片,因为显示的图片的大小为 256*64。在此区域以外显示指定颜色,例如黑色、蓝色等,作为一个背景色显示。

8、在本模块中,通过在对 ROM 内存地址的控制,实现了图片的旋转和一倍放大功能。以下通过一段关键代码详细讲解其实现原理。(1) 首先分析无旋转状态下的 romaddr_control 的计算原理:romaddr_control 0); end if; end if; end process; -this is Vertical counter process(clk) begin if (rising_edge(clk) then if (hcnt = 800+8 ) then if(vcnt 0); end if; end if; end if; end process; -this is h

9、s pulse process(clk) begin if (rising_edge(clk) then if(hcnt=800+8+8)and (hcnt= 600+0+1) and (vcnt if(fangda_temp = 0) then romaddr_control if(fangda_temp = 0) then romaddr_control if(fangda_temp = 0) then romaddr_control if(fangda_temp = 0) then romaddr_control yy+wide) then qout_tempxx)and(hcnt yy

10、+long) then qout_temp=xx)and(hcnt9)then ttyy := ttyy-10;end if;-key2 elsif ( key3 =0)then ttxx := ttxx+10;-key3 elsif ( key4 =0)then if( ttxx-10)9)then ttxx := ttxx-10;end if; elsif ( key1 =0)then - -key if( key_mode =3)then key_mode =0)then ttxx:=ttxx-96;else yidong_x=0)then ttyy:=ttyy-96;else yido

11、ng_y=0)then ttxx:=ttxx-96;else yidong_x=0)then ttyy:=ttyy-96;else yidong_y=0)then ttxx:=ttxx-192;else yidong_x=0)then ttyy:=ttyy-192;else yidong_y=0)then ttxx:=ttxx-192;else yidong_x=0)then ttyy:=ttyy-192;else yidong_y if(ttxx=544) then yidong_x=536) then yidong_y if(ttxx=544) then yidong_x=536) the

12、n yidong_y if(ttxx=736) then yidong_x=334) then yidong_y if(ttxx=736) then yidong_x=334) then yidong_y if(ttxx=288) then yidong_x=472) then yidong_y if(ttxx=288) then yidong_x=472) then yidong_y if(ttxx=672) then yidong_x=88) then yidong_y if(ttxx=672) then yidong_x=88) then yidong_y clk50MHz, rgbin

13、 = rgb1, hs = hs, vs = vs, r = r, g = g, b = b, hcntout = hpos, vcntout = vpos); i_rom : imgrom PORT MAP(clock = clk50MHz, address = romaddr, q = rgb); i_mid : mid PORT MAP(clk = clk50MHz,fangda_temp=fangda,mode=k ey_mode, xx = txx, yy= tyy ,qin = rgb, hcntin = hpos, vcntin = vpos, qout =rgb1,romaddr_control = romaddr); end;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号