目录

一、任务

二、分析

三、代码

四、实验现象

五、更新


一、任务

使用VGA实现彩条显示,模式是640x480@60


二、分析

        首先,模式是640x480@60,那么对照以下图标,知道其它信息,不清楚时序和VGA扫描方式的可以看看这个FPGA学习笔记——VGA简介-CSDN博客,那么对行同步信号,在有效图像里面对640进行分块(我这里是分成10块)。

        那么,在写代码的时候应该先配置好PLL IP核,模式的时钟频率是25.175MHz,我这里使用的时钟是50MHz,所以我对它二分频得到25MHz的时钟,然后,对常量进行定义,再对应的有效图像里面对颜色进行赋值。

PLL IP核配置


三、代码

top.v

module top (
input       wire            clk         ,
input       wire            rst_n       ,
output      wire    [15:0]  data_rgb    ,
output      wire            Hsync       ,
output      wire            Vsync       
);//vga
wire        	De;
wire	[9:0]   X;vga vga_u(
.        pclk  (pclk  )  ,
.        rst_n (locked)  ,
.        De    (De    )  , //数据有效信号
.        X     (X     )  ,
.        Hsync (Hsync )  , //行同步信号
.        Vsync (Vsync )    //场同步信号
);data data_u(
.      clk      (pclk     ) ,
.      rst_n    (locked   ) ,
.	   X        (X        ) ,
.      De       (De       ) ,
.      data_rgb (data_rgb ) 
);wire	  pclk;
wire	  locked;pll	pll_inst (.areset ( !rst_n ),.inclk0 ( clk ),.c0     ( pclk     ),.locked ( locked ));endmodule

vga.v

module vga (
input       wire        pclk    ,
input       wire        rst_n   ,
output      wire  [9:0] X       ,
output      wire        De      , //数据有效信号
output      wire        Hsync   , //行同步信号
output      wire        Vsync     //场同步信号
);localparam  H_Total = 800 ,//行总像素点H_Addr  = 640 ,//有效像素点H_Right = 8   ,//右边框H_Front = 8   ,//前沿H_Sync  = 96  , //同步H_Back  = 40  , //后沿H_Left  = 8   ;//左边框localparam  V_Total  = 525   ,//场总像素点V_Addr   = 480   ,//有效像素点V_Bottom = 8     ,//底边框V_Front  = 2     ,//前沿V_Sync   = 2     , //同步V_Back   = 25    , //后沿V_Top    = 8     ; //上边框reg     [9:0]   cnt_h,cnt_v;//行周期计数
always @(posedge pclk) beginif(!rst_n)cnt_h <= 0;else if( cnt_h == H_Total - 1 )cnt_h <= 0;elsecnt_h <= cnt_h + 1;
end//场周期计数
always @(posedge pclk) beginif(!rst_n)cnt_v <= 0;else if( cnt_h == H_Total - 1 ) beginif( cnt_v == V_Total - 1 )cnt_v <= 0;elsecnt_v <= cnt_v + 1; endelsecnt_v <= cnt_v;
end//行场同步信号
assign Hsync = (cnt_h < H_Sync ) ? 1 : 0;
assign Vsync = (cnt_v < V_Sync ) ? 1 : 0;
assign De    = ((cnt_h > H_Sync + H_Back + H_Left - 1) &&(cnt_h < H_Sync + H_Back + H_Left + H_Addr) &&(cnt_v >= V_Sync + V_Back + V_Top )  &&(cnt_v <  V_Sync + V_Back + V_Top + V_Addr) ) ? 1 : 0;assign  X = (De == 1) ? (cnt_h - H_Sync - H_Back - H_Left) : 0 ;endmodule

data.v

module data (
input       wire                clk     ,
input       wire                rst_n   ,
input       wire                De      ,
input       wire    [9:0]       X       ,
output      wire    [15:0]      data_rgb
);reg [15:0] data_reg ;always @(posedge clk) beginif(!rst_n)data_reg <= 0;else if (X < 64 && De == 1)data_reg <= 16'hF800;else if (X < 128 && De == 1)data_reg <= 16'h07E0;else if (X < 192 && De == 1)data_reg <= 16'h001F;else if (X < 256 && De == 1)data_reg <= 16'hD700;else if (X < 320 && De == 1)data_reg <= 16'h07AF;else if (X < 384 && De == 1)data_reg <= 16'hF00F;else if (X < 448 && De == 1)data_reg <= 16'hA0F8;else if (X < 512 && De == 1)data_reg <= 16'hBCDA;else if (X < 576 && De == 1)data_reg <= 16'hCD69;else if (X < 640 && De == 1)data_reg <= 16'hFFFF;elsedata_reg <= 0;
endassign data_rgb = data_reg;endmodule

四、实验现象


五、更新

针对vga.v代码,想要显示更多的颜色可以使用case语句更好

