vga显示图像动态移动

一、实验内容

实现vga显示中心200x200的方块动态移动。

二、系统框图

分辨率保持为640x480保持不变,200x200方块在屏幕上移动,总共有5个状态,将3个状态列出,绘制如下框图。

state1:200x200的方块在显示屏上正常移动。

state2:200x200的方块到达显示屏的底部,下一步开始从下往上移动。

state3:200x200的方块到达显示屏的右部,下一步开始从右往左移动。

三、设计分析

简单来说,就是200x200的方块移动到显示屏的边缘时变换方向,可以设计如下的时序。

用两个寄存器作为上下、左右方向控制的变量,初始状态,200x200的方块是从左往右,从上往下移动的,碰到显示器的边沿后,方向改变。200x200的方块替换为相应的显示图像,就可以实现类似屏幕保护程序的功能。

x和y为显示偏移量,设置为每一帧数据改变显示的方向,当显示图像触碰到显示屏的边沿位置时,改变显示的方向。

四、实验步骤

根据设计的时序图,编写实现的代码。

//h_add_flag
always @(posedge clk)
beginif (rst == 1'b1) h_add_flag <= 1'b0;else if (x == 'd1)  //state change  h_add_flag <= 1'b0;else if (x == H_ADDR_TIME - H_BASIC - 'd1)   //state change h_add_flag <= 1'b1;
end//v_add_flag
always @(posedge clk)
beginif (rst == 1'b1) v_add_flag <= 1'b0;else if (y == 'd1)  //state change  v_add_flag <= 1'b0;else if (y == V_ADDR_TIME - V_BASIC - 'd1)   //state change v_add_flag <= 1'b1;
end//x
always @(posedge clk)
beginif (rst == 1'b1) x <= 'd0;else if (vcnt == (V_TOTAL_TIME - 'd1) && hcnt == (H_TOTAL_TIME - 'd1) && h_add_flag == 1'b0)x <= x + 'd1; else if (vcnt == (V_TOTAL_TIME - 'd1) && hcnt == (H_TOTAL_TIME - 'd1) && h_add_flag == 1'b1)x <= x - 'd1;
end//y
always @(posedge clk)
beginif (rst == 1'b1) y <= 'd0;else if (vcnt == (V_TOTAL_TIME - 'd1) && hcnt == (H_TOTAL_TIME - 'd1) && v_add_flag == 1'b0)y <= y + 'd1; else if (vcnt == (V_TOTAL_TIME - 'd1) && hcnt == (H_TOTAL_TIME - 'd1) && v_add_flag == 1'b1)y <= y - 'd1;
end//rgb
always @(posedge clk)
beginif (rst == 1'b1) rgb <= 'd0;else if (h_valid == 1'b1 && v_valid == 1'b1)beginif (h_valid_cnt >= x && h_valid_cnt < x+'d200 && v_valid_cnt >= y && v_valid_cnt < y+'d200)   rgb <= 3'b111;else if (v_valid_cnt < 'd120)rgb <= 3'b100;else if (v_valid_cnt < 'd240)rgb <= 3'b010;else if (v_valid_cnt < 'd360) rgb <= 3'b001;else rgb <= 3'b101;endelsergb <= 'd0;
end

x,y代表的是偏移量,且只有在一帧显示完毕之后,才会有图像的移动。

代码量很少,关键在于设计的思想。

五、实际波形仿真

仿真就不必了,直接上结果。

结果如下。

六、总结与讨论*

1.涉及到优先级的问题,方块的显示为最高优先级,其余靠边站。

2.每一帧图像显示完毕后,才进行图像的偏移,且水平和垂直方向同步变化。

15.基础实验(4)vga显示图像动态移动相关推荐

  1. EIGRP理论详解及基础实验

    EIGRP:( Enhanced Interior Gateway Routing Protocol )增强型内部网关路由协议 EIGRP 是一种Cisco专用协议,同时具备链路状态和距离矢量路由协议 ...

  2. 【电子电路基础实验】数码管

    文章目录 前言 一.硬件特性 二.软件驱动器 1.软件与数码管的接口 2.多路数据块复用器 3. 回到开头的进度条 文章记录一段旅程–使用数码管显示它能显示的任何内容. 前言   数码管的特点是比较亮 ...

  3. 单片机STC89C51入门学习笔记--基础实验例程(一)

    文章目录 前言 1. 点亮第一个LED 1.1 代码 1.2 编译 1.3 程序下载 1.4 结果展示 1.5 常见问题及解决办法 2. LED灯闪烁 2.1 代码 2.2 编译 2.3 程序下载 2 ...

  4. 计算机硬件系统实验教程控制器代码,计算机硬件基础实验教程

    <计算机硬件基础实验教程>是2005年清华大学出版社出版的图书,作者是白中英 .杨春武. 中文名 计算机硬件基础实验教程 出版社 清华大学出版社 页    数 269 页 开    本 1 ...

  5. 树莓派基础实验29:I2C LCD1602实验

    一.介绍    众所周知,虽然液晶显示器和其他显示器大大的丰富了人机交互,但他们有一个共同的弱点.当它们连接到控制器时,需要占用大量的IO口,但是一般的控制器没有那么多的外部端口,也限制了控制器的其他 ...

  6. [nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI

    前一篇分析了前十个基础实验的代码,从这里开始分析后十个~ 一.PPI原理: PPI(Programmable Peripheral Interconnect),中文翻译为可编程外设互连. 在nRF51 ...

  7. 计算机网络基础实验简答题,计算机网络基础实验报告.doc

    计算机网络基础实验报告 计算机科学与技术系 实 验 报 告专业名称课程名称计算机网络基础项目名称局域网组网实验班 级学 号姓 名同组人员实验日期实验目的与要求: (一).实验目的: 通过组建局域网,了 ...

  8. 大学计算机基础网络配置实验报告答案,大学计算机基础实验报告2.doc

    大学计算机基础实验报告2.doc 姓名成瑞峰 班级B130506 学号B13050621洛阳理工学院实验报告系别计算机系班级B130506学号B13050621姓名成瑞峰课程名称大学计算机基础实验日期 ...

  9. CCNA基础实验:配置帧中继网络

    CCNA基础实验:配置帧中继网络       <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:off ...

最新文章

  1. 【题解】P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper
  2. win8/8.1 免密码登录设置
  3. 分析手机网站的优势思维结构图_写了100多篇原创文章,我常用的在线工具网站推荐给大家...
  4. Java Se:自定义ClassLoader
  5. LeetCode 468 validate ip address(正则表达式)
  6. 2020年日历_2020年《故宫日历》发布 纪念紫禁城建成六百年
  7. Java异常之try,catch,finally,throw,throws
  8. GridView 中设置某列,截取字符串加... 和 鼠标放上去字符全部显示
  9. 【theano-windows】学习笔记七——logistic回归
  10. 数组精选题目三连(6)
  11. 为什么要学数据结构?| 原力计划
  12. java table 内容居中_JTable内容居中显示 | 学步园
  13. matlab基于模型的测试与验证,基于模型的测试和验证工具——Reactis
  14. Java克隆--深克隆与浅克隆的区别
  15. android qq音乐歌词怎么实现,Android自定义View,高仿QQ音乐歌词滚动控件!
  16. 拍摄完的图片怎么添加水印?这两个方法简单又有效
  17. 转文:华为鸿蒙操作系统全景解构
  18. Linux命令行如何编辑word文档,在Linux平台下用命令行工具显示Word文档
  19. 浅析即时通讯开发实时通信技术中的视频编解码
  20. 2019元旦消费大数据

热门文章

  1. vs2019 资源管理器 过滤显示文件
  2. 看2014视频三国杀
  3. python解释器之PyPy解释器
  4. 可调恒流驱动LED电路分析
  5. MFC的基本控件的使用~编辑框(Edit Controll)的使用
  6. JWT,springboot整合JWT完成token的验证,token的使用,java架构师技术栈
  7. 圈地运动——多边形构成问题
  8. 【工具】1640- 这 5 款 AI 绘图工具,让你的绘图更高效!
  9. 计算机视觉常见的十种图像标注方法
  10. 推荐一款管理便捷,稳定的eTerm共享放大系统(PID放大系统)