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

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的效果极致。

相关推荐
工控小楠11 分钟前
倍讯科技Profinet转DeviceNet协议转换网关与GM系列流量计集成应用之案例探究
科技
汇能感知3 小时前
摄像头模块在运动相机中的应用
经验分享·笔记·科技
Ashlee_code18 小时前
香港券商智能櫃台系統技術解決方案——融合跨境清算與AI風控,助力券商把握滬港雙市爆發機遇**
java·科技·金融·重构·架构·系统架构·php
人工干智能1 天前
pygame的帧处理中,涉及键盘的有`pg.event.get()`与`pg.key.get_pressed()` ,二者有什么区别与联系?
python·游戏·计算机外设·pygame
R-G-B1 天前
【P18 3-10】OpenCV Python—— 鼠标控制,鼠标回调函数(鼠标移动、按下、。。。),鼠标绘制基本图形(直线、圆、矩形)
python·opencv·计算机外设·鼠标回调函数·鼠标控制·鼠标移动·鼠标绘制图形
寻道模式1 天前
【运维心得】三步10分钟拆装笔记本键盘
运维·计算机外设·笔记本
杭州泽沃电子科技有限公司2 天前
告别翻山越岭!智能监拍远程守护输电线路安全
运维·人工智能·科技·安全
189228048612 天前
NY270NY273美光固态闪存NY277NY287
服务器·网络·数据库·科技·性能优化
AI精钢3 天前
H20芯片与中国的科技自立:一场隐形的博弈
人工智能·科技·stm32·单片机·物联网
OBOO鸥柏商用液晶显示厂家3 天前
OBOO鸥柏丨75寸/86平板企业办公会议触控一体机核心国产化品牌招投标参数
计算机外设·电脑·大屏端·信息发布系统·会议一体机