【FPGA】VGA显示文字、彩条、图片

您所在的位置:网站首页 华硕笔记本怎么全屏显示图片和文字 【FPGA】VGA显示文字、彩条、图片

【FPGA】VGA显示文字、彩条、图片

2024-07-10 07:31:27| 来源: 网络整理| 查看: 265

录 一、VGA概述1.1 简述1.2 管脚定义1.3 行、场时序及分辨率 二、VGA显示文字2.1 点阵汉字生成2.2 工程建立2.3 引入ip核-实现特定时钟频率+不同分辨率显示2.3 代码实现2.4 上板验证 三、VGA显示彩条3.1 代码实现3.2 上板验证 四、VGA显示图片4.1 24位位图4.2 引入ROM ip核4.3 代码实现4.4 上板验证tb文件 小小的总结参考文献

一、VGA概述 1.1 简述 **VGA(Video Graphics Array)**视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。 在这里插入图片描述大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。对于模拟显示设备,如模拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。而对于LCD、DLP等数字显示设备,显示设备中需配置相应的A/D(模拟/数字)转换器,将模拟信号转变为数字信号。在经过D/A和A/D两次转换后,不可避免地造成了一些图像细节的损失。VGA接口应用于CRT显示器无可厚非,但用于连接液晶之类的显示设备,则转换过程的图像损失会使显示效果略微下降。 而且可以从接口处来判断显卡是独显还是集成显卡,VGA接口竖置的说明是集成显卡,VGA接口横置说明是独立显卡(一般的台式主机都可以用此方法来查看)。 1.2 管脚定义 管脚定义 管脚定义1红基色 red2绿基色 green3蓝基色 blue4地址码 ID Bit5自测试 ( 各家定义不同 )6红地7绿地8蓝地9保留 ( 各家定义不同 )10数字地11地址码12地址码13行同步14场同步15地址码 ( 各家定义不同)

大家要是想了解更多的内容,比如原理等,可点击下方连接去百度百科查看: 百度百科-VGA

1.3 行、场时序及分辨率 VGA时序标准

在这里插入图片描述

行同步时序:(行时序的各种信号,可对照下面的表格里的显示参数)

在这里插入图片描述

场同步时序

在这里插入图片描述

VGA的不同分辨率显示参数

在这里插入图片描述

将行同步时序图与场同步时序图结合起来就构成了 VGA 时序图:

在这里插入图片描述

红色区域表示在一个完整的行扫描周期中,Video 图像信息只在此区域有效,黄色区域表示在一个完整的场扫描周期中,Video 图像信息只在此区域有效,两者相交的橙色区域,就是 VGA 图像的最终显示区域。

其他可详见此博主的博客(点击跳转)

二、VGA显示文字

笔主整篇文章中使用的板子都是 EP4CE115F29C7,使用其他板子问题不大,但引脚绑定不太一样,可自行对应板子查找更改。

引脚

在这里插入图片描述

2.1 点阵汉字生成 VGA显示文字主要要用到点阵汉字,笔主这里用的是朋友推荐的一个网站,好用,感觉比PCtoLCD2002 好用。指路网站:单片机-LCD-LED-OLED中文点阵生成软件生成

在这里插入图片描述

在下面的字符里,使用中间那一栏,如图

在这里插入图片描述

将那些字节复制粘贴到你的txt文件里(自己建一个就行)然后进行整理(笔主这里的学号名字是已经整理好的)

在这里插入图片描述

用替换将原理点阵里的 , 0x 替换为(没错就是空白,不要输入空格,就是什么都不填),然后再把前面两列的0x删掉就可以了,最后一个字节那里打上 ; 就OK了。

在这里插入图片描述

2.2 工程建立 笔主这里用的软件是Quartus 18.1自己新建一个工程(网上步骤很多,笔主之前的文章好像也写过),目录结构如下: 在这里插入图片描述 名称作用doc一些说明文档、仿真、上板结果等ip知识产权prj工程文件rtl源文件(.v)tb仿真文件 rtl 源文件里主要有: 在这里插入图片描述 名称作用vga_top顶层文件:主要是模块例化vga_param参数定义:对各种不同的分辨率的显示参数定义data_gen数据读取模块vga_ctrlVGA驱动、控制模块 tb里还有一个仿真测试文件 vga_tb 2.3 引入ip核-实现特定时钟频率+不同分辨率显示 为了正确在 640*480 的分辨率下显示,需要一个25MHz的时钟,我们需要引入 PLL ip核搜索PLL,如图:

在这里插入图片描述

将文件存到 ip 里,笔主这里已经添加过了

在这里插入图片描述

直接next

在这里插入图片描述

next 在这里插入图片描述一路next到如下界面,设置为25MHz

在这里插入图片描述

为了显示不同分辨率,笔主这里另一个分辨率为 800*600,需要一个40MHz的时钟,我们这里再加一个时钟 c1

在这里插入图片描述

然后next到最后界面,选中生成例化模块,这里自己编写代码的时候运用比较方便

在这里插入图片描述

改变分辨率步骤 ①更改vga_param 里的 define 后面的名称,比如 define vga_640_480 改为 define vga_800_600 (“ ` ”被省略了,博客里显示不出来) 在这里插入图片描述 ②vga_top里定义了时钟频率 在这里插入图片描述 ③改变一下1、2 处就行,比如 vga_25 改为 vga_40 在这里插入图片描述

其他分辨率更改都是类似。

2.3 代码实现 vga_param笔主因为老师要求不同分辨率,所以只定义两种,其他可自行添加(根据前面的那个分辨率显示参数表格) `define vga_640_480//这里在你使用不同分辨率的时候要改变 //笔主因为老师要求不同分辨率,所以定义两种,其他可自行添加(根据前面的那个分辨率显示参数表格) `ifdef vga_640_480 //执行操作A `define H_Right_Border 8 `define H_Front_Porch 8 `define H_Sync_Time 96 `define H_Back_Porch 40 `define H_Left_Border 8 `define H_Data_Time 640 `define H_Total_Time 800 `define V_Bottom_Border 8 `define V_Front_Porch 2 `define V_Sync_Time 2 `define V_Back_Porch 25 `define V_Top_Border 8 `define V_Data_Time 480 `define V_Total_Time 525 `elsif vga_800_600 //执行操作B `define H_Right_Border 0 `define H_Front_Border 40 `define H_Sync_Time 128 `define H_Back_Porch 88 `define H_Left_Border 0 `define H_Data_Time 800 `define H_Total_Time 1056 `define V_Bottom_Border 0 `define V_Front_Porch 1 `define V_Sync_Time 4 `define V_Back_Porch 23 `define V_Top_Border 0 `define V_Data_Time 600 `define V_Total_Time 628 `endif vga_ctrl `include "vga_param.v" module vga_ctrl ( input wire clk , //vga clk 640*480 25.2MHz input wire rst_n , //复位信号 input wire [23:0] data_disp , // output reg [10:0] h_addr , //数据有效显示区域行地址 output reg [10:0] v_addr , //数据有效显示区域场地址 output reg vsync , // output reg hsync , // output reg [07:0] vga_r , //RGB三色 output reg [07:0] vga_g , // output reg [07:0] vga_b , // output reg vga_blk , //VGA 消隐信号 output wire vga_clk // ); //参数定义 parameter H_SYNC_STA = 1 ,//行同步开始信号 H_SYNC_STO = `H_Sync_Time ,//行同步停止 H_Data_STA = `H_Sync_Time + `H_Back_Porch + `H_Left_Border,//行数据开始 H_Data_STO = `H_Sync_Time + `H_Back_Porch + `H_Left_Border + `H_Data_Time ,//行数据开始 V_SYNC_STA = 1 , V_SYNC_STO = `V_Sync_Time , V_Data_STA = `V_Sync_Time + `V_Back_Porch + `V_Top_Border, V_Data_STO = `V_Sync_Time + `V_Back_Porch + `V_Top_Border + `V_Data_Time; reg [11:00] cnt_h_addr ; //行地址计数器 wire add_h_addr ; wire end_h_addr ; reg [11:00] cnt_v_addr ; //场地址计数器 wire add_v_addr ; wire end_v_addr ; //行地址计数器 always @(posedge clk or negedge rst_n) begin if(!rst_n)begin cnt_h_addr = `H_Total_Time - 1; //场地址计数器 always @(posedge clk or negedge rst_n) begin if(!rst_n)begin cnt_v_addr = H_Data_STA) && (cnt_h_addr = V_Data_STA) && (cnt_v_addr


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