module data (
input       wire                clk     ,
input       wire                rst_n   ,
input       wire                De      ,
input       wire    [9:0]       X       ,
output      wire    [15:0]      data_rgb
);reg [15:0] data_reg ;localparam  H_Addr  = 640 ;//有效像素点//always @(posedge clk) begin
//    if(!rst_n)
//        data_reg <= 0;
//    else if (X < 64 && De == 1)
//        data_reg <= 16'hF800;
//    else if (X < 128 && De == 1)
//        data_reg <= 16'h07E0;
//    else if (X < 192 && De == 1)
//        data_reg <= 16'h001F;
//    else if (X < 256 && De == 1)
//        data_reg <= 16'hD700;
//    else if (X < 320 && De == 1)
//        data_reg <= 16'h07AF;
//    else if (X < 384 && De == 1)
//        data_reg <= 16'hF00F;
//    else if (X < 448 && De == 1)
//        data_reg <= 16'hA0F8;
//    else if (X < 512 && De == 1)
//        data_reg <= 16'hBCDA;
//    else if (X < 576 && De == 1)
//        data_reg <= 16'hCD69;
//    else if (X < 640 && De == 1)
//        data_reg <= 16'hFFFF;
//    else
//        data_reg <= 0;
//end//n           份数
//H_Addr/n    颜色宽度always @(posedge clk) beginif(!rst_n)data_reg <= 0;else if(De) begincase( X/(H_Addr/5) )0:data_reg <= 16'hF800;1:data_reg <= 16'h07E0;2:data_reg <= 16'hFFFF;3:data_reg <= 16'hCD69;4:data_reg <= 16'h07AF;default:data_reg <= 0;endcaseendelsedata_reg <= 0;
endassign data_rgb = data_reg;endmodule

