FPGA实现VGA显示(一)——————屏幕驱动及color_bar显示
VGA显示,就是屏幕应用VGA接口线点亮屏幕。同样需要遵守一定的条件。符合时序,才能点亮屏幕,控制屏幕的显示。
这里参考
http://dengkanwen.com/70.html
感谢,同时这里还有VGA协议标准
链接:https://pan.baidu.com/s/1cqJ8iOo9KRhTBnXuIkPe5w 提取码:igee
同样是来自邓堪文博客内容。里边干货挺多的,可以学习学习。
VGA这里先说说笔者自己的思路。很简单,两个计数器,场同步和行同步,到时间拉高或拉低,符合时序要求。文档里有很多,这里我写的是640*480@60Hz,因为我买的开发板是黑金的AX309,用的是565色。所以后面是16。具体可以看开发板配的指南。
所有的原理已经大概结束,基础的知识可以随便百度,扫描的方式的等等。
别人的总是好的,自己的总是差的!!!两种写法,这篇先贴我自己的。
module VGA(clk,rst_n,vga_hs,vga_vs,vga_r,vga_g,vga_b);
//---------------------------------
input clk ;
input rst_n ;
//---------------------------------
output vga_hs ;
output vga_vs ;
output [4:0] vga_r ;
output [5:0] vga_g ;
output [4:0] vga_b ;
//---------------------------------
parameter Hor_Total_Time = 800 ; //行显示帧长
parameter Hor_Sync = 96 ; //行同步脉冲
parameter Hor_Back_Porch = 48 ; //行显示后沿(同显示前沿,这里由两个时段合成)
parameter Hor_Addr_Time = 640 ; //行显示区域
parameter Hor_Front_Porch = 16 ; //行显示前沿
parameter Ver_Total_Time = 525 ; //列显示帧长
parameter Ver_Sync = 2 ; //列同步脉冲
parameter Ver_Back_Porch = 33 ; //列显示后沿(同显示前沿,这里由两个时段合成)
parameter Ver_Addr_Time = 480 ; //列显示区域
parameter Ver_Front_Porch = 10 ; //列显示前沿
//---------------------------------
/*产生时钟,这里可以用pll直接生成,因为这里恰巧是25000000,所以把系统时钟打了一拍*/
reg vga_clk;
always@(posedge clk )
beginvga_clk <= ~vga_clk;
end
//两个计数器//行计数器
reg [9:0] x_cnt;
always@(posedge vga_clk or negedge rst_n)
beginif(!rst_n)x_cnt <= 10'd1;else if(x_cnt == Hor_Total_Time)x_cnt <= 10'd1;else x_cnt <= x_cnt + 1'b1;
end
//列计数器
reg [9:0] y_cnt;
always@(posedge vga_clk or negedge rst_n)
beginif(!rst_n)y_cnt <= 10'd1;else if(y_cnt == Ver_Total_Time && x_cnt == Hor_Total_Time)y_cnt <= 10'd1;else if(x_cnt == Hor_Total_Time)y_cnt <= y_cnt + 1'b1;
end
assign vga_hs = (x_cnt < Hor_Sync) ? 1'b1 : 1'b0;
assign vga_vs = (y_cnt < Ver_Sync) ? 1'b1 : 1'b0;reg vga_en;
always@(*)
beginvga_en <= (x_cnt >= (Hor_Sync + Hor_Back_Porch) && x_cnt <= (Hor_Sync + Hor_Back_Porch + Hor_Addr_Time) && y_cnt >= (Ver_Sync + Ver_Back_Porch) && y_cnt <= (Ver_Sync + Ver_Back_Porch + Ver_Addr_Time));
endreg [15:0] rgb;
assign {vga_r,vga_g,vga_b} = rgb;
always@(*)
beginif(vga_en)beginif(x_cnt <= (Hor_Sync + Hor_Back_Porch + 160 - 1'b1))rgb <= 16'h0fff;else if(x_cnt <= (Hor_Sync + Hor_Back_Porch + 320 - 1'b1))rgb <= 16'hf0ff;else if(x_cnt <= (Hor_Sync + Hor_Back_Porch + 480 - 1'b1))rgb <= 16'hff0f;else rgb <= 16'hfff0;endelse rgb <= 16'd0;
endendmodule
真正显示的,其实只有640*480这一段区域。下一篇介绍其他人的显示,我后面的字符图片显示,也都是在其基础上的。
FPGA实现VGA显示(一)——————屏幕驱动及color_bar显示相关推荐
- FPGA基于VGA的彩条、字符及图片显示
文章目录 1.vga简介 2.vga彩条显示 2.1.原理分析 2.2.代码实现 2.3.测试结果 3.实现字符串的显示 3.1.生成点阵字模 3.2.代码编写(文尾会附上整体代码) 3.3.测试结果 ...
- python PyQt5中文教程☞【第二节】PyQt5基本功能(创建窗口、应用程序图标、显示提示语、通过按钮关闭窗口、消息框(关闭窗口确认框)、窗口显示在屏幕中间【居中显示】)
引用文章:http://code.py40.com/pyqt5/ 文章目录 简单的例子:创建一个小窗口 应用程序的图标 显示提示语 通过按钮关闭窗口 消息框(关闭窗口确认框) 窗口显示在屏幕的中间[居 ...
- 联想服务器id显示感叹号,网卡驱动安装后显示感叹号
相关文章: 故障现象: 网卡驱动安装后显示感叹号,如图: 原因分析: 网卡驱动安装后显示有感叹号故障绝大部分仍是驱动安装错误导致,可通过重新下载并安装官网提供驱动或者通过第三方软件更新解决,亦或通过彻 ...
- linux显示iphone屏幕,关于 iphone 文字显示
首先构造一个字体,我在初始化种构造了一个公共使用的. UIFont *mFont = [UIFont fontWithName:@"Arial" size:20.0]; 我是这样构 ...
- 基于FPGA的VGA显示彩条、字符、图片
目录 一.VGA介绍 (一) VGA协议 (二) VGA端口介绍 (三) 色彩原理 (四)VGA显示原理 VGA通信协议: VGA时序解析 时钟分频 二.实现 1.彩条显示 2.字符显示 3.图片显 ...
- 基于FPGA的VGA显示对贪吃蛇游戏的设计
基于FPGA的VGA显示对贪吃蛇游戏的设计 摘要 目前,电子数码产品已经进入了人生活的方方面面,而大多数电子产品都依靠显示屏来传递信息,由此可见用电路对显示屏进行控制的研究有很大的实用价值和市场需求. ...
- FPGA实现VGA显示(六)——————多字符显示及基于fpga的“打字机”实现
前面笔者总结了如何显示单字符,设立通过一个简单的任务来总结如何实现vga多字符显示. 实验要求 基础: 由PC通过UART发送数据在VGA显示.数据可以为字母,数字,汉字(任选10个字),VGA分为左 ...
- FPGA实现VGA显示(三)——————单个字符显示
这里笔者首先记录一个问题,给自己提个醒,所有的模块都有一点点的问题,在行数列数都可能有一行像素的误差,有可能是在驱动和显示模块的问题,等后面修改,这里第一次做,只要不影响显示,实现功能. 字符显示只修 ...
- FPGA实现VGA显示(二)——————color_bar显示及方框移动(参考开拓者FPGA开发指南)
首先感谢所有开源分享资源的博主或者机构个人,这篇主要参考开拓者FPGA开发指南.通过分析代码,理清思路. 主要分为四个模块,顶层模块,时钟分频模块,VGA显示模块,VGA驱动模块.前三个模块在任何时候 ...
最新文章
- java反射克隆对象_Java反射 - 2(对象复制,父类域,内省)
- pppoe错误代码 linux,PPPOE常见故障代码及分析
- mysql外键引用语法_mysql – 外键语法
- 61组第二次团队作业
- android 从网络加载图片并显示
- talend工具中往oracle插数据报ORA-01461: can bind a LONG value only for insert into a LONG colum...
- 博弈论——斐波那契博弈Fibonacci Game
- umijs有什么好处_umijs核心代码解读
- wpa_supplicant使用方法(WiFi工具)
- BOM差异对比——Spreadsheet Compare
- java 调用odi_[转]ODI定时任务
- 浅谈工业网络架构及安全
- 无需PS,这些工具也能轻松更换寸照底色
- android蓝牙python,android – 使用SL4A(Python)和蓝牙
- 洛谷P1251 餐巾计划问题 无汇源最小费用流
- ZeroMQ 中文指南 第一章 ZeroMQ基础【转载】
- SQL除法怎么用代码表示
- 大学综合测评中,使用VBA代码自动完成EXCEL成绩表
- echarts 地图行政区划压缩_echarts地图数据的压缩
- 从键盘读入一个字符,如果该字符是大写字母则转小写,如果该字符是小写字母则转大写,如果不是字符则输出不是字母。
热门文章
- 在win10环境中安装xilinx vivado IDE时出现的问题及解决方法
- HTTP中ip地址伪造的问题以及解决办法
- 关于centos启动报错:Failed to start Crash recovery kernel arming的解决方案
- C#在foreach中重用变量是否有原因?
- JavaScript等同于printf / String.Format
- 计算机模块的概念,用户定义类模块概念-计算机二级-Access
- Spring复杂类型数据依赖注入
- 麦克纳姆轮全向移动机器人运动学模型应用
- 洛谷——P1179 [NOIP2010 普及组] 数字统计
- ❤️Mybatis开发中什么是多对一处理、一对多处理?