quartus Ⅱ 12.1 使用教程(7) vga显示测试

2024-03-18 07:38

本文主要是介绍quartus Ⅱ 12.1 使用教程(7) vga显示测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发板使用的是EP4CE15F23C8,软件使用的是quartus 12.1 ,工程主要使用vga显示方格

行计数

//hsync计数
always@(posedge clk_148M or negedge i_rst_n)beginif(i_rst_n	==	1'b0)hsync_cnt	<=	12'd0;else	if(hsync_cnt == H_TOTAL -12'd1)hsync_cnt	<=	12'd0;elsehsync_cnt	<=	hsync_cnt	+	1'b1;
end

场计数

//VSYNC计数
always@(posedge clk_148M or negedge	i_rst_n)beginif(i_rst_n	==	1'b0)vsync_cnt	<=	12'd0;else	if(hsync_cnt == H_TOTAL -12'd1)if(vsync_cnt == V_TOTAL - 12'd1)vsync_cnt	<=	12'd0;elsevsync_cnt	<=	vsync_cnt	+	1'b1;
end

产生行信号

//hsync
assign vga_hs = ((hsync_cnt >= 12'd0)&&(hsync_cnt < H_SYNC))? 1'b0:1'b1;

产生场信号

//vsync
assign vga_vs = ((vsync_cnt >= 12'd0)&&(vsync_cnt < V_SYNC))? 1'b0:1'b1;

行场信号有效区域

//hsync和vsync显示有效区域
assign	hsync_en = ((hsync_cnt >= (H_SYNC + H_BACK))&&(hsync_cnt < (H_SYNC + H_BACK + H_ACTIVE)));
assign	vsync_en = ((vsync_cnt	>= (V_SYNC + V_BACK))&&(vsync_cnt < (V_SYNC + V_BACK + V_ACTIVE)));

输出显示

assign	vga_r	=	(hsync_en && vsync_en)? grid_data_1[15:11]: 5'd0;
assign	vga_g	=	(hsync_en && vsync_en)? grid_data_1[10:5]: 6'd0;
assign	vga_b	=	(hsync_en && vsync_en)? grid_data_1[4:0]: 5'd0;

下面的程序是显示一个1080p的一个方格的vga程序

module vga_test(i_clk,i_rst_n,vga_hs,vga_vs,vga_r,vga_g,vga_b);input				i_clk;
input				i_rst_n;
output			vga_hs;
output			vga_vs;
output	[4:0]	vga_r;
output	[5:0]	vga_g;
output	[4:0]	vga_b;parameter H_SYNC = 12'd44;
parameter H_BACK = 12'd148;
parameter H_ACTIVE = 12'd1920;
parameter H_FRONT = 12'd88;
parameter H_TOTAL = H_SYNC + H_BACK + H_ACTIVE + H_FRONT;parameter V_SYNC = 12'd5;
parameter V_BACK = 12'd36;
parameter V_ACTIVE = 12'd1080;
parameter V_FRONT = 12'd4;
parameter V_TOTAL = V_SYNC + V_BACK + V_ACTIVE + V_FRONT;reg	[11:0]	hsync_cnt;
reg	[11:0]	vsync_cnt;
wire				hsync_en;
wire				vsync_en;
wire				clk_148M;
reg	[15:0] 	grid_data_1;
reg	[4:0]		vga_r_reg;
reg	[5:0]		vga_g_reg;
reg	[4:0]		vga_b_reg;pll	pll_inst (.inclk0 ( i_clk ),//input	50M.c0 ( clk_148M )	//output	148M);//HSYNC计数
always@(posedge clk_148M or negedge i_rst_n)beginif(i_rst_n	==	1'b0)hsync_cnt	<=	12'd0;else	if(hsync_cnt == H_TOTAL -12'd1)hsync_cnt	<=	12'd0;elsehsync_cnt	<=	hsync_cnt	+	1'b1;
end//hsync
assign vga_hs = ((hsync_cnt >= 12'd0)&&(hsync_cnt < H_SYNC))? 1'b0:1'b1;//VSYNC计数
always@(posedge clk_148M or negedge	i_rst_n)beginif(i_rst_n	==	1'b0)vsync_cnt	<=	12'd0;else if(hsync_cnt == H_TOTAL -12'd1)if(vsync_cnt == V_TOTAL - 12'd1)vsync_cnt	<=	12'd0;elsevsync_cnt	<=	vsync_cnt	+	1'b1;
end//vsync
assign vga_vs = ((vsync_cnt >= 12'd0)&&(vsync_cnt < V_SYNC))? 1'b0:1'b1;//hsync和vsync显示有效区域
assign	hsync_en	=	((hsync_cnt >= (H_SYNC + H_BACK))&&(hsync_cnt < (H_SYNC + H_BACK + H_ACTIVE)));
assign	vsync_en	=	((vsync_cnt	>=	(V_SYNC + V_BACK))&&(vsync_cnt < (V_SYNC + V_BACK + V_ACTIVE)));//方格always@(posedge clk_148M or negedge i_rst_n)beginif(i_rst_n	==	1'b0)grid_data_1<= 16'h0000;else if ((hsync_cnt[4]==1'b1) ^ (vsync_cnt[4]==1'b1))     //产生小格子图像grid_data_1<= 16'h0000;elsegrid_data_1<= 16'hffff;  endassign	vga_r	=	(hsync_en && vsync_en)? grid_data_1[15:11]: 5'd0;
assign	vga_g	=	(hsync_en && vsync_en)? grid_data_1[10:5]: 6'd0;
assign	vga_b	=	(hsync_en && vsync_en)? grid_data_1[4:0]: 5'd0;endmodule

显示效果如下图

这篇关于quartus Ⅱ 12.1 使用教程(7) vga显示测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/821647

相关文章

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文