如何正确计算显示器带宽需求

ops/2024/12/23 11:03:42/

1. 对显示器的基本认识

一个显示器的参数主要有这些:

  • 分辨率:显示器屏幕上像素点的总数,通常用横向像素和纵向像素的数量来表示,比如1920×1080(即1080p)。

  • 刷新率:显示器每秒钟画面更新的次数,用赫兹 (Hz) 表示,比如60Hz144Hz

  • 色深:每个像素的颜色显示能力,色深越高,显示器能呈现的颜色越丰富,过渡越平滑,比如8bit10bit

这些参数也是计算显示器带宽的重要参数。

2. 错误的计算

假如这里有一块1080P@60Hz 8bit的屏幕,那它所需的带宽是多少呢?一些数学不错且有计算机硬件知识的人会立马回答道:

这块屏幕有1960乘1080个像素,每个像素又红绿蓝三个子像素构成,每秒刷新60次,而且还是8bit,所以应该是:

1920 * 1080 * 60 * 8 * 3 = 2.986Gbit/s

整个互联网上基本全是这种算法,但如果我告诉你这是错的呢?

3.显示器的工作原理

想要知道正确的算法就必须了解显示器的工作原理。

显示器在显示时并不是像幻灯片一样一整个画面一整个画面地切换,而是使用逐行扫描(Progressive Scanning):显示器会从屏幕的左上角开始一行一行地从左往右刷新,到右下角的像素完成刷新算作完成一次完整的画面刷新。如下图左半部分所示。
请添加图片描述

问题就出在这里:文艺一点地说,我们生活在电磁波的海洋里;实际一点地说,外部的Wi-Fi和移动信号的干扰以及电脑和显示器内部电路板的高频讯号干扰都会对画面传输造成影响。如果电磁波影响了数据的传输,就会导致每一行的信号对不齐,最后产出的画面就是撕裂和错位的。同时显示器还要保持画面在屏幕正中心,而不是偏左或者偏右。

所以显示器在逐行扫描时会在外围预留出一部分像素区域用于对齐和时钟同步,虽然这部分像素不参与显示,但是它会占用掉传输带宽。所以在计算带宽需求时,就需要把这一部分也考虑进去。

4. 实际像素数的计算

实际传输的画面大概分为3个部分:

  • 同步信号区(Sync):分为行同步信号区(Hsync)和场同步信号区(Vsync)
  • 消隐区(Blank):分为前消隐区(Front blank)和后消隐区(Back blank)
  • 有效显示区域(Active)
    请添加图片描述

所以说实际传输的画面的尺寸是:

Htotal = Hsync + Hfront + Hactive + Hback
Vtotal = Vsync + Vfront + Vactive + Vback

每张画面的像素量是:

pixels_per_frame = Htotal * Vtotal

每张画面的像素量乘以这个显示器的刷新率就是这个显示器一秒内要处理的像素量,专业名词叫显示器像素时钟(Pixel Clock):

pixel_clock = Htotal * Vtotal * Hz

那么如何知道Sync和Blank所占的像素数呢?这就要看显示器遵循的计时标准。不同的计时标准屏幕外用于时钟同步和对齐的部分也是不同的。

目前常见的标准是(我把下载链接附在这里):

  • CVT计时标准
  • CVT-RB计时标准
  • CVT-R2计时标准

越新的接口越节约带宽,现在的DP接口都是采用最新的CVT-R2标准,在这个标准下,用于计算Blank和Sync区域的相关公式是:
请添加图片描述

当然如果每个分辨率都要走一遍所有公式是很麻烦的,所以VESA也制作有一张Excel表格(搜索CVT VESA就能找到)来自动计算相关参数,只需要填写分辨率、刷新率即可
请添加图片描述

拿计算出的Pixel Clock乘色深再乘3(RGB三色通道)即可:

133.187 * 8 * 3 = 3.196Gbit/s

对于HDMI和DisplayPort的各个标准在不同刷新率下对不同分辨率的支持情况,我把维基百科的表格放在这里,也可以点击链接看:
HDMI:
请添加图片描述

DP(需要结合两张图看):
请添加图片描述
请添加图片描述

表格中的DSC是指依靠显示流压缩技术(Display Stream Compression)实现,这种技术能实现基本肉眼无法察觉压缩的画面效果。

表格中的4:2:0是一种色度抽样压缩技术,人眼对于这种压缩的感知不大,但这种技术仍然没有DSC的效果极致。


http://www.ppmy.cn/ops/144290.html

相关文章

【JavaEE初阶】JavaScript相应的WebAPI

目录 🌲WebAPI 背景知识 🚩什么是 WebAPI 🚩什么是 API 🎍DOM 基本概念 🚩什么是 DOM 🚩DOM 树 🍀获取元素 🚩querySelector 🚩querySelectorAll &#x1f384…

C语言经典100例

文章目录 前言123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525355565859606162636465 前言 以下题目大部分来自于C语言经典100例 1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的…

Spring Boot 教程之三十六:实现身份验证

如何在 Spring Boot 中实现简单的身份验证? 在本文中,我们将学习如何使用 Spring设置和配置基本身份验证。身份验证是任何类型的安全性中的主要步骤之一。Spring 提供依赖项,即Spring Security,可帮助在 API 上建立身份验证。有很…

webpack最基础的配置

以下是一个基本的webpack配置示例,它包括了入口文件、输出配置以及模式设置(开发模式或生产模式)。 const path require(path);module.exports (env, argv) > {// 根据传入的参数确定是开发模式还是生产模式const isProduction argv.m…

[创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论

目录 一、价值转移理论 1.1. 什么是价值? 1.2. 什么价值创造 (1)、定义 (2)、影响价值创造的因素 (3)、价值创造的三个过程 (4)、价值创造的实践 (5&…

鸿蒙项目云捐助第十六讲云捐助使用云数据库实现登录注册

鸿蒙项目云捐助第十六讲云捐助使用云数据库实现登录注册 前面介绍了云函数云数据库的基本使用方法,这里结合鸿蒙云捐助之前的页面实现进行云数据库的登录注册逻辑实现。 如果之前创建的不是端云一体化的项目,这里需要进行单机项目向端云一体化项目进行…

Vue3之Vite介绍

一、Vite概述 Vite是一个由Vue.js的作者尤雨溪开发的新一代前端构建工具。它的主要特点包括极快的开发和构建速度、按需加载、即时热模块替换(HMR)、丰富的插件生态系统等。Vite旨在通过利用现代浏览器对ES Modules的原生支持,提供比传统打包…

Kibana8.17.0在mac上的安装

1、Kibana是什么 Kibana是与elasticsearch配套使用的数据分析与可视化工具,通过Kibana可以轻松与es中存储的数据进行高效的交互,包括数据写入、检索、删除等操作,并可以通过编写部分代码将数据做成各种报表,从而进行非常直观的统…