以上就是VGA彩条显示。(个人想法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92126.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92126.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92126.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES-301A :让 Modbus 设备无缝接入工业以太网的高效桥梁

在工业自动化领域&#xff0c;串口设备与以太网的互联互通是提升系统效率的关键。ES-301A 工业以太网串口网关作为上海泗博自动化精心打造的专业解决方案&#xff0c;以强大的协议转换能力、工业级可靠性和灵活配置特性&#xff0c;成为连接 Modbus RTU/ASCII 设备与 Modbus TC…

【学习笔记】FTP库函数学习

【学习笔记】FTP库函数学习 FTP基本指令步骤 1、初始化会话句柄&#xff1a;CURL *curl curl_easy_init(); 2、设置会话选项&#xff1a; 设置服务器地址&#xff0c;设置登录用户和密码 curl_easy_setopt(curl, CURLOPT_URL, ftp_server); curl_easy_setopt(curl, CURLOPT_US…

ARM Cortex-M异常处理高级特性详解

1. 异常处理概述 ARM Cortex-M处理器提供了高效的异常处理机制&#xff0c;包含多种硬件优化特性&#xff0c;显著提升了中断响应性能和系统效率。这些特性对于实时嵌入式系统和网络协议栈&#xff08;如LwIP&#xff09;的性能至关重要。 1.1 Cortex-M异常处理架构 Cortex-M异…

【图像算法 - 08】基于 YOLO11 的抽烟检测系统(包含环境搭建 + 数据集处理 + 模型训练 + 效果对比 + 调参技巧)

一、项目背景与需求 【打怪升级 - 08】基于 YOLO11 的抽烟检测系统&#xff08;包含环境搭建 数据集处理 模型训练 效果对比 调参技巧&#xff09;今天我们使用YOLO11来训练一个抽烟检测系统&#xff0c;基于YOLO11的抽烟检测系统。我们使用了大概两万张图片的数据集训练了…

vue2升级vue3中v-model的写法改造

vue2选项式 <template><div><el-rowclass"group-title":title"$t(restore_default_parameters)">{{ $t(restore_default_parameters) }}</el-row><el-form-item :label"$t(restore_default_parameters)" class"…

5G-LEO 简介

1. 什么是 5G-LEO 5G-LEO 指的是将 5G 新空口&#xff08;5G NR&#xff09;服务扩展到低轨卫星&#xff08;LEO&#xff09;上的非地面网络&#xff08;NTN, Non-Terrestrial Network&#xff09;方案。通过在距地面约500–2 000 km 的低轨道卫星上部署通信载荷&#xff0c;5G…

【MCAL】AUTOSAR架构下SPI数据同步收发具体实现

目录 前言 正文 1.依赖的SPI硬件特性 1.1. SPI时隙参数配置 1.2. SPI数据发送和接收模式 2.MCAL中的SPI配置 3.软件的具体实现 3.1. Spi_SyncTransmit 3.2. Spi_lSyncTransmit 3.3. Spi_lSyncStartJob 3.4. Spi_lSyncTransmitData8Bit 3.5. Spi_lSynTransErrCheck …

SQL157 更新记录(一)

描述现有一张试卷信息表examination_info&#xff0c;表结构如下图所示&#xff1a;FiledTypeNullKeyExtraDefaultCommentidint(11)NOPRIauto_increment(NULL)自增IDexam_idint(11)NOUNI(NULL)试卷IDtagchar(32)YES(NULL)类别标签difficultychar(8)YES(NULL)难度durationint(11…

悬赏任务系统小程序/APP源码,推荐任务/发布任务/会员服务

1. 我们承诺及优势本店源码承诺&#xff1a;1&#xff09;. 店长亲测 - 100%完整可运行2&#xff09;. 含详细安装文档3&#xff09;. 支持二次开发定制4&#xff09;. 专业客服随时解答5&#xff09;. 技术团队保障质量2. 功能详细说明主要功能 模块 角色 解释说明 用户登录和…

Ubuntu20.04系统上使用YOLOv5训练自己的模型-1

在Ubuntu系统上使用YOLOv5训练自己的模型&#xff0c;你需要遵循以下步骤。这里我将详细说明如何从准备数据集到训练模型的整个过程。 步骤 1: 安装依赖项 首先&#xff0c;确保你的Ubuntu系统上安装了Python、PyTorch和必要的库。你可以使用以下命令安装这些依赖项&#xff1a…

解决微信小程序中camera组件被view事件穿透触发对焦以及camera的bindtap事件

view跟camera组件同级 不要用bind:tap和catch:tap 替换用catch:touchstart即可解决&#xff01; 如果你不放心&#xff0c;可以再加个透明蒙版&#xff0c;这样就不会触发了&#xff01;&#xff08;不加这个也行&#xff0c;但是必须要用catch:touchstart&#xff09;<!-- …

【Redis】移动设备离线通知推送全流程实现:系统推送服务与Redis的协同应用

在移动应用开发中&#xff0c;应用未启动时的通知推送是提升用户体验的核心需求之一。当用户未主动启动 App 时&#xff0c;如何通过手机通知栏触达用户&#xff0c;确保关键信息&#xff08;如订单提醒、系统警报&#xff09;不丢失&#xff1f;本文将尝试解析从 系统推送服务…

WebView 中控制光标

在 WebView 中控制光标&#xff08;如移动焦点、获取/设置光标位置、显示/隐藏光标等&#xff09;需要根据具体场景和平台&#xff08;Android/iOS/Web&#xff09;采用不同的方法。以下是常见场景的解决方案&#xff1a;一、Web 页面中的光标控制&#xff08;JavaScript&#…

2025国赛数学建模C题详细思路模型代码获取,备战国赛算法解析——决策树

2025国赛数学建模C题详细思路模型代码获取见文末名片 决策树算法&#xff1a;从原理到实战&#xff08;数模小白友好版&#xff09; 1. 决策树是什么&#xff1f;——用生活例子理解核心概念 想象你周末想决定是否去野餐&#xff0c;可能会这样思考&#xff1a; 根节点&#xf…

从底层架构到多元场景:计算机构成与应用的深度剖析

一、引言1.1 研究背景与意义在当今数字化时代&#xff0c;计算机已成为推动社会进步和经济发展的核心力量&#xff0c;其身影遍布生活、工作、学习的各个角落。从个人日常使用的笔记本电脑、智能手机&#xff0c;到企业运营中不可或缺的服务器、大型机&#xff0c;再到科研领域…

控制建模matlab练习08:根轨迹

此练习主要是&#xff1a;在matlab中绘制根轨迹的方法。 一、在matlab中建立对应系统 1、例如&#xff0c;对于如图的反馈系统。 2、其中开环传递函数G(s)、闭环传递函数Gcl(s)。3、因此&#xff0c;其闭环传递函数的根轨迹&#xff0c;就可以直接在matlab中绘制出来。 4、直接…

【Spring Boot 快速入门】七、阿里云 OSS 文件上传

这里写自定义目录标题准备阿里云 OSS参照官方 SDK 编写入门程序案例数据准备案例集成阿里云 OSS前端测试代码app.jsstyle.cssindex.html效果图准备阿里云 OSS 注册登录阿里云&#xff0c;然后点击控制台&#xff0c;在左上角菜单栏搜索对象存储 OSS&#xff0c;点击并开通点击…

分布式微服务--Nacos作为配置中心(二)

前言&#xff1a;Nacos 是什么&#xff1f; Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。我们可以使用它&#xff1a; ✅作为注册中心&#xff08;服务发现&#xff09; …

家庭/公司内部网络内网穿透:无公网IP怎么设置外网远程访问?

家庭宽带内网穿透如何实现&#xff1f;需公网IP吗&#xff1f;公司内部的网址服务怎么提供互联网访问&#xff1f;相信很多人都有遇到家庭网和公司内部网下&#xff0c;搭建了服务器&#xff0c;或网络硬件设备&#xff0c;需要在异地远程访问使用的情况。家庭和公司内部宽带内…

水库防洪安全雨水情监测预警系统

水库防洪安全雨水情监测预警系统是一种高度集成现代信息技术与水利工程管理的综合性智能化管理平台&#xff0c;该系统主要应用于水库及其周边流域的实时水情监测与预警工作。通过部署先进的传感设备和监测网络&#xff0c;该系统能够全天候不间断地采集水库库区及周边区域的降…