使用VGA实现移动方块

一、代码架构

使用VGA移动方块的代码由三部分构成,分别为时钟模块、VGA驱动模块、显示数据源模块。
(1)通过功能实现过程,对代码架构的划分有了一个明确的思路。即,任何外部器件的构成均可由时钟模块,驱动模块,数据源模块构成。如下图。
(2)通过本模块体会参数化编程,当模块参数较多时使用parameter进行参数化编程。在这里插入图片描述

二、时钟模块

由于本功能是在pc显示器上实现1024768@60Hz的图像显示,所以时钟频率为1344806*60=65MHz。故外部时钟经过pll后生成65MHz的时钟。

三、VGA驱动模块

重点要搞清楚VGA的驱动时序。如下图。
在这里插入图片描述VGA时序分为信号一共有3大类,分别为数据信号R G B,行同步,场同步。其中行同步和场同步信号时序如上图。其他图像分辨率的图像如下图。
在这里插入图片描述
很明显VGA的行场同步信号,使用计数器实现固定的波形周期即可,卡点拉高和拉低的点即可。要特别注意场同步的单位是行,而不是像素。
同时VGA驱动模块需要输出当前扫描坐标,以便数据模块给出当前需要显示的数据。后边无论显示何种图像均以这个坐标做文章。

下面是VGA驱动详细波形
在这里插入图片描述

四、显示模块

VGA驱动模块输出了当前的扫描坐标。本模块根据当前坐标显示边框和移动方块。
此处对VGA显示移动方块进行详细说明。
当我们在VGA上绘制一个方块,需要知道方块的长度和左上角坐标就可以绘制出该方块。此处方块定义为40*40的方块。
首先定义两个方向,direct_x,direct_y,当x方向移动到边界的时候取反当前flag。
其次,根据direct_x,direct_y代表的边框对方块的左上角坐标进行加减。当移动到左边界时让其向右移动,其他方向类似。
最后,当前扫描坐标和方块最表进行比较。当扫描x最表大于方块的x最表并且小于方块的长度时候,显示。y方向类似。
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值