15.基础实验(4)vga显示图像动态移动
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显示图像动态移动相关推荐
- EIGRP理论详解及基础实验
EIGRP:( Enhanced Interior Gateway Routing Protocol )增强型内部网关路由协议 EIGRP 是一种Cisco专用协议,同时具备链路状态和距离矢量路由协议 ...
- 【电子电路基础实验】数码管
文章目录 前言 一.硬件特性 二.软件驱动器 1.软件与数码管的接口 2.多路数据块复用器 3. 回到开头的进度条 文章记录一段旅程–使用数码管显示它能显示的任何内容. 前言 数码管的特点是比较亮 ...
- 单片机STC89C51入门学习笔记--基础实验例程(一)
文章目录 前言 1. 点亮第一个LED 1.1 代码 1.2 编译 1.3 程序下载 1.4 结果展示 1.5 常见问题及解决办法 2. LED灯闪烁 2.1 代码 2.2 编译 2.3 程序下载 2 ...
- 计算机硬件系统实验教程控制器代码,计算机硬件基础实验教程
<计算机硬件基础实验教程>是2005年清华大学出版社出版的图书,作者是白中英 .杨春武. 中文名 计算机硬件基础实验教程 出版社 清华大学出版社 页 数 269 页 开 本 1 ...
- 树莓派基础实验29:I2C LCD1602实验
一.介绍 众所周知,虽然液晶显示器和其他显示器大大的丰富了人机交互,但他们有一个共同的弱点.当它们连接到控制器时,需要占用大量的IO口,但是一般的控制器没有那么多的外部端口,也限制了控制器的其他 ...
- [nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI
前一篇分析了前十个基础实验的代码,从这里开始分析后十个~ 一.PPI原理: PPI(Programmable Peripheral Interconnect),中文翻译为可编程外设互连. 在nRF51 ...
- 计算机网络基础实验简答题,计算机网络基础实验报告.doc
计算机网络基础实验报告 计算机科学与技术系 实 验 报 告专业名称课程名称计算机网络基础项目名称局域网组网实验班 级学 号姓 名同组人员实验日期实验目的与要求: (一).实验目的: 通过组建局域网,了 ...
- 大学计算机基础网络配置实验报告答案,大学计算机基础实验报告2.doc
大学计算机基础实验报告2.doc 姓名成瑞峰 班级B130506 学号B13050621洛阳理工学院实验报告系别计算机系班级B130506学号B13050621姓名成瑞峰课程名称大学计算机基础实验日期 ...
- CCNA基础实验:配置帧中继网络
CCNA基础实验:配置帧中继网络 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:off ...
最新文章
- 【题解】P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper
- win8/8.1 免密码登录设置
- 分析手机网站的优势思维结构图_写了100多篇原创文章,我常用的在线工具网站推荐给大家...
- Java Se:自定义ClassLoader
- LeetCode 468 validate ip address(正则表达式)
- 2020年日历_2020年《故宫日历》发布 纪念紫禁城建成六百年
- Java异常之try,catch,finally,throw,throws
- GridView 中设置某列,截取字符串加... 和 鼠标放上去字符全部显示
- 【theano-windows】学习笔记七——logistic回归
- 数组精选题目三连(6)
- 为什么要学数据结构?| 原力计划
- java table 内容居中_JTable内容居中显示 | 学步园
- matlab基于模型的测试与验证,基于模型的测试和验证工具——Reactis
- Java克隆--深克隆与浅克隆的区别
- android qq音乐歌词怎么实现,Android自定义View,高仿QQ音乐歌词滚动控件!
- 拍摄完的图片怎么添加水印?这两个方法简单又有效
- 转文:华为鸿蒙操作系统全景解构
- Linux命令行如何编辑word文档,在Linux平台下用命令行工具显示Word文档
- 浅析即时通讯开发实时通信技术中的视频编解码
- 2019元旦消费大数据