一种LVDS接口的液晶显示驱动设计
2017-07-01徐巧玉李坤鹏王军委王红梅
徐巧玉,李坤鹏,王军委,王红梅
一种LVDS接口的液晶显示驱动设计
徐巧玉1,李坤鹏1,王军委2,王红梅1
(1.河南科技大学机电工程学院,河南洛阳471003;2.洛阳银杏科技有限公司,河南洛阳471003)
为了解决目前嵌入式液晶显示技术中存在的显示驱动支持分辨率低、数据更新慢及控制灵活性差等问题,设计了一种基于现场可编程门阵列(FPGA)的LVDS接口的液晶显示驱动。对数据缓存技术中数据读写控制等关键问题进行了分析,研究了对液晶显示驱动时序和低电压差分信号(LVDS)传输时序。基于FPGA构建缓存控制模块和显示控制模块,实现数据快速更新及LVDS接口液晶显示屏的显示。通过QuartusⅡ软件,对缓存控制模块控制时序进行了采样分析验证。验证结果表明:第二代双倍数据率同步动态随机存取存储器(DDR2 SDRAM)在166 MHz下工作,LVDS接口液晶显示屏分辨率为1 024 pixel×768 pixel,位宽为16 bit时,数据更新率达82 MHz,且控制灵活,能够满足目前对液晶显示驱动的需求。
现场可编程门阵列;第二代双倍数据率;低电压差分信号;显示驱动
0 引言
近年来,随着嵌入式技术的快速发展,嵌入式显示终端的应用越来越广泛。应用领域的多样化以及高分辨率液晶显示的需求,对嵌入式液晶显示技术的灵活性以及高分辨率提出了更高要求。
目前,嵌入式液晶显示实现方法主要包括单端并行传输方式和低电压差分信号(low-voltage differential signaling,LVDS)差分传输方式。其中,单端并行传输方式简单易用,在嵌入式显示设备中广泛运用。文献[1-2]采用单端并行数据传输方式,以基于现场可编程门阵列(field-programmable gate array,FPGA)作为液晶显示驱动器,实现了多分辨率显示。该方法逻辑简单,操作灵活,但在传输高频信号时,信号串扰和噪声干扰等问题明显,因此不适用于高分辨率显示。LVDS传输方式以其高速稳定的特性被推广。文献[3-4]采用LVDS传输方式,通过LVDS专用芯片实现并行数据与串行差分信号的转换,从而驱动液晶显示。该方法具有很好的抗干扰及串扰能力[5],但专用芯片一般适用于常见分辨率及时序固定的应用场合,对于特殊分辨率的液晶显示应用场合,其应用受到一定的限制。
针对上述问题,本文提出了一种基于FPGA的LVDS接口的液晶显示驱动设计。该方案以第二代双倍数据率同步动态随机存取存储器(double-data-rate two synchronous dynamic random access memory,DDR2 SDRAM)作为数据缓存单元,基于FPGA构建缓存控制模块,通过对第二代双倍数据率(doubledata-rate two,DDR2)大容量数据缓存器的控制,实现数据的快速更新和显示数据的及时传输。基于FPGA构建显示驱动模块,产生相应的显示时序并完成LVDS接口时序的转换,从而实现图像的显示。该方案同时拥有FPGA的灵活性及LVDS传输的稳定性,可以很好地解决上述问题。
1 系统设计及工作原理
本系统总体设计方案如图1所示。系统主要包括:时钟模块、缓存模块、缓存控制模块、显示控制模块和显示模块(即液晶显示屏)等。时钟模块对输入的时钟信号进行倍频和分频等处理,为系统各模块提供工作时钟。缓存模块为大容量数据存储设备,本设计采用DDR2 SDRAM存储器完成输入图像数据的暂存。缓存控制模块通过协调缓存模块与显示控制模块之间的数据传输,完成对输入数据和显示数据的处理和控制,实现更新数据的快速写入和显示数据的及时读出,保证图像的实时显示。显示控制模块包括用于产生与像素信息相对应的时序发生模块以及依据LVDS时序进行转换的时序转换模块,最终实现LVDS信号输出以及图像数据的显示。
外部输入数据首先进入系统的预处理模块,在该模块中完成数据的预处理操作。DDR2控制器控制数据的写入与读出,在没有收到读请求时则进行写操作,将数据从预处理模块中写入缓存模块,在显示的准备阶段,从缓存模块中读出数据到显存RAM1和显存RAM2中。控制着两个随机存取存储器(random access memory,RAM)的乒乓操作将数据送入显示控制模块。显示控制模块对显示数据及时序控制信号进行处理并转换为LVDS显示时序,通过LVDS接口传输到液晶显示屏显示。数据缓存控制模块和显示控制模块为本设计的核心部分。
图1 系统总体设计方案
2 基于FPGA的数据缓存控制模块设计
数据缓存控制模块结构如图2所示。该模块由数据预处理模块、显存模块及DDR2控制器组成,主要完成对输入数据存储及显示图像数据读取的协调控制。
2.1 数据预处理模块
数据预处理包括数据的整合及缓存。由于输入数据与DDR2存储数据速率不匹配,因此需对外部输入数据进行缓存处理。进入系统的数据包含图像信息及地址信息,并且两者一一对应,为了避免图像信息与地址信息不对应而导致的显示错误等问题,在缓存处理之前对数据进行整合处理[6]。将数据和地址锁存之后整合为一个数高位地址低位数据的多位数据,从而避免出现显示图像和显示地址不同步的问题。合并之后的多位数据存入数据缓存先入先出队列(first input first output,FIFO)中,等待被写入缓存模块。
2.2 显存模块
显存模块包含两个单口RAM,显示过程中,数据从DDR2读出。为了匹配速率先进入到显存模块,该模块的每个RAM深度可以存储一行数据,位宽为16 bit,液晶显示屏显示时读取其中一个RAM的同时,对另一个RAM进行数据填充,两个RAM乒乓读写实现数据连续输出。
2.3 DDR2控制器
DDR2控制器为缓存控制模块的核心部分,包括物理层模块、用户接口模块和控制模块。物理层模块对用户的访问地址和指令进行解释和匹配。用户接口模块在控制信号的控制下接收和存储用户的数据、命令和地址等信息。控制模块在系统正常工作期间,为用户接口模块和物理层模块提供相应的控制信号,并为系统提供控制器状态指示信号[7]。本文设计的DDR2驱动器采用Altera公司的IP核,其已包含物理层模块和用户接口模块,本控制器的设计主要完成控制模块的构建,实现对DDR2的读写控制。DDR2控制模块主要完成对DDR2的初始参数配置、刷新以及读写操作等控制,其中DDR2的读写控制为本模块的核心。
图2 数据缓存控制模块结构
液晶显示屏在每个显示使能期间要求数据连续输出,不允许数据中断,因此对DDR2的读取操作设置为最高优先级,在整个DDR2的控制模块中都以数据的读取控制为中心进行设计。每一帧显示中,第一个显示使能信号DE使能区开始向液晶屏传输显示数据,需提前从DDR2读出数据写入显存RAM1和RAM2,第一个DE使能区读出RAM1的数据送往液晶显示屏,显示完毕之后立即从DDR2读取数据写入RAM1中。此时采用分段读取方式,每读取256个数据设置一次等待,再进行下次读取,直至读取完一行数据。每段等待区间为DDR2的写操作时间,此设计缩短了写DDR2的等待时间,从而有效地缓解了不能及时处理高速输入的数据而导致数据丢失的问题,提高了数据更新率。在第二个DE使能区对RAM2进行操作,操作过程与RAM1相同。依次交替读写两个RAM的数据完成图像显示。RAM读写操作时序如图3所示。图3中,DE为显示使能信号,Hs为行同步信号。
为了减少DDR2带宽的浪费,提高数据更新率,在RAM的读写操作中各设置一个计数器,每当RAM读写完成一次计数器加1,当累加至列像素点值时计数器清零,表明一帧数据显示完毕,RAM进入等待状态直至开始下一帧数据的显示。此设计在一帧图像显示完毕之后不再对DDR2进行读操作,以节省DDR2的带宽,增加DDR2的写操作时间,从而提高数据更新率。DDR2的刷新操作设计在固定的时间执行,每一帧的前N个场周期设置为刷新时间(N根据液晶显示屏分辨率调整),经过计算,此设计可以保证在64 ms内完成对DDR2所有Bank的刷新,同时也避免刷新操作与读写操作发生冲突。
图3 RAM读写操作时序
3 基于FPGA的显示控制模块设计
显示控制模块主要包括时序发生模块和时序转换模块,以实现输入数据与显示时序的整合,并最终完成时序的转换。其中,时序发生模块实现液晶显示时序的发生,时序转换模块完成显示数据的调整,并将液晶显示时序信号及数据信号转换为LVDS传输格式。
3.1 LVDS接口时序
本设计采用单路6 bit的LVDS接口实现数据传输,传输接口包含3路差分数据通道和1路差分时钟通道。LVDS接口信号取消单端并行传输方式中独立的控制信号线,将RGB图像数据和控制信号重新采样编码,并通过3路差分数据通道传输,具有较强的抗干扰能力[8]。控制信号包括行同步信号Hs、场同步信号Vs以及显示使能信号DE。数据信号采用单基色6位,共18位RGB数据的格式。LVDS传输时序如图4所示。通道0和通道1传输RGB数据,通道2除了传输剩余的RGB数据以外还要传输控制信号,3路差分数据通道同时传输,每一个时钟完成7次移位,实现21位数据传输。
3.2 时序发生器设计
时序发生模块主要产生液晶显示时序信号,包括像素时钟信号D_CLK、行同步信号Hs、场同步信号Vs、显示使能信号DE和RGB数据信号[9]。利用逻辑编程方法产生行场扫描时序是一个发展方向。此方法电路简单、功能强、修改方便、可靠性高,只需在代码中修改一些时序参数就能产生任意时序波形,可以支持各种接口时序要求的液晶显示屏[10]。时序发生模块原理如图5所示。
图4 LVDS传输时序图
行、场同步信号包含Sync、Front Porch、Active Video、Back Porch等信号段[11]。设计时序发生器时,分别设置两个计数器作为行、场同步信号的基准。通过FPGA内部锁相环对输入的时钟信号进行倍频获得像素时钟,在像素时钟下对行计数器计数,根据液晶显示时序标准,行计数器累加至行像素点值时,行计数器清零并循环计数。行同步信号在行sync区间时,使行同步信号置为低,其他区间行同步信号置为高。场计数器在行同步信号下累加到列像素点值后,场计数器清零并循环计数,作为场同步信号的基准。场同步信号在场Sync区间时,使场同步信号置为低,其余时间置为高,此区间类似于行同步信号。根据时序标准,DE信号仅在行、场信号的Active Video重叠区域置为高时,开启显示使能,其他时间关闭显示使能。
图5 时序发生模块原理图
3.3 时序转换设计
图6 时序转换模块
实现LVDS信号输出有两种处理方式:一种是选用LVDS转换芯片;另一种是选用支持LVDS电平标准的FPGA,既可省去LVDS转换芯片,又可降低系统的复杂度。考虑到该设计要兼容多种分辨率液晶显示屏,单一的LVDS转换芯片不能满足需求,因此采用第二种方案,以FPGA作为LVDS转换芯片。时序转换模块如图6所示。
本文设计的缓存模块与输入系统的图像数据位宽均为16 bit,而液晶显示屏接收的数据位宽为18 bit,在对数据格式进行转换时,既要保证数据的精度也要保证系统的数据传输速率。565结构的16位数据转换为666结构的18位数据,R(红)和B(蓝)两个基色的最低位各增加一位,并将最高位数据赋给最低位,此方法在不增加过多运算的情况下,最大限度地保证了数据精度[12]。在时序转换时,输入的数据包括数据和液晶显示时序控制信号,在进行时序转换之前需对数据进行整合。在像素时钟下同时对3个控制信号进行采样,并与转换后的RGB数据合并为一个多位数据,高位至低位依次为显示使能信号DE、行同步信号Hs、场同步信号Vs和18位RGB数据,共21位。
ALTLVDS_TX的输入端接入转换后的多位数据及像素时钟,输出为3路差分数据信号和1路差分时钟信号。在并转串后会将数据重新排列,输入的21位数据分为3通道7 bit输出,高7位为一组,中间7位为一组,低7位为一组。为了实现每个通道在一个时钟输出7位数据,ALTLVDS_TX中的锁相环根据输出与输入的速率比,计算出倍频后的时钟为像素时钟×7。倍频后的时钟为移位时钟,第一个移位时钟输出每组的最高位数据,第二个移位时钟输出每组的次高位数据,依次进行至输出整个数据。
4 实验结果与分析
数据更新率是显示性能的关键参数,影响数据更新率的因素主要有DDR2的工作时钟及读写操作控制。为了验证系统性能,以本显示驱动器为实验平台进行实验验证。显示驱动器是型号为EP4CE15F23C8N的FPGA,数据缓存器为400 MHz的DDR2存储器,显示装置为1 024 pixel×768 pixel分辨率的具有LVDS接口的液晶显示屏。该FPGA的DDR2驱动时钟最高输出为166 MHz,因此将此时钟作为最高测试时钟。利用QuartusII软件中的SignalTap II Logic Analyzer工具对DDR2的读写过程进行采样分析,本文设计采用的分段读写方式,使得读写交替的时间缩短,输入数据的等待时间减小,可最大限度利用总线带宽,提高数据更新率。
利用发送一帧数据的时间测算数据更新率,每发送完一帧数据计时信号取反,根据计时信号计算数据更新率,在同一实验平台分别对分段读写模式及传统的连续读写模式进行数据更新率测试。测试3组不同时钟频率下的实验数据,测试数据如表1所示。从表1的测试结果可以看到:相对于普通的连续读写方式,本文设计的分段读写具有更好的数据更新率。
表1 数据更新率测试数据
5 结论
本文设计的基于FPGA的LVDS接口显示屏驱动,图像数据更新率达到了高清屏的显示需求,并且LVDS接口使得数据传输的抗干扰能力更强,采用FPGA进行逻辑编程使得设计控制灵活。此设计能够满足目前对液晶显示驱动的需求,与传统的显示驱动模式相比,具有更好的实用价值。
[1]程明,肖祖胜.基于FPGA的TFT-LCD显示驱动设计[J].液晶与显示,2009,24(2):228-231.
[2]张超建,王厚军.基于FPGA的TFT-LCD液晶显示模块设计[J].中国测试,2010,36(5):73-75.
[3]董春雷,王康平,陈威,等.LVDS技术在LCD数据传输中的应用[J].电子技术,2011,38(2):48-49.
[4]刘杰,程松华,张永栋,等.基于Mini-LVDS技术的TFT-LCD时序控制器的设计[J].液晶与显示,2014,29(2): 238-244.
[5]潘子升,苗绘玲.时序控制器TCON的研究与设计[J].电子设计工程,2011,19(3):67-70.
[6]梁皓东,张国平.基于ARM9+FPGA的便携式视频展示台的设计[J].电视技术,2014,38(3):60-63.
[7]陈建军,金强宁,章鹏,等.基于FPGA的TFT液晶显示时序控制器设计[J].液晶与显示,2015,30(4):647-654.
[8]陈俊,唐小琦,周会成,等.基于FPGA的TFT大屏幕液晶显示控制器设计[J].组合机床与自动化加工技术,2014(3):13-15.
[9]薛家祥,黄泽林,沈栋,等.TFT-LCD驱动中SDRAM控制器的仲裁器设计[J].液晶与显示,2013,28(6):877-882.
[10]刘亮.特定需求液晶显示控制器的设计实现[J].液晶与显示,2015,30(1):109-113.
[11]王军,张福弟,王磊,等.基于STM32的R61581驱动液晶屏显示方法研究[J].液晶与显示,2016,31(1):93-96.
[12]张斌,解宇,刘陈曦,等.基于液晶显示屏的低功耗驱动技术[J].液晶与显示,2016,31(3):290-294.
TN27
A
1672-6871(2017)05-0016-04
10.15926/j.cnki.issn1672-6871.2017.05.004
国家自然科学基金项目(51205108);河南省高等学校重点科研基金项目(15A535001)
徐巧玉(1979-),女,河南洛阳人,副教授,博士,硕士生导师,主要研究方向为嵌入式系统、机器视觉、智能测试技术及仪器.
2016-09-07