基于FreeSync 技术的显示器同步刷新率应用
2020-11-25张赛男陈梅金
张赛男, 陈梅金
(1. 福建技术师范学院电子与信息工程学院,2. 福建捷联电子有限公司, 福建福清 350300)
显示器画面帧速是衡量画面是否流畅的一个重要标准. 当显卡输出的刷新率高于显示器所能支持的刷新率时, 就会出现屏幕撕裂现象. 这是因为显示器是以固定的频率进行刷新,屏幕画面会稳定地每分钟刷新60 次, 而显卡在渲染不同的画面时, 其渲染速度是不同的. 显卡输出的画面是动态的、静态的、激烈的场景时, 其画面帧频率变化十分明显. 显卡无法按照一个固定频率来输出显示画面. 在这样的情况下, 显示器和显卡的刷新率就会出现不同步的情况[1].
虽然显卡厂商采用垂直同步技术锁定显卡的输出, 解决撕裂的问题, 但会增加输入延迟. 自适应垂直同步是垂直同步的一个变种,其效果胜过传统的垂直同步, 但显示器刷新率成为画面流畅度的瓶颈[2]. 当显卡性能不够强劲时便会出现卡顿的问题, 于是需要动态调节显示器刷新率的技术.
推出显示刷新率同步新技术的两家显卡厂商, 一个是美国超微半导体(AMD) 公司推出的FreeSync 技术;另一个是英伟达(NVIDIA) 公司推出的G-Sync 技术.NVIDIA 公司既开发PC端信号源的显卡, 又同时开发显示器端的显示模组, 并且G-Sync 技术是非开放性的[3],显示器采用G-Sync 技术成本相对比较高.AMD 公司所推出的FreeSync 技术为开源的, 只开发和生产显卡端的信源部分, 显示器端则由对应显示器生产商去拓展开发. 这样对显示器的设计提供了控制自如的便利, 并且不需要购买相关显示模组, 很大程度上节约了开发成本.G-Sync支持30-144 Hz 刷新率, 相对稳定. 而FreeSync包括36-240 Hz、21-144 Hz、17-120 Hz、9-60 Hz等多种频道的刷新率更灵活. 当前我国对同步刷新率显示器有着广阔的应用前景, 虽然两家显卡商家都各有优缺点, 为了提高市场竞争力,课题组选择了成本较低的FreeSync 技术进行研究设计.
首先从EDID 控制单元着手完成显示器与信源端即显卡端的通信沟通, 完成双方通信协议,并从信源送出FreeSync 信号给信宿显示器显示;其次从显示器接收到信号后进行解码并显示;最后进行整体调试和测试, 以确保实际设计技术功能的实用性.
1 硬件系统
设计硬件系统包含电源控制、主板控制和显示屏控制三大部分, 如图1 所示. 主板硬件电路部分包括负责图像处理的主IC 模块、存放软件的SPI Flash 模块和存放系统数据的EEPROM 模块, 以及外围音频处理模块和按键板处理模块.
图1 系统模块图
图像处理芯片选择了MST9U26Q2, 它嵌入了32 位微控制处理器MCU. 输入信号最高可以支持到UHD 分辨率, 输出格式支持eDP 和V-By-One. 它可支持512 种色盘和2 bit/4 bit/8 bit 多种颜色的字体的OSD 处理设计.MST9U26Q2 内部有RGB 模拟信号输入模块、两个HDMI2.0 和一个DP1.2 输入接口模块;处理模块包括音频输出、MCU 微控制器、内部图形图像和OSD;还有电源控制管理模块、信号输出到Panel 模块.
SPI Flash 设计选用型号为MX25L1606EM2I-12G, 它是一种全双工串行通信方式总线接口,可支持高速率通信.SPI Flash 主要用于存储软件主程序, 再由 Scaler 图像处理器芯片对其程序进行读写. 由于本系统软件数据比较大, 所以选择 16M bit 容量的SPI Flash. 它分成 516 个分区, 分区通常也叫做 Flash 的扇区,即 Sector, 每个分区(Sector)4KB. 整个 Flash 同时又分成 32 个区块, 区块通常也叫做 Block, 每个区块 64KB 即由 16 个分区组成.
EEPROM 设计选用M24256-BRMN6TP 作为主系统的数据存储. 它在系统中主要用来存储用户调整数据和PQ 数据, 所以选择256K bit 相应足够存储空间大小的EEPROM, 它与Scaler 的通信方式是I2C 总线.
音频处理模块主要负责音频信号的控制、放大处理, 含有输出到功放喇叭的接口. 按键板处理模块主要负责对显示器的人机交互操作, 以及OSD 菜单界面显示操作.
2 软件系统
2.1 软件系统架构
FreeSync 功能显示器系统是基于Linux 底层操作系统开发设计的. 根据FreeSync 功能系统按照模块化分块设计, 并且由软件互相关联控制组成.
设计系统软件架构体系如图2 所示. 软件架构层级是抽象的组件组成的, 各个组件层级之间明确细致地描述组件的沟通与联系. 通过配置相关Linux 操作系统并运行系统, 硬件驱动程序搭建好应用接口与应用服务层之间的沟通链接通信, 再由人机交互友好界面(OSD)进行人机交互应用.
图2 软件架构体系图
系统运行流程分为如下步骤完成.
(1) 当系统上电后先是复位主IC Scaler;
(2) 初始化系统和各驱动设备;
(3) 确认当前FreeSync 功能是否为开;
(4) 进入主循环程序控制时间处理、命令通信处理、电源模式管理、信号侦测处理、OSD 控制等应用层面处理.
2.2 FreeSync 技术说明
FreeSync 技术通常也叫做DRR (Dynamic Refresh Rate) 技术, 即动态刷新率的简称①. 显示器FreeSync 技术, 能够根据视频或游戏的信号源刷新频率来动态适应更新显示器端的显示刷新率, 使得视频看起来更加平滑, 不会给用户感觉有卡顿或画面撕裂的情况.
FreeSync 基本原理是通过调整信号的垂直消隐(Vertical Blanking) 来改变垂直刷新率(Vertical Frequency), 从而达到信号刷新率的实时同步变换②. 在显示信号中, 当信号点频固定,并且保持实际显示的Active 信号不变的条件下, 垂直信号频率的变化可以由垂直Blanking信号来调节. 因为垂直信号的总点数是由实际显示的Active 数据和实际看不到的Blanking数据组成的. 所以当信号源送出的是FreeSync数据参数时, 设计系统端即显示器端会根据设计好的EDID 告知信号源. 本系统是支持FreeSync 的, 并且通知信源可支持的刷新率范围. 当这些基本信息被确立后, 系统和信号源就可以有效实时控制当前视频的刷新率, 达到信号源和显示器系统同步显示的目的. 如图3所示为正常刷新率与变慢刷新率的比对图, 由Blanking 调节刷新率.
图3 正常刷新率( 左) 与变慢刷新率( 右) 对比图
相比旧的非同步刷新率技术, 比如有VSYNC 技术和 MEMC 技术等无法使得信号源与显示端信号同步的技术, 所以通常是使用插补帧方式解决画面卡顿等问题, 但实际上是没有同步的. 列举一个支持最大刷新率是144 Hz 的例子,它所用的时间是1/144(s), 即6.94 ms. 现在有一个场景突然变换成需要10 ms 的帧, 显示后再刷新到下一个场景帧显示, 很显然固定补偿帧的方式在显示6.94 ms 之后由于时间不够10 ms的场景显示, 则需要进行帧补偿, 但是还是不平滑显示画面;而动态同步刷新率就能很好地适应变换场景并同步刷新显示, 会平滑过度刷新画面. 如图4 所示描述了这两种情况.
图4 FreeSync 和帧补偿刷新率对比图
2.3 EDID 控制设计
本设计是通过EDID 的关键Byte 来控制FreeSync 信号的开关动作. 软件流程上将控制Byte 设计成OSD 的切换方式来实现用户人机交互控制.
HDMI EDID, 目前比较流行的有两个版本,分别是HDMI 1.4 版本和HDMI 2.0 版本, 它们对应的EDID 也是由这两个版本区分的. 本设计是HDMI 2.0 版本的显示接口, 它的EDID 为256 B, 如图5 所示为本设计系统的HDMI EDID文本格式.HDMI EDID 与扫描频率即刷新率相关的字节说明如表1 所示.
图5 HDMI EDID 文本格式
图6 OSD 打开FreeSync 功能流程
OSD 开关控制流程如图6, 用户通过按键打开OSD FreeSync, 软件上会重新更新一次带有FreeSync Byte 的EDID, 并通过HPD 通知显卡重新发送FreeSync 信号. 如果是OSD 设置成FreeSync 关, 则软件上会重新更新一次非FreeSync 功能的EDID, 同样通过HPD 控制通知显卡, 本显示器不带有FreeSync 功能, 显卡则发送非FreeSync 功能的信号给显示器显示.
2.4 FreeSync 信号侦测
显示系统在运行时, 在FreeSync 功能没有打开的情况下, 系统只会将送来的信号固定成一个频率送出显示, 显示器通常以固定频率60 Hz 输出. 当FreeSync 功能打开后, 系统则根据信号源不断更新的刷新率而实时更新同步信号输出.
系统在信号侦测FreeSync 过程, 首先是输入FreeSync 信号到显示器的HDMI 接口, 显示器判断信号稳定后并实时侦测FreeSync 信号的变换刷新率, 最后根据信源送来的实时更新的信号输出到Panel 显示. 如果显示器没有打开FreeSync 功能则会按其它正常侦测方式运行显示信号. 流程如图7 所示.
表 1 EDID 关键位说明
图7 FreeSync 信号侦测流程图
3 系统调试及测试
3.1 FreeSync 菜单功能测试
本设计系统OSD 菜单部分着重确认FreeSync 功能开关、显示刷新率的实时显示,以及信号是否同步显示.OSD 显示确认确保在不同国家语言下显示无乱码、显示正确, 功能性部分确保对功能打开后不出现画面异常、功能错乱等不正确的现象[4].
当打开显示刷新率功能时, 在OSD 的右上角部分可以显示出场频, 它的频率和信号源给出的刷新率必须一致. 如图8 所示.
图8 OSD 上显示刷新率
3.2 兼容性测试
兼容性测试是为了确保不同的用户在使用不同设备时可以正常使用显示器. 本设计重点用带有FreeSync 功能的AMD 显卡检测显示器系统的FreeSync 功能.
当FreeSync 功能打开时出现AMD 显卡端显示 “不支持” 的情况, 这就意味着显示器系统的EDID 设置不正常. 所以需要确保测试进行时PC 端显卡反馈不能出错. 如下是测试FreeSync 功能步骤.
(1)PC 装好AMD 显卡;
(2) 开机对PC 与显示器进行连接;
(3) 将显示器FreeSync 功能和刷新率显示功能打开;
(4) 开PC 上的AMD FreeSync 游戏测试软件;
(5) 确认画面是否出现撕裂、卡顿等异常情况;
(6) 确认刷新率显示是否正常;
(7) 测试都正常情况下才表示测试通过, 如图9 为此测试过程画面显示的三张照片的合集, 体现了在同步刷新率的条件下, 画面显示同步并正常.
图9 FreeSync 运行过程照片
如果将显示器端的FreeSync 功能关闭, 并用相同的信源和软件测试工具进行测试, 就可以很清楚地看见画面图像卡顿和齿状撕裂的现象, 如图10 为测试显示截图, 此时刷新率也被固定成一个频率输出, 如测试时可看到固定输出频率为75 Hz. 所以显示器画面不同步显示信源画面时, 就很容易出现画面显示异常的情况.
图10 FreeSync 功能关闭出现撕裂问题
4 结论
作为垂直同步技术的替代以及自适应垂直同步技术的延伸,FreeSync 技术使显示器的刷新率与GPU 的渲染率保持同步, 不仅解决了画面撕裂问题, 同时解决了画面视觉卡顿问题. 具有FreeSync 技术的显示器画面更流畅, 不但能够用于收看同步高刷新率的视频, 而且还可以应用于电子竞技运动比赛. 本设计由于FreeSync 技术开源, 显示器端的设计控制灵活,并且不需要购买相关显示模组, 可投入大批量生产, 值得推广应用.
注释:
①Cabe Atwell.ADM Unveils FreeSync at CES2014. Design News, 2014,69(3).
② AMD FreeSync Technology Whitepaper,Version 2.0c,2015.