特定需求液晶显示控制器的设计实现
2015-03-21刘亮
刘 亮
(南京国电南自城乡电网自动化工程有限公司,江苏 南京210032)
1 引 言
EDP系列继电保护装置的人机界面(MMI)组件采用LCD 控制器芯片S1D13505 作为液晶显示驱动器,该芯片外接EDO DRAM 作为显存。EDO DRAM 属于很多年前的设计,其供货量有限,经常出现采购困难的情况[1],对MMI组件的生产造成了严重影响。为保证工业生产的持续性,需要对MMI组件的硬件电路进行升级,使用新的LCD 控制模块。
采用其他的商用专业LCD 控制器芯片进行硬件电路升级并不是一个很好的解决方案。首先,商用专业芯片成本较高,且容易受到器件断档的影响[2];其次,现有LCD 控制器的驱动软件和EDP装置的应用程序联系比较紧密,使用专业芯片进行升级往往需要开发新的底层驱动,需要对装置的软件系统进行较大规模修改,大大增加了方案实施的复杂度。
使用FPGA 自主实现LCD 控制器则可避免上述问题。首先,FPGA 是市场上成熟的主流芯片[3],价格比专用LCD 控制器芯片低很多。FPGA 可以实现各种硬件逻辑,能够很好支持多种主流显存芯片和液晶显示模块,可以有效避免硬件成本高和芯片供货短缺等问题;其次,FPGA 具有数量众多的通用管脚,可以很方便地复制MMI组件上处理器和S1D13505之间的硬件连线,保持LCD 控制器的地址空间、中断向量、控制信号等资源分配不受电路升级的影响,通过合理的内部逻辑开发,可以兼容原驱动程序,使不改动软件系统的同时实现硬件电路升级成为可能。
2 方案设计
MMI组件硬件升级方案的物理结构如图1所示。FPGA 所实现的LCD 控制器和处理器之间的连线与原MMI组件的对应部分相同;FPGA本身存储容量有限,选择搭配作为市场主流显存芯片的SDRAM 来存储图像数据;FPGA 还负责为TFT-LCD提供控制和数据信号,将图像数据转换为液晶模块对应的RGB管脚信号后,通过扫描方式进行展现。
图1 MMI组件硬件升级的物理结构Fig.1 Physical architecture of MMI hardware update
由图1可以看出,硬件升级后,FPGA 需要实现和处理器、SDRAM 以及TFT-LCD 模块之间的数据通信,对应的逻辑业务包括驱动程序响应、SDRAM 访问控制和TFT-LCD 液晶驱动。
驱动程序响应负责模拟S1D13505 芯片,向处理器提供寄存器空间和显示缓冲区的访问。显示缓冲区被FPGA 映射到显存中,寄存器空间则位于FPGA 内部。驱动程序通过寄存器空间访问来获取或设定LCD 控制器的配置,通过显示缓冲区的访问将图像数据写入显存。
SDRAM 访问控制功能负责产生符合SDRAM 芯片规格说明书(datasheet)的读、写和自刷新操作信号。
TFT-LCD液晶驱动功能负责产生液晶屏所需的控制信号和数据信号。
LCD 控制器的内部逻辑采用模块化设计,可分解为图2所示的功能模块。各功能模块对特定的输入进行响应,产生特定的输出。功能模块通过互联,在FPGA 外部管脚上产生特定规律的信号,实现LCD 控制器的逻辑业务。
图2 LCD 控制器的功能模块Fig.2 Function blocks of the LCD controller
图2 所示的设计中,hclk 为处理器总线时钟,pclk 为液晶屏的像素时钟,sclk 为SDRAM的工作时钟。功能模块的工作时钟及其他时钟信号由时钟发生器模块(CLK)根据倍频模块(PLL)提供的原始时钟产生;主机端接口模块(HIF)负责与处理器进行信息交互,将读写请求进行分发;寄存器模块(REG)负责模拟S1D13505的寄存器空间,对驱动程序命令进行解析,实现芯片标识读取、显示模式设定等工作;色彩查找表模块(LUT)负责把显存中的图像数据转换为对应的RGB 信号数据;访问仲裁模块(ARB)负责对SDRAM 芯片的操作进行优先级仲裁和访问排序,防止访问冲突;显存控制模块(RC)负责产生对外部SDRAM 芯片的控制信号及数据读写;写缓冲模块(WFIFO)对要写入显存的图像信息进行缓存,解决处理器和SDRAM 工作时钟的异步问题;读缓冲模块(RFIFO)对显存中取出的图像数据进行缓存,解决SDRAM 和TFT-LCD 工作时钟的异步问题。
3 方案实现
有限状态机建模是解决复杂逻辑的有效方法,也是FPGA 开发中常用的方法。一个有限状态机对应一个特定时钟域的逻辑,在Verilog程序中对应一个always语句块。方案采用了有限状态机方法对LCD 控制器的各功能子模块进行建模编程,然后将子模块互联,进行时序测试调整,实现所期望的LCD 控制器业务逻辑。
3.1 通用TFT-LCD驱动
通用TFT-LCD驱动的关键是提供符合标准的控制信号。控制信号主要指行同步信号HSYN、场同步信号VSYN 以及数据有效信号DE[4]。控制信号需要与时钟信号、数据信号满足特定的时序关系,如图3所示。
对于不同分辨率的TFT-LCD 模块,控制信号时序关系都符合图3 所示规律,参数的取值(THm和TVn)都有标准值可 遵循[2]。编程实现进行参数化配置,使用常量来定义不同的参数,可以很方便地产生多种显示模式所需的控制信号。控制信号对应的有限状态机模型如图4所示。其中,HSYN 和DE的基准时钟为PCLK,VSYN 的基准时钟为HSYN。
图3 TFT-LCD信号时序图Fig.3 Signal sequence diagram of TFT-LCD
图4 TFT-LCD控制信号的有限状态机Fig.4 FSM of TFT-LCD control signals
3.2 SDRAM 访问仲裁
RC 模块负责产生标准的SDRAM 控制信号、地址信号和数据信号,实现SDRAM 的访问业务,包括SDRAM 初始化、图像数据写入、自刷新和图像数据读出。SDRAM 管脚信号的定义、操作命令的信号时序及RC模块的有限状态机模型可以参见相关文档[5]。
SDRAM 芯片是单口RAM,只能同时支持一种操作。在同一时刻,对SDRAM 的操作请求有可能来自于不同的发起者,例如,处理器写图像数据时候,若FPGA 的定时器模块触发了刷新操作,就会产生显存访问冲突。解决访问冲突问题需要总线仲裁,该功能通过ARB模块控制RC模块的信号产生来实现。考虑到数据完整性和用户体验,方案所设计的ARB 模块在实现时按照刷新请求高于写请求、写请求高于读请求的次序进行优先级排序。ARB 模块的有限状态机模型如图5所示。
图5 ARB模块状态机Fig.5 FSM of the ARB block
3.3 通信同步
MMI组件的处理器、SDRAM 芯片和TFTLCD 模块的工作时钟各不相同,数据接口的字长也不相同。LCD 控制器的一些特定业务,例如图像的保存和显示,需要在这些元件之间传递信息,从而在功能子模块之间产生数据通信同步问题。为此,方案引入了WFIFO 和RFIFO 模块。
WFIFO 和RFIFO 都是双口环形缓冲区,其读写操作基于不同的工作时钟,可以同时进行。WFIFO 和RFIFO 的实现采用了基于Gray码的异步FIFO 算法[6]。WFIFO 以单字节方式接收处理器发送过来的图像数据,再以4字节的Burst访问方式写入SDRAM;RFIFO 以4 字节的Burst访问方式将SDRAM 中的图像数据读出,再以单字节长度向LUT 模块输出。
4 方案测试
样本电路的LCD 控制器采用Lattice公司的LFXP2-5E-5FT256I 芯 片,SDRAM 显 存 采 用Micron公司的MT48LC4M32B2芯片,处理器为freescale公司的产品MPC 8247。样本电路采用25MHz晶振,LCD 控制器通过内部的PLL 模块提供150 MHz的系统工作时钟。SDRAM 工作在150 MHz时钟下,采用4字节突发访问模式。
测 试 的 TFT-LCD 液 晶 模 块 采 用 的 是STCG057QVLAK(320×240,像 素 时 钟6.25 MHz)。样本电路上所设计的LCD 控制器的实验显示效果如图6 所示,图像清晰无抖动,无闪屏、错行等现象。
图6 实验显示效果Fig.6 Display effect of the experiment
5 结 论
为解决MMI组件在生产上所面临的芯片供应短缺问题,本文提出了基于FPGA 开发兼容原MMI驱动软件的LCD 控制器、对MMI组件进行相关硬件升级的解决方案,并对该LCD 控制器的设计实现进行了描述。方案运用了模块化思想来分解LCD 控制器的业务逻辑,各功能子模块以有限状态机方法进行建模,采用了参数化的配置,在实现上以Verilog语言进行编程开发,充分保证了所开发LCD 控制器的功能可配置性、模块可复用性和代码可移植性。实际测试表明,方案所设计的LCD 控制器能够满足MMI组件对显示模式的需求,可以实现无需改动软件系统的硬件电路升级,保证了装置生产的持续性,为类似问题的解决提供了一种有效的思路。
[1] 爱普生(中国)有限公司.S1D13505/13506外接EDO DRAM 说明[EB/OL].[2014-03-12].http://www.epson.com.cn/ed/lcdc/q_a.html.EPSON China,Limited.The explanation of the external EDO DRAM for S1D13505/13506[EB/OL].[2014-03-12].http://www.epson.com.cn/ed/lcdc/q_a.html.(in Chinese)
[2] 王鸣浩,吴小霞.基于FPGA 的通用液晶显示控制器的设计和实现[J].液晶与显示,2012,27(1):87-92.Wang M H,Wu X X.Design and realization of general LCD controller based on FPGA [J].Chinese Journal of Liquid Crystals and Displays,2012,27(1):87-92.(in Chinese)
[3] 王海力.中国FPGA 产业如何在市场上占有一席之地[J].世界电子元器件,2012(9):72-73.Wang H L.How to have a place in the market for Chinese FPGA industry[J].Global Electronics China,2012(9):72-73.(in Chinese)
[4] 唐 徐 立,黄君凯,刘 明 峰,等.基 于FPGA 的TFT-LCD 控制器设 计 与 实 现[J].半 导 体 技 术,2010,35(11):1134-1137.Tang X L,Huang J K,Liu M F,et al.Design and REalization of the TFT-LCD CONTROLLER Based on FPGA[J].Semiconductor Technology,2010,35(11):1134-1137.(in Chinese)
[5] Lattice Semiconductor.SDR SDRAM controller-reference design RD1010[EB/OL].[2014-04-08].http://www.latticesemi.com/~/media/Documents/ReferenceDesigns/1D/AdvancedSDRSDRAMController-DesignDocumentation.PDF.
[6] 汪东,马剑武,陈书明.基于Gray码的异步FIFO 接口计数及其应用[J].计算机工程与科学,2005,27(1):58-60.Wang D,Ma J W,Chen S M.The interface technology of asynchronous FIFOs based on gray code and its application[J].Computer Engineering and Science,2005,27(1):58-60.(in Chinese)