基于FPGA的电泳式电子纸驱动芯片设计*
2014-06-03江志文张海笑
丁 磊,郭 伟,江志文,张海笑
(广东工业大学 计算机学院,广东 广州510006)
根据目前业界的定义,只要是具备双稳态、反射式显示特性的显示技术均可作为电子纸显示技术[1-2]。目前市面上有许多不同的电子纸流派,如胆固醇液晶、电子粉流体、微胶囊化技术等,其中以电泳显示技术EPD(Electrophoretic Display)为最具代表性,市场占有率大于90%。由于不同流派的显示原理与驱动方式差异颇大,本文将只针对微胶囊化技术中电泳式电子纸的特性与控制机制进行设计。
电泳式电子纸显示的原理是悬浮在微胶囊中的带电纳米粒子受到电场作用而产生迁移的结果[3]。通过对电泳式电子纸市场相关应用及产品的考察,电泳式电子纸的驱动一般采用两种方式实现:(1)使用芯片厂商的专用驱动芯片[4];(2)利用软件编程的方式模拟电子纸的驱动时序进行电子纸显示的实现。专用的芯片解决方案往往局限于特定厂家的产品,通用性较差;而利用软件编程方式实现驱动往往会占用MCU的大量资源,导致系统性能下降[5]。
主流的电泳式电子纸驱动系统一般包括主机接口、核心控制器、数据存储器及电源模块。核心控制器由主动式阵列背板、时序控制器与一组驱动芯片组成。时序控制器产生相应驱动芯片所需的信号,根据不同的脉冲宽度使电泳式电子纸显示灰度图像[3-6]。
本文提出一种基于Flash结构FPGA芯片的电子纸驱动芯片设计方法,在保证驱动性能的前提下,兼顾低功耗设计及面向应用的设计。测试结果表明,该方法可以灵活地适用于EPD产品,功耗低,整合方便。
1 总体设计方案
本文采用Microsemi公司Proasic3系列芯片A3P250进行设计,充分利用经工业级验证的性能稳定的IP软核,可以实现针对不同厂商、不同分辨率的各种电泳式电子纸显示驱动,并易于进行可重构设计[7]。整体系统结构图如图1所示。
系统设计包括主机接口模块、帧缓冲模块、时序生成模块及驱动波形生成模块,系统中整合的IP软核包括CoreSPI、CoreUART、CoreI2C、CoreGPIO、FIFO、CoreSDR, 均由Microsemi公司开发工具中免费提供。
设计中采用的电泳式电子纸为800×600具有 4级灰度的产品,按8位数据总线考虑,1 B可以存储4个像素的灰度值,所以图片数据须经主机处理为电泳式电子纸的数据格式并由主机接口模块进行传送。
图1 系统结构图
2 核心模块设计
2.1 主控接口模块
主控接口模块利用各种通用的外设接口实现外接主机与FPGA部分的通信,并对接收数据进行解析以完成相应功能。数据的通用接口可根据外接主机的情况灵活配置成 SPI、UART、I2C或 GPIO。该模块利用 Verilog-HDL编程,按状态机设计实现。
主控接口模块的功能流程图如图2所示,接口命令包括初始化命令、系统级命令、图片刷新命令及状态查询命令。其中初始化命令完成CoreSPI、CoreSDR及帧缓冲模块等的初始参数设置;系统级命令完成电源开关、省电模式的配置;图片刷新命令可根据命令类型实现电泳式电子纸的全局及局部图片刷新;状态查询命令可读取相应寄存器的状态以查询FPGA驱动芯片的工作状态。
图2 主控接口功能流程图
主控接口模块接收的数据包括命令、地址及显示数据,其中命令分为两种,一种不带参数,一种带参数,其格式如图3所示。图3(a)表示不带参数的命令,长度为1 B,其中高6位表示命令编码,低 2位为0。带参数命令又分为2 B命令和1 B命令,1 B命令或2 B命令第一个字节如图3(b)所示。其中高6位为命令码,低2位为参数(如果是2 B命令则为参数的高2位)。2 B命令的第二个字节为参数的低8位。显示数据是以一个字节形式发送的,即一次发送4个像素的数据,在开始收图片数据之前会先收到相关的命令。
图3 数据解析格式
2.2 帧缓冲模块
帧缓冲模块通过接收主机接口模块的命令、地址及地址增量实现对外接SDRAM的读写控制,且在进行读写操作时为了协调接口速度的差异专门设计了输入与输出的存储缓冲器FIFO。
本文中选用的SDRAM型号为K4S281632,配置为8 bit模式(4×4 M×8 bit),即SDRAM的存储空间分成 4个 8 MB的槽位,为简单起见,对应4个槽位设计4个缓冲区,第一个缓冲区存放上一帧图片数据,第二个缓冲区存放更新图片的数据,后两个缓冲区备用。
帧缓冲采用VerilogHDL编程,以状态机进行设计。
2.3 时序生成模块
时序生成模块的主要功能是根据电泳式电子纸的时序要求产生源、栅驱动时钟CLK、CPV,源、栅驱动起始方向控制信号SHR、L/R,源、栅驱动启动脉冲信号SPH、STV,以及锁存使能 LE、输出使能 OE、边界控制VBORDER。采用VerilogHDL编程的方式实现。
2.4 驱动波形生成模块
用来显示特定灰度所需的电压变化的波形称为驱动波形[8],假设 EPD为 16灰阶,那么就有相当于 256(16×16)种波型组合。驱动控制芯片必须提供适当的驱动波形输出,以呈现较佳的显示画面。
以本文采用的电泳式电子纸产品为例,其常温下从原始图片刷新至全白色图片的波形表样例如表1所示。
表1 波形表样例
常规的波形表设计是利用查找表的方式实现,即在易失性存储器中生成特定的波形表,这需要存储波形表的外接存储器,不但造成成本上的增加,且降低了输出波形的性能。本文采用硬件部署波形表的方法,利用VerilogHDL编程并在FPGA中部署硬逻辑电路实现波形表的输出,满足了性能上的要求,且降低了硬件成本。
3 仿真及实验结果
3.1 开发及实验环境简介
本文采用的开发软件是Microsemi公司的集成式设计环境Libero IDE v9.1,硬件环境为自行开发的包含STM32F107及Proasic3系列芯片A2P250-PQ 208的实验板。
3.2 仿真结果
图4(a)给出了通过UART接口发送数据至主控接口模块的仿真结果,可以验证外接MCU与FPGA驱动芯片的通信,且包含了SDRAM初始化、写显示数据至SDRAM的命令解析及通信过程的验证。图4(b)是时序生成模块的仿真结果,包括控制信号产生的时序仿真及一张全灰图片的刷新仿真过程。
图4 仿真结果
3.3 实验结果
基本测试环境参数为DC 5 V供电,主时钟为50 MHz,经PLL处理输出3路时钟分别连接SDRAM(92.188 MHz)、主控接口模块(36.864 MHz)及时序生成模块(5.76 MHz),电子纸的像素时钟为1.92 MHz,则一幅800×600的BMP图像的刷新时间为 1.56 s,刷新电流为20 mA。
图 5(a)是 6英寸电子纸(800×600)以 3.84 MHz像素时钟刷新的效果,图5(b)是4.3英寸电子纸以正常速度刷新图片的效果。
本文通过对电泳式电子纸显示特性的研究,提出了基于FPGA及IP软核整合的通用驱动芯片的整体解决方案,开发出可以适应多种主控接口及多种电泳式电子纸接口的驱动芯片,并利用VerilogHDL编程以硬逻辑部署方式实现了波形表的设计,仿真及实验结果验证了设计的正确性。该驱动芯片性能优异,成本低,兼容性好,为下一步专用ASIC的设计及流片打下了良好基础,进一步与人机交互设备(如触摸屏等)进行融合,将会有广泛的市场应用前景。
图5 实验结果
[1]GATES H,OHKAMI T,AU J,et al.Improved electronic controller for image stable diaplays[C].SID 06 Digest,2006:1406-1409.
[2]INOUE S,KAWAI H,KANBE S,et al.Highresolution microencapsulated electrophoretic display(EPD)driven by poly-Si TFTs with four-level grayscale[J].IEEE Trans.Electron.Devices,2002,49(9):1532-1539.
[3]叶嘉安.电泳式显示器驱动方法研究与平台设计[D].台北:国立台湾师范大学,1998.
[4]李文睿,陈新.ARM9+Linux下电子纸驱动的设计与实现[J].电子技术应用,2011,37(10):42-44.
[5]马捷,朱克,李庆诚.有源矩阵电泳电子纸显示控制研究[J].现代显示,2010(4):44-48.
[6]CHEN Y,AU J,KAZLAS P,et al.Flexible active-matrix
electronic ink display[J].Nature,2003,423(8):136.
[7]杜世远,林志贤,杨倩,等.基于FPGA的电子纸驱动接口设计[J].电视技术,2012,36(13):97-99.
[8]GATES H,OHKAMI T,LOW Y S.High performance active matrix electrophoretic display controller[C].SID 06 Digest,2008:693-696